diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
index 682edd656e486c1b62fe4dfc6b644437032144a7..c85137936de8e4cb87ee3358671f056f5746b647 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/CifexStorageProcessor.java
@@ -50,22 +50,25 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
  */
 public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
 {
-    private final static Logger notificationLog =
-            LogFactory.getLogger(LogCategory.NOTIFY, CifexStorageProcessor.class);
+    private final static Logger notificationLog = LogFactory.getLogger(LogCategory.NOTIFY,
+            CifexStorageProcessor.class);
 
     public static final String KEEP_FILE_REGEX_KEY = "keep-file-regex";
+
     public static final String MOVE_TO_ERROR_FOLDER_KEY = "move-to-error-folder";
 
     private final String keepFileRegex;
 
     private final boolean moveToErrorFolder;
-    
+
     private File dirToRestore;
 
     private File fileToMove;
 
     private boolean dirDeleted = false;
 
+    private File newIncomingDataSetDirectory;
+
     public CifexStorageProcessor(Properties properties)
     {
         super(properties);
@@ -77,25 +80,26 @@ public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
     public File storeData(DataSetInformation dataSetInformation, ITypeExtractor typeExtractor,
             IMailClient mailClient, File incomingDataSetDirectory, File rootDir)
     {
-        File result = super.storeData(dataSetInformation, typeExtractor, mailClient, incomingDataSetDirectory, rootDir);
+        newIncomingDataSetDirectory = incomingDataSetDirectory;
         if (StringUtils.isBlank(keepFileRegex) == false)
         {
-            clean(tryGetProprietaryData(rootDir), keepFileRegex);
+            newIncomingDataSetDirectory = clean(incomingDataSetDirectory, keepFileRegex);
         }
-        return result;
+        return super.storeData(dataSetInformation, typeExtractor, mailClient,
+                newIncomingDataSetDirectory, rootDir);
     }
 
     @Override
     public UnstoreDataAction rollback(File incomingDataSetDirectory, File storedDataDirectory,
             Throwable exception)
     {
+        super.rollback(newIncomingDataSetDirectory, storedDataDirectory, exception);
         if (dirDeleted)
         {
             FileOperations.getMonitoredInstanceForCurrentThread().mkdir(dirToRestore);
             FileOperations.getMonitoredInstanceForCurrentThread().moveToDirectory(fileToMove,
                     dirToRestore);
         }
-        super.rollback(incomingDataSetDirectory, storedDataDirectory, exception);
         return moveToErrorFolder ? UnstoreDataAction.MOVE_TO_ERROR : UnstoreDataAction.DELETE;
     }
 
@@ -158,8 +162,8 @@ public class CifexStorageProcessor extends AbstractDelegatingStorageProcessor
 
     private void createCleaningErrorMessage(File dir, String pattern)
     {
-        notificationLog.error(String.format("Cleaning '%s' by file name pattern '%s' failed.", dir
-                .getPath(), pattern));
+        notificationLog.error(String.format("Cleaning '%s' by file name pattern '%s' failed.",
+                dir.getPath(), pattern));
     }
 
     private void removeUnmatchedFiles(File dir, List<File> matchingFiles)