In a large pot or Dutch oven, melt the butter over medium heat. Add the diced onion and cook until translucent, about 3-5 minutes. Add the minced garlic and cook for another minute until fragrant, making sure not to burn it.
Thicken the Soup:
Sprinkle the flour over the cooked onions and garlic, stirring to combine. Cook for a couple of minutes to remove the raw flour taste. This roux will help thicken the soup.
Add Liquids:
Gradually whisk in the chicken broth, ensuring there are no lumps. Add the milk and Dijon mustard, and bring the mixture to a simmer. Stir constantly as the soup begins to thicken.
Add the Chicken and Ham:
Add the diced cooked chicken and ham to the pot. Let the soup simmer gently (not boil) for about 10-15 minutes to allow the flavors to meld.
Melt in the Cheese:
Reduce the heat to low. Gradually add the shredded Swiss cheese to the soup, stirring until the cheese is completely melted and the soup is smooth.
Season:
Taste the soup and season with salt and pepper as needed.
Serve:
Ladle the soup into bowls. Garnish with a little extra shredded Swiss cheese and some chopped parsley for color and freshness.