diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java
index bd31cad1aa7c6e9c70ef8b759b40ad8832ddba20..b59329d8cada9e899a2c9277db3c42b0b11bbfdc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java
@@ -135,17 +135,13 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi
         samplePE.setGroup(sampleOwner.tryGetGroup());
         samplePE.setDatabaseInstance(sampleOwner.tryGetDatabaseInstance());
         defineSampleProperties(samplePE, newSample.getProperties());
-        String parentIdentifier = newSample.getParentIdentifier();
-        if (parentIdentifier != null)
-        {
-            setGeneratedFrom(sampleIdentifier, samplePE, parentIdentifier);
-        } else if (newSample.getParents() != null)
+        String containerIdentifier = newSample.getContainerIdentifier();
+        setContainer(sampleIdentifier, samplePE, containerIdentifier);
+        if (newSample.getParentsOrNull() != null)
         {
-            final String[] parents = newSample.getParents();
+            final String[] parents = newSample.getParentsOrNull();
             setParents(samplePE, parents);
         }
-        String containerIdentifier = newSample.getContainerIdentifier();
-        setContainer(sampleIdentifier, samplePE, containerIdentifier);
         samplePE.setPermId(getPermIdDAO().createPermId());
         return samplePE;
     }
@@ -202,18 +198,6 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi
         samplePE.setContainer(containerPE);
     }
 
-    protected void setGeneratedFrom(final SampleIdentifier sampleIdentifier,
-            final SamplePE samplePE, String parentIdentifier)
-    {
-        final Set<SamplePE> newParents = new HashSet<SamplePE>();
-        final SamplePE parentOrNull = tryGetValidParentSample(parentIdentifier, sampleIdentifier);
-        if (parentOrNull != null)
-        {
-            newParents.add(parentOrNull);
-        }
-        replaceParents(samplePE, newParents);
-    }
-
     protected void setParents(final SamplePE childPE, final String[] parents)
     {
         final List<SampleIdentifier> parentIdentifiers =
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java
index 50aacbf294a13c578df3150146dd32fb2068be13..39d859766e5eda315ea8cc5c149687543a6eac95 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleTable.java
@@ -246,11 +246,6 @@ public final class SampleTable extends AbstractSampleBusinessObject implements I
             updateExperiment(sample, updates.getExperimentIdentifierOrNull(), experimentCache);
             checkExperimentBusinessRules(getExternalDataDAO(), sample);
         }
-        if (details.isParentUpdateRequested())
-        {
-            setGeneratedFrom(updates.getSampleIdentifier(), sample,
-                    updates.getParentIdentifierOrNull());
-        }
         if (details.isParentsUpdateRequested())
         {
             final String[] parents = updates.getModifiedParentCodesOrNull();
@@ -266,8 +261,7 @@ public final class SampleTable extends AbstractSampleBusinessObject implements I
         }
         // NOTE: Checking business rules with relationships is expensive.
         // Don't perform them unless relevant data were changed.
-        if (details.isExperimentUpdateRequested() || details.isParentUpdateRequested()
-                || details.isParentsUpdateRequested())
+        if (details.isExperimentUpdateRequested() || details.isParentsUpdateRequested())
         {
             checkParentBusinessRules(sample);
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java
index 39dad9bdc5ff89cb4722f157ba4621eff7c8d988..ecf885105fd05a92f3f32ffc60477d5404cbfd20 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewSample.java
@@ -46,14 +46,9 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa
     private SampleType sampleType;
 
     /**
-     * The parent identifier.
+     * Set of parent sample codes or identifiers. It will be assumed that all the samples belong 
+     * to the same group as the child sample.
      */
-    // TODO 2010-08-09, Piotr Buczek: remove
-    private String parentIdentifier;
-
-    // Set of parent sample codes or identifiers. It will be assumed that
-    // all the samples belong to the same group as the child sample.
-    // If equals to null then parentIdentifier should be used.
     private String[] parentsOrNull;
 
     /**
@@ -94,16 +89,15 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa
             final String containerIdentifier, final String[] parents)
     {
         NewSample result = new NewSample(identifier, sampleType, containerIdentifier);
-        result.setParents(parents);
+        result.setParentsOrNull(parents);
         return result;
     }
 
     public NewSample(final String identifier, SampleType sampleType, String containerIdentifier,
-            String parentIdentifier, String[] parentsOrNull, String experimentIdentifier,
-            IEntityProperty[] properties, List<NewAttachment> attachments)
+            String[] parentsOrNull, String experimentIdentifier, IEntityProperty[] properties,
+            List<NewAttachment> attachments)
     {
         this(identifier, sampleType, containerIdentifier);
-        this.parentIdentifier = parentIdentifier;
         this.parentsOrNull = parentsOrNull;
         this.experimentIdentifier = experimentIdentifier;
         this.properties = properties;
@@ -130,12 +124,12 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa
         this.sampleType = sampleType;
     }
 
-    public String[] getParents()
+    public String[] getParentsOrNull()
     {
         return parentsOrNull;
     }
 
-    public void setParents(String[] parents)
+    public void setParentsOrNull(String[] parents)
     {
         this.parentsOrNull = parents;
     }
@@ -146,22 +140,27 @@ public class NewSample extends Identifier<NewSample> implements Comparable<NewSa
         if (parents != null)
         {
             String[] split = parents.split(",");
-            setParents(split);
+            setParentsOrNull(split);
         } else
         {
-            setParents((String[]) null);
+            setParentsOrNull(new String[0]);
         }
     }
 
+    /** @deprecated convenience method for tests - use {@link #getParentsOrNull()} instead */
+    @Deprecated
     public final String getParentIdentifier()
     {
-        return parentIdentifier;
+        return getParentsOrNull() == null || getParentsOrNull().length == 0 ? null
+                : getParentsOrNull()[0];
     }
 
+    /** @deprecated convenience method for tests - use {@link #setParents(String)} instead */
+    @Deprecated
     @BeanProperty(label = PARENT, optional = true)
     public final void setParentIdentifier(final String parent)
     {
-        this.parentIdentifier = parent;
+        setParents(parent);
     }
 
     public final String getContainerIdentifier()
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleBatchUpdateDetails.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleBatchUpdateDetails.java
index 246ba61e934dd6d7329e6c2f620377d174a8efb9..87a06875a493102f1d32e18ffcb564106182437d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleBatchUpdateDetails.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SampleBatchUpdateDetails.java
@@ -32,8 +32,6 @@ public class SampleBatchUpdateDetails implements IsSerializable, Serializable
 
     private boolean experimentUpdateRequested;
 
-    private boolean parentUpdateRequested;
-
     private boolean parentsUpdateRequested;
 
     private boolean containerUpdateRequested;
@@ -44,11 +42,10 @@ public class SampleBatchUpdateDetails implements IsSerializable, Serializable
     {
     }
 
-    public SampleBatchUpdateDetails(boolean updateExperiment, boolean updateParent,
-            boolean updateParents, boolean updateContainer, Set<String> propertiesToUpdate)
+    public SampleBatchUpdateDetails(boolean updateExperiment, boolean updateParents,
+            boolean updateContainer, Set<String> propertiesToUpdate)
     {
         this.experimentUpdateRequested = updateExperiment;
-        this.parentUpdateRequested = updateParent;
         this.parentsUpdateRequested = updateParents;
         this.containerUpdateRequested = updateContainer;
         this.propertiesToUpdate = propertiesToUpdate;
@@ -59,11 +56,6 @@ public class SampleBatchUpdateDetails implements IsSerializable, Serializable
         return experimentUpdateRequested;
     }
 
-    public boolean isParentUpdateRequested()
-    {
-        return parentUpdateRequested;
-    }
-
     public boolean isParentsUpdateRequested()
     {
         return parentsUpdateRequested;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java
index 6a531d9baa29f0c93429636b79328348577e3cbf..a2d6ddfb5274b5cdbf58d6d0216d1d6625013f37 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UpdatedSample.java
@@ -40,9 +40,8 @@ public final class UpdatedSample extends NewSample
     public UpdatedSample(NewSample newSample, SampleBatchUpdateDetails batchUpdateDetails)
     {
         super(newSample.getIdentifier(), newSample.getSampleType(), newSample
-                .getContainerIdentifier(), newSample.getParentIdentifier(), newSample.getParents(),
-                newSample.getExperimentIdentifier(), newSample.getProperties(), newSample
-                        .getAttachments());
+                .getContainerIdentifier(), newSample.getParentsOrNull(), newSample
+                .getExperimentIdentifier(), newSample.getProperties(), newSample.getAttachments());
         this.batchUpdateDetails = batchUpdateDetails;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactory.java
index 67ea36da33a5e72a03a613026382647abd90ba2e..e1f17b0034fc6fe3c714c0413fbfcb9bb2a01254 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactory.java
@@ -93,6 +93,7 @@ class NewSampleParserObjectFactory extends AbstractParserObjectFactory<NewSample
         return true;
     }
 
+    @SuppressWarnings("deprecation")
     @Override
     public NewSample createObject(final String[] lineTokens) throws ParserException
     {
@@ -116,7 +117,10 @@ class NewSampleParserObjectFactory extends AbstractParserObjectFactory<NewSample
         setProperties(newSample, lineTokens);
         newSample
                 .setContainerIdentifier(StringUtils.trimToNull(newSample.getContainerIdentifier()));
-        newSample.setParentIdentifier(StringUtils.trimToNull(newSample.getParentIdentifier()));
+        if (newSample.getParentIdentifier() != null)
+        {
+            newSample.setParentIdentifier(StringUtils.trimToNull(newSample.getParentIdentifier()));
+        }
         newSample.setExperimentIdentifier(StringUtils.trimToNull(newSample
                 .getExperimentIdentifier()));
         return newSample;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactory.java
index 51a94ce4e0940617bb3b3a4cf0209dbe51285de1..7bb99f7df756ff1372f9e7c29028d6750a8b05f7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactory.java
@@ -55,9 +55,16 @@ final class UpdatedSampleParserObjectFactory extends NewSampleParserObjectFactor
         boolean updateExperiment = isColumnAvailable(UpdatedSample.EXPERIMENT);
         boolean updateParent = isColumnAvailable(UpdatedSample.PARENT);
         boolean updateParents = isColumnAvailable(UpdatedSample.PARENTS);
+        if (updateParent == updateParents == true)
+        {
+            throw new ParserException("Both '" + UpdatedSample.PARENT + "' and '"
+                    + UpdatedSample.PARENTS
+                    + "' columns were specified. One of them should be removed from the file.");
+        }
+        updateParents |= updateParent;
         boolean updateContainer = isColumnAvailable(UpdatedSample.CONTAINER);
-        return new SampleBatchUpdateDetails(updateExperiment, updateParent, updateParents,
-                updateContainer, getUnmatchedProperties());
+        return new SampleBatchUpdateDetails(updateExperiment, updateParents, updateContainer,
+                getUnmatchedProperties());
     }
 
     //
@@ -86,12 +93,9 @@ final class UpdatedSampleParserObjectFactory extends NewSampleParserObjectFactor
         final boolean updateExperiment =
                 basicBatchUpdateDetails.isExperimentUpdateRequested()
                         && isNotEmpty(newSample.getExperimentIdentifier());
-        final boolean updateParent =
-                basicBatchUpdateDetails.isParentUpdateRequested()
-                        && isNotEmpty(newSample.getParentIdentifier());
         final boolean updateParents =
                 basicBatchUpdateDetails.isParentsUpdateRequested()
-                        && isNotEmpty(newSample.getParents());
+                        && isNotEmpty(newSample.getParentsOrNull());
         final boolean updateContainer =
                 basicBatchUpdateDetails.isContainerUpdateRequested()
                         && isNotEmpty(newSample.getContainerIdentifier());
@@ -102,8 +106,8 @@ final class UpdatedSampleParserObjectFactory extends NewSampleParserObjectFactor
             propertiesToUpdate.add(property.getPropertyType().getCode());
         }
 
-        return new SampleBatchUpdateDetails(updateExperiment, updateParent, updateParents,
-                updateContainer, propertiesToUpdate);
+        return new SampleBatchUpdateDetails(updateExperiment, updateParents, updateContainer,
+                propertiesToUpdate);
     }
 
     private boolean isNotEmpty(String[] parents)
@@ -118,13 +122,10 @@ final class UpdatedSampleParserObjectFactory extends NewSampleParserObjectFactor
         {
             newSample.setExperimentIdentifier(null);
         }
-        if (isDeletionMark(newSample.getParentIdentifier()))
-        {
-            newSample.setParentIdentifier(null);
-        }
-        if (newSample.getParents() != null && isDeletionMark(newSample.getParents()[0]))
+        if (newSample.getParentsOrNull() != null && newSample.getParentsOrNull().length > 0
+                && isDeletionMark(newSample.getParentsOrNull()[0]))
         {
-            newSample.setParents(new String[0]);
+            newSample.setParentsOrNull(new String[0]);
         }
         if (isDeletionMark(newSample.getContainerIdentifier()))
         {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
index 3e71b8aaba57fa3a2f48b874d59e5a8a668db29a..19efab7e69cc0707fe9dd146b826feaacf04e203 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
@@ -479,10 +479,7 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen
                 experimentIdentifierOrNull = null;
                 newSampleIdentifier = oldSampleIdentifier;
             }
-            final String parentIdentifierOrNull = updatedSample.getParentIdentifier();
-            final String[] parentsOrNull =
-                    (parentIdentifierOrNull == null) ? updatedSample.getParents() : new String[]
-                        { parentIdentifierOrNull };
+            final String[] parentsOrNull = updatedSample.getParentsOrNull();
             final String containerIdentifierOrNull = updatedSample.getContainerIdentifier();
             final SampleBatchUpdateDetails batchUpdateDetails =
                     createBatchUpdateDetails(updatedSample);
@@ -508,7 +505,7 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen
                 propertyCodes.add(p.getPropertyType().getCode());
             }
             SampleBatchUpdateDetails result =
-                    new SampleBatchUpdateDetails(false, false, false, false, propertyCodes);
+                    new SampleBatchUpdateDetails(false, false, false, propertyCodes);
             return result;
         }
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java
index 419d06b3c34a203c440d0f1eab6e115590681687..18acefbd950ccc1c20a954dcee903bdc061eb490 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SampleBOTest.java
@@ -239,6 +239,7 @@ public final class SampleBOTest extends AbstractBOTest
         context.assertIsSatisfied();
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public final void testDefineSampleHappyCase()
     {
@@ -739,6 +740,7 @@ public final class SampleBOTest extends AbstractBOTest
         fail("The edition of stale sample should throw an exception");
     }
 
+    @SuppressWarnings("deprecation")
     public final void testFailToDefineSharedSampleWithParentInAGroup()
     {
         final SampleIdentifier sharedSampleIdentifier =
@@ -866,6 +868,7 @@ public final class SampleBOTest extends AbstractBOTest
         context.assertIsSatisfied();
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public final void testRegisterSampleWithUnknownParent()
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAOTest.java
index 44a8accda2da19ee888efbc2740e318295a590d4..0ad2895ca0ccbc21dd657d5bfcbf0f6882b1a277 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleDAOTest.java
@@ -44,6 +44,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EventType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE;
@@ -52,7 +53,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePropertyPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleRelationshipPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
 
@@ -403,7 +403,7 @@ public final class SampleDAOTest extends AbstractDAOTest
         deleteSample(deletedSample);
     }
 
-    @Test(groups = "broken")
+    @Test
     public final void testDeleteWithGeneratedSamples()
     {
         final SamplePE deletedSample = findSample("3VCP2", "CISD");
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
index 78755ce9db0d90a2056caa76c636bdb450cc6b4a..97161fc191746d16973fe9cec5b10def7b67134f 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
@@ -80,6 +80,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
 
     private GenericClientService genericClientService;
 
+    @SuppressWarnings("deprecation")
     private final static NewSample createNewSample(final String sampleIdentifier,
             final String sampleTypeCode, final IEntityProperty[] properties, final String parent,
             final String container)
@@ -125,7 +126,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         multipartFile = context.mock(MultipartFile.class);
         genericClientService = new GenericClientService(genericServer, requestContextProvider);
     }
-    
+
     @Test
     public void testGetSampleGenerationInfo()
     {
@@ -134,7 +135,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
             {
                 {
                     prepareGetSessionToken(this);
-                    
+
                     one(genericServer).getSampleInfo(SESSION_TOKEN, sampleId);
                     SampleParentWithDerived parentWithDerived = new SampleParentWithDerived();
                     Sample sample = new Sample();
@@ -145,13 +146,14 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
             });
 
         SampleParentWithDerived info = genericClientService.getSampleGenerationInfo(sampleId);
-        
+
         IEntityProperty transformedXMLProperty = info.getParent().getProperties().get(0);
-        assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>", transformedXMLProperty.tryGetAsString());
+        assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>",
+                transformedXMLProperty.tryGetAsString());
         assertEquals("<root>hello</root>", transformedXMLProperty.tryGetOriginalValue());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public void testGetSampleInfo()
     {
@@ -184,51 +186,51 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
     {
         final TechId id = new TechId(4711L);
         context.checking(new Expectations()
-        {
             {
-                prepareGetSessionToken(this);
-                
-                one(genericServer).getDataSetInfo(SESSION_TOKEN, id);
-                ExternalData dataSet = new ExternalData();
-                dataSet.setDataSetProperties(Arrays.asList(createXmlProperty()));
-                will(returnValue(dataSet));
-            }
-        });
-        
+                {
+                    prepareGetSessionToken(this);
+
+                    one(genericServer).getDataSetInfo(SESSION_TOKEN, id);
+                    ExternalData dataSet = new ExternalData();
+                    dataSet.setDataSetProperties(Arrays.asList(createXmlProperty()));
+                    will(returnValue(dataSet));
+                }
+            });
+
         ExternalData info = genericClientService.getDataSetInfo(id);
-        
+
         IEntityProperty transformedXMLProperty = info.getProperties().get(0);
         assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>",
                 transformedXMLProperty.tryGetAsString());
         assertEquals("<root>hello</root>", transformedXMLProperty.tryGetOriginalValue());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public void testGetMaterialInfo()
     {
         final TechId id = new TechId(4711L);
         context.checking(new Expectations()
-        {
             {
-                prepareGetSessionToken(this);
-                
-                one(genericServer).getMaterialInfo(SESSION_TOKEN, id);
-                Material material = new Material();
-                material.setProperties(Arrays.asList(createXmlProperty()));
-                will(returnValue(material));
-            }
-        });
-        
+                {
+                    prepareGetSessionToken(this);
+
+                    one(genericServer).getMaterialInfo(SESSION_TOKEN, id);
+                    Material material = new Material();
+                    material.setProperties(Arrays.asList(createXmlProperty()));
+                    will(returnValue(material));
+                }
+            });
+
         Material info = genericClientService.getMaterialInfo(id);
-        
+
         IEntityProperty transformedXMLProperty = info.getProperties().get(0);
         assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>",
                 transformedXMLProperty.tryGetAsString());
         assertEquals("<root>hello</root>", transformedXMLProperty.tryGetOriginalValue());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public final void testRegisterSample()
     {
@@ -276,6 +278,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         context.assertIsSatisfied();
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public final void testRegisterSamples() throws IOException
     {
@@ -326,7 +329,8 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
                     will(new CustomAction("check sample")
                         {
 
-                            @SuppressWarnings("unchecked")
+                            @SuppressWarnings(
+                                { "unchecked" })
                             public Object invoke(Invocation invocation) throws Throwable
                             {
                                 final List<NewSamplesWithTypes> samplesSecions =
@@ -358,8 +362,8 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         assertEquals(1, result.size());
         final BatchRegistrationResult batchRegistrationResult = result.get(0);
         assertEquals(fileName, batchRegistrationResult.getFileName());
-        assertEquals("Registration of 1 sample(s) is complete.", batchRegistrationResult
-                .getMessage());
+        assertEquals("Registration of 1 sample(s) is complete.",
+                batchRegistrationResult.getMessage());
         context.assertIsSatisfied();
     }
 
@@ -406,7 +410,8 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
                     will(new CustomAction("check sample")
                         {
 
-                            @SuppressWarnings("unchecked")
+                            @SuppressWarnings(
+                                { "unchecked", "deprecation" })
                             public Object invoke(Invocation invocation) throws Throwable
                             {
                                 final List<NewSamplesWithTypes> samplesSecions =
@@ -419,7 +424,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
                                 final NewSample sample1 = samples.getNewSamples().get(0);
                                 assertEquals("/G1/MP1", sample1.getIdentifier());
                                 assertEquals("/G1/MP2", sample1.getContainerIdentifier());
-                                assertEquals(null, sample1.getParentIdentifier());
+                                assertEquals(0, sample1.getParentsOrNull().length);
                                 assertEquals("EXP1", sample1.getExperimentIdentifier());
                                 assertEquals(1, sample1.getProperties().length);
                                 final IEntityProperty prop1 = sample1.getProperties()[0];
@@ -448,7 +453,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         assertEquals("Update of 2 sample(s) is complete.", batchRegistrationResult.getMessage());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public void testUpdateMaterials() throws IOException
     {
@@ -465,7 +470,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         assertEquals(updateCount + " material(s) updated.", results.get(0).getMessage());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public void testUpdateMaterialsIgnoringUnregisteredButNoUnregistered() throws IOException
     {
@@ -473,16 +478,17 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         final boolean ignoreUnregisteredMaterials = true;
         final int updateCount = 1;
         prepareMaterialsUpdate(sessionKey, ignoreUnregisteredMaterials, updateCount);
-        
+
         List<BatchRegistrationResult> results =
-            genericClientService.updateMaterials(MATERIAL_TYPE, sessionKey,
-                    ignoreUnregisteredMaterials);
-        
+                genericClientService.updateMaterials(MATERIAL_TYPE, sessionKey,
+                        ignoreUnregisteredMaterials);
+
         assertEquals(1, results.size());
-        assertEquals(updateCount + " material(s) updated, non ignored.", results.get(0).getMessage());
+        assertEquals(updateCount + " material(s) updated, non ignored.", results.get(0)
+                .getMessage());
         context.assertIsSatisfied();
     }
-    
+
     @Test
     public void testUpdateMaterialsIgnoringUnregistered() throws IOException
     {
@@ -490,11 +496,11 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         final boolean ignoreUnregisteredMaterials = true;
         final int updateCount = 0;
         prepareMaterialsUpdate(sessionKey, ignoreUnregisteredMaterials, updateCount);
-        
+
         List<BatchRegistrationResult> results =
-            genericClientService.updateMaterials(MATERIAL_TYPE, sessionKey,
-                    ignoreUnregisteredMaterials);
-        
+                genericClientService.updateMaterials(MATERIAL_TYPE, sessionKey,
+                        ignoreUnregisteredMaterials);
+
         assertEquals(1, results.size());
         assertEquals(updateCount + " material(s) updated, 1 ignored.", results.get(0).getMessage());
         context.assertIsSatisfied();
@@ -621,7 +627,7 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         property.setValue("<root>hello</root>");
         return property;
     }
-    
+
     /**
      * A {@link BaseMatcher} extension for checking the list of {@link NewSample NewSamples}.
      * 
@@ -661,10 +667,10 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         private final boolean equals(final NewSample newSample, final NewSample thatNewSample)
         {
             return ObjectUtils.equals(newSample, thatNewSample)
-                    && StringUtils.equals(newSample.getContainerIdentifier(), thatNewSample
-                            .getContainerIdentifier())
-                    && StringUtils.equals(newSample.getParentIdentifier(), thatNewSample
-                            .getParentIdentifier())
+                    && StringUtils.equals(newSample.getContainerIdentifier(),
+                            thatNewSample.getContainerIdentifier())
+                    && StringUtils.equals(Arrays.toString(newSample.getParentsOrNull()),
+                            Arrays.toString(thatNewSample.getParentsOrNull()))
                     && equals(newSample.getProperties(), thatNewSample.getProperties());
         }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactoryTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactoryTest.java
index 717dc2a5ac46e1a3cfbdb598d709bf713bc4abe1..200f3e5436cea21a2b4da9bc9f85cc01c7789d73 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactoryTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/NewSampleParserObjectFactoryTest.java
@@ -181,6 +181,7 @@ public final class NewSampleParserObjectFactoryTest
         }
     }
 
+    @SuppressWarnings("deprecation")
     @Test(dataProvider = "getLineTokens")
     public final void testCreateObject(final String[] lineTokens, final int numberOfProperties)
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactoryTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactoryTest.java
index ad9218f48bf5e3b3ff88c4a9539a19b52a94512f..ea811f8ad25471b9de2dd394401ef36e273090f3 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactoryTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/parser/UpdatedSampleParserObjectFactoryTest.java
@@ -113,9 +113,9 @@ public final class UpdatedSampleParserObjectFactoryTest
         assertEquals(numOfPropertiestoUpdate, propertiesToUpdate.size());
         assertEquals(StringUtils.isBlank(p1Token) == false, propertiesToUpdate.contains(PROPERTY_1));
         assertEquals(StringUtils.isBlank(p2Token) == false, propertiesToUpdate.contains(PROPERTY_2));
-        assertEquals(StringUtils.isBlank(containerToken) == false, batchUpdateDetails
-                .isContainerUpdateRequested());
-        assertFalse(batchUpdateDetails.isParentUpdateRequested());
+        assertEquals(StringUtils.isBlank(containerToken) == false,
+                batchUpdateDetails.isContainerUpdateRequested());
+        assertFalse(batchUpdateDetails.isParentsUpdateRequested());
         assertFalse(batchUpdateDetails.isExperimentUpdateRequested());
     }
 }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleRegistrationTest.java
index a1a56f27070142f1d43e3c632277f8ab1011af38..5b105dc74af016c03308980c1c639c2ed4376040 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleRegistrationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/generic/SampleRegistrationTest.java
@@ -73,7 +73,7 @@ public class SampleRegistrationTest extends GenericSystemTestCase
         // - dealing with the same parent stated more than once
         String[] parents = new String[]
             { "c1", "C2", "/CISD/C3", "CISD:/CISD/C3" };
-        sample.setParents(parents);
+        sample.setParentsOrNull(parents);
         genericClientService.registerSample("session", sample);
 
         Sample s = getSpaceSample(identifier);
@@ -98,7 +98,7 @@ public class SampleRegistrationTest extends GenericSystemTestCase
         final String identifier = CISD_SHORT + sampleCode;
         sample.setIdentifier(identifier);
         final String parent = "CISD:/CISD/C1";
-        sample.setParents(new String[]
+        sample.setParentsOrNull(new String[]
             { parent });
         final SampleType sampleType = new SampleType();
         sampleType.setCode(DILUTION_PLATE);