diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java
index 513f743ef561e77cf72697a3346ed8e273d1fbdc..19c65eaf4296e90fea5e725c5226c1e14a0e33f3 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ETLDaemon.java
@@ -257,18 +257,9 @@ public final class ETLDaemon
             IDataSetValidator dataSetValidator, final boolean notifySuccessfulRegistration)
     {
         final File incomingDataDirectory = threadParameters.getIncomingDataDirectory();
-        final IETLServerPlugin plugin = threadParameters.getPlugin();
-        final Properties properties = parameters.getProperties();
-        final File storeRootDir = getStoreRootDir(properties);
-        migrateStoreRootDir(storeRootDir, authorizedLimsService.getHomeDatabaseInstance());
-        plugin.getStorageProcessor().setStoreRootDirectory(storeRootDir);
-        final Properties mailProperties = parameters.getMailProperties();
-        String dssCode = PropertyParametersUtil.getDataStoreCode(properties);
         final TransferredDataSetHandler pathHandler =
-                new TransferredDataSetHandler(dssCode, plugin, authorizedLimsService,
-                        mailProperties, dataSetValidator, notifySuccessfulRegistration,
-                        threadParameters.useIsFinishedMarkerFile(), threadParameters
-                                .deleteUnidentified());
+                createDataSetHandler(parameters.getProperties(), threadParameters,
+                        authorizedLimsService, dataSetValidator, notifySuccessfulRegistration);
         final HighwaterMarkDirectoryScanningHandler directoryScanningHandler =
                 createDirectoryScanningHandler(pathHandler, highwaterMarkWatcher,
                         incomingDataDirectory, threadParameters.reprocessFaultyDatasets());
@@ -287,6 +278,23 @@ public final class ETLDaemon
                 threadParameters.getThreadName());
     }
 
+    public static TransferredDataSetHandler createDataSetHandler(final Properties properties,
+            final ThreadParameters threadParameters,
+            final IEncapsulatedOpenBISService openBISService,
+            IDataSetValidator dataSetValidator, final boolean notifySuccessfulRegistration)
+    {
+        final IETLServerPlugin plugin = threadParameters.getPlugin();
+        final File storeRootDir = getStoreRootDir(properties);
+        migrateStoreRootDir(storeRootDir, openBISService.getHomeDatabaseInstance());
+        plugin.getStorageProcessor().setStoreRootDirectory(storeRootDir);
+        final Properties mailProperties = Parameters.createMailProperties(properties);
+        String dssCode = PropertyParametersUtil.getDataStoreCode(properties);
+        boolean deleteUnidentified = threadParameters.deleteUnidentified();
+        return new TransferredDataSetHandler(dssCode, plugin, openBISService,
+                mailProperties, dataSetValidator, notifySuccessfulRegistration,
+                threadParameters.useIsFinishedMarkerFile(), deleteUnidentified);
+    }
+
     private static FileFilter createFileFilter(File incomingDataDirectory,
             boolean useIsFinishedMarkerFile, Parameters parameters)
     {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/Parameters.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/Parameters.java
index aa1681476b8c8d8f0c3fada0d36b2f08d24cca3f..87e0682de0969bf5c75b0be1b1ad6478e071f572 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/Parameters.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/Parameters.java
@@ -106,9 +106,6 @@ public class Parameters
     @Option(name = "p", longName = "password", usage = "User login password")
     private String password;
 
-    /** A subset of <code>service.properties</code> that are reserved for the <i>JavaMail API</i>. */
-    private final Properties mailProperties;
-
     /**
      * The command line parser.
      */
@@ -167,7 +164,6 @@ public class Parameters
             this.serviceProperties = PropertyParametersUtil.loadServiceProperties();
             PropertyUtils.trimProperties(serviceProperties);
             this.threads = createThreadParameters(serviceProperties);
-            this.mailProperties = createMailProperties(serviceProperties);
             this.timingParameters = TimingParameters.create(serviceProperties);
             this.maintenancePlugins = createMaintenancePlugins(serviceProperties);
 
@@ -267,7 +263,7 @@ public class Parameters
         return threadParameters;
     }
 
-    private final static Properties createMailProperties(final Properties serviceProperties)
+    final static Properties createMailProperties(final Properties serviceProperties)
     {
         final Properties properties =
                 ExtendedProperties.getSubset(serviceProperties, "mail", false);
@@ -346,12 +342,6 @@ public class Parameters
         return serviceProperties;
     }
 
-    /** Returns <code>mailProperties</code>. */
-    public final Properties getMailProperties()
-    {
-        return mailProperties;
-    }
-
     /**
      * Returns the timing parameters for monitored operations.
      */
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java
index 676eabda4da75ce87da57feebc910995c8fab9ea..8acd5214b50d4543b9e3fb70afc978d52f3a7756 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java
@@ -171,7 +171,7 @@ public final class ThreadParameters
     /**
      * Returns The directory to monitor for incoming data.
      */
-    final File getIncomingDataDirectory()
+    public final File getIncomingDataDirectory()
     {
         return incomingDataDirectory;
     }