In a medium cast iron skillet or pan, cook the bacon until almost brown, about 5 minutes.
Add the onions and cook, stirring, until caramelized, about 10 minutes.
Add the spinach and cook until wilted, about 3 minutes. Remove the pan from the heat.
Place a chicken breast on a piece of plastic wrap. Cover with more plastic wrap and pound until thin. Repeat with remaining chicken breasts.
Lay out a large piece of plastic wrap and layer the chicken on the plastic so the edges are overlapping slightly.
Season with salt and pepper.
Layer the ham, Swiss cheese, and bacon-carmelized onion mixture over the chicken.
Roll the chicken into a log tightly wrap in plastic, twisting the ends to seal.
Refrigerate for 1 hour to set.
Add the flour, eggs, and panko to 3 separate baking sheets or other wide, shallow dishes. Roll the chicken in the flour, then in the egg, and finally in the panko. Coat once more in the egg, then panko.
Transfer the chicken roll to a greased baking sheet and bake at 375° (190 celsius) for 40 minutes, until golden brown.
Make the creamy Dijon sauce: in a small pot over medium heat, melt the butter. Add the garlic and cook until aromatic. Add the flour and cook until starting to brown. Whisk in the milk, then add the mustard and season with salt and pepper. Add the Parmesan and cook until the sauce is thickened.
Slice the chicken roll and serve with the sauce and fresh parsley.