diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
index d62390a8fe3240bd26fce42f44bb0c8d5f684e19..6a4b27348a50e01abd4e602ec932004d61324fd6 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
@@ -176,6 +176,12 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
         {
             operationLog.info("Comand executor started.");
         }
+        getShareIdManager().isKnown(""); // initializes ShareIdManager: reading all share ids from the data base
+        if (operationLog.isInfoEnabled())
+        {
+            operationLog.info("Initialization finished.");
+        }
+        
     }
 
     private void migrateStore()
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
index 8966c7ca4db9fb566466c38659d5b01fa2153b4d..7222d8f2c0b266c526b93afc105b377bfd324d1d 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
@@ -53,6 +53,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
@@ -386,6 +387,19 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
         service.checkSpaceAccess(sToken, spaceId);
     }
 
+    public List<DataSetShareId> listDataSetShareIds() throws UserFailureException
+    {
+        List<DataSetShareId> shareIds = service.listShareIds(session.getToken(), session.getDataStoreCode());
+        for (DataSetShareId dataSetShareId : shareIds)
+        {
+            if (dataSetShareId.getShareId() == null)
+            {
+                dataSetShareId.setShareId(ch.systemsx.cisd.openbis.dss.generic.shared.Constants.DEFAULT_SHARE_ID);
+            }
+        }
+        return shareIds;
+    }
+
     public List<SimpleDataSetInformationDTO> listDataSets() throws UserFailureException
     {
         List<SimpleDataSetInformationDTO> dataSets =
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java
index 2e29f3e3bd1e55c5436b63578b4c62eaf206e55d..57e0d26ded325b77673f1c9f352108c6783a83fb 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java
@@ -34,7 +34,7 @@ import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.openbis.dss.generic.shared.Constants;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager;
-import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 
 /**
  * Immplementation of {@link IShareIdManager} based on {@link CountDownLatch}.
@@ -254,12 +254,12 @@ public class ShareIdManager implements IShareIdManager
         {
             if (dataSetCodeToShareIdMap == null)
             {
-                List<SimpleDataSetInformationDTO> dataSets = service.listDataSets();
+                List<DataSetShareId> dataSets = service.listDataSetShareIds();
                 dataSetCodeToShareIdMap = new HashMap<String, GuardedShareID>();
-                for (SimpleDataSetInformationDTO dataSet : dataSets)
+                for (DataSetShareId dataSet : dataSets)
                 {
                     String dataSetCode = dataSet.getDataSetCode();
-                    String shareId = dataSet.getDataSetShareId();
+                    String shareId = dataSet.getShareId();
                     addShareId(dataSetCodeToShareIdMap, dataSetCode, shareId);
                 }
                 operationLog.info("Share id manager initialized with " + dataSets.size()
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
index eaba07eab1da87c01c06752ad7c9a132fd3852cd..a4d614fb8a83ae8f2b25e700b5d6eed1ea914a36 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
@@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
@@ -243,10 +244,14 @@ public interface IEncapsulatedOpenBISService
     public List<Sample> listSamplesByCriteria(final ListSamplesByPropertyCriteria criteria)
             throws UserFailureException;
 
+    /** See {@link IETLLIMSService#listShareIds(String, String)} */
+    @ManagedAuthentication
+    public List<DataSetShareId> listDataSetShareIds() throws UserFailureException;
+
     /** See {@link IETLLIMSService#listDataSets(String, String)} */
     @ManagedAuthentication
     public List<SimpleDataSetInformationDTO> listDataSets() throws UserFailureException;
-
+    
     /**
      * Creates and returns a unique code for a new data set.
      */
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 b4e820c85082ce07ad8e63eb634d753a0d45b49a..9594114ea895eb2284aeb68ef24748fb80df7923 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
@@ -78,6 +78,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SourceType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
@@ -729,6 +730,21 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET
         return SampleTranslator.translate(sampleTable.getSamples(), "");
     }
 
+    public List<DataSetShareId> listShareIds(String sessionToken, String dataStore)
+            throws UserFailureException
+    {
+        List<ExternalDataPE> dataSets = loadDataSets(sessionToken, dataStore);
+        ArrayList<DataSetShareId> shareIds = new ArrayList<DataSetShareId>();
+        for (ExternalDataPE dataSet : dataSets)
+        {
+            DataSetShareId dataSetShareId = new DataSetShareId();
+            dataSetShareId.setDataSetCode(dataSet.getCode());
+            dataSetShareId.setShareId(dataSet.getShareId());
+            shareIds.add(dataSetShareId);
+        }
+        return shareIds;
+    }
+
     public List<SimpleDataSetInformationDTO> listDataSets(String sessionToken, String dataStoreCode)
             throws UserFailureException
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
index 3966cde76fe4853e9cb4ab4655667ee42fd5b4fa..066d329df93d34a716b76a70a2dfcff8a62dba7f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
@@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatastoreServiceDescriptions;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate;
@@ -272,6 +273,13 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic
         return null;
     }
 
+    public List<DataSetShareId> listShareIds(String sessionToken, String dataStore)
+            throws UserFailureException
+    {
+        logAccess(sessionToken, "listShareIds", "DATA_STORE(%s)", dataStore);
+        return null;
+    }
+
     public List<SimpleDataSetInformationDTO> listDataSets(String sessionToken, String dataStore)
             throws UserFailureException
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
index 70522d379a2b347006c0ca28fef5c972e62ba26c..8f546360b35748d9bdb6a64c59477bb264388411 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
@@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria;
@@ -406,6 +407,14 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             @AuthorizationGuard(guardClass = ListSamplesByPropertyPredicate.class) final ListSamplesByPropertyCriteria criteria)
             throws UserFailureException;
 
+    /**
+     * Lists share ids of all data sets belonging to chosen data store.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)
+    public List<DataSetShareId> listShareIds(final String sessionToken,
+            String dataStore) throws UserFailureException;
+
     /**
      * Lists data sets belonging to chosen data store.
      */
@@ -413,7 +422,7 @@ public interface IETLLIMSService extends IServer, ISessionProvider
     @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)
     public List<SimpleDataSetInformationDTO> listDataSets(final String sessionToken,
             String dataStore) throws UserFailureException;
-
+    
     /**
      * List data sets deleted after specified date.
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6b6a662f9d40b3797cfe9606af2a4ef25ecf889
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2011 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.shared.dto;
+
+import java.io.Serializable;
+
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
+
+/**
+ * Share id of a data set.
+ *
+ * @author Franz-Josef Elmer
+ */
+public class DataSetShareId implements Serializable
+{
+    private static final long serialVersionUID = ServiceVersionHolder.VERSION;
+    
+    private String dataSetCode;
+
+    private String shareId;
+
+    public String getDataSetCode()
+    {
+        return dataSetCode;
+    }
+
+    public void setDataSetCode(String dataSetCode)
+    {
+        this.dataSetCode = dataSetCode;
+    }
+
+    public String getShareId()
+    {
+        return shareId;
+    }
+
+    public void setShareId(String dataSetShareId)
+    {
+        this.shareId = dataSetShareId;
+    }
+
+}
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
index 70522d379a2b347006c0ca28fef5c972e62ba26c..8f546360b35748d9bdb6a64c59477bb264388411 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
@@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails;
 import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria;
@@ -406,6 +407,14 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             @AuthorizationGuard(guardClass = ListSamplesByPropertyPredicate.class) final ListSamplesByPropertyCriteria criteria)
             throws UserFailureException;
 
+    /**
+     * Lists share ids of all data sets belonging to chosen data store.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)
+    public List<DataSetShareId> listShareIds(final String sessionToken,
+            String dataStore) throws UserFailureException;
+
     /**
      * Lists data sets belonging to chosen data store.
      */
@@ -413,7 +422,7 @@ public interface IETLLIMSService extends IServer, ISessionProvider
     @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)
     public List<SimpleDataSetInformationDTO> listDataSets(final String sessionToken,
             String dataStore) throws UserFailureException;
-
+    
     /**
      * List data sets deleted after specified date.
      */