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 fa0fcb0b221d13ce98e1ea0d1267dd5baef949c7..9c2c8824595a86d9d9f5aa9f6d3e2806fd30142d 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
@@ -486,7 +486,11 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
             // remove connection with sample
             data.setSample(null);
         }
-        checkSameSpace(data, data.getContainer()); // space could be changed by change of experiment
+        if (data.getContainer() != null)
+        {
+            // space could be changed by change of experiment
+            checkSameSpace(data.getContainer(), data);
+        }
         updateParents(updates.getModifiedParentDatasetCodesOrNull());
         updateComponents(updates.getModifiedContainedDatasetCodesOrNull());
         checkSameSpace(data, data.getContainedDataSets()); // even if components were not changed
@@ -500,6 +504,10 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
     private void checkSameSpace(DataPE container, DataPE component)
     {
         // see LMS-2282
+        if (container.getSpace().equals(component.getSpace()))
+        {
+            return;
+        }
         throw UserFailureException.fromTemplate("Data set's '%s' space ('%s') needs to be the same"
                 + " as its container's '%s' space ('%s').", component.getCode(), component
                 .getSpace().getCode(), container.getCode(), container.getSpace().getCode());
@@ -751,10 +759,6 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
     private void updateExperiment(ExperimentIdentifier experimentIdentifier)
     {
         assert experimentIdentifier != null;
-        if (data.getExperiment().getIdentifier().equals(experimentIdentifier.toString()))
-        {
-            return; // nothing to change
-        }
         ExperimentPE experiment = getExperimentByIdentifier(experimentIdentifier);
         data.setExperiment(experiment);
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBOTest.java
index 85893f47bc481e1e3fca0694fb44e2679caedbb3..509f200754a5fcf8fe1271c40978b7d6af24758d 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBOTest.java
@@ -404,10 +404,11 @@ public class DataBOTest extends AbstractBOTest
     public void testDefineWithExistingContainerDataSet()
     {
         final DataSetTypePE dataSetType = new DataSetTypePE();
-        ExperimentPE experimentPE = new ExperimentPE();
+        ExperimentPE experimentPE = createExperiment("EXP1");
         DataStorePE dataStore = new DataStorePE();
         prepareDefineData(dataSetType, dataStore);
         final DataPE data = new DataPE();
+        data.setExperiment(experimentPE);
         context.checking(new Expectations()
             {
                 {
@@ -435,14 +436,14 @@ public class DataBOTest extends AbstractBOTest
     public void testDefineWithNonExistingContainerDataSet()
     {
         final DataSetTypePE dataSetType = new DataSetTypePE();
-        final ExperimentPE experiment = new ExperimentPE();
+        final ExperimentPE experiment = createExperiment("EXP1");
         final DataStorePE dataStore = new DataStorePE();
         prepareDefineData(dataSetType, dataStore);
         final DataSetTypePE dataSetTypeUnknown = new DataSetTypePE();
         final DataPE containerData = new DataPE();
         containerData.setCode(PARENT_CODE);
         containerData.setDataSetType(dataSetTypeUnknown);
-        containerData.setExperiment(createExperiment("EXP1"));
+        containerData.setExperiment(experiment);
         containerData.setPlaceholder(true);
         context.checking(new Expectations()
             {