diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorContainerDataSet.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorContainerDataSet.java
index 3047aa608fef028eb0ed5b30a40cfa5665b83cfa..57fefcd6d3d5b2e2230f4fdb334736a5c735c083 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorContainerDataSet.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorContainerDataSet.java
@@ -98,12 +98,6 @@ public class FeatureVectorContainerDataSet extends DataSet<DataSetInformation> i
         getRegistrationDetails().setPropertyValue(propertyCode, propertyValue);
     }
 
-    @Override
-    public File getDataSetStagingFolder()
-    {
-        return originalDataset.getDataSetStagingFolder();
-    }
-
     public static String getContainerAnalysisType(String dataSetTypeCode)
     {
         if (!isHCSAnalysisDataSetType(dataSetTypeCode))
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorDataSet.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorDataSet.java
index 25d2ccaa59754f8eac1a0361d9c7257cd1098375..8f10f1878bcd079c2c5e6fccf89527b6f8f1ffaa 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorDataSet.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/impl/FeatureVectorDataSet.java
@@ -64,12 +64,6 @@ public class FeatureVectorDataSet extends DataSet<FeatureVectorDataSetInformatio
         return dataSet.getRegistrationDetails();
     }
 
-    @Override
-    public File getDataSetStagingFolder()
-    {
-        return dataSet.getDataSetStagingFolder();
-    }
-
     @Override
     public String getDataSetCode()
     {
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index d1ed76c9a1cfc3c7b65210791a31dbf1ed6a1a41..b925397281eca80160075a5b0e52f2d4c7c70c4d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -1319,14 +1319,12 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc<IDssServiceRpc
     {
         String[] permIds = extractPermIds(datasetIdents);
         List<ImgAnalysisDatasetDTO> datasets = getDAO().listAnalysisDatasetsByPermId(permIds);
-        if (datasets.size() != datasetIdents.size())
+
+        if (datasets.size() == 0 && datasetIdents.size() > 0)
         {
-            Set<String> missing = new HashSet<String>(Arrays.asList(permIds));
-            for (ImgAnalysisDatasetDTO dataset : datasets)
-            {
-                missing.remove(dataset.getPermId());
-            }
-            throw new UserFailureException("Following datasets could not be found: " + missing);
+            throw new UserFailureException(
+                    "Couldn't find any analysis dataset for given datasets: "
+                            + Arrays.asList(permIds));
         }
         return datasets;
     }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java
index 8179526ba36c85333e2ef2d1ebcc72c0d0820cb3..b3d853b699e625620712535cdce60fc82a9f73a2 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningOpenbisServiceFacade.java
@@ -13,6 +13,7 @@ import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -23,12 +24,12 @@ import org.apache.commons.lang.time.DateUtils;
 
 import ch.systemsx.cisd.base.image.IImageTransformerFactory;
 import ch.systemsx.cisd.common.api.MinimalMinorVersion;
-import ch.systemsx.cisd.openbis.common.api.client.ServiceFinder;
 import ch.systemsx.cisd.common.api.retry.RetryCaller;
 import ch.systemsx.cisd.common.api.retry.RetryProxyFactory;
 import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.io.ConcatenatedFileOutputStreamWriter;
+import ch.systemsx.cisd.openbis.common.api.client.ServiceFinder;
 import ch.systemsx.cisd.openbis.dss.client.api.v1.DssComponentFactory;
 import ch.systemsx.cisd.openbis.dss.client.api.v1.IDataSetDss;
 import ch.systemsx.cisd.openbis.dss.client.api.v1.IDssComponent;
@@ -51,6 +52,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.MatchClause;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.MatchClauseAttribute;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.SearchOperator;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchSubCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.filter.IDataSetFilter;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.filter.TypeBasedDataSetFilter;
@@ -200,8 +202,8 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa
     /**
      * This constructor is only for use in tests. Do not use it otherwise.
      */
-    public static IScreeningOpenbisServiceFacade tryCreateForTest(String sessionToken, String serverUrl,
-            final IScreeningApiServer openbisServer)
+    public static IScreeningOpenbisServiceFacade tryCreateForTest(String sessionToken,
+            String serverUrl, final IScreeningApiServer openbisServer)
     {
         return tryCreate(sessionToken, serverUrl, openbisServer);
     }
@@ -902,7 +904,30 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa
             List<? extends IFeatureVectorDatasetIdentifier> featureDatasets)
     {
         final Set<FeatureInformation> result = new HashSet<FeatureInformation>();
-        featureVectorDataSetIdentifierMultiplexer.process(featureDatasets,
+
+        List<DataSet> containedDataSets = getContainedDataSets(featureDatasets);
+
+        List<IFeatureVectorDatasetIdentifier> identifiersIncludingContained = null;
+
+        if (containedDataSets.size() != 0)
+        {
+            String host = featureDatasets.get(0).getDatastoreServerUrl();
+
+            identifiersIncludingContained = new LinkedList<IFeatureVectorDatasetIdentifier>();
+            identifiersIncludingContained.addAll(featureDatasets);
+            for (DataSet contained : containedDataSets)
+            {
+                IFeatureVectorDatasetIdentifier containedIdentifier =
+                        new FeatureVectorDatasetReference(contained.getCode(),
+                                contained.getDataSetTypeCode(), host, null, null, null, null, null,
+                                null);
+                identifiersIncludingContained.add(containedIdentifier);
+            }
+        }
+
+        featureVectorDataSetIdentifierMultiplexer.process(
+                identifiersIncludingContained == null ? featureDatasets
+                        : identifiersIncludingContained,
                 new IReferenceHandler<IFeatureVectorDatasetIdentifier>()
                     {
                         @Override
@@ -932,6 +957,30 @@ public class ScreeningOpenbisServiceFacade implements IScreeningOpenbisServiceFa
         return new ArrayList<FeatureInformation>(result);
     }
 
+    private SearchSubCriteria getContainerSearchCriteria(String containerCode)
+    {
+        SearchCriteria searchSubCriteria = new SearchCriteria();
+        searchSubCriteria.addMatchClause(MatchClause.createAttributeMatch(
+                MatchClauseAttribute.CODE, containerCode));
+        return SearchSubCriteria.createDataSetContainerCriteria(searchSubCriteria);
+    }
+
+    protected List<DataSet> getContainedDataSets(
+            List<? extends IFeatureVectorDatasetIdentifier> featureDatasets)
+    {
+        SearchCriteria searchCriteria = new SearchCriteria();
+        for (IFeatureVectorDatasetIdentifier id : featureDatasets)
+        {
+            String containerId = id.getDatasetCode();
+            searchCriteria.addSubCriteria(getContainerSearchCriteria(containerId));
+        }
+        searchCriteria.setOperator(SearchOperator.MATCH_ANY_CLAUSES);
+
+        List<DataSet> containedDataSets =
+                generalInformationService.searchForDataSets(sessionToken, searchCriteria);
+        return containedDataSets;
+    }
+
     /**
      * For a given set of plates and a set of features (given by their code), provide all the
      * feature vectors.
diff --git a/screening/sourceTest/core-plugins/FeatureVectorsDropboxTest/1/dss/drop-boxes/FeatureVectorsDropboxTest-drop-box/plugin.properties b/screening/sourceTest/core-plugins/FeatureVectorsDropboxTest/1/dss/drop-boxes/FeatureVectorsDropboxTest-drop-box/plugin.properties
index 900b82a6dbb9b13c2d529a9eb13bb82341382164..8ab36658292a7ae31514007026cb39b1d8176a7a 100644
--- a/screening/sourceTest/core-plugins/FeatureVectorsDropboxTest/1/dss/drop-boxes/FeatureVectorsDropboxTest-drop-box/plugin.properties
+++ b/screening/sourceTest/core-plugins/FeatureVectorsDropboxTest/1/dss/drop-boxes/FeatureVectorsDropboxTest-drop-box/plugin.properties
@@ -3,6 +3,16 @@ incoming-dir-create = true
 incoming-data-completeness-condition = auto-detection
 top-level-data-set-handler = ch.systemsx.cisd.openbis.dss.etl.jython.v2.JythonPlateDataSetHandlerV2
 script-path = feature-vector-data-set-handler.py
-storage-processor = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor
-storage-processor.processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
-storage-processor.data-source = imaging-db
\ No newline at end of file
+storage-processor = ch.systemsx.cisd.etlserver.DispatcherStorageProcessor
+storage-processor.processors = images, analysis
+# --- images - accepts all image datasets registrations
+storage-processor.images = ch.systemsx.cisd.openbis.dss.etl.PlateStorageProcessor
+storage-processor.images.data-source = imaging-db
+# --- analysis - accepts all other datasets (and assumes they are single CSV files)
+storage-processor.analysis = ch.systemsx.cisd.openbis.dss.etl.featurevector.FeatureVectorStorageProcessor
+storage-processor.analysis.processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
+storage-processor.analysis.data-source = imaging-db
+storage-processor.analysis.separator = ,
+storage-processor.analysis.well-name-row = Well
+storage-processor.analysis.well-name-col = Well
+storage-processor.analysis.well-name-col-is-alphanum = true
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/FeatureVectorsDropboxTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/FeatureVectorsDropboxTest.java
index 63ca230492536ebd45535ab3a2518fa9bbde90b6..2165c506dd0a04d2fae92863dd899e24c9218dcd 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/FeatureVectorsDropboxTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/FeatureVectorsDropboxTest.java
@@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.screening.systemtests;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.commons.io.FileUtils;
@@ -30,11 +32,15 @@ import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.common.servlet.SpringRequestContextProvider;
+import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.api.v1.IScreeningOpenbisServiceFacade;
 import ch.systemsx.cisd.openbis.plugin.screening.client.api.v1.ScreeningOpenbisServiceFacade;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientService;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.ResourceNames;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.IScreeningApiServer;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.FeatureInformation;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.FeatureVector;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.FeatureVectorDataset;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.FeatureVectorDatasetReference;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto.Plate;
 
@@ -62,7 +68,22 @@ public class FeatureVectorsDropboxTest extends AbstractScreeningSystemTestCase
         moveFileToIncoming(exampleDataSet);
         waitUntilDataSetImported();
     }
-    
+
+    @Override
+    protected boolean checkLogContentForFinishedDataSetRegistration(String logContent)
+    {
+        return checkOnFinishedPostRegistration(logContent);
+    }
+
+    /**
+     * sets up the openbis database to be used by the tests.
+     */
+    @Override
+    protected void setUpDatabaseProperties()
+    {
+        TestInitializer.initEmptyDbWithIndex();
+    }
+
     @BeforeMethod
     public void setUp() throws Exception
     {
@@ -75,7 +96,9 @@ public class FeatureVectorsDropboxTest extends AbstractScreeningSystemTestCase
         Object bean = applicationContext.getBean(ResourceNames.SCREENING_PLUGIN_SERVER);
         screeningServer = (IScreeningApiServer) bean;
         sessionToken = screeningClientService.tryToLogin("admin", "a").getSessionID();
-        screeningFacade = ScreeningOpenbisServiceFacade.tryCreateForTest(sessionToken, "http://localhost:" + SYSTEM_TEST_CASE_SERVER_PORT, screeningServer);
+        screeningFacade =
+                ScreeningOpenbisServiceFacade.tryCreateForTest(sessionToken, "http://localhost:"
+                        + SYSTEM_TEST_CASE_SERVER_PORT, screeningServer);
     }
 
     @AfterMethod
@@ -102,8 +125,40 @@ public class FeatureVectorsDropboxTest extends AbstractScreeningSystemTestCase
         FeatureVectorDatasetReference feature = features.get(0);
         assertEquals("HCS_ANALYSIS_CONTAINER_WELL_FEATURES", feature.getDataSetType());
 
+        List<FeatureInformation> availableFeatures =
+                screeningFacade.listAvailableFeatures(features);
+
+        List<String> availableFeatureCodes = new LinkedList<String>();
+        for (FeatureInformation availableFeature : availableFeatures)
+        {
+            availableFeatureCodes.add(availableFeature.getCode());
+        }
+        Collections.sort(availableFeatureCodes);
+        assertEquals("[COLUMN_NUMBER, ROW_NUMBER, STATE, TPU]", availableFeatureCodes.toString());
+
+        List<FeatureVectorDataset> featureVectorDatasets =
+                screeningFacade.loadFeatures(features, Collections.singletonList("TPU"));
+
+        assertEquals(1, featureVectorDatasets.size());
+
+        FeatureVectorDataset featureVectorDataset = featureVectorDatasets.get(0);
+
+        int nonNanPositions = 0;
+
+        for (FeatureVector v : featureVectorDataset.getFeatureVectors())
+        {
+            if (false == Double.isNaN(v.getValues()[0]))
+            {
+                nonNanPositions++;
+            }
+        }
+
+        assertEquals(
+                "There are not enough values in the feature. Maybe the feature was not loaded correctly",
+                8 * 12, nonNanPositions);
+
     }
-    
+
     private List<Plate> filterPlates(List<Plate> plates)
     {
         List<Plate> filteredPlates = new ArrayList<Plate>();
@@ -125,6 +180,7 @@ public class FeatureVectorsDropboxTest extends AbstractScreeningSystemTestCase
         File featureSrc = getFeatureVectorsTestData();
         FileUtils.copyFileToDirectory(featureSrc, dest);
         // Copy the test data set to the location for processing
+
         return dest;
     }