Preheat the oven to 350 degrees and grease a 9x13 baking dish.
Bring a large pot of salted water to a boil. Add the pasta and cook until al dente, about 7-8 minutes. Drain and set aside.
In the same pot you cooked the pasta, melt 4 tablespoons of butter over medium high heat. Add in the garlic and cook for 1 minute until fragrant.
Whisk in the all purpose flour until you can no longer see clumps of flour. Slowly pour in a little chicken stock and whisk until there are no lumps of flour. Continue pouring in chicken stock while whisking. Whisk in the milk.
Whisk frequently, for about 10 minutes, or until the mixture has thickened. Stir in the onion powder, thyme, salt and pepper.
Remove from the heat and whisk in the Gruyere and Swiss until melted.
Stir in the pasta, followed by the chicken and the ham. Mix until combined.
Transfer mixture into the prepared baking dish.
In the same pot you cooked everything in, melt the remaining tablespoon of butter. Add in the seasoned breadcrumbs and Parmesan cheese and cook for 1-2 minutes, stirring constantly until the mixture gets just a little bit of color and the butter is absorbed into it.
Spread the bread crumbs over the chicken cordon bleu macaroni and cheese.
Bake for 25 minutes or until bubbly and golden. Let cool 10 minutes before serving.