diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
index 1455b68c8a413c63854962e1d9c95ab1374e15a4..70cd0c57689a4b224471fc9af86b7ce8bb29df2c 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorStorageProcessor.java
@@ -173,7 +173,9 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
                 extractCanonicalFeatureVectors(dataSet, dataSetInformation,
                         datasetInfo.getContainerGeometry());
 
-        FeatureVectorUploader uploader = new FeatureVectorUploader(dataAccessObject, datasetInfo);
+        FeatureVectorUploader uploader =
+                new FeatureVectorUploader(dataAccessObject, datasetInfo,
+                        dataSetInformation.getDataSetCode());
         uploader.uploadFeatureVectors(fvecs);
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
index 1d1dca3806f06eab38ec92926ed8c7c7fa5ab7f1..4ed4cfdce19c95b7d1e33f4c0e1352e672526309 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/featurevector/FeatureVectorUploader.java
@@ -37,10 +37,22 @@ public class FeatureVectorUploader
 
     private final HCSContainerDatasetInfo info;
 
+    /**
+     * The perm id of the dataset, which is the actual analysis dataset
+     */
+    private final String dataSetPermID;
+
     public FeatureVectorUploader(IImagingQueryDAO imagingDao, HCSContainerDatasetInfo info)
+    {
+        this(imagingDao, info, info.getDatasetPermId());
+    }
+
+    public FeatureVectorUploader(IImagingQueryDAO imagingDao, HCSContainerDatasetInfo info,
+            String dataSetPermID)
     {
         this.dao = imagingDao;
         this.info = info;
+        this.dataSetPermID = dataSetPermID;
     }
 
     /**
@@ -51,12 +63,13 @@ public class FeatureVectorUploader
     {
         long contId = ImagingDatabaseHelper.getOrCreateExperimentAndContainer(dao, info);
         long dataSetId = createFeatureVectorDataset(contId);
+
         uploadFeatureVectors(dao, fvecs, dataSetId);
     }
 
     private long createFeatureVectorDataset(long contId)
     {
-        ImgAnalysisDatasetDTO dataset = new ImgAnalysisDatasetDTO(info.getDatasetPermId(), contId);
+        ImgAnalysisDatasetDTO dataset = new ImgAnalysisDatasetDTO(dataSetPermID, contId);
         return dao.addAnalysisDataset(dataset);
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
index 8430c838efb81c93eceed6035a0d064f55d9dfc7..1d93dacec0462a1f2b1fc2fd933e8c9fe75e1270 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/genedata/FeatureStorageProcessor.java
@@ -208,7 +208,8 @@ public class FeatureStorageProcessor extends AbstractDelegatingStorageProcessor
 
         FeatureVectorUploader uploader =
                 new FeatureVectorUploader(dataAccessObject,
-                        createScreeningDatasetInfo(dataSetInformation));
+                        createScreeningDatasetInfo(dataSetInformation),
+                        dataSetInformation.getDataSetCode());
         uploader.uploadFeatureVectors(fvecs);
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java
index e0a397fb5188377e83d7534c13ca5ae2f1495cbe..0070194a42d7da09a3348d0bf955eed8debf598d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/FeatureVectorLoader.java
@@ -638,13 +638,26 @@ public class FeatureVectorLoader
         List<FeatureVectorValues> featureVectors = new ArrayList<FeatureVectorValues>();
         for (WellFeatureVectorReference reference : references)
         {
-            String dataSetCode = reference.getDatasetCode();
-            DatasetFeaturesBundle bundle = bundleMap.get(dataSetCode);
-            if (bundle != null)
+            String referenceDataSetCode = reference.getDatasetCode();
+
+            List<String> allCodes = new LinkedList<String>();
+            allCodes.add(referenceDataSetCode);
+
+            if (metadataProviderOrNull != null)
+            {
+                allCodes.addAll(metadataProviderOrNull
+                        .tryGetContainedDatasets(referenceDataSetCode));
+            }
+
+            for (String dataSetCode : allCodes)
             {
-                FeatureVectorValues featureVector =
-                        createFeatureVector(bundle, reference.getWellLocation());
-                featureVectors.add(featureVector);
+                DatasetFeaturesBundle bundle = bundleMap.get(dataSetCode);
+                if (bundle != null)
+                {
+                    FeatureVectorValues featureVector =
+                            createFeatureVector(bundle, reference.getWellLocation());
+                    featureVectors.add(featureVector);
+                }
             }
         }
         return featureVectors;
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java
index e7675af4a9dd041fbbc126bc4edb8aa411fa5bff..10d4db4bfe700f9ad397d371ad1f0c78b7cc91bf 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/ImageAnalysisMergedRowsReportingPluginTest.java
@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server.plugins;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
@@ -112,6 +113,12 @@ public class ImageAnalysisMergedRowsReportingPluginTest extends AssertJUnit
         context.checking(new Expectations()
             {
                 {
+                    one(service).tryGetContainedDatasets(ds1.getDataSetCode());
+                    will(returnValue(Collections.emptyList()));
+
+                    one(service).tryGetContainedDatasets(ds2.getDataSetCode());
+                    will(returnValue(Collections.emptyList()));
+
                     one(dao).listAnalysisDatasetsByPermId(ds1.getDataSetCode(),
                             ds2.getDataSetCode());
                     will(returnValue(Arrays.asList(createDataSet(1), createDataSet(2))));