diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/fvec/FeatureVectorStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/fvec/FeatureVectorStorageProcessor.java
index f7a66225e00d282f5f44bedc3a296a793c053139..fa170c9fec12ec54a1cb44049db12ede146b93d4 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/fvec/FeatureVectorStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/fvec/FeatureVectorStorageProcessor.java
@@ -40,6 +40,8 @@ import ch.systemsx.cisd.utils.CsvFileReaderHelper;
 import ch.systemsx.cisd.utils.CsvFileReaderHelper.ICsvFileReaderConfiguration;
 
 /**
+ * Extract features from the file and store them in the database.
+ * 
  * @author Chandrasekhar Ramakrishnan
  */
 public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProcessor
@@ -140,6 +142,9 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
 
     private final DataSource dataSource;
 
+    // Execution state of this object -- set to null after an execution is finished.
+    private IImagingUploadDAO dataAccessObject = null;
+
     public FeatureVectorStorageProcessor(Properties properties)
     {
         super(properties);
@@ -160,18 +165,16 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
                         incomingDataSetDirectory, rootDir);
         // Import into the data base
         File parent = new File(answer, ORIGINAL_DIR);
-        File dataSets = new File(parent, incomingDataSetDirectory.getName());
-        for (File dataSet : dataSets.listFiles())
-        {
-            try
-            {
-                loadDataSetIntoDatabase(dataSet, dataSetInformation);
-            } catch (IOException ex)
-            {
-                throw new IOExceptionUnchecked(ex);
-            }
+        File dataSet = new File(parent, incomingDataSetDirectory.getName());
 
+        try
+        {
+            loadDataSetIntoDatabase(dataSet, dataSetInformation);
+        } catch (IOException ex)
+        {
+            throw new IOExceptionUnchecked(ex);
         }
+
         return answer;
     }
 
@@ -183,13 +186,11 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
                 new CSVToCanonicalFeatureVector(fileLines, convertorConfig);
         ArrayList<CanonicalFeatureVector> fvecs = convertor.convert();
 
-        IImagingUploadDAO dao = createDAO();
+        dataAccessObject = createDAO();
         FeatureVectorUploader uploader =
-                new FeatureVectorUploader(dao, ScreeningContainerDatasetInfo
+                new FeatureVectorUploader(dataAccessObject, ScreeningContainerDatasetInfo
                         .createScreeningDatasetInfo(dataSetInformation));
         uploader.uploadFeatureVectors(fvecs);
-        dao.commit();
-        dao.close();
     }
 
     private IImagingUploadDAO createDAO()
@@ -197,11 +198,39 @@ public class FeatureVectorStorageProcessor extends AbstractDelegatingStorageProc
         return QueryTool.getQuery(dataSource, IImagingUploadDAO.class);
     }
 
+    @Override
+    public void commit()
+    {
+        super.commit();
+
+        if (null == dataAccessObject)
+        {
+            return;
+        }
+
+        dataAccessObject.commit();
+        closeDataAccessObject();
+    }
+
+    /**
+     * Close the DAO and set it to null to make clear that it is not initialized.
+     */
+    private void closeDataAccessObject()
+    {
+        dataAccessObject.close();
+        dataAccessObject = null;
+    }
+
     @Override
     public UnstoreDataAction rollback(final File incomingDataSetDirectory,
             final File storedDataDirectory, Throwable exception)
     {
         // Delete the data from the database
+        if (null != dataAccessObject)
+        {
+            dataAccessObject.rollback();
+            closeDataAccessObject();
+        }
 
         return super.rollback(incomingDataSetDirectory, storedDataDirectory, exception);
     }