diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sort/SortAndPage.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sort/SortAndPage.java
index 654fcbc8e06363fa3a12efcc09bea5b442f270f2..efb786a551ea23631e15080c9d173aa292ff5052 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sort/SortAndPage.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sort/SortAndPage.java
@@ -175,6 +175,12 @@ public class SortAndPage {
                                 sortAndPage(((Map) value).values(), c, subFo);
                             } else
                             {
+                                if (subFo.getSortBy() != null && subFo.getSortBy().getSortings() != null &&
+                                        !subFo.getSortBy().getSortings().isEmpty())
+                                {
+                                    throw new IllegalArgumentException("Only collection and map types can be sorted.");
+                                }
+
                                 Collection newValue = sortAndPage(Collections.singleton(value), c, subFo);
                                 if (setMethod != null)
                                 {
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java
index 9945a916722a73d95f2ddf5c029736c192163680..a9cb7b0db7ae966e1cb6836716c51577c1ca0446 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTest.java
@@ -847,6 +847,21 @@ public class SearchSampleTest extends AbstractSampleTest
         testSearch(TEST_USER, criteria, "/CISD/NEMO/CP-TEST-1", "/CISD/NEMO/DYNA-TEST-1");
     }
 
+    @Test(expectedExceptions = RuntimeException.class,
+            expectedExceptionsMessageRegExp = "Sorting and paging failed for object.*")
+    public void testSearchWithExperimentWithCodeSortingByExperiment()
+    {
+        final SampleSearchCriteria criteria = new SampleSearchCriteria().withOrOperator();
+        criteria.withExperiment().withCode().thatEquals("EXP-TEST-1");
+        criteria.withExperiment().withCode().thatEquals("EXP-TEST-2");
+
+        final SampleFetchOptions fetchOptions = new SampleFetchOptions();
+        fetchOptions.withExperiment().sortBy().code().asc();
+
+        final String sessionToken = v3api.login(TEST_USER, PASSWORD);
+        searchSamples(sessionToken, criteria, fetchOptions);
+    }
+
     @Test
     public void testSearchWithExperimentWithTypeIdSetToPermId()
     {