1) No, the populate list from array behavior must be set to the onchange event of the parent ,list, not the body on load.
2) The ChildID in the Create Dynamic Array behavior will be assigned to the Value of the Child List. The Parent ID needs to match the value of the parent list.
3 - 4) the Create Dynamic array and Populate list from array behaviors look to be configured properly, as long as the value of the muofficeid column from the recordset matches the value that is being posted by the parent list.