diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
index 5dffb792c636f5028214fe02556a98e7c8872f70..1eaf9fd04e9b9d02c3e2bc62614ef98c75f0794a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
@@ -421,28 +421,39 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements
         return services;
     }
 
-    private Set<DataSetTypePE> extractDatasetTypes(String[] datasetTypeCodes,
+    /**
+     * Find the data set type objects specified by the dataSetTypeCodes.
+     * 
+     * @return A set of DataSetTypePE objects or null if all data set types are explicitly
+     *         specified.
+     */
+    private Set<DataSetTypePE> extractDatasetTypes(String[] dataSetTypeCodes,
             DatastoreServiceDescription serviceDescription)
     {
-        Set<DataSetTypePE> datasetTypes = new HashSet<DataSetTypePE>();
+        // "*" means accept all data set types
+        if (dataSetTypeCodes.length == 1 && "*".equals(dataSetTypeCodes[0]))
+        {
+            return null;
+        }
+        Set<DataSetTypePE> dataSetTypes = new HashSet<DataSetTypePE>();
         Set<String> missingCodes = new HashSet<String>();
         IDataSetTypeDAO dataSetTypeDAO = daoFactory.getDataSetTypeDAO();
-        for (String datasetTypeCode : datasetTypeCodes)
+        for (String dataSetTypeCode : dataSetTypeCodes)
         {
-            DataSetTypePE datasetType = dataSetTypeDAO.tryToFindDataSetTypeByCode(datasetTypeCode);
+            DataSetTypePE datasetType = dataSetTypeDAO.tryToFindDataSetTypeByCode(dataSetTypeCode);
             if (datasetType == null)
             {
-                missingCodes.add(datasetTypeCode);
+                missingCodes.add(dataSetTypeCode);
             } else
             {
-                datasetTypes.add(datasetType);
+                dataSetTypes.add(datasetType);
             }
         }
         if (missingCodes.size() > 0)
         {
             notifyDataStoreServerMisconfiguration(missingCodes, serviceDescription);
         }
-        return datasetTypes;
+        return dataSetTypes;
     }
 
     private void notifyDataStoreServerMisconfiguration(Set<String> missingCodes,
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataStoreDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataStoreDAOTest.java
index 5d65e6db5167a3a2ad02e9fe5e470bca79b5988f..78d796fb65ae8128ecef2f40b9ea33ee4ebdf40c 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataStoreDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DataStoreDAOTest.java
@@ -46,13 +46,9 @@ public final class DataStoreDAOTest extends AbstractDAOTest
     public void testCreate()
     {
         DataStorePE dataStore = new DataStorePE();
-        dataStore.setDatabaseInstance(daoFactory.getHomeDatabaseInstance());
-        String code = DATA_STORE_CODE;
-        dataStore.setCode(code);
-        dataStore.setDownloadUrl(code);
-        dataStore.setRemoteUrl(code);
-        dataStore.setSessionToken(code);
-        dataStore.setServices(createDataStoreServices(code));
+        initializeDataStore(dataStore);
+        String code = dataStore.getCode();
+        dataStore.setServices(createDataStoreServices(code, getDataSetTypes()));
         daoFactory.getDataStoreDAO().createOrUpdateDataStore(dataStore);
         assertNotNull(dataStore.getId());
 
@@ -60,25 +56,49 @@ public final class DataStoreDAOTest extends AbstractDAOTest
         AssertJUnit.assertEquals(dataStore, store);
         // check if changing the registered services does not fail when the result of this test
         // method will be commited
-        dataStore.setServices(createDataStoreServices("another"));
+        dataStore.setServices(createDataStoreServices("another", getDataSetTypes()));
         daoFactory.getDataStoreDAO().createOrUpdateDataStore(dataStore);
 
         dataStore.setServices(new HashSet<DataStoreServicePE>()); // delete all services
         daoFactory.getDataStoreDAO().createOrUpdateDataStore(dataStore);
     }
 
-    private Set<DataStoreServicePE> createDataStoreServices(String prefix)
+    protected void initializeDataStore(DataStorePE dataStore)
+    {
+        dataStore.setDatabaseInstance(daoFactory.getHomeDatabaseInstance());
+        String code = DATA_STORE_CODE;
+        dataStore.setCode(code);
+        dataStore.setDownloadUrl(code);
+        dataStore.setRemoteUrl(code);
+        dataStore.setSessionToken(code);
+    }
+
+    @Test
+    public void testCreateFotAllDataSetTypes()
+    {
+        DataStorePE dataStore = new DataStorePE();
+        initializeDataStore(dataStore);
+        String code = dataStore.getCode();
+        dataStore.setServices(createDataStoreServices(code, null));
+        daoFactory.getDataStoreDAO().createOrUpdateDataStore(dataStore);
+        assertNotNull(dataStore.getId());
+
+        DataStorePE store = daoFactory.getDataStoreDAO().tryToFindDataStoreByCode(code);
+        AssertJUnit.assertEquals(dataStore, store);
+    }
+
+    private Set<DataStoreServicePE> createDataStoreServices(String prefix,
+            Set<DataSetTypePE> dataSetTypes)
     {
         Set<DataStoreServicePE> services = new HashSet<DataStoreServicePE>();
         DataStoreServicePE service;
-
         for (int i = 0; i < 3; i++)
         {
             service = new DataStoreServicePE();
             service.setKey(prefix + "_key_" + i);
             service.setLabel("label");
             service.setKind(DataStoreServiceKind.PROCESSING);
-            service.setDatasetTypes(getDataSetTypes());
+            service.setDatasetTypes(dataSetTypes);
             service.setReportingPluginTypeOrNull(null);
             services.add(service);
         }
@@ -89,7 +109,7 @@ public final class DataStoreDAOTest extends AbstractDAOTest
         service.setKey(prefix + "_key_" + i++);
         service.setLabel("label");
         service.setKind(DataStoreServiceKind.QUERIES);
-        service.setDatasetTypes(getDataSetTypes());
+        service.setDatasetTypes(dataSetTypes);
         service.setReportingPluginTypeOrNull(ReportingPluginType.TABLE_MODEL);
         services.add(service);
 
@@ -98,7 +118,7 @@ public final class DataStoreDAOTest extends AbstractDAOTest
         service.setKey(prefix + "_key_" + i++);
         service.setLabel("label");
         service.setKind(DataStoreServiceKind.QUERIES);
-        service.setDatasetTypes(getDataSetTypes());
+        service.setDatasetTypes(dataSetTypes);
         service.setReportingPluginTypeOrNull(ReportingPluginType.DSS_LINK);
         services.add(service);