After a lot of experimentation I was able to do this with ADF pipeline but don't recommend this since it is easy to miss fields in this approach and it works only if the schema is fixed. It basically works by bringing the nested field to the root, updating it and then joining it with the rest of the data.
Step 1: Create two branches for the input data
Branch 1:
Select: Select properties.execution AS execution, OrderID
Select: Select all properties in execution: Select execution.item AS item, OrderID
Derived column: items = Array(item)
Construct execution object - Derived column with subcolumns item, items
Select execution, OrderID
Branch 2:
Join: Branch1, Branch2 on OrderID
Dervied column: construct properties with subcolumns execution, and other fields within properties
Select: finally select only the required fields and output