Combine 1 cup flour, sugar, yeast and salt in the bowl of a stand mixer.
Combine 1 cup milk and butter in a small saucepan over low heat; heat until warm (40 to 55 degrees C), about 5 minutes.
Beat milk-butter mixture gradually into flour mixture on low speed. Increase speed to medium; beat for 2 minutes, stopping occasionally to scrape the bowl with a spatula. Beat in 1 cup flour and egg, occasionally scraping the bowl. Switch to the dough hook attachment; mix in remaining 2 cups flour until a soft dough forms.
Turn dough out on a lightly floured work surface. Knead until smooth and elastic, about 10 minutes. Shape into a ball. Transfer to a greased bowl. Turn over to coat top with grease. Cover and let rise in a warm place until doubled, about 1 hour.
Punch down dough and turn out on a lightly floured surface. Divide into 2 pieces. Place each piece in a separate bowl. Cover and refrigerate, 2 hours to overnight.
Combine cream cheese, icing sugar, 1 egg and lemon juice in the clean bowl of a stand mixer. Beat on low speed until evenly blended. Increase speed to medium; beat until fluffy, about 3 minutes.
Grease 2 baking trays. Roll 1 piece of dough into a 30x38cm rectangle. Transfer to a baking tray. Repeat with remaining dough.
Spread cream cheese filling in a 10cm strip down the centre of each rectangle. Cut dough on both sides of the filling into 3cm-wide strips. Fold strips alternately over the filling to create a braid. Cover braided dough and let rise in a warm, draft-free place until doubled, about 1 hour.
Preheat oven to 190 degrees C. Brush tops of braids with 2 tablespoons milk.
Bake in the preheated oven until golden brown, about 20 minutes. Transfer to a wire rack to cool.
If desired, spread fruit preserves, jams, or jellies over the filling before you braid the dough.