diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DataSetRegistrationAlgorithm.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DataSetRegistrationAlgorithm.java
index 68fdf2942a709995a48e087f8dcfb5ce18b406f0..90c2415636c5c8a1c9f9535300e5dcb2848dc641 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/DataSetRegistrationAlgorithm.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/DataSetRegistrationAlgorithm.java
@@ -85,11 +85,16 @@ public abstract class DataSetRegistrationAlgorithm
         this.dataStoreStrategy =
                 getDataStrategyStore()
                         .getDataStoreStrategy(dataSetInformation, incomingDataSetFile);
-        this.dataSetType = getTypeExtractor().getDataSetType(incomingDataSetFile);
+        this.dataSetType = extractDataSetType();
         dataSetInformation.setDataSetType(dataSetType);
         this.storeRoot = getStorageProcessor().getStoreRootDirectory();
     }
 
+    protected DataSetType extractDataSetType()
+    {
+        return getTypeExtractor().getDataSetType(incomingDataSetFile);
+    }
+
     /**
      * Prepare registration of a data set.
      */
@@ -101,7 +106,7 @@ public abstract class DataSetRegistrationAlgorithm
                 new BaseDirectoryHolder(dataStoreStrategy, baseDirectory, incomingDataSetFile);
     }
 
-    final boolean hasDataSetBeenIdentified()
+    public final boolean hasDataSetBeenIdentified()
     {
         return dataStoreStrategy.getKey() == DataStoreStrategyKey.IDENTIFIED;
     }
@@ -259,7 +264,7 @@ public abstract class DataSetRegistrationAlgorithm
     /**
      * This method is only ever called for unidentified data sets.
      */
-    final void dealWithUnidentifiedDataSet()
+    public final void dealWithUnidentifiedDataSet()
     {
         final boolean ok =
                 shouldDeleteUnidentified() ? (removeAndLog(incomingDataSetFile.getName()
@@ -360,7 +365,7 @@ public abstract class DataSetRegistrationAlgorithm
      * 
      * @return never <code>null</code> but prefers to throw an exception.
      */
-    private final DataSetInformation extractDataSetInformation(final File incomingDataSetPath)
+    protected DataSetInformation extractDataSetInformation(final File incomingDataSetPath)
     {
         String errorMessage =
                 "Error when trying to identify data set '" + incomingDataSetPath.getAbsolutePath()
@@ -426,7 +431,7 @@ public abstract class DataSetRegistrationAlgorithm
         final NewExternalData data = new NewExternalData();
         data.setExtractableData(dataSetInformation.getExtractableData());
         data.setLocatorType(getTypeExtractor().getLocatorType(incomingDataSetFile));
-        data.setDataSetType(getTypeExtractor().getDataSetType(incomingDataSetFile));
+        data.setDataSetType(extractDataSetType());
         data.setFileFormatType(getTypeExtractor().getFileFormatType(incomingDataSetFile));
         data.setMeasured(getTypeExtractor().isMeasuredData(incomingDataSetFile));
         data.setDataStoreCode(getDataStoreCode());
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java
index 5f84c52a74aa7ee5e53ba2567187698b1040e4ec..0dd941bc1ddf001e58fc16b77d83da764009748a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/TransferredDataSetHandler.java
@@ -71,7 +71,7 @@ public final class TransferredDataSetHandler implements IPathHandler, ISelfTesta
     static final String SUCCESSFULLY_REGISTERED = "Successfully registered data set: [";
 
     @Private
-    static final String EMAIL_SUBJECT_TEMPLATE = "Success: data set for experiment '%s";
+    public static final String EMAIL_SUBJECT_TEMPLATE = "Success: data set for experiment '%s";
 
     static final Logger notificationLog =
             LogFactory.getLogger(LogCategory.NOTIFY, TransferredDataSetHandler.class);