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 1b3269f65c07699d96692645c73e8b8d3901328d..af4e72a1215a199343a1c4b92a9fdd8ded46b5a5 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/ThreadParameters.java
@@ -113,6 +113,14 @@ public final class ThreadParameters
 
     public static final String PROCESS_RETRY_PAUSE_IN_SEC = "process-retry-pause-in-sec";
 
+    /*
+     * Recovery related properties
+     */
+
+    public static final String RECOVERY_MAX_RETRY_COUNT = "recovery-max-retry-count";
+
+    public static final String RECOVERY_MIN_RETRY_PERIOD = "recovery-min-retry-period";
+
     /**
      * The (local) directory to monitor for new files and directories to move to the remote side.
      * The directory where data to be processed by the ETL server become available.
@@ -151,6 +159,10 @@ public final class ThreadParameters
 
     private final int processRetryPauseInSec;
 
+    private final int maximumRecoveryCount;
+
+    private final int minimumRecoveryPeriod;
+
     private final DataSetRegistrationPreStagingBehavior dataSetRegistrationPreStagingBehavior;
 
     /**
@@ -200,17 +212,21 @@ public final class ThreadParameters
                         "6"));
 
         this.dataSetRegistrationRetryPauseInSec =
-                Integer.parseInt(threadProperties.getProperty(DATASET_REGISTRATION_RETRY_PAUSE_IN_SEC,
-                        "300"));
+                Integer.parseInt(threadProperties.getProperty(
+                        DATASET_REGISTRATION_RETRY_PAUSE_IN_SEC, "300"));
 
         this.processMaxRetryCount =
-                Integer.parseInt(threadProperties.getProperty(PROCESS_MAX_RETRY_COUNT,
-                        "6"));
+                Integer.parseInt(threadProperties.getProperty(PROCESS_MAX_RETRY_COUNT, "6"));
 
         this.processRetryPauseInSec =
-                Integer.parseInt(threadProperties.getProperty(PROCESS_RETRY_PAUSE_IN_SEC,
-                        "300"));
-        
+                Integer.parseInt(threadProperties.getProperty(PROCESS_RETRY_PAUSE_IN_SEC, "300"));
+
+        this.maximumRecoveryCount =
+                PropertyUtils.getInt(threadProperties, RECOVERY_MAX_RETRY_COUNT, 50);
+
+        this.minimumRecoveryPeriod =
+                PropertyUtils.getInt(threadProperties, RECOVERY_MIN_RETRY_PERIOD, 60);
+
         this.threadName = threadName;
 
         String onErrorClassName =
@@ -477,4 +493,13 @@ public final class ThreadParameters
         return processRetryPauseInSec;
     }
 
+    public int getMaximumRecoveryCount()
+    {
+        return maximumRecoveryCount;
+    }
+
+    public int getMinimumRecoveryPeriod()
+    {
+        return minimumRecoveryPeriod;
+    }
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java
index fbb890c2cf945c28228829515116613e9a94785c..cadf696858a380f2d83f5b65432a8bdeaf205608 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TopLevelDataSetRegistratorGlobalState.java
@@ -156,11 +156,11 @@ public class TopLevelDataSetRegistratorGlobalState implements IResource
         this.storageRecoveryManager = storageRecoveryManager;
         this.storageRecoveryManager.setDropboxRecoveryStateDir(this.recoveryStateDir);
         this.storageRecoveryManager.setRecoveryMarkerFilesDir(recoveryMarkerFilesDirectory);
-        this.storageRecoveryManager.setMaximumRertyCount(getMaximumRecoveryCount(threadParameters
-                .getThreadProperties()));
         this.storageRecoveryManager
-                .setRetryPeriodInSeconds(getMinimumRecoveryPeriod(threadParameters
-                        .getThreadProperties()));
+                .setMaximumRertyCount(threadParameters.getMaximumRecoveryCount());
+        this.storageRecoveryManager
+.setRetryPeriodInSeconds(threadParameters
+                .getMinimumRecoveryPeriod());
 
         // Initialize the DSS Registration Log Directory
         new DssRegistrationLogDirectoryHelper(dssRegistrationLogDir).initializeSubdirectories();
@@ -310,6 +310,10 @@ public class TopLevelDataSetRegistratorGlobalState implements IResource
         return storageRecoveryManager;
     }
 
+    /*
+     * Properties that control the location of directories. Other properties are rather more
+     * suitable in ThreadParameters
+     */
     public static final String STAGING_DIR = "staging-dir";
 
     public static final String PRE_STAGING_DIR = "pre-staging-dir";
@@ -318,10 +322,6 @@ public class TopLevelDataSetRegistratorGlobalState implements IResource
 
     public static final String RECOVERY_MARKER_DIR = "recovery-marker-dir";
 
-    public static final String RECOVERY_MAX_RETRY_COUNT = "recovery-max-retry-count";
-
-    public static final String RECOVERY_MIN_RETRY_PERIOD = "recovery-min-retry-period";
-
     private static File getStagingDir(File storeRoot, String shareId, Properties threadProperties)
     {
         return getShareLocalDir(storeRoot, shareId, threadProperties, STAGING_DIR, "staging");
@@ -345,16 +345,6 @@ public class TopLevelDataSetRegistratorGlobalState implements IResource
                 "recovery-marker");
     }
 
-    private static int getMaximumRecoveryCount(Properties threadProperties)
-    {
-        return PropertyUtils.getInt(threadProperties, RECOVERY_MAX_RETRY_COUNT, 50);
-    }
-
-    private static int getMinimumRecoveryPeriod(Properties threadProperties)
-    {
-        return PropertyUtils.getInt(threadProperties, RECOVERY_MIN_RETRY_PERIOD, 60);
-    }
-
     /**
      * Get a directory local to the share, respecting the user override, if one is specified, and
      * defaulting to the defaultDirName.