In a saucepan on medium heat, add 1 tablespoon olive oil. Add onions and mushrooms and saute for 5 minutes, or until slightly brown. Add garlic and continue cooking for 1 minute. Add veal stock and simmer for another 5 minutes until liquid has reduced. Remove from heat and add parsley. Season with salt and pepper.
For the bechamel sauce:
Meanwhile, in a saucepan melt the butter over medium heat. Add flour and mix with a wooden spoon. Continue to cook for 2 minutes. Whisk in the milk and continue cooking until it thickens, about 2 minutes. Add Gruyere cheese and keep at a medium low heat until it is completely incorporated. Set aside.
For the melt:
Butter each piece of bread on one side. Spoon the mushroom mixture onto the unbuttered side of the bread, top with cheesy bechamel sauce and cover with another slice of bread. Place in a frying pan on medium heat and cook for about 2 minutes on each side.
Remove, cut in half and add a spoonful of remaining mushroom mixture on top. Garnish with more grated cheese as desired and serve.