diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
index 9f2c1ff033332c2ea1f6e6506e93ab5ab53626ae..e06f0537bcb68974d3a6332f23c8cee96c28d7fb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
@@ -36,8 +36,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
 
 /**
- * Definition of an internal service through which entity relationships can be changed and deleted.
- * All the methods of this service require authorization,
+ * Definition of an internal service through which entity relationships can be changed and deleted. All the methods of this service require
+ * authorization,
  * 
  * @author anttil
  */
@@ -45,7 +45,7 @@ public interface IRelationshipService
 {
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_EXPERIMENT_TO_PROJECT")
     public void assignExperimentToProject(IAuthSession session,
             @AuthorizationGuard(guardClass = ExperimentPEPredicate.class)
@@ -54,7 +54,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_PROJECT_TO_SPACE")
     public void assignProjectToSpace(IAuthSession session,
             @AuthorizationGuard(guardClass = ProjectPEPredicate.class)
@@ -63,8 +63,8 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER,
-                RoleWithHierarchy.SPACE_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER,
+            RoleWithHierarchy.SPACE_USER })
     @Capability("ASSIGN_SAMPLE_TO_EXPERIMENT")
     public void assignSampleToExperiment(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -73,7 +73,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("UNASSIGN_SAMPLE_FROM_EXPERIMENT")
     public void checkCanUnassignSampleFromExperiment(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -81,7 +81,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("UNASSIGN_SAMPLE_FROM_EXPERIMENT")
     public void unassignSampleFromExperiment(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -89,7 +89,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.INSTANCE_ETL_SERVER, RoleWithHierarchy.INSTANCE_ADMIN })
+    { RoleWithHierarchy.INSTANCE_ETL_SERVER, RoleWithHierarchy.INSTANCE_ADMIN })
     @Capability("UNSHARE_SAMPLE")
     public void unshareSample(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -98,7 +98,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_SAMPLE_TO_SPACE")
     public void assignSampleToSpace(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -107,7 +107,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.INSTANCE_ETL_SERVER, RoleWithHierarchy.INSTANCE_ADMIN })
+    { RoleWithHierarchy.INSTANCE_ETL_SERVER, RoleWithHierarchy.INSTANCE_ADMIN })
     @Capability("SHARE_SAMPLE")
     public void shareSample(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -115,7 +115,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_DATASET_TO_EXPERIMENT")
     public void assignDataSetToExperiment(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
@@ -124,7 +124,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_DATASET_TO_SAMPLE")
     public void assignDataSetToSample(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
@@ -133,8 +133,8 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER,
-                RoleWithHierarchy.SPACE_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER,
+            RoleWithHierarchy.SPACE_USER })
     @Capability("ADD_PARENT_TO_SAMPLE")
     public void addParentToSample(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -143,7 +143,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("REMOVE_PARENT_FROM_SAMPLE")
     public void removeParentFromSample(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -152,7 +152,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ADD_CONTAINER_TO_SAMPLE")
     public void assignSampleToContainer(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -161,7 +161,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("REMOVE_CONTAINER_FROM_SAMPLE")
     public void removeSampleFromContainer(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class)
@@ -169,7 +169,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ADD_PARENT_TO_DATASET")
     public void addParentToDataSet(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
@@ -178,7 +178,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("REMOVE_PARENT_FROM_DATASET")
     public void removeParentFromDataSet(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
@@ -187,7 +187,7 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ADD_CONTAINER_TO_DATASET")
     public void assignDataSetToContainer(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
@@ -196,10 +196,11 @@ public interface IRelationshipService
 
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value =
-        { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
+    { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("REMOVE_CONTAINER_FROM_DATASET")
     public void removeDataSetFromContainer(IAuthSession session,
             @AuthorizationGuard(guardClass = DataPEPredicate.class)
-            DataPE data);
+            DataPE data, @AuthorizationGuard(guardClass = DataPEPredicate.class)
+            DataPE container);
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
index d3e336d61c841ce99edba878860859e55d8462fc..75294a050ed0981fe80bcb00d02dac0ff084f595 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
@@ -269,10 +269,10 @@ public class RelationshipService implements IRelationshipService
     }
 
     @Override
-    public void removeDataSetFromContainer(IAuthSession session, DataPE data)
+    public void removeDataSetFromContainer(IAuthSession session, DataPE data, DataPE container)
     {
         releaseRelationship(session, BasicConstant.CONTAINER_COMPONENT_INTERNAL_RELATIONSHIP, data,
-                data.getContainer(), ERR_DATASET_CONTAINER_RELATIONSHIP_NOT_FOUND);
+                container, ERR_DATASET_CONTAINER_RELATIONSHIP_NOT_FOUND);
     }
 
     public void setDaoFactory(DAOFactory daoFactory)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
index a43a1161888121c2064c40d6a973ac9c977d483f..d38a334f0283fb937ce86c8701856b102c34c359 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
@@ -170,11 +170,6 @@ public abstract class AbstractDataSetBusinessObject extends AbstractSampleIdenti
 
         contained.addAll(container.getContainedDataSets());
 
-        for (DataPE dataPE : contained)
-        {
-            relationshipService.removeDataSetFromContainer(session, dataPE);
-        }
-
         for (DataPE dataPE : newContainedDataSets)
         {
             relationshipService.assignDataSetToContainer(session, dataPE, container);
@@ -224,22 +219,7 @@ public abstract class AbstractDataSetBusinessObject extends AbstractSampleIdenti
         Set<DataPE> parentsToRemove = new HashSet<DataPE>();
         Set<DataPE> parentsToAdd = new HashSet<DataPE>();
 
-        // find parents to be added (exist in newParents but do not exist in old parents)
-        for (DataPE newParent : newParents)
-        {
-            if (oldParents.contains(newParent) == false)
-            {
-                parentsToAdd.add(newParent);
-            }
-        }
-        // find parents to be removed (exist in oldParents but do not exist in new parents)
-        for (DataPE oldParent : oldParents)
-        {
-            if (newParents.contains(oldParent) == false)
-            {
-                parentsToRemove.add(oldParent);
-            }
-        }
+        findToBeRemovedOrAdded(newParents, oldParents, parentsToRemove, parentsToAdd);
 
         // check cycles
         if (validate)
@@ -260,6 +240,27 @@ public abstract class AbstractDataSetBusinessObject extends AbstractSampleIdenti
         }
     }
 
+    protected void findToBeRemovedOrAdded(Collection<DataPE> newDataSets, Collection<DataPE> oldDataSets, Set<DataPE> toBeRemoved,
+            Set<DataPE> toBeAdded)
+    {
+        // find data sets to be added (exist in newDataSets but do not exist in oldDataSets)
+        for (DataPE newDataSet : newDataSets)
+        {
+            if (oldDataSets.contains(newDataSet) == false)
+            {
+                toBeAdded.add(newDataSet);
+            }
+        }
+        // find data sets to be removed (exist in oldDataSets but do not exist in newDataSets)
+        for (DataPE oldDataSet : oldDataSets)
+        {
+            if (newDataSets.contains(oldDataSet) == false)
+            {
+                toBeRemoved.add(oldDataSet);
+            }
+        }
+    }
+
     private void checkParentDeletion(final DataPE parentPE, final String child)
     {
         if (parentPE.getDeletion() != null)
@@ -353,10 +354,7 @@ public abstract class AbstractDataSetBusinessObject extends AbstractSampleIdenti
 
     protected void updateContainer(DataPE data, String containerCode)
     {
-        if (containerCode == null)
-        {
-            relationshipService.removeDataSetFromContainer(session, data);
-        } else
+        if (containerCode != null)
         {
             DataPE container = getDataDAO().tryToFindDataSetByCode(containerCode);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
index 17cda42981e4f77600d616a486a85060071d4849..7abdc6b4245ac343a7a752516f8e76086001c607 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
@@ -721,7 +721,7 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
     {
         for (DataPE component : componentsToRemove)
         {
-            relationshipService.removeDataSetFromContainer(session, component);
+            relationshipService.removeDataSetFromContainer(session, component, data);
         }
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
index 0fc14baadcf2024b9c064b9dfa229891774ae7e9..0dde3d12cb10f26da46663a1e3d2b9ab6f757517 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataPE.java
@@ -589,7 +589,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
     @Transient
     public List<DataPE> getContainedDataSets()
     {
-        SortedMap<Integer, DataPE> sortedContained = new TreeMap<Integer, DataPE>();
+        SortedMap<Double, DataPE> sortedContained = new TreeMap<Double, DataPE>();
 
         // Obtaining the contained relationships, they can come in any order
         if (childRelationships != null)
@@ -605,7 +605,7 @@ public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
                         throw new IllegalStateException("Container data set '" + getCode() + "' has component '"
                                 + component.getCode() + "' with unspecified order in container.");
                     }
-                    sortedContained.put(ordinal, component);
+                    sortedContained.put(ordinal + 1.0 / Math.max(2, component.getId()), component);
                 }
             }
         }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/RelationshipServiceAuthorizationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/RelationshipServiceAuthorizationTest.java
index 684db5cd76d0386ccb7e933b560ef62f4e00ab8e..3b7da5839fe22bfbbaff3bdb0b8bec73b9656c0a 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/RelationshipServiceAuthorizationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/RelationshipServiceAuthorizationTest.java
@@ -21,8 +21,8 @@ import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
@@ -104,7 +104,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignExperimentToProject", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assigningExperimentToProjectIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -121,7 +121,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignProjectToSpace", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assignProjectToSpaceIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -138,7 +138,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignSampleToExperiment", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assignSampleToExperimentIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -154,7 +154,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToUnassignSampleFromExperiment", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void unassigningSampleFromExperimentIsNotAuthorizedFor(RoleWithHierarchy spaceRole,
             RoleWithHierarchy instanceRole) throws Exception
     {
@@ -169,7 +169,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToUnshareSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void unsharingSampleIsNotAuthorizedFor(RoleWithHierarchy spaceRole,
             RoleWithHierarchy instanceRole) throws Exception
     {
@@ -185,7 +185,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignSampleToSpace", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assigningSampleToSpaceIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -201,7 +201,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToShareSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void sharingSampleIsNotAuthorizedFor(RoleWithHierarchy spaceRole,
             RoleWithHierarchy instanceRole) throws Exception
     {
@@ -217,7 +217,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignDataSetToExperiment", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assigningDataSetToExperimentIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -234,7 +234,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAssignDataSetToExperiment", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void assigningDataSetToSampleIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -251,7 +251,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAddParentToSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void addingParentToSampleIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -268,7 +268,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToRemoveParentFromSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void removingParentFromSampleIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -285,7 +285,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAddContainerToSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void addingContainerToSampleIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -301,7 +301,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToRemoveContainerFromSample", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void removingContainerFromSampleIsNotAuthorizedFor(RoleWithHierarchy spaceRole,
             RoleWithHierarchy instanceRole) throws Exception
     {
@@ -317,7 +317,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAddParentToDataSet", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void addingParentToDataSetIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -334,7 +334,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToRemoveParentFromDataSet", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void removingParentFromDataSetIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -351,7 +351,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     }
 
     @Test(dataProvider = "rolesNotAllowedToAddContainerToDataSet", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void addingContainerToDataSetIsNotAuthorizedFor(RoleWithHierarchy sourceSpaceRole,
             RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole)
             throws Exception
@@ -361,17 +361,17 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
 
     @Test(dataProvider = "rolesAllowedToRemoveContainerFromDataSet", groups = "authorization")
     public void removingContainerFromDataSetIsAuthorizedFor(RoleWithHierarchy spaceRole,
-            RoleWithHierarchy instanceRole) throws Exception
+            RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole) throws Exception
     {
-        removeContainerFromDataSet(spaceRole, instanceRole);
+        removeContainerFromDataSet(spaceRole, destinationSpaceRole, instanceRole);
     }
 
     @Test(dataProvider = "rolesNotAllowedToRemoveContainerFromDataSet", expectedExceptions =
-        { AuthorizationFailureException.class }, groups = "authorization")
+    { AuthorizationFailureException.class }, groups = "authorization")
     public void removingContainerFromDataSetIsNotAuthorizedFor(RoleWithHierarchy spaceRole,
-            RoleWithHierarchy instanceRole) throws Exception
+            RoleWithHierarchy destinationSpaceRole, RoleWithHierarchy instanceRole) throws Exception
     {
-        removeContainerFromDataSet(spaceRole, instanceRole);
+        removeContainerFromDataSet(spaceRole, destinationSpaceRole, instanceRole);
     }
 
     void assignExperimentToProject(RoleWithHierarchy sourceSpaceRole,
@@ -610,17 +610,18 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
 
     }
 
-    void removeContainerFromDataSet(RoleWithHierarchy sourceSpaceRole,
+    void removeContainerFromDataSet(RoleWithHierarchy sourceSpaceRole, RoleWithHierarchy destinationSpaceRole,
             RoleWithHierarchy instanceRole) throws Exception
     {
         String session =
                 create(aSession().withSpaceRole(sourceSpaceRole, sourceSpace)
+                        .withSpaceRole(destinationSpaceRole, destinationSpace)
                         .withInstanceRole(instanceRole)
                         .withSpaceRole(RoleWithHierarchy.SPACE_ADMIN, unrelatedAdmin)
                         .withSpaceRole(RoleWithHierarchy.SPACE_OBSERVER, unrelatedObserver));
 
         relationshipService.removeDataSetFromContainer(sessionManager.getSession(session),
-                pe(this.sourceDataSet));
+                pe(this.sourceDataSet), pe(destinationDataSet));
     }
 
     GuardedDomain instance = new InstanceDomain();
@@ -879,7 +880,7 @@ public class RelationshipServiceAuthorizationTest extends BaseTest
     RoleWithHierarchy[][] rolesAllowedToRemoveContainerFromDataSet()
     {
         return RolePermutator.getAcceptedPermutations(spaceAdminOrSpaceEtlServerSingle, source,
-                instance);
+                destination, instance);
     }
 
     @DataProvider(name = "rolesNotAllowedToRemoveContainerFromDataSet")
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
index d55da9d1a24a7c9d498a4b4230410f5cd2f9aa28..2c32358aac23ec35835b34638407b96dbab3031c 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
@@ -122,7 +122,7 @@ public class RelationshipServiceStub implements IRelationshipService
     }
 
     @Override
-    public void removeDataSetFromContainer(IAuthSession session, DataPE sample)
+    public void removeDataSetFromContainer(IAuthSession session, DataPE data, DataPE container)
     {
     }
 }