1Score a diamond pattern into the ham, about 1/3 inch deep. Place the ham, flat side down, in a large oven roasting bag. In a large bowl, whisk wine, oil, sliced shallots, garlic, mustard, coarsely chopped tarragon and parsley, and peppercorns together to combine. Pour into the bag and close securely with a rubber band. Insert the bag with the ham into the second bag and twist the bag closed. Place in a large bowl. Refrigerate, turning occasionally, for at least 12 and up to 18 hours.
2Preheat oven to 325 degrees F. Position the rack in the lower third of the oven.
3Line the bottom of a shallow roasting pan with aluminum foil.
4Remove ham from bags; discard marinade. Place the ham, flat side down, in the pan. Roast until the internal temperature reaches 140 degrees F, 15 to 18 minutes per pound total cooking time. Remove ham from oven, transfer to a cutting board, and let rest 10 minutes.
5For Creamy Asparagus Sauce: Bring a large saucepan of salted water to a boil over high heat. Add asparagus and cook just until tender but still bright green, 4 to 5 minutes. Drain in a colander, rinse under cold running water, and drain again. Set the asparagus aside.
6In a large saucepan, melt butter over medium heat. Add finely chopped shallots and cook, stirring occasionally, until tender, about 2 minutes. Sprinkle in flour, stir well, and let bubble without browning for 1 minute. Gradually stir in broth and cream, and bring to a simmer. Reduce heat to medium-low and cook, stirring often until lightly thickened, about 10 minutes.
7In two batches, using a blender with the lid ajar, purée asparagus with about 1 cup of the shallot sauce. Stir the purée back into the saucepan, and then stir in minced tarragon and parsley. Then season to taste with salt, pepper and nutmeg. Cover and keep sauce warm over low heat. (The sauce can be cooled, covered, and refrigerated for up to 2 days. Reheat in a saucepan or microwave oven before serving.)
8Slice ham and serve with sauce.