diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java
index 4b870bf28f4497f55eac4b100d2bc3328f7db5cc..93660860d5be94133b100ef1f08ebd4c10eb77bc 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjection.java
@@ -142,13 +142,13 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra
     {
         SampleType sampleType = service.getSampleType(SAMPLE_TYPE_CODE);
         Sample sample = service.tryGetSampleWithExperiment(sampleIdentifier);
+        String biologicalSampleIdentifier = properties.getProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY);
         if (sample == null)
         {
             NewSample newSample = new NewSample();
             newSample.setSampleType(sampleType);
             newSample.setExperimentIdentifier(experimentIdentifier.toString());
             newSample.setIdentifier(sampleIdentifier.toString());
-            String biologicalSampleIdentifier = properties.getProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY);
             if (biologicalSampleIdentifier != null)
             {
                 newSample.setParents(biologicalSampleIdentifier);
@@ -164,7 +164,9 @@ public class DataSetInfoExtractorForMSInjection extends AbstractDataSetInfoExtra
             Set<NewAttachment> emptySet = Collections.<NewAttachment> emptySet();
             Date version = sample.getModificationDate();
             service.updateSample(new SampleUpdatesDTO(sampleID, propertiesList,
-                    experimentIdentifier, emptySet, version, sampleIdentifier, null, null));
+                    experimentIdentifier, emptySet, version, sampleIdentifier, null,
+                    biologicalSampleIdentifier == null ? null : new String[]
+                        { biologicalSampleIdentifier }));
             return sample.getId();
         }
     }
diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java
index a03c2c0222a40e395d0cedaf7b87a8ccfa47f9e0..7aed4b784d2093f679e0128e6f0aac738d8960cd 100644
--- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java
+++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForMSInjectionTest.java
@@ -43,6 +43,7 @@ import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
+import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -358,7 +359,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe
         dataSetProperties.setProperty("BLABLA", "blub");
         save(dataSetProperties, DATA_SET_PROPERTIES_FILE);
         prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true));
-        prepareUpdateSample("Isaac");
+        prepareUpdateSample("Isaac", null);
         prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false));
 
         DataSetInformation info = extractor.getDataSetInformation(dataSet, service);
@@ -373,6 +374,39 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe
 
         context.assertIsSatisfied();
     }
+    
+    @Test
+    public void testRegisterSupersedingRawDataWhichUpdatesSampleParent()
+    {
+        Properties sampleProperties = new Properties();
+        sampleProperties.setProperty(BIOLOGICAL_SAMPLE_IDENTIFIER_KEY, "bio-sample");
+        sampleProperties.setProperty(PROJECT_CODE_KEY, PROJECT_CODE);
+        sampleProperties.setProperty(SAMPLE_CODE_KEY, SAMPLE_CODE);
+        sampleProperties.setProperty(EXPERIMENT_CODE_KEY, EXPERIMENT_CODE);
+        sampleProperties.setProperty(SAMPLE_PROPERTY, "Isaac");
+        sampleProperties.setProperty("TEMPERATURE", "47.11");
+        save(sampleProperties, MS_INJECTION_PROPERTIES_FILE);
+        Properties dataSetProperties = new Properties();
+        dataSetProperties.setProperty(DATA_SET_TYPE_KEY, "RAW_DATA");
+        dataSetProperties.setProperty("CENTROID", "true");
+        dataSetProperties.setProperty("BLABLA", "blub");
+        save(dataSetProperties, DATA_SET_PROPERTIES_FILE);
+        prepareGetExperimentAndGetSampleType(false, createPropertyType(SAMPLE_PROPERTY, true));
+        prepareUpdateSample("Isaac", new String[] {"bio-sample"});
+        prepareGetDataSetType("RAW_DATA", createDataSetPropertyType("CENTROID", false));
+        
+        DataSetInformation info = extractor.getDataSetInformation(dataSet, service);
+        
+        assertEquals(Constants.MS_DATA_SPACE, info.getSpaceCode());
+        assertEquals(SAMPLE_CODE, info.getSampleCode());
+        assertEquals(EXPERIMENT_IDENTIFIER, info.getExperimentIdentifier().toString());
+        List<NewProperty> dProps = info.getDataSetProperties();
+        assertEquals(1, dProps.size());
+        assertEquals("CENTROID", dProps.get(0).getPropertyCode());
+        assertEquals("true", dProps.get(0).getValue());
+        
+        context.assertIsSatisfied();
+    }
 
     @Test
     public void testRegisterParentDataSet()
@@ -387,7 +421,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe
         dataSetProperties.setProperty(PARENT_TYPE_KEY, "RAW_DATA");
         save(dataSetProperties, DATA_SET_PROPERTIES_FILE);
         prepareGetExperimentAndGetSampleType(true);
-        prepareUpdateSample(null);
+        prepareUpdateSample(null, null);
         prepareGetDataSetType("MZXML_DATA");
         context.checking(new Expectations()
             {
@@ -548,7 +582,7 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe
             });
     }
 
-    private void prepareUpdateSample(final String newName)
+    private void prepareUpdateSample(final String newName, final String[] expectedModifiedParentCodesOrNull)
     {
         context.checking(new Expectations()
             {
@@ -577,7 +611,9 @@ public class DataSetInfoExtractorForMSInjectionTest extends AbstractFileSystemTe
                                             .getId().longValue());
                                     assertEquals(0, sampleUpdate.getAttachments().size());
                                     assertEquals(null, sampleUpdate.getContainerIdentifierOrNull());
-                                    assertEquals(null, sampleUpdate.getModifiedParentCodesOrNull());
+                                    Assert.assertEquals(
+                                            sampleUpdate.getModifiedParentCodesOrNull(),
+                                            expectedModifiedParentCodesOrNull);
                                     assertEquals(EXPERIMENT_IDENTIFIER, sampleUpdate
                                             .getExperimentIdentifierOrNull().toString());
                                     assertEquals(SAMPLE_IDENTIFIER, sampleUpdate