Calling all those with a deep understanding of the engine!!!!!!!

I know a trace would be handy, but I don't have any easy way to post this with desensitized data so see if this makes sense without.

1. Driver receives modify from application for User which includes something like this:

<modify class-name="DIRXML_USER" event-id="1111" src-dn="0000001">
<association>DIRXML_USER/0000001</association>
<modify-attr attr-name="SOME_ID">
<remove-all-values/>
<add-value>
<value>0000001</value>
</add-value>
</modify-attr>
<modify-attr attr-name="ATTR1">
<remove-all-values/>
<add-value>
<value>Value1</value>
</add-value>
</modify-attr>
<modify-attr attr-name="ATTR2">
<add-value>
<value>
<component name="COMP1">Value1</component>
<component name="COMP2">Value2</component>
<component name="COMP3">Value3</component>
<component name="COMP4">Value4</component>
</value>
</add-value>
</modify-attr>

2. After reaching the add association processor, no association is found and it is converted to a synthetic add.
3. The driver then queries the application for all of these same attributes
4. In the input transform there is a rule that says:
If operation attr ATTR2 available THEN
Add-Dest-Attr-Value ATT3 w\Value = ATTR2-Comp1 Value
Add-Dest-Attr-Value ATT4 w\Value = ATTR2-Comp2 Value
Strip Op-Attr ATTR2

5. Herein lies the problem....... The add-dest-attr-value ends up creating a second operation, even though it is set to add to the current operation which ends up failing and those attrs never get added.

This clearly works if it is a straight add and only seems to be a problem when a synthetic add issues a query.
Are we getting into a timing problem perhaps? or is it actually adding to the initial update operation that is now empty instead of the resultant add operation built by the synthetic add query?

How do I get around this? The short answer seems to be to choose to add after the current operation, but this seems like a hack as opposed to the "right" way to do it.

Many Many Thanks!!