In a small saucepan, warm the milk to around 95-104°F / 35-40°C and pour it into the bowl of a stand mixer. Sprinkle yeast and sugar over the warm milk. If using active dry yeast, let this sit for around 5-10 minutes until it becomes foamy; if using instant yeast, this step can be skipped.
Add the flour, orange juice, eggs, zest, and salt to the yeast mixture. Fit the stand mixer with a dough hook attachment and mix until a thick dough forms.
Add the softened butter, a few cubes at a time.
Keep mixing on medium speed for around 10 minutes until the dough is soft and strong and passes the windowpane test.
Alternatively, knead the dough by hand. Mix the dough with a wooden spoon until it forms a shaggy ball. Pull it onto a lightly floured surface and knead a few cubes at a time in the butter.
Knead by hand for around 10 minutes until it becomes an elastic and smooth dough. If you need a break, let the dough rest for 10 minutes and return to it.
Once kneaded, form the soft dough into a ball. Transfer the ball of dough to a large, lightly greased bowl and cover it with plastic wrap or a damp dish towel.
Let the dough rise in a warm place until doubled in size, around 1 to 1 ½ hours. The total time will depend on your room temperature.
The dough can also be covered tightly and refrigerated for up to 16 hours.
With an electric mixer, beat softened butter, brown sugar, orange zest, cinnamon, and cardamom in a medium bowl into a creamy paste.
Grease or line a 9x13-inch baking dish with parchment paper.
Punch down the risen dough, then pull it from the bowl onto a lightly floured work surface. Dust the top of the dough with some flour.
If the dough has come from the fridge, it will be very stiff.
Use a rolling pin to roll the dough into a large 12x16-inch rectangle (30cm x 40 cm).
Add the orange-cinnamon mixture and use an offset spatula to spread it out.
Roll the dough up, starting from the longest side up the top, into a jelly-roll style log.
Cut the log into 12 equal pieces using unflavored dental floss for extra clean cuts or a serrated knife.
Place the rolls into the prepared pan.
Cover the pan and let the orange sweet rolls have their second rise in a warm spot until doubled in size.
Preheat the oven to 350°F /180°C.
Bake the rolls in the oven for 25-28 minutes until golden brown. If they are browning too fast, you can cover the top of the rolls loosely with aluminum foil.
While the rolls are baking, make the frosting. In a large bowl, using a handheld or stand mixer fitted with a whisk or paddle attachment, beat the cream cheese and butter together on high speed until smooth and creamy.
Add the confectioners' sugar, orange zest, orange juice and salt. Beat on low speed to incorporate the sugar, then switch to high and beat until creamy.
Let the baked buns cool for 20 minutes, then spread on the orange icing. Top with a bit of extra orange zest.
