In a mixing bowl or the bowl of a stand mixer, combine the warm milk, sugar, and yeast. Let it sit for about 5 minutes until frothy.
Add the melted butter, eggs, and salt to the yeast mixture. Mix well until combined.
Gradually add in the flour, one cup at a time, mixing until a soft dough forms.
Knead the dough on a floured surface for about 5-7 minutes until it's smooth and elastic. Alternatively, use the dough hook in a stand mixer for the same amount of time.
Place the dough in a greased bowl, cover with a clean kitchen towel, and let it rise in a warm place for about 1 hour or until it has doubled in size.
While the dough is rising, prepare the filling by mixing the brown sugar and cinnamon in a bowl. Set aside.
After the dough has risen, punch it down and turn it out onto a floured surface. Roll it into a rectangle, about 16x12 inches.
Spread the softened butter for the filling evenly over the dough, then sprinkle the cinnamon-sugar mixture over the butter.
Starting from the long edge, roll the dough tightly into a log. Pinch to seal the edge.
Cut the rolled dough into 12 equal pieces using a sharp knife or dental floss.
Place the rolls on a baking sheet lined with parchment paper, leaving enough space between them. Cover with a towel and let rise for another 30 minutes.
Preheat your oven to 350°F (175°C).
Bake the cinnamon rolls in the preheated oven for 25 minutes until golden brown.
While the rolls are baking, prepare the frosting by beating the cream cheese and butter together in a medium bowl until smooth.
Gradually add the powdered sugar, vanilla extract, and milk until you reach your desired consistency.
Once the cinnamon rolls have cooled for a few minutes, spread the frosting over the top. Serve warm.