diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
index bbec982eb4c4e4e0e1392408a93e9728ee01de3c..7e539099ab6342728fc01013579bb1ac59f9fd6b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -310,7 +311,7 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements
         {
             return new TableMap<String, AbstractExternalData>(codeKeyExtractor);
         }
-        List<String> codes = new ArrayList<String>();
+        Set<String> codes = new LinkedHashSet<String>();
         for (SequenceSearchResult sequenceSearchResult : result)
         {
             codes.add(sequenceSearchResult.getDataSetCode());
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
index b30e2ea5bff158625dae20abb57693cc8c2bccef..849953c59b21e12ac5a17bd1fff45c89929d5f79 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
@@ -26,6 +26,7 @@ import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchiving
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -173,11 +174,17 @@ public final class DataSetTableTest extends AbstractBOTest
         DataStorePE store3 = new DataStorePE();
         prepareListDataStores(store1, store2, store3);
         prepareSearchSequenceDatabase(store1, dataStoreService1, "ds1", "ds2");
-        prepareSearchSequenceDatabase(store2, dataStoreService2, "ds3");
-        ExternalDataPE ds1 = createDataSet("ds1", store1);
-        ExternalDataPE ds2 = createDataSet("ds2", store1);
-        ExternalDataPE ds3 = createDataSet("ds3", store2);
-        prepareFindFullDatasets(new ExternalDataPE[] { ds1, ds2, ds3 }, new ExternalDataPE[] { ds1, ds3 }, false, false);
+        prepareSearchSequenceDatabase(store2, dataStoreService2, "ds3", "ds3");
+        final ExternalDataPE ds1 = createDataSet("ds1", store1);
+        final ExternalDataPE ds3 = createDataSet("ds3", store2);
+        context.checking(new Expectations()
+            {
+                {
+                    one(dataDAO).tryToFindFullDataSetsByCodes(
+                            new LinkedHashSet<String>(Arrays.asList("ds1", "ds2", "ds3")), false, false);
+                    will(returnValue(Arrays.asList(new ExternalDataPE[] { ds1, ds3 })));
+                }
+            });
 
         List<SequenceSearchResultWithFullDataSet> results =
                 createDataSetTable().searchForDataSetsWithSequences(SEQUENCE_DATABASE, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS);
@@ -190,7 +197,11 @@ public final class DataSetTableTest extends AbstractBOTest
                 results.get(1).getSearchResult().toString());
         assertEquals(ds3.getCode(), results.get(1).getDataSet().getCode());
         assertEquals("/G1/P1/exp1", results.get(1).getDataSet().getExperiment().getIdentifier());
-        assertEquals(2, results.size());
+        assertEquals("Database: test-db, Data set: ds3, path: ds3/path, identifier: [id-ds3], position: 42",
+                results.get(2).getSearchResult().toString());
+        assertEquals(ds3.getCode(), results.get(2).getDataSet().getCode());
+        assertEquals("/G1/P1/exp1", results.get(2).getDataSet().getExperiment().getIdentifier());
+        assertEquals(3, results.size());
         context.assertIsSatisfied();
     }
 
@@ -211,7 +222,7 @@ public final class DataSetTableTest extends AbstractBOTest
         context.checking(new Expectations()
             {
                 {
-                    one(dssFactory).create(dataStore.getRemoteUrl());
+                    allowing(dssFactory).create(dataStore.getRemoteUrl());
                     will(returnValue(service));
 
                     one(service).searchForDataSetsWithSequences(dataStore.getSessionToken(),