In the bowl of a stand mixer, combine the warmed milk, sugar, and yeast. Cover and let it sit for about 8 to 10 minutes until it looks foamy.
Add the egg, flour, and salt to the bowl. With the dough hook attached, mix on low speed until a dough begins to form.
Add the softened butter a little at a time. Once fully mixed in, increase the speed to medium and knead for 5 to 6 minutes. The dough should be smooth and slightly tacky.
Transfer the dough to a lightly greased bowl using greased hands. Cover with plastic wrap and let it rise in a warm spot until doubled in size, about 60 to 90 minutes.
While the dough rises, mix the garlic butter. In a small bowl, combine the butter, minced garlic, parsley, salt, and black pepper. Stir well and set aside.
Once the dough has risen, gently press it down and let it rest for 5 minutes. On a lightly floured surface, roll it into a 12 by 16 inch rectangle. Spread about two thirds of the garlic butter over the dough. Sprinkle evenly with mozzarella and parmesan.
Starting from the long side, roll the dough into a log. Use a serrated knife to cut into 8 even pieces, about 2 inches thick. Place them in a generously greased 9 by 13 inch baking pan. Cover and let rise again for 25 to 35 minutes, until doubled.
Preheat the oven to 350F. Whisk together the egg and water. Brush the tops of the rolls lightly with the egg wash.
Bake for 25 to 30 minutes, rotating the pan halfway through, until golden brown and cooked through. If they brown too quickly, loosely cover with foil.
Melt the remaining garlic butter and brush it generously over the warm rolls before serving.