diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java
index 1085a2fe73c9f93f6dd2c5ea681c4da69e84ac63..3e097579e7a7ed70f4e471202af1ab2fe3d9f88a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SimpleDataSetHelper.java
@@ -17,8 +17,10 @@
 package ch.systemsx.cisd.openbis.generic.server.business.bo;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
@@ -58,6 +60,15 @@ public class SimpleDataSetHelper
         SamplePE sampleOrNull = data.tryGetSample();
         result.setSampleCode(sampleOrNull == null ? null : sampleOrNull.getCode());
         result.setDataSetType(data.getDataSetType().getCode());
+
+        HashSet<String> parentCodes = new HashSet<String>();
+        for (DataPE parent : data.getParents())
+        {
+            parentCodes.add(parent.getCode());
+        }
+
+        result.setParentDataSetCodes(parentCodes);
+
         return result;
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java
index 2bec7fdd5e077069378dd25b86449cce06f49fe5..76c9d83cf0b7383f7586f3646f06d34b4be67c12 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SimpleDataSetInformationDTO.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.shared.dto;
 
 import java.io.Serializable;
+import java.util.Collection;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
 
@@ -29,21 +30,23 @@ public class SimpleDataSetInformationDTO implements Serializable
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
-    String dataSetCode;
+    private String dataSetCode;
 
-    String dataSetLocation;
+    private String dataSetLocation;
 
-    String dataSetType;
+    private String dataSetType;
 
-    String sampleCode;
+    private String sampleCode;
 
-    String groupCode;
+    private String groupCode;
 
-    String experimentCode;
+    private String experimentCode;
 
-    String projectCode;
+    private String projectCode;
 
-    String databaseInstanceCode;
+    private String databaseInstanceCode;
+
+    private Collection<String> parentDataSetCodes;
 
     public String getDataSetType()
     {
@@ -126,4 +129,14 @@ public class SimpleDataSetInformationDTO implements Serializable
         this.databaseInstanceCode = dbInstanceCode;
     }
 
+    public Collection<String> getParentDataSetCodes()
+    {
+        return parentDataSetCodes;
+    }
+
+    public void setParentDataSetCodes(Collection<String> parentDataSetCodes)
+    {
+        this.parentDataSetCodes = parentDataSetCodes;
+    }
+
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
index 22d4236cc83cfd8d6c887bd3bd2a81d44644ad8f..ce06b80ce704d1d7b22d018fa7f9d4c22d9d3bf9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/AbstractFeatureVectorMigrator.java
@@ -37,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
 
@@ -134,7 +135,7 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
     private Sample findSampleCodeForDataSet(SimpleDataSetInformationDTO dataSetInfo)
     {
         String sampleCodeOrNull = dataSetInfo.getSampleCode();
-        Sample sample = null;
+        SampleIdentifier sampleId = null;
         if (null == sampleCodeOrNull)
         {
             // check the parent data sets for a sample
@@ -142,20 +143,20 @@ public abstract class AbstractFeatureVectorMigrator implements IMigrator
             for (String dataSetCode : parentDataSetCodes)
             {
                 ExternalData externalData = openBisService.tryGetDataSetForServer(dataSetCode);
-                if (externalData.getSample() != null)
+                if (externalData != null && externalData.getSample() != null)
                 {
-                    sample = externalData.getSample();
+                    sampleId = SampleIdentifierFactory.parse(externalData.getSampleIdentifier());
                     break;
                 }
             }
         } else
         {
-            SampleIdentifier sampleId =
+            sampleId =
                     new SampleIdentifier(new SpaceIdentifier(dataSetInfo.getDatabaseInstanceCode(),
                             dataSetInfo.getGroupCode()), dataSetInfo.getSampleCode());
-            sample = openBisService.tryGetSampleWithExperiment(sampleId);
         }
-        return sample;
+
+        return openBisService.tryGetSampleWithExperiment(sampleId);
     }
 
     public void close()