Bring a large pot of water to a boil over high heat. Season the water generously with salt, then add the pasta. Cook the pasta for 1 minute less than the package instructions, to al dente, then drain, rinse with cold water and set aside.
In a large pot or Dutch oven over medium-high heat, melt the butter. Add the mushrooms and cook, stirring occasionally, until they start to soften and turn golden.
Add the onion and cook for about 5 minutes, until softened, stirring occasionally.
Add the garlic and cook for 1 more minute. Once fragrant and softened, remove from the heat and transfer the mixture to a bowl.
Place the butter in the large pot and return it to medium heat. Once melted, whisk in the flour. Cook for 1 to 2 minutes while whisking to make a roux.
Whisk in the chicken stock until smooth. Then whisk in the milk, then heavy cream. Season with the salt and pepper. Cook for 8 to 12 minutes, whisking frequently, or until the mixture reaches a low boil and thickens.
Once thickened, add the cooked chicken, mushroom mixture, and parsley and stir to combine.
Stir in the pasta, 1½ cups of mozzarella (170g) and Parmesan cheese. Season with more salt and pepper to taste.
Transfer to 9x13-inch casserole dish, smooth out and top with the remaining ½ cup (55g) mozzarella cheese.
Bake for 30 to 35 minutes until the cheese on top is melted and the casserole is bubbling.