Make the Dough: In a small saucepan, over low heat, warm the milk until lukewarm— you should be able to dip your finger in it. Pour the warm milk into the bowl of a stand electric mixer fitted with the dough hook attachment. Whisk in the yeast and sugar. Cover with a towel and let it sit until the mixture is foamy, about 5 minutes. On low speed, beat in the softened butter until it's slightly broken apart— the butter won't be mixing in just yet so don't worry. Next add the eggs. Gradually add the flour, then salt. Once it is all added, beat on medium until a soft dough forms. Increase to medium-high speed and beat until the dough becomes soft, about 4-6 minutes.
Transfer the dough to a lightly floured surface and knead it with your hands for about 1 minute. Form the dough into a ball and transfer it to a lightly greased bowl. Loosely cover the dough and let it rise in a slightly warm environment for about 30 miuntes to 1 hour or until it doubles in size. (Tip: Heat your oven to 150°F, turn the oven off, and place the dough inside with the door slightly ajar.)
Grease with butter or nonstick spray the bottom of a 9x13 inch baking dish or line with parchment paper, if desired. Turn the dough out onto a lightly floured work surface and, using a rolling pin, roll into a 10×16 inch rectangle. Make sure the dough is smooth and evenly thick, even at the corners.
The Filling: Spread the softened butter over the dough. In a small bow, combine the cinnamon and sugar together until combined, then sprinkle it evenly over the tough. Tightly roll up the dough to form a log. Some filling may spill out, that's OK. Cut into 10-12 even rolls. Arrange them in the baking dish. Cover the rolls tightly with aluminum foil or plastic wrap— you don't want the rolls exposed, and allow them to rise for 15 minutes.
After the rolls rise, preheat the oven to 375°F. Bake for 25 minutes until slightly golden brown. About halfway through, cover the rolls loosely with aluminum foil so the tops down brown too much. Remove pan from the oven and allow to cool on a wire rack for about 10 minutes as you make the frosting.
Make the Frosting: In a medium bowl using a handheld mixer, beat the cream cheese and butter together on high speed until smooth and creamy. There should be no lumps. Add the powdered sugar, vanilla and heavy cream. Beat on low until combined, then increase to high speed for 2 minutes.
Frost the Rolls: Using a knife or ofset spatula, spread the frosting over the warm rolls and serve immediately. Cover the leftover cinnamon rolls tightly and store at room temperature for up to 3 days.