Preheat the oven broiler on high.
Bring a saucepan or pot of water about half way filled and vinegar to a simmer.
Melt butter in a medium saucepan over medium heat. Whisk in flour and cook until golden brown. Gradually whisk in milk, gruyere, and parmesan; stirring well until the mixture is smooth. Cook, stirring, until sauce is thickened. Season with salt, pepper, and a pinch of nutmeg to taste.
Place the ham on the bread and spoon the sauce over top. Place on a baking sheet and under the broiler to get a nice golden brown on the sauce. (watch carefully to make sure it doesn't burn)
Crack the eggs into a bowl to make sure the yolks dont break. Stir the simmering water in a circular motion then gently place the eggs into the water. (You can poach multiple eggs at once, being careful not to overcrowd the pan.) Cook the eggs in the water for 3-5 minutes, gently flipping over about halfway through until the whites are firm. Remove the eggs with a slotted spoon onto a paper towel to drain excess water. Season with salt and pepper.
Place the eggs on the bread. Serve with grapes. Garnish with scallions.