diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java
index b3aa091834fd750dd2abc932e7091c472c6ce227..2cf31a6d8b071cd09a9bbce9f712cc0c4c90457e 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java
@@ -41,6 +41,7 @@ import ch.systemsx.cisd.common.mail.EMailAddress;
 import ch.systemsx.cisd.common.string.UnicodeUtils;
 import ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationGlobalState.SampleRegistrationMode;
 import ch.systemsx.cisd.etlserver.entityregistration.SampleDataSetPair.SampleDataSetPairProcessing;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
@@ -129,6 +130,18 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce
             return dataSetType;
         }
 
+        public DataSetKind tryDataSetKind()
+        {
+            String dataSetKindString =
+                    properties
+                            .tryGet(SampleAndDataSetRegistrationHandler.DATA_SET_KIND_CONTROL_FILE_KEY);
+            if (null == dataSetKindString)
+            {
+                return null;
+            }
+            return DataSetKind.valueOf(dataSetKindString);
+        }
+
         public String tryUserString()
         {
             return properties.tryGet(SampleAndDataSetRegistrationHandler.USER_CONTROL_FILE_KEY);
@@ -199,6 +212,16 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce
             return dataSetType;
         }
 
+        public DataSetKind getDataSetKind()
+        {
+        	DataSetKind dataSetKind = overrideProperties.tryDataSetKind();
+            if (null == dataSetKind)
+            {
+            	dataSetKind = globalProperties.tryDataSetKind();
+            }
+            return dataSetKind;
+        }
+
         public Person getUser()
         {
             return user;
@@ -258,7 +281,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce
         BisTabFileLoader<SampleDataSetPair> controlFileLoader =
                 new BisTabFileLoader<SampleDataSetPair>(
                         SampleDataSetPairParserObjectFactory.createFactoryFactory(
-                                properties.getSampleType(), properties.getDataSetType()), false);
+                                properties.getSampleType(), properties.getDataSetType(), properties.getDataSetKind()), false);
 
         List<SampleDataSetPair> loadedSampleDataSetPairs = null;
 
@@ -471,9 +494,9 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce
     {
         String message =
                 String.format(
-                        "Global properties extracted from file '%s': SAMPLE_TYPE(%s) DATA_SET_TYPE(%s) USER(%s)",
+                        "Global properties extracted from file '%s': SAMPLE_TYPE(%s) DATA_SET_TYPE(%s) DATA_SET_KIND(%s) USER(%s)",
                         controlFile.getName(), overrideProperties.trySampleType(),
-                        overrideProperties.tryDataSetType(), overrideProperties.tryUserString());
+                        overrideProperties.tryDataSetType(), overrideProperties.tryDataSetKind(), overrideProperties.tryUserString());
         logInfo(message);
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationGlobalState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationGlobalState.java
index 0ff1e3d389fe8d98446627c41204dd5f50b4cd9c..c7ab280a31e31f6601db994d93ccabd429d5d5c0 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationGlobalState.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationGlobalState.java
@@ -25,6 +25,7 @@ import ch.systemsx.cisd.common.mail.EMailAddress;
 import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.etlserver.IDataSetHandler;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
@@ -52,6 +53,8 @@ class SampleAndDataSetRegistrationGlobalState
 
     private final DataSetType dataSetTypeOrNull;
 
+    private final DataSetKind dataSetKindOrNull;
+
     private final SampleRegistrationMode sampleRegistrationMode;
 
     private final List<String> errorEmailRecipientsOrNull;
@@ -70,7 +73,7 @@ class SampleAndDataSetRegistrationGlobalState
 
     SampleAndDataSetRegistrationGlobalState(IDataSetHandler delegator,
             IEncapsulatedOpenBISService openbisService, SpaceIdentifier spaceIdentifierOrNull,
-            SampleType sampleTypeOrNull, DataSetType dataSetTypeOrNull,
+            SampleType sampleTypeOrNull, DataSetType dataSetTypeOrNull, DataSetKind dataSetKindOrNull,
             SampleRegistrationMode sampleRegistrationMode, List<String> errorEmailRecipientsOrNull,
             String controlFilePattern, boolean alwaysCleanupAfterProcessing,
             boolean unmentionedSubfolderIsFailure, boolean useIsFinishedMarkerFile, Logger operationLog)
@@ -80,6 +83,7 @@ class SampleAndDataSetRegistrationGlobalState
         this.spaceIdentifierOrNull = spaceIdentifierOrNull;
         this.sampleTypeOrNull = sampleTypeOrNull;
         this.dataSetTypeOrNull = dataSetTypeOrNull;
+        this.dataSetKindOrNull = dataSetKindOrNull;
         this.sampleRegistrationMode = sampleRegistrationMode;
         this.errorEmailRecipientsOrNull = errorEmailRecipientsOrNull;
         this.controlFilePattern = controlFilePattern;
@@ -128,6 +132,11 @@ class SampleAndDataSetRegistrationGlobalState
         return dataSetTypeOrNull;
     }
 
+    public DataSetKind tryDataSetKind()
+    {
+        return dataSetKindOrNull;
+    }
+
     public SampleRegistrationMode getSampleRegistrationMode()
     {
         return sampleRegistrationMode;
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationHandler.java
index 6398338226e4b4f98dcb93b10bd88e9ddd161fa1..7a2033294e2cf74c4e898989a89493b6c0418ad2 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationHandler.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrationHandler.java
@@ -37,6 +37,7 @@ import ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistratio
 import ch.systemsx.cisd.etlserver.registrator.MarkerFileUtility;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
@@ -58,8 +59,12 @@ public class SampleAndDataSetRegistrationHandler implements IDataSetHandlerWithM
 
     static final String DATA_SET_TYPE_CONTROL_FILE_KEY = "DATA_SET_TYPE";
 
+    static final String DATA_SET_KIND_CONTROL_FILE_KEY = "DATA_SET_KIND";
+
     static final String DATA_SET_TYPE_PROPERTIES_KEY = "data-set-type";
 
+    static final String DATA_SET_KIND_PROPERTIES_KEY = "data-set-kind";
+
     static final String SAMPLE_REGISTRATION_MODE_PROPERTIES_KEY = "sample-registration-mode";
 
     static final String USER_CONTROL_FILE_KEY = "USERID";
@@ -126,6 +131,14 @@ public class SampleAndDataSetRegistrationHandler implements IDataSetHandlerWithM
             dataSetTypeOrNull.setCode(dataSetTypeCodeOrNull);
         }
 
+        String dataSetKindStringOrNull =
+                PropertyUtils.getProperty(specificProperties, DATA_SET_KIND_PROPERTIES_KEY);
+        DataSetKind dataSetKindOrNull = null;
+        if (null != dataSetKindStringOrNull)
+        {
+        	dataSetKindOrNull = DataSetKind.valueOf(dataSetKindStringOrNull);
+        }
+
         String sampleRegistrationModeStringOrNull =
                 PropertyUtils.getProperty(specificProperties,
                         SAMPLE_REGISTRATION_MODE_PROPERTIES_KEY);
@@ -161,7 +174,7 @@ public class SampleAndDataSetRegistrationHandler implements IDataSetHandlerWithM
                 ((IExtensibleDataSetHandler) delegator).isUseIsFinishedMarkerFile();
 
         return new SampleAndDataSetRegistrationGlobalState(delegator, service, spaceIdentifier,
-                sampleTypeOrNull, dataSetTypeOrNull, registrationMode, errorEmailRecipients,
+                sampleTypeOrNull, dataSetTypeOrNull, dataSetKindOrNull, registrationMode, errorEmailRecipients,
                 controlFilePattern, deleteFilesOnFailure, unmentionedSubfolderIsFailure,
                 userFinishedMarkerFile, operationLog);
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrator.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrator.java
index e40c95b348040caa73a76648b513d57f224ebed3..0a2229924bf700c586734632025f7d97a41c86b5 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrator.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetRegistrator.java
@@ -260,6 +260,10 @@ class SampleAndDataSetRegistrator extends AbstractSampleAndDataSetProcessor impl
 
             data.setFileFormatType(fileFormatType);
         }
+        if (null != data.getDataSetKind())
+        {
+            data.setDataSetKind(data.getDataSetKind());
+        }
     }
 
     /**
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactory.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactory.java
index 471089f79cc3f4ee04ab0e53cbec64851c7fc755..f45327a6a9a45d7770e82b9e6a01023b71f353c4 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactory.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactory.java
@@ -28,6 +28,7 @@ import ch.systemsx.cisd.common.parser.IPropertyMapper;
 import ch.systemsx.cisd.common.parser.IPropertyModel;
 import ch.systemsx.cisd.common.parser.ParserException;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
@@ -54,7 +55,7 @@ class SampleDataSetPairParserObjectFactory extends AbstractParserObjectFactory<S
      * Clients use the factory factory to make a SampleDataSetPairParserObjectFactory.
      */
     public static IParserObjectFactoryFactory<SampleDataSetPair> createFactoryFactory(
-            final SampleType sampleType, final DataSetType dataSetType)
+            final SampleType sampleType, final DataSetType dataSetType, DataSetKind dataSetKind)
     {
         IParserObjectFactoryFactory<SampleDataSetPair> factoryFactory =
                 new IParserObjectFactoryFactory<SampleDataSetPair>()
@@ -64,7 +65,7 @@ class SampleDataSetPairParserObjectFactory extends AbstractParserObjectFactory<S
                                 final IPropertyMapper propertyMapper) throws ParserException
                         {
                             return new SampleDataSetPairParserObjectFactory(sampleType,
-                                    dataSetType, propertyMapper);
+                                    dataSetType, dataSetKind, propertyMapper);
                         }
                     };
 
@@ -75,17 +76,20 @@ class SampleDataSetPairParserObjectFactory extends AbstractParserObjectFactory<S
 
     private final DataSetType dataSetType;
 
+    private final DataSetKind dataSetKind;
+
     /**
      * Clients should use the factory factory to create the factory.
      * 
      * @param propertyMapper
      */
-    private SampleDataSetPairParserObjectFactory(SampleType sampleType, DataSetType dataSetType,
+    private SampleDataSetPairParserObjectFactory(SampleType sampleType, DataSetType dataSetType, DataSetKind dataSetKind,
             IPropertyMapper propertyMapper)
     {
         super(SampleDataSetPair.class, propertyMapper);
         this.sampleType = sampleType;
         this.dataSetType = dataSetType;
+        this.dataSetKind = dataSetKind;
     }
 
     private final PropertyType createPropertyType(final String propertyTypeCode)
@@ -218,5 +222,6 @@ class SampleDataSetPairParserObjectFactory extends AbstractParserObjectFactory<S
     {
         DataSetInformation dataSetInformation = newSampleDataSet.getDataSetInformation();
         dataSetInformation.setDataSetType(dataSetType);
+        dataSetInformation.setDataSetKind(dataSetKind);
     }
 }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java
index f5d447d77ed256fc7b33b8649b0ac6de1bc4ac37..da625fa5cda55536cd5697b01da163596cae4c09 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.etlserver.entityregistration;
 
 import static ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationHandler.DATA_SET_TYPE_PROPERTIES_KEY;
+import static ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationHandler.DATA_SET_KIND_PROPERTIES_KEY;
 import static ch.systemsx.cisd.etlserver.entityregistration.SampleAndDataSetRegistrationHandler.SAMPLE_TYPE_PROPERTIES_KEY;
 
 import java.io.File;
@@ -137,9 +138,9 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]\n"
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]\n"
                         + "Encountered errors in the following lines:\n"
                         + "# Illegal empty identifier\n"
                         + "\t/MYSPACE/MYPROJ/EXP2\tVAL11\tVAL21\tVAL31\tFILE_TYPE\tVAL41\tVAL51\tds2/\n\n"
@@ -177,8 +178,8 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
                         + "The following subfolders were in the uploaded folder, but were not mentioned in the control file:\n"
                         + "ds2,ds3\n"
                         + "The following lines were successfully processed:\n"
@@ -215,10 +216,10 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
         checkAppenderContent(logText, folderName);
 
         context.assertIsSatisfied();
@@ -249,14 +250,15 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         Properties props = createDefaultHandlerProps();
         props.put(HANDLER_PROP_PREFIX + SAMPLE_TYPE_PROPERTIES_KEY, "DEF_SAMPLE_TYPE");
         props.put(HANDLER_PROP_PREFIX + DATA_SET_TYPE_PROPERTIES_KEY, "DEF_DS_TYPE");
+        props.put(HANDLER_PROP_PREFIX + DATA_SET_KIND_PROPERTIES_KEY, "PHYSICAL");
         initializeDataSetHandler(props);
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(null) DATA_SET_TYPE(null) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(null) DATA_SET_TYPE(null) DATA_SET_KIND(null) USER(test@test.test)\n"
+        				+ "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::DEF_DS_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
         checkAppenderContent(logText, folderName);
 
         context.assertIsSatisfied();
@@ -288,10 +290,10 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
         checkAppenderContent(logText, folderName);
 
         context.assertIsSatisfied();
@@ -324,10 +326,10 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
-                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
+                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
         checkAppenderContent(logText, folderName);
 
         context.assertIsSatisfied();
@@ -363,10 +365,10 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT
         handler.handleDataSet(markerFile);
 
         String logText =
-                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) USER(test@test.test)\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
-                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
-                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
+                "Global properties extracted from file 'control.tsv': SAMPLE_TYPE(MY_SAMPLE_TYPE) DATA_SET_TYPE(MY_DATA_SET_TYPE) DATA_SET_KIND(PHYSICAL) USER(test@test.test)\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S1,sampleProperties={prop1: VAL10,prop2: VAL20,prop3: VAL30},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP1;Is complete::U]\n"
+                        + "Updated sample, registered data set SampleDataSetPair[sampleIdentifier=/MYSPACE/S2,sampleProperties={prop1: VAL11,prop2: VAL21,prop3: VAL31},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP2;Is complete::U]\n"
+                        + "Registered sample/data set pair SampleDataSetPair[sampleIdentifier=/MYSPACE/S3,sampleProperties={prop1: VAL12,prop2: VAL22,prop3: VAL32},dataSetInformation=User::test;Data Set Type::MY_DATA_SET_TYPE;Data Set Kind::PHYSICAL;Experiment Identifier::/MYSPACE/MYPROJ/EXP3;Is complete::U]";
         checkAppenderContent(logText, folderName);
 
         context.assertIsSatisfied();
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactoryTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactoryTest.java
index d90ab440de971a8156e99f65574432d593722e8c..f3b2cec0509c991678aeebd99cf81af544fd4e19 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactoryTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleDataSetPairParserObjectFactoryTest.java
@@ -50,7 +50,7 @@ public class SampleDataSetPairParserObjectFactoryTest extends AssertJUnit
         BisTabFileLoader<SampleDataSetPair> controlFileLoader =
                 new BisTabFileLoader<SampleDataSetPair>(
                         SampleDataSetPairParserObjectFactory.createFactoryFactory(
-                                properties.trySampleType(), properties.tryDataSetType()), false);
+                                properties.trySampleType(), properties.tryDataSetType(), properties.tryDataSetKind()), false);
 
         Reader reader = UnicodeUtils.createReader(new FileInputStream(controlFile));
         Map<String, String> defaults = Collections.emptyMap();
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/basic-example/control.tsv b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/basic-example/control.tsv
index a8d70ccf5927b1d1155673eb9c0f4d2722d2d386..08f0ed89485d0bf9bc26433f7c38a09633cc7330 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/basic-example/control.tsv
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/basic-example/control.tsv
@@ -2,6 +2,7 @@
 #! GLOBAL_PROPERTIES_START
 #!   SAMPLE_TYPE = MY_SAMPLE_TYPE
 #!   DATA_SET_TYPE = MY_DATA_SET_TYPE
+#!   DATA_SET_KIND = PHYSICAL
 #!   USERID = test@test.test
 #! GLOBAL_PROPERTIES_END
 # Data
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/empty-lines/control.tsv b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/empty-lines/control.tsv
index e7427b6162e3b597a813a5e4e615cb5f99829389..08f0ed89485d0bf9bc26433f7c38a09633cc7330 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/empty-lines/control.tsv
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/empty-lines/control.tsv
@@ -2,6 +2,7 @@
 #! GLOBAL_PROPERTIES_START
 #!   SAMPLE_TYPE = MY_SAMPLE_TYPE
 #!   DATA_SET_TYPE = MY_DATA_SET_TYPE
+#!   DATA_SET_KIND = PHYSICAL
 #!   USERID = test@test.test
 #! GLOBAL_PROPERTIES_END
 # Data
@@ -9,6 +10,3 @@ S_identifier	S_experiment	S_PROP1	S_PROP2	S_PROP3	D_file_type	D_PROP1	D_PROP2	FO
 /MYSPACE/S1	/MYSPACE/MYPROJ/EXP1	VAL10	VAL20	VAL30	FILE_TYPE	VAL40	VAL50	ds1/
 /MYSPACE/S2	/MYSPACE/MYPROJ/EXP2	VAL11	VAL21	VAL31	FILE_TYPE	VAL41	VAL51	ds2/
 /MYSPACE/S3	/MYSPACE/MYPROJ/EXP3	VAL12	VAL22	VAL32	FILE_TYPE	VAL42	VAL52	ds3/
-
-								
-							
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/missing-sample-identifier/control.tsv b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/missing-sample-identifier/control.tsv
index ecdd39dda7c59294e29d7e96c7b3ba2f33cd7bb8..eb17f5c601561087ae5feccb750c7b0ca28ed7fb 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/missing-sample-identifier/control.tsv
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/missing-sample-identifier/control.tsv
@@ -2,6 +2,7 @@
 #! GLOBAL_PROPERTIES_START
 #!   SAMPLE_TYPE = MY_SAMPLE_TYPE
 #!   DATA_SET_TYPE = MY_DATA_SET_TYPE
+#!   DATA_SET_KIND = PHYSICAL
 #!   USERID = test@test.test
 #! GLOBAL_PROPERTIES_END
 # Data
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/not-all-subfolders-mentioned/control.tsv b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/not-all-subfolders-mentioned/control.tsv
index 7c75791bb13500e9f02aa6bf3df4d88ba5e74cc3..a2ef7162fe2468fbf6967b1d3112801f51770ac2 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/not-all-subfolders-mentioned/control.tsv
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/test-data/not-all-subfolders-mentioned/control.tsv
@@ -2,9 +2,9 @@
 #! GLOBAL_PROPERTIES_START
 #!   SAMPLE_TYPE = MY_SAMPLE_TYPE
 #!   DATA_SET_TYPE = MY_DATA_SET_TYPE
+#!   DATA_SET_KIND = PHYSICAL
 #!   USERID = test@test.test
 #! GLOBAL_PROPERTIES_END
 # Data
 S_identifier	S_experiment	S_PROP1	S_PROP2	S_PROP3	D_file_type	D_PROP1	D_PROP2	FOLDER
 /MYSPACE/S1	/MYSPACE/MYPROJ/EXP1	VAL10	VAL20	VAL30	FILE_TYPE	VAL40	VAL50	ds1/
-