I tried with equivalent() before posting here. The problem is (I think, not sure), that equivalent() needs maybe other manually created migration rules for the equivalent object, i.e. does not "copy" the automatically migrated objects (here "y" shall be automatically migrated).
I do believe model copy (from within a script) is a very usefull feature (to keep intermediate traces for instance) but oddly, it seems to be an uncommon task...
Feels a bit like it's not the "good/mainstream way of doing", we're maybe missing the point here
I think I found my problem:
I want an object in the original model have twice in different containers in the migrated model. By calling original.y.equivalent() it is indeed copied from original into migrated and then moved to the assigned container migrated.x, i.e. y is not copied from migrated to migrated and thus I have it only once in the migrated model. The y object is not copied then from lets say original.y to migrated.y!
Btw. I checked the assignemnts "=", ":=" and "::=" (they all just move the objects, they don't behave like equivalent() in Flock in contrast to the ETL assignment "::=").
Yes, I need to remain the original model (for unit testing).