 <p>Note : When an object is cloned, PHP 5 will perform a shallow copy of all of the object's properties. Any properties that are references to other variables, will remain references. </p> <p>Alternative you can use reflection to create a (deep) copy of your object.</p> <pre><code> $productClone = $this-&gt;objectManager-&gt;create('Tx_Theext_Domain_Model_Product'); // $product = source object $productProperties = Tx_Extbase_Reflection_ObjectAccess::getAccessibleProperties($product); foreach ($productProperties as $propertyName =&gt; $propertyValue) { Tx_Extbase_Reflection_ObjectAccess::setProperty($productClone, $propertyName, $propertyValue); } // $productAdditions = ObjectStorage property $productAdditions = $product-&gt;getProductAddition(); $newStorage = $this-&gt;objectManager-&gt;get('Tx_Extbase_Persistence_ObjectStorage'); foreach ($productAdditions as $productAddition) { $productAdditionClone = $this-&gt;objectManager-&gt;create('Tx_Theext_Domain_Model_ProductAddition'); $productAdditionProperties = Tx_Extbase_Reflection_ObjectAccess::getAccessibleProperties($productAddition); foreach ($productAdditionProperties as $propertyName =&gt; $propertyValue) { Tx_Extbase_Reflection_ObjectAccess::setProperty($productAdditionClone, $propertyName, $propertyValue); } $newStorage-&gt;attach($productAdditionClone); } $productClone-&gt;setProductAddition($newStorage); // This have to be repeat for every ObjectStorage property, or write a service. </code></pre>