diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
index 0d5d35322f658667b03e2de8e5730bd2ebde2e70..fa65363272045441ee4bb24174b82ea46fdd3385 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
@@ -75,6 +75,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.SampleBuilder;
 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.DataPE;
+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.DataSetUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
@@ -193,6 +194,44 @@ public class ETLServiceTest extends AbstractServerTestCase
         context.assertIsSatisfied();
     }
 
+    @Test
+    public void testListShareIds()
+    {
+        prepareGetSession();
+
+        final List<DataSetShareId> list =
+                Arrays.asList(createDataSetShareId(1), createDataSetShareId(2),
+                        createDataSetShareId(3));
+        context.checking(new Expectations()
+            {
+                {
+                    one(dataStoreDAO).tryToFindDataStoreByCode(DSS_CODE);
+                    DataStorePE store = new DataStorePE();
+                    store.setId(DSS_ID);
+                    store.setCode(DSS_CODE);
+                    will(returnValue(store));
+
+                    one(boFactory).createDatasetLister(SESSION);
+                    will(returnValue(datasetLister));
+
+                    one(datasetLister).listAllDataSetShareIdsByDataStore(DSS_ID);
+                    will(returnValue(list));
+                }
+            });
+
+        List<DataSetShareId> result = createService().listShareIds(SESSION_TOKEN, DSS_CODE);
+        assertEquals(list, result);
+        context.assertIsSatisfied();
+    }
+
+    private DataSetShareId createDataSetShareId(int nr)
+    {
+        DataSetShareId result = new DataSetShareId();
+        result.setDataSetCode("ds-" + nr);
+        result.setShareId("share-" + nr);
+        return result;
+    }
+
     @Test
     public void testRegisterDataStoreServer()
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java
index 9cd84b31fa18475daac56109c296faa8e83b5d96..89d48ee6262b572839709f1ac535089393cb2e40 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetListerTest.java
@@ -49,6 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
 import ch.systemsx.cisd.openbis.generic.shared.translator.SampleTranslator;
 
@@ -324,6 +325,28 @@ public class DatasetListerTest extends AbstractDAOTest
         assertEquals(14, list.size());
     }
 
+    @Test
+    public void testListAllDataSetShareIdsByDataStore()
+    {
+        List<DataSetShareId> list = lister.listAllDataSetShareIdsByDataStore(1);
+
+        Collections.sort(list, new Comparator<DataSetShareId>()
+            {
+                public int compare(DataSetShareId o1, DataSetShareId o2)
+                {
+                    return o1.getDataSetCode().compareTo(o2.getDataSetCode());
+                }
+            });
+        // NOTE: deleted data set "20081105092158673-1" is NOT ommited
+        DataSetShareId dataSet1 = list.get(0);
+        assertEquals("20081105092158673-1", dataSet1.getDataSetCode());
+        assertEquals(null, dataSet1.getShareId()); // having no share id shouldn't fail
+        DataSetShareId dataSet2 = list.get(1);
+        assertEquals("20081105092159111-1", dataSet2.getDataSetCode());
+        assertEquals(42L, dataSet2.getShareId());
+        assertEquals(15, list.size());
+    }
+
     private void assertSameDataSetsForSameCode(Map<String, ExternalData> dataSetsByCode,
             List<ExternalData> dataSets)
     {