diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterByScoreTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterByScoreTest.java
index e6fe7effa673fa1c4f10b6de8d4e4552b21ffac9..7f760920166972e0d61a6ac5c7990ea74ea2eb0b 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterByScoreTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterByScoreTest.java
@@ -1,17 +1,17 @@
 package ch.systemsx.cisd.openbis.generic.server.business.search.sort;
 
+import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.assertEntities;
+import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.createEntity;
+import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.getAnyFieldCriterion;
+import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.sort;
+
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.testng.AssertJUnit;
 import org.testng.annotations.Test;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
+import ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.EntitySearchResult;
 
 /**
  * Test Class for SearchResultSorterByScore.
@@ -22,198 +22,77 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
 public class SearchResultSorterByScoreTest extends AssertJUnit
 {
 
-    private class EntitySearchResult implements IEntitySearchResult
-    {
-        private final String code;
-
-        private final String typeCode;
-
-        private final Map<String, String> properties;
-
-        public EntitySearchResult(
-                String code,
-                String typeCode,
-                Map<String, String> properties)
-        {
-            this.code = code;
-            this.typeCode = typeCode;
-            this.properties = properties;
-        }
-
-        public String getCode()
-        {
-            return code;
-        }
-
-        public String getTypeCode()
-        {
-            return typeCode;
-        }
-
-        public Map<String, String> getProperties()
-        {
-            return properties;
-        }
-
-    }
-
     @Test
-    public void testCode()
+    public void testCriteriaAnyCode()
     {
-        //
         // Entities Setup
-        //
         List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
-        entities.add(createSample("CODE_2", "TYPE_2"));
-        entities.add(createSample("CODE_1", "TYPE_1"));
-        entities.add(createSample("CODE_3", "TYPE_3"));
-        entities.add(createSample("CODE", "TYPE"));
-
-        DetailedSearchCriteria criteria = new DetailedSearchCriteria();
-        List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
-        criteria.setCriteria(criterions);
+        entities.add(createEntity("CODE_2", "TYPE_2"));
+        entities.add(createEntity("CODE_1", "TYPE_1"));
+        entities.add(createEntity("CODE_3", "TYPE_3"));
+        entities.add(createEntity("CODE", "TYPE"));
 
         // Test hit only code
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE"));
+        sort(entities, getAnyFieldCriterion("CODE"));
 
-        //
-        // Run algorithm
-        //
-        SearchResultSorterByScore sorter = new SearchResultSorterByScore();
-        sorter.sort(entities, criteria);
-
-        //
         // Verify results
-        //
-        assertEquals("CODE", entities.get(0).getCode());
-        assertEquals("CODE_1", entities.get(1).getCode());
-        assertEquals("CODE_2", entities.get(2).getCode());
-        assertEquals("CODE_3", entities.get(3).getCode());
+        assertEntities(entities, "CODE", "CODE_1", "CODE_2", "CODE_3");
     }
 
     @Test
-    public void testTypeCode()
+    public void testCriteriaAnyTypeCode()
     {
-        //
         // Entities Setup
-        //
         List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
-        entities.add(createSample("CODE_2", "TYPE_2"));
-        entities.add(createSample("CODE_1", "TYPE_1"));
-        entities.add(createSample("CODE_3", "TYPE_3"));
-        entities.add(createSample("CODE", "TYPE"));
-
-        DetailedSearchCriteria criteria = new DetailedSearchCriteria();
-        List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
-        criteria.setCriteria(criterions);
-
-        // Test hit only code
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "TYPE"));
+        entities.add(createEntity("CODE_2", "TYPE_2"));
+        entities.add(createEntity("CODE_1", "TYPE_1"));
+        entities.add(createEntity("CODE_3", "TYPE_3"));
+        entities.add(createEntity("CODE", "TYPE"));
 
-        //
-        // Run algorithm
-        //
-        SearchResultSorterByScore sorter = new SearchResultSorterByScore();
-        sorter.sort(entities, criteria);
+        // Test hit only type code
+        sort(entities, getAnyFieldCriterion("TYPE"));
 
-        //
         // Verify results
-        //
-        assertEquals("CODE", entities.get(0).getCode());
-        assertEquals("CODE_1", entities.get(1).getCode());
-        assertEquals("CODE_2", entities.get(2).getCode());
-        assertEquals("CODE_3", entities.get(3).getCode());
+        assertEntities(entities, "CODE", "CODE_1", "CODE_2", "CODE_3");
     }
 
     @Test
-    public void testProperties()
+    public void testCriteriaAnyProperties()
     {
-        //
         // Entities Setup
-        //
         List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
-        entities.add(createSample("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
-        entities.add(createSample("CODE_1", "TYPE_1", "ABC_1"));
-        entities.add(createSample("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
-        entities.add(createSample("CODE_4", "TYPE_4", "ABC"));
-
-        DetailedSearchCriteria criteria = new DetailedSearchCriteria();
-        List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
-        criteria.setCriteria(criterions);
+        entities.add(createEntity("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
+        entities.add(createEntity("CODE_1", "TYPE_1", "ABC_1"));
+        entities.add(createEntity("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
+        entities.add(createEntity("CODE_4", "TYPE_4", "ABC"));
 
         // Test hit only properties, partial and exact
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "ABC"));
-
-        //
-        // Run algorithm
-        //
-        SearchResultSorterByScore sorter = new SearchResultSorterByScore();
-        sorter.sort(entities, criteria);
+        sort(entities, getAnyFieldCriterion("ABC"));
 
-        //
         // Verify results
-        //
-        assertEquals("CODE_4", entities.get(0).getCode());
-        assertEquals("CODE_3", entities.get(1).getCode());
-        assertEquals("CODE_2", entities.get(2).getCode());
-        assertEquals("CODE_1", entities.get(3).getCode());
+        assertEntities(entities, "CODE_4", "CODE_3", "CODE_2", "CODE_1");
     }
 
     @Test
-    public void testAll()
+    public void testCriteriaAnyAll()
     {
-        //
         // Entities Setup
-        //
         List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
-        entities.add(createSample("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
-        entities.add(createSample("CODE_1", "TYPE_1", "ABC_1"));
-        entities.add(createSample("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
-        entities.add(createSample("CODE_4", "TYPE_4", "TYU"));
-        entities.add(createSample("CODE_5", "TYPE_5", "XYZ"));
-        entities.add(createSample("CODE_6", "TYPE_6", "666"));
-
-        DetailedSearchCriteria criteria = new DetailedSearchCriteria();
-
-        List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
-        // Test hit only type
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "TYPE_6"));
-        // Test hit only properties
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "ABC"));
-        // Test hit only code
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE_4"));
-        // Test hit property and code
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE_5"));
-        criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "XYZ"));
-        criteria.setCriteria(criterions);
-
-        //
-        // Run algorithm
-        //
-        SearchResultSorterByScore sorter = new SearchResultSorterByScore();
-        sorter.sort(entities, criteria);
-
-        //
-        // Verify results
-        //
-        assertEquals("CODE_5", entities.get(0).getCode());
-        assertEquals("CODE_4", entities.get(1).getCode());
-        assertEquals("CODE_6", entities.get(2).getCode());
-        assertEquals("CODE_3", entities.get(3).getCode());
-        assertEquals("CODE_2", entities.get(4).getCode());
-        assertEquals("CODE_1", entities.get(5).getCode());
-    }
+        entities.add(createEntity("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
+        entities.add(createEntity("CODE_1", "TYPE_1", "ABC_1"));
+        entities.add(createEntity("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
+        entities.add(createEntity("CODE_4", "TYPE_4", "TYU"));
+        entities.add(createEntity("CODE_5", "TYPE_5", "XYZ"));
+        entities.add(createEntity("CODE_6", "TYPE_6", "666"));
+
+        sort(entities,
+                getAnyFieldCriterion("TYPE_6"), // Test hit only type
+                getAnyFieldCriterion("ABC"), // Test hit only properties
+                getAnyFieldCriterion("CODE_4"), // Test hit only code
+                getAnyFieldCriterion("CODE_5"), // Test hit property and code
+                getAnyFieldCriterion("XYZ"));
 
-    private EntitySearchResult createSample(String code, String typeCode, String... propertyValues)
-    {
-        Map<String, String> properties = new HashMap<String, String>();
-        int propertyIndex = 1;
-        for (String propertyValue : propertyValues)
-        {
-            properties.put("PROP_" + propertyIndex, propertyValue);
-            propertyIndex++;
-        }
-
-        return new EntitySearchResult(code, typeCode, properties);
+        // Verify results
+        assertEntities(entities, "CODE_5", "CODE_4", "CODE_6", "CODE_3", "CODE_2", "CODE_1");
     }
 }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterTestHelper.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterTestHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf32faa1c214a80f5c98bc7a7206de46099e203b
--- /dev/null
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/search/sort/SearchResultSorterTestHelper.java
@@ -0,0 +1,95 @@
+package ch.systemsx.cisd.openbis.generic.server.business.search.sort;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
+
+public class SearchResultSorterTestHelper
+{
+    public static class EntitySearchResult implements IEntitySearchResult
+    {
+        private final String code;
+
+        private final String typeCode;
+
+        private final Map<String, String> properties;
+
+        public EntitySearchResult(
+                String code,
+                String typeCode,
+                Map<String, String> properties)
+        {
+            this.code = code;
+            this.typeCode = typeCode;
+            this.properties = properties;
+        }
+
+        public String getCode()
+        {
+            return code;
+        }
+
+        public String getTypeCode()
+        {
+            return typeCode;
+        }
+
+        public Map<String, String> getProperties()
+        {
+            return properties;
+        }
+
+    }
+
+    public static DetailedSearchCriterion getAnyFieldCriterion(String value)
+    {
+        return new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), value);
+    }
+
+    public static EntitySearchResult createEntity(String code, String typeCode, String... propertyValues)
+    {
+        Map<String, String> properties = new HashMap<String, String>();
+        int propertyIndex = 1;
+        for (String propertyValue : propertyValues)
+        {
+            properties.put("PROP_" + propertyIndex, propertyValue);
+            propertyIndex++;
+        }
+
+        return new EntitySearchResult(code, typeCode, properties);
+    }
+
+    public static void sort(List<EntitySearchResult> entities, DetailedSearchCriterion... searchCriterions)
+    {
+        DetailedSearchCriteria criteria = new DetailedSearchCriteria();
+        List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
+        criteria.setCriteria(criterions);
+
+        for (DetailedSearchCriterion searchCriterion : searchCriterions)
+        {
+            criterions.add(searchCriterion);
+        }
+
+        SearchResultSorterByScore sorter = new SearchResultSorterByScore();
+        sorter.sort(entities, criteria);
+    }
+
+    public static void assertEntities(List<EntitySearchResult> actualEntities, String... expectedCodes)
+    {
+        List<String> actualCodes = new ArrayList<String>();
+
+        for (EntitySearchResult actualEntity : actualEntities)
+        {
+            actualCodes.add(actualEntity.getCode());
+        }
+
+        Assert.assertEquals(Arrays.asList(expectedCodes), actualCodes);
+    }
+}