Confused? You and me both.
So the process is:
Create Header, then based on values of Header create ONE of X, Y or Z as Header.osX or Header.osY or Header.osZ.
So there are only ever two records (in this simplified example).
AIM however seems to think that there are 4 BOs Header, X, Y and Z as it is running all of the business rules related to all of the BOs.
At no time however does it appear that the BOs are created in the database. So I am kinda perplexed as to what is going on here. Hence in an attempt to prevent this happening I have created READ PROTECTs against the attributes of the unwanted Child records
e.g. If Header has Header.osX I have then attempted to hinder the visibility of the records oxY and osZ.
There is a secondary need to hide the unwanted child record as I have an HTML form demonstrating progress through the creation path (this simulating a wide record which is in reality broken up into a number of related sub records, though the elements in the record will change depending on the type of Contact that I am creating. So for example Companies have subsidiaries and employees, Clients people do not).