diff --git a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/common.js b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/common.js
index bc7a290b9ea14be4a6eb01dfe4752105f080f2ff..229e4cb244a0cef1041d98be14b6de0fe2d316ec 100644
--- a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/common.js
+++ b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/common.js
@@ -43,7 +43,6 @@ define([ 'jquery', 'openbis', 'underscore', 'test/dtos' ], function($, openbis,
 		this.VocabularyTermDeletionOptions = dtos.VocabularyTermDeletionOptions;
 		this.TagDeletionOptions = dtos.TagDeletionOptions;
 		this.EntityTypePermId = dtos.EntityTypePermId;
-		this.EntityTypeSearchCriteria = dtos.EntityTypeSearchCriteria;
 		this.SpacePermId = dtos.SpacePermId;
 		this.ProjectPermId = dtos.ProjectPermId;
 		this.ProjectIdentifier = dtos.ProjectIdentifier;
@@ -60,9 +59,13 @@ define([ 'jquery', 'openbis', 'underscore', 'test/dtos' ], function($, openbis,
 		this.SpaceSearchCriteria = dtos.SpaceSearchCriteria;
 		this.ProjectSearchCriteria = dtos.ProjectSearchCriteria;
 		this.ExperimentSearchCriteria = dtos.ExperimentSearchCriteria;
+		this.ExperimentTypeSearchCriteria = dtos.ExperimentTypeSearchCriteria;
 		this.SampleSearchCriteria = dtos.SampleSearchCriteria;
+		this.SampleTypeSearchCriteria = dtos.SampleTypeSearchCriteria;
 		this.DataSetSearchCriteria = dtos.DataSetSearchCriteria;
+		this.DataSetTypeSearchCriteria = dtos.DataSetTypeSearchCriteria;
 		this.MaterialSearchCriteria = dtos.MaterialSearchCriteria;
+		this.MaterialTypeSearchCriteria = dtos.MaterialTypeSearchCriteria;
 		this.VocabularyTermSearchCriteria = dtos.VocabularyTermSearchCriteria;
 		this.TagSearchCriteria = dtos.TagSearchCriteria;
 		this.SpaceFetchOptions = dtos.SpaceFetchOptions;
diff --git a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/dtos.js b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/dtos.js
index 5713f109c27255b8ff09f2deb3818806dd7c97ac..822b05dabfe86fe01f1e56026980893056f56172 100644
--- a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/dtos.js
+++ b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/dtos.js
@@ -165,6 +165,7 @@ var sources = [
 	'as/dto/dataset/LocatorType',
 	'as/dto/dataset/PhysicalData',
 	'as/dto/dataset/search/DataSetSearchCriteria',
+	'as/dto/dataset/search/DataSetTypeSearchCriteria',
 	'as/dto/dataset/StorageFormat',
 	'as/dto/dataset/update/DataSetUpdate',
 	'as/dto/dataset/update/LinkedDataUpdate',
@@ -182,9 +183,7 @@ var sources = [
 	'as/dto/deletion/id/DeletionTechId',
 	'as/dto/deletion/search/DeletionSearchCriteria',
 	'as/dto/entitytype/id/EntityTypePermId',
-	'as/dto/entitytype/search/EntityTypeSearchCriteria',
-	'as/dto/entitytype/search/SampleTypeSearchCriteria',
-	'as/dto/entitytype/search/ListableSampleTypeSearchCriteria',
+	'as/dto/sample/search/SampleTypeSearchCriteria',
 	
 	'as/dto/experiment/create/CreateExperimentsOperation',
 	// 'as/dto/experiment/create/CreateExperimentsOperationResult',
@@ -201,6 +200,7 @@ var sources = [
 	'as/dto/experiment/list/ListExperimentsOperation',
 	// 'as/dto/experiment/list/ListExperimentsOperationResult',
 	'as/dto/experiment/search/ExperimentSearchCriteria',
+	'as/dto/experiment/search/ExperimentTypeSearchCriteria',
 	'as/dto/experiment/search/NoExperimentSearchCriteria',
 	'as/dto/experiment/search/SearchExperimentsOperation',
 	// 'as/dto/experiment/search/SearchExperimentsOperationResult',
@@ -234,6 +234,7 @@ var sources = [
 	'as/dto/material/Material',
 	'as/dto/material/MaterialType',
 	'as/dto/material/search/MaterialSearchCriteria',
+	'as/dto/material/search/MaterialTypeSearchCriteria',
 	'as/dto/material/update/MaterialUpdate',
 	'as/dto/objectkindmodification/fetchoptions/ObjectKindModificationFetchOptions',
 	'as/dto/objectkindmodification/fetchoptions/ObjectKindModificationSortOptions',
@@ -275,6 +276,8 @@ var sources = [
 	'as/dto/sample/search/NoSampleContainerSearchCriteria',
 	'as/dto/sample/search/NoSampleSearchCriteria',
 	'as/dto/sample/search/SampleSearchCriteria',
+	'as/dto/sample/search/SampleTypeSearchCriteria',
+	'as/dto/sample/search/ListableSampleTypeSearchCriteria',
 	'as/dto/sample/update/SampleUpdate',
 	'as/dto/sample/update/UpdateSamplesOperation',
 	'as/dto/service/CustomASService',
diff --git a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.js b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.js
index 1287ce1c6f2464aa6f0c7992fe37db306deb746d..6c922434ab9bd16f0dce1d3111a61e36d31c5542 100644
--- a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.js
+++ b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-search.js
@@ -215,7 +215,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common', 'test/naturalsort' ],
 			var c = new common(assert);
 
 			var fSearch = function(facade) {
-				var criteria = new c.EntityTypeSearchCriteria();
+				var criteria = new c.ExperimentTypeSearchCriteria();
 				criteria.withCode().thatStartsWith("HT");
 				var fetchOptions = new c.ExperimentTypeFetchOptions();
 				fetchOptions.withPropertyAssignments();
@@ -246,7 +246,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common', 'test/naturalsort' ],
 			var c = new common(assert);
 			
 			var fSearch = function(facade) {
-				var criteria = new c.EntityTypeSearchCriteria();
+				var criteria = new c.ExperimentTypeSearchCriteria();
 				criteria.withCode().thatStartsWith("HT");
 				var fetchOptions = new c.ExperimentTypeFetchOptions();
 				fetchOptions.withPropertyAssignments().withVocabulary();
@@ -396,7 +396,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common', 'test/naturalsort' ],
 			var c = new common(assert);
 
 			var fSearch = function(facade) {
-				var criteria = new c.EntityTypeSearchCriteria();
+				var criteria = new c.SampleTypeSearchCriteria();
 				criteria.withCode().thatStartsWith("MA");
 				var fetchOptions = new c.SampleTypeFetchOptions();
 				fetchOptions.withPropertyAssignments().sortBy().label().desc();
@@ -559,7 +559,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common', 'test/naturalsort' ],
 			var c = new common(assert);
 
 			var fSearch = function(facade) {
-				var criteria = new c.EntityTypeSearchCriteria();
+				var criteria = new c.DataSetTypeSearchCriteria();
 				criteria.withCode().thatStartsWith("MA");
 				var fetchOptions = new c.DataSetTypeFetchOptions();
 				fetchOptions.withPropertyAssignments().sortBy().code().asc();
@@ -627,7 +627,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common', 'test/naturalsort' ],
 			var c = new common(assert);
 
 			var fSearch = function(facade) {
-				var criteria = new c.EntityTypeSearchCriteria();
+				var criteria = new c.MaterialTypeSearchCriteria();
 				criteria.withCode().thatStartsWith("G");
 				var fetchOptions = new c.MaterialTypeFetchOptions();
 				fetchOptions.withPropertyAssignments().sortBy().code().desc();
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java
index d39c0b47df672a4b9d44dca2a612a3e8811a0573..0b61ec9b0af2aeae9737d219693260727b1c833b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java
@@ -34,12 +34,12 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetType
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.Deletion;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.fetchoptions.DeletionFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.search.DeletionSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation;
@@ -49,6 +49,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.Experime
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions;
@@ -62,6 +63,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTy
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.IMaterialId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.update.MaterialUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.ObjectKindModification;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.fetchoptions.ObjectKindModificationFetchOptions;
@@ -83,6 +85,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFe
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
@@ -639,7 +642,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional(readOnly = true)
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, ExperimentTypeSearchCriteria searchCriteria,
             ExperimentTypeFetchOptions fetchOptions)
     {
         return searchExperimentTypeExecutor.search(sessionToken, searchCriteria, fetchOptions);
@@ -656,7 +659,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional(readOnly = true)
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    public SearchResult<SampleType> searchSampleTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<SampleType> searchSampleTypes(String sessionToken, SampleTypeSearchCriteria searchCriteria,
             SampleTypeFetchOptions fetchOptions)
     {
         return searchSampleTypeExecutor.search(sessionToken, searchCriteria, fetchOptions);
@@ -673,7 +676,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional(readOnly = true)
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, DataSetTypeSearchCriteria searchCriteria,
             DataSetTypeFetchOptions fetchOptions)
     {
         return searchDataSetTypeExecutor.search(sessionToken, searchCriteria, fetchOptions);
@@ -690,7 +693,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional(readOnly = true)
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, MaterialTypeSearchCriteria searchCriteria,
             MaterialTypeFetchOptions fetchOptions)
     {
         return searchMaterialTypeExecutor.search(sessionToken, searchCriteria, fetchOptions);
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java
index 1826b26776ec1018926199762d0b81f99fd3b392..5a1596ae4a8b10ce3c24f17f0ca00dd6bc8798dd 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java
@@ -30,12 +30,12 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetType
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.Deletion;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.fetchoptions.DeletionFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.search.DeletionSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation;
@@ -45,6 +45,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.Experime
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions;
@@ -58,6 +59,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTy
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.IMaterialId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.update.MaterialUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.ObjectKindModification;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.fetchoptions.ObjectKindModificationFetchOptions;
@@ -79,6 +81,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFe
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
@@ -342,7 +345,7 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, ExperimentTypeSearchCriteria searchCriteria,
             ExperimentTypeFetchOptions fetchOptions)
     {
         logAccess(sessionToken, "search-experiment-types", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
@@ -357,7 +360,7 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public SearchResult<SampleType> searchSampleTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<SampleType> searchSampleTypes(String sessionToken, SampleTypeSearchCriteria searchCriteria,
             SampleTypeFetchOptions fetchOptions)
     {
         logAccess(sessionToken, "search-sample-types", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
@@ -372,7 +375,7 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, DataSetTypeSearchCriteria searchCriteria,
             DataSetTypeFetchOptions fetchOptions)
     {
         logAccess(sessionToken, "search-data-set-types", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
@@ -387,7 +390,7 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, MaterialTypeSearchCriteria searchCriteria,
             MaterialTypeFetchOptions fetchOptions)
     {
         logAccess(sessionToken, "search-material-types", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractSearchObjectExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractSearchObjectExecutor.java
index 03f00e29688b8980d78049011108bdd953ddecec..7f60cdf3172666eebbfe35e1abb65fb7b455d426 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractSearchObjectExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractSearchObjectExecutor.java
@@ -40,7 +40,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.TechIdSearchCriter
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.IMaterialId;
@@ -550,7 +550,7 @@ public abstract class AbstractSearchObjectExecutor<CRITERIA extends AbstractObje
             ISearchCriteria parentCriterion = parentCriteriaCopy.isEmpty() ? null : parentCriteriaCopy.pop();
             ISearchCriteria grandParentCriterion = parentCriteriaCopy.isEmpty() ? null : parentCriteriaCopy.pop();
 
-            return parentCriterion instanceof EntityTypeSearchCriteria && grandParentCriterion != null
+            return parentCriterion instanceof AbstractEntityTypeSearchCriteria && grandParentCriterion != null
                     && getEntityCriteriaClass().isAssignableFrom(grandParentCriterion.getClass());
         }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/ISearchDataSetTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/ISearchDataSetTypeExecutor.java
index e7599652aa9221136c05d475c4fd8b8d3889700b..d01caabb846fd4c5feb7516488f8d04d70a4cbe3 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/ISearchDataSetTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/ISearchDataSetTypeExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.ISearchObjectExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchDataSetTypeExecutor extends ISearchObjectExecutor<EntityTypeSearchCriteria, DataSetTypePE>
+public interface ISearchDataSetTypeExecutor extends ISearchObjectExecutor<DataSetTypeSearchCriteria, DataSetTypePE>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/SearchDataSetTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/SearchDataSetTypeExecutor.java
index f8d741726bc97c6b7156313d067a5f8dd972e1b3..18f55ada17791276f2db49e4dc27c0dfd0ea789a 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/SearchDataSetTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/dataset/SearchDataSetTypeExecutor.java
@@ -18,6 +18,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset;
 
 import org.springframework.stereotype.Component;
 
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractSearchEntityTypeExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
@@ -26,7 +27,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
  * @author Franz-Josef Elmer
  */
 @Component
-public class SearchDataSetTypeExecutor extends AbstractSearchEntityTypeExecutor<DataSetTypePE> implements ISearchDataSetTypeExecutor
+public class SearchDataSetTypeExecutor extends AbstractSearchEntityTypeExecutor<DataSetTypeSearchCriteria, DataSetTypePE> implements ISearchDataSetTypeExecutor
 {
     public SearchDataSetTypeExecutor()
     {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractSearchEntityTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractSearchEntityTypeExecutor.java
index 6f8719b904e0f1fd6cd45061b5d8a10d685d881f..bb1e90287733fc5479d18a226eac18a86a44c2ed 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractSearchEntityTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/AbstractSearchEntityTypeExecutor.java
@@ -21,7 +21,7 @@ import java.util.List;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.CodeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ISearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.PermIdSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.AbstractSearchObjectManuallyExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.CodeMatcher;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.Matcher;
@@ -31,8 +31,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
 /**
  * @author Franz-Josef Elmer
  */
-public abstract class AbstractSearchEntityTypeExecutor<ENTITY_TYPE_PE extends EntityTypePE>
-        extends AbstractSearchObjectManuallyExecutor<EntityTypeSearchCriteria, ENTITY_TYPE_PE>
+public abstract class AbstractSearchEntityTypeExecutor<ENTITY_TYPE_SEARCH_CRITERIA extends AbstractEntityTypeSearchCriteria, ENTITY_TYPE_PE extends EntityTypePE>
+        extends AbstractSearchObjectManuallyExecutor<ENTITY_TYPE_SEARCH_CRITERIA, ENTITY_TYPE_PE>
 {
     private final EntityKind entityKind;
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/ISearchExperimentTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/ISearchExperimentTypeExecutor.java
index 7c132f26a5f31a194e018e056a57402a091324a9..9e534f4a1278f54cac735bcc15258ac11db8a32e 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/ISearchExperimentTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/ISearchExperimentTypeExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.experiment;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.ISearchObjectExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchExperimentTypeExecutor extends ISearchObjectExecutor<EntityTypeSearchCriteria, ExperimentTypePE>
+public interface ISearchExperimentTypeExecutor extends ISearchObjectExecutor<ExperimentTypeSearchCriteria, ExperimentTypePE>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/SearchExperimentTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/SearchExperimentTypeExecutor.java
index 21822b810c2403dc746ed90d30fba3461804ca64..5629a8c90f16b61e4e6dcac79187e6e068501db4 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/SearchExperimentTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/experiment/SearchExperimentTypeExecutor.java
@@ -18,6 +18,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.experiment;
 
 import org.springframework.stereotype.Component;
 
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractSearchEntityTypeExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
@@ -26,7 +27,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
  * @author Franz-Josef Elmer
  */
 @Component
-public class SearchExperimentTypeExecutor extends AbstractSearchEntityTypeExecutor<ExperimentTypePE> implements ISearchExperimentTypeExecutor
+public class SearchExperimentTypeExecutor extends AbstractSearchEntityTypeExecutor<ExperimentTypeSearchCriteria, ExperimentTypePE> implements ISearchExperimentTypeExecutor
 {
     public SearchExperimentTypeExecutor()
     {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ISearchMaterialTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ISearchMaterialTypeExecutor.java
index 132021372afedc8bf4fd2e7a14e8c4eaee3de00d..46979a75ec04a211dfe3daa5fd31c24c80dfb8c2 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ISearchMaterialTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ISearchMaterialTypeExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.material;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.ISearchObjectExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchMaterialTypeExecutor extends ISearchObjectExecutor<EntityTypeSearchCriteria, MaterialTypePE>
+public interface ISearchMaterialTypeExecutor extends ISearchObjectExecutor<MaterialTypeSearchCriteria, MaterialTypePE>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/SearchMaterialTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/SearchMaterialTypeExecutor.java
index 99d1f380dba5d6069e3abf773c1f49a598bf9c95..397a0b92b58636097faa02351bd47fa53d9a4364 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/SearchMaterialTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/SearchMaterialTypeExecutor.java
@@ -18,6 +18,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.material;
 
 import org.springframework.stereotype.Component;
 
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractSearchEntityTypeExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
@@ -26,7 +27,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
  * @author Franz-Josef Elmer
  */
 @Component
-public class SearchMaterialTypeExecutor extends AbstractSearchEntityTypeExecutor<MaterialTypePE> implements ISearchMaterialTypeExecutor
+public class SearchMaterialTypeExecutor extends AbstractSearchEntityTypeExecutor<MaterialTypeSearchCriteria, MaterialTypePE> implements ISearchMaterialTypeExecutor
 {
     public SearchMaterialTypeExecutor()
     {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchDataSetTypeMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchDataSetTypeMethodExecutor.java
index 4b9c65b6f331a509bfdd792d0d7dc17ee36abbee..47b4e783527f4a7794b336e449e946c2aaba47e7 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchDataSetTypeMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchDataSetTypeMethodExecutor.java
@@ -18,12 +18,12 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchDataSetTypeMethodExecutor extends ISearchMethodExecutor<DataSetType, EntityTypeSearchCriteria, DataSetTypeFetchOptions>
+public interface ISearchDataSetTypeMethodExecutor extends ISearchMethodExecutor<DataSetType, DataSetTypeSearchCriteria, DataSetTypeFetchOptions>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchExperimentTypeMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchExperimentTypeMethodExecutor.java
index bc12472af21cd5e9532f9457a55646bf95114e6b..ce38d7eacee6169ce7b2574a1a8af5dc2beffb84 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchExperimentTypeMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchExperimentTypeMethodExecutor.java
@@ -16,15 +16,15 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 
 /**
  * @author Franz-Josef Elmer
  */
 public interface ISearchExperimentTypeMethodExecutor extends
-        ISearchMethodExecutor<ExperimentType, EntityTypeSearchCriteria, ExperimentTypeFetchOptions>
+        ISearchMethodExecutor<ExperimentType, ExperimentTypeSearchCriteria, ExperimentTypeFetchOptions>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchMaterialTypeMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchMaterialTypeMethodExecutor.java
index fb8295b948e8f73afb7a8bcdb276b783fa10e399..c9c9f13bdc89fe092da75e8734282cd00233380f 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchMaterialTypeMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchMaterialTypeMethodExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.MaterialType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchMaterialTypeMethodExecutor extends ISearchMethodExecutor<MaterialType, EntityTypeSearchCriteria, MaterialTypeFetchOptions>
+public interface ISearchMaterialTypeMethodExecutor extends ISearchMethodExecutor<MaterialType, MaterialTypeSearchCriteria, MaterialTypeFetchOptions>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchSampleTypeMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchSampleTypeMethodExecutor.java
index e4a19ca7b20917926408dce4b114e9a2af5d6e82..c357ede6da4af0145911a9d6f1b0fe0311134348 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchSampleTypeMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchSampleTypeMethodExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchSampleTypeMethodExecutor extends ISearchMethodExecutor<SampleType, EntityTypeSearchCriteria, SampleTypeFetchOptions>
+public interface ISearchSampleTypeMethodExecutor extends ISearchMethodExecutor<SampleType, SampleTypeSearchCriteria, SampleTypeFetchOptions>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchDataSetTypeSqlMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchDataSetTypeSqlMethodExecutor.java
index 4bd6768d1918c22643eb9c151a6a35b2b29240c8..928adaa4e2442338ef1175ed7f9297b4770eb1d4 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchDataSetTypeSqlMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchDataSetTypeSqlMethodExecutor.java
@@ -23,7 +23,7 @@ import org.springframework.stereotype.Component;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset.ISearchDataSetTypeExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator;
@@ -35,7 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
  */
 @Component
 public class SearchDataSetTypeSqlMethodExecutor extends
-        AbstractIdSearchMethodExecutor<DataSetType, DataSetTypePE, EntityTypeSearchCriteria, DataSetTypeFetchOptions>
+        AbstractIdSearchMethodExecutor<DataSetType, DataSetTypePE, DataSetTypeSearchCriteria, DataSetTypeFetchOptions>
         implements ISearchDataSetTypeMethodExecutor
 {
     @Autowired
@@ -45,7 +45,7 @@ public class SearchDataSetTypeSqlMethodExecutor extends
     private IDataSetTypeTranslator translator;
 
     @Override
-    protected List<DataSetTypePE> searchPEs(IOperationContext context, EntityTypeSearchCriteria criteria)
+    protected List<DataSetTypePE> searchPEs(IOperationContext context, DataSetTypeSearchCriteria criteria)
     {
         return searchExecutor.search(context, criteria);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchExperimentTypeSqlMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchExperimentTypeSqlMethodExecutor.java
index f24d74cbb30f92208fb18e0c701c7cf83a4d8901..0974ad2501829ac9e6061a818293d2e944cc8fec 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchExperimentTypeSqlMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchExperimentTypeSqlMethodExecutor.java
@@ -21,9 +21,9 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.experiment.ISearchExperimentTypeExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator;
@@ -35,7 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
  */
 @Component
 public class SearchExperimentTypeSqlMethodExecutor extends
-        AbstractIdSearchMethodExecutor<ExperimentType, ExperimentTypePE, EntityTypeSearchCriteria, ExperimentTypeFetchOptions>
+        AbstractIdSearchMethodExecutor<ExperimentType, ExperimentTypePE, ExperimentTypeSearchCriteria, ExperimentTypeFetchOptions>
         implements ISearchExperimentTypeMethodExecutor
 {
     @Autowired
@@ -45,7 +45,7 @@ public class SearchExperimentTypeSqlMethodExecutor extends
     private IExperimentTypeTranslator translator;
 
     @Override
-    protected List<ExperimentTypePE> searchPEs(IOperationContext context, EntityTypeSearchCriteria criteria)
+    protected List<ExperimentTypePE> searchPEs(IOperationContext context, ExperimentTypeSearchCriteria criteria)
     {
         return searchExecutor.search(context, criteria);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchMaterialTypeSqlMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchMaterialTypeSqlMethodExecutor.java
index 856b6f191e22958ab183dcb39f99076a89fdc652..30e2aa4a3dd50f25f81eefcd2cc781f1b9d1c295 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchMaterialTypeSqlMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchMaterialTypeSqlMethodExecutor.java
@@ -21,9 +21,9 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.MaterialType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.material.ISearchMaterialTypeExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator;
@@ -35,7 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
  */
 @Component
 public class SearchMaterialTypeSqlMethodExecutor extends
-        AbstractIdSearchMethodExecutor<MaterialType, MaterialTypePE, EntityTypeSearchCriteria, MaterialTypeFetchOptions>
+        AbstractIdSearchMethodExecutor<MaterialType, MaterialTypePE, MaterialTypeSearchCriteria, MaterialTypeFetchOptions>
         implements ISearchMaterialTypeMethodExecutor
 {
     @Autowired
@@ -45,7 +45,7 @@ public class SearchMaterialTypeSqlMethodExecutor extends
     private IMaterialTypeTranslator translator;
 
     @Override
-    protected List<MaterialTypePE> searchPEs(IOperationContext context, EntityTypeSearchCriteria criteria)
+    protected List<MaterialTypePE> searchPEs(IOperationContext context, MaterialTypeSearchCriteria criteria)
     {
         return searchExecutor.search(context, criteria);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchSampleTypeSqlMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchSampleTypeSqlMethodExecutor.java
index e0bbecd57cdb7d27f8f96692b9e03daf8a78db52..1493eebae10e07a3121718a3a5a6ee7ca83eedfe 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchSampleTypeSqlMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchSampleTypeSqlMethodExecutor.java
@@ -21,9 +21,9 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ISearchSampleTypeExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator;
@@ -35,7 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE;
  */
 @Component
 public class SearchSampleTypeSqlMethodExecutor extends
-        AbstractIdSearchMethodExecutor<SampleType, SampleTypePE, EntityTypeSearchCriteria, SampleTypeFetchOptions>
+        AbstractIdSearchMethodExecutor<SampleType, SampleTypePE, SampleTypeSearchCriteria, SampleTypeFetchOptions>
         implements ISearchSampleTypeMethodExecutor
 {
     @Autowired
@@ -45,7 +45,7 @@ public class SearchSampleTypeSqlMethodExecutor extends
     private ISampleTypeTranslator translator;
 
     @Override
-    protected List<SampleTypePE> searchPEs(IOperationContext context, EntityTypeSearchCriteria criteria)
+    protected List<SampleTypePE> searchPEs(IOperationContext context, SampleTypeSearchCriteria criteria)
     {
         return searchExecutor.search(context, criteria);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ISearchSampleTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ISearchSampleTypeExecutor.java
index f9014c5efc909846ec493d815e034dd11b3a03a3..c1309663bb647c275c654bb9a09f07779ee9d9fa 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ISearchSampleTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ISearchSampleTypeExecutor.java
@@ -16,14 +16,14 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.ISearchObjectExecutor;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE;
 
 /**
  * @author Franz-Josef Elmer
  */
-public interface ISearchSampleTypeExecutor extends ISearchObjectExecutor<EntityTypeSearchCriteria, SampleTypePE>
+public interface ISearchSampleTypeExecutor extends ISearchObjectExecutor<SampleTypeSearchCriteria, SampleTypePE>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/SearchSampleTypeExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/SearchSampleTypeExecutor.java
index 391500589cfcdd8063f748418ec71a1fb91a88e4..c8a1c40c9573cd677cf641f1afe29bcc995e6680 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/SearchSampleTypeExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/SearchSampleTypeExecutor.java
@@ -22,7 +22,8 @@ import java.util.List;
 import org.springframework.stereotype.Component;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ISearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.ListableSampleTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.ListableSampleTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.Matcher;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.AbstractSearchEntityTypeExecutor;
@@ -33,7 +34,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
  * @author Franz-Josef Elmer
  */
 @Component
-public class SearchSampleTypeExecutor extends AbstractSearchEntityTypeExecutor<SampleTypePE> implements ISearchSampleTypeExecutor
+public class SearchSampleTypeExecutor extends AbstractSearchEntityTypeExecutor<SampleTypeSearchCriteria, SampleTypePE> implements ISearchSampleTypeExecutor
 {
     public SearchSampleTypeExecutor()
     {
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/EntityTypeSearchCriteriaTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/EntityTypeSearchCriteriaTranslator.java
index 0559d2b8d9adbeca023b58ba20616eb8ef79f5d5..1e2a750cf0264f6d1e4ff7981149822179e784bd 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/EntityTypeSearchCriteriaTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/EntityTypeSearchCriteriaTranslator.java
@@ -17,8 +17,8 @@
 package ch.ethz.sis.openbis.generic.server.asapi.v3.translator.search;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ISearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.SampleTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetAttributeSearchFieldKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
@@ -40,7 +40,7 @@ public class EntityTypeSearchCriteriaTranslator extends AbstractFieldFromComposi
     @Override
     protected boolean doAccepts(ISearchCriteria criteria)
     {
-        return criteria instanceof EntityTypeSearchCriteria
+        return criteria instanceof AbstractEntityTypeSearchCriteria
                 && false == (criteria instanceof SampleTypeSearchCriteria);
     }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/SampleTypeSearchCriteriaTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/SampleTypeSearchCriteriaTranslator.java
index 991f24d66a664938f6bc9cadc81813cd798c1f7d..94f69afcc37f758209197be0a697544084b8da59 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/SampleTypeSearchCriteriaTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/search/SampleTypeSearchCriteriaTranslator.java
@@ -1,8 +1,8 @@
 package ch.ethz.sis.openbis.generic.server.asapi.v3.translator.search;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.ISearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.ListableSampleTypeSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.SampleTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.ListableSampleTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/common/search/AbstractEntitySearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/common/search/AbstractEntitySearchCriteria.js
index d610135421a28ffd395aeb536e52d2b9577eefd2..623a4e237fcdac1a44369ed877c1521daa39c3da 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/common/search/AbstractEntitySearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/common/search/AbstractEntitySearchCriteria.js
@@ -3,7 +3,7 @@
  */
 define(
 		[ "require", "stjs", "as/dto/common/search/AbstractObjectSearchCriteria", "as/dto/common/search/SearchOperator", "as/dto/common/search/CodeSearchCriteria",
-				"as/dto/entitytype/search/EntityTypeSearchCriteria", "as/dto/common/search/PermIdSearchCriteria", "as/dto/common/search/RegistrationDateSearchCriteria",
+				"as/dto/common/search/PermIdSearchCriteria", "as/dto/common/search/RegistrationDateSearchCriteria",
 				"as/dto/common/search/ModificationDateSearchCriteria", "as/dto/common/search/NumberPropertySearchCriteria", "as/dto/tag/search/TagSearchCriteria",
 				"as/dto/common/search/StringPropertySearchCriteria", "as/dto/common/search/DatePropertySearchCriteria", "as/dto/common/search/AnyPropertySearchCriteria",
 				"as/dto/common/search/AnyFieldSearchCriteria", "as/dto/common/search/AbstractCompositeSearchCriteria" ], function(require, stjs, AbstractObjectSearchCriteria, SearchOperator) {
@@ -25,10 +25,6 @@ define(
 					var CodeSearchCriteria = require("as/dto/common/search/CodeSearchCriteria");
 					return this.addCriteria(new CodeSearchCriteria());
 				};
-				prototype.withType = function() {
-					var EntityTypeSearchCriteria = require("as/dto/entitytype/search/EntityTypeSearchCriteria");
-					return this.addCriteria(new EntityTypeSearchCriteria());
-				};
 				prototype.withPermId = function() {
 					var PermIdSearchCriteria = require("as/dto/common/search/PermIdSearchCriteria");
 					return this.addCriteria(new PermIdSearchCriteria());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetSearchCriteria.js
index 440de62d37790b8ad2e6acf79deccb32a062d810..c37fa8bfd388f17505910cae151ba71e7d169812 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetSearchCriteria.js
@@ -2,7 +2,8 @@
  * @author pkupczyk
  */
 define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator", "as/dto/dataset/search/DataSetSearchRelation", ,
-		"as/dto/experiment/search/ExperimentSearchCriteria", "as/dto/experiment/search/NoExperimentSearchCriteria", "as/dto/sample/search/SampleSearchCriteria", "as/dto/sample/search/NoSampleSearchCriteria" ],
+		"as/dto/experiment/search/ExperimentSearchCriteria", "as/dto/experiment/search/NoExperimentSearchCriteria", "as/dto/sample/search/SampleSearchCriteria", 
+		"as/dto/sample/search/NoSampleSearchCriteria", "as/dto/dataset/search/DataSetTypeSearchCriteria" ],
 		function(require, stjs, AbstractEntitySearchCriteria, SearchOperator, DataSetSearchRelation) {
 			var DataSetSearchCriteria = function(relation) {
 				AbstractEntitySearchCriteria.call(this);
@@ -12,6 +13,10 @@ define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria",
 				prototype['@type'] = 'as.dto.dataset.search.DataSetSearchCriteria';
 				constructor.serialVersionUID = 1;
 				prototype.relation = null;
+				prototype.withType = function() {
+					var DataSetTypeSearchCriteria = require("as/dto/dataset/search/DataSetTypeSearchCriteria");
+					return this.addCriteria(new DataSetTypeSearchCriteria());
+				};
 				prototype.withParents = function() {
 					return this.addCriteria(new DataSetParentsSearchCriteria());
 				};
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetTypeSearchCriteria.js
new file mode 100644
index 0000000000000000000000000000000000000000..f47984b423b5fda5bd63c58dc4740a220904cb0f
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/search/DataSetTypeSearchCriteria.js
@@ -0,0 +1,12 @@
+define([ "require", "stjs", "as/dto/entitytype/search/AbstractEntityTypeSearchCriteria" ], 
+	function(require, stjs, AbstractEntityTypeSearchCriteria) {
+		var DataSetTypeSearchCriteria = function() {
+			AbstractEntityTypeSearchCriteria.call(this);
+		};
+		stjs.extend(DataSetTypeSearchCriteria, AbstractEntityTypeSearchCriteria, [ AbstractEntityTypeSearchCriteria ], function(constructor, prototype) {
+			prototype['@type'] = 'as.dto.dataset.search.DataSetTypeSearchCriteria';
+			constructor.serialVersionUID = 1;
+		}, {});
+		
+	return DataSetTypeSearchCriteria;
+})
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/EntityTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/AbstractEntityTypeSearchCriteria.js
similarity index 72%
rename from openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/EntityTypeSearchCriteria.js
rename to openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/AbstractEntityTypeSearchCriteria.js
index b8660825597fe4f95bb6715dc525997d787cb93e..b8280c35dd29431cd554d4a2363060dac1cfcc4a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/EntityTypeSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/AbstractEntityTypeSearchCriteria.js
@@ -3,11 +3,11 @@
  */
 define([ "require", "stjs", "as/dto/common/search/AbstractObjectSearchCriteria", "as/dto/common/search/CodeSearchCriteria", "as/dto/common/search/PermIdSearchCriteria",
 		"as/dto/common/search/AbstractCompositeSearchCriteria" ], function(require, stjs, AbstractObjectSearchCriteria) {
-	var EntityTypeSearchCriteria = function() {
+	var AbstractEntityTypeSearchCriteria = function() {
 		AbstractObjectSearchCriteria.call(this);
 	};
-	stjs.extend(EntityTypeSearchCriteria, AbstractObjectSearchCriteria, [ AbstractObjectSearchCriteria ], function(constructor, prototype) {
-		prototype['@type'] = 'as.dto.entitytype.search.EntityTypeSearchCriteria';
+	stjs.extend(AbstractEntityTypeSearchCriteria, AbstractObjectSearchCriteria, [ AbstractObjectSearchCriteria ], function(constructor, prototype) {
+		prototype['@type'] = 'as.dto.entitytype.search.AbstractEntityTypeSearchCriteria';
 		constructor.serialVersionUID = 1;
 		prototype.withCode = function() {
 			var CodeSearchCriteria = require("as/dto/common/search/CodeSearchCriteria");
@@ -23,5 +23,5 @@ define([ "require", "stjs", "as/dto/common/search/AbstractObjectSearchCriteria",
 			arguments : [ "ISearchCriteria" ]
 		}
 	});
-	return EntityTypeSearchCriteria;
+	return AbstractEntityTypeSearchCriteria;
 })
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/SampleTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/SampleTypeSearchCriteria.js
deleted file mode 100644
index e2984db6a9e0c89a29e6a106ca011cd3db055ef9..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/SampleTypeSearchCriteria.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * @author pkupczyk
- */
-define([ "require", "stjs", "as/dto/entitytype/search/EntityTypeSearchCriteria", "as/dto/entitytype/search/ListableSampleTypeSearchCriteria" ], 
-	function(require, stjs, EntityTypeSearchCriteria) {
-		var SampleTypeSearchCriteria = function() {
-			EntityTypeSearchCriteria.call(this);
-		};
-		stjs.extend(SampleTypeSearchCriteria, EntityTypeSearchCriteria, [ EntityTypeSearchCriteria ], function(constructor, prototype) {
-			prototype['@type'] = 'as.dto.entitytype.search.SampleTypeSearchCriteria';
-			constructor.serialVersionUID = 1;
-			prototype.withListable = function() {
-				var ListableSampleTypeSearchCriteria = require("as/dto/entitytype/search/ListableSampleTypeSearchCriteria");
-				return this.addCriteria(new ListableSampleTypeSearchCriteria());
-			};
-		}, {});
-		
-	return SampleTypeSearchCriteria;
-})
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentSearchCriteria.js
index 6e31f502b8884dbcd25ba9a13bbe02b6921291ab..e490611e658d5b4f3f52ce16a102ab74f30ecf74 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentSearchCriteria.js
@@ -1,7 +1,8 @@
 /**
  * @author pkupczyk
  */
-define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator", "as/dto/project/search/ProjectSearchCriteria" ], function(require, stjs,
+define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator", 
+         "as/dto/project/search/ProjectSearchCriteria", "as/dto/experiment/search/ExperimentTypeSearchCriteria" ], function(require, stjs,
 		AbstractEntitySearchCriteria, SearchOperator) {
 	var ExperimentSearchCriteria = function() {
 		AbstractEntitySearchCriteria.call(this);
@@ -9,6 +10,10 @@ define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria",
 	stjs.extend(ExperimentSearchCriteria, AbstractEntitySearchCriteria, [ AbstractEntitySearchCriteria ], function(constructor, prototype) {
 		prototype['@type'] = 'as.dto.experiment.search.ExperimentSearchCriteria';
 		constructor.serialVersionUID = 1;
+		prototype.withType = function() {
+			var ExperimentTypeSearchCriteria = require("as/dto/experiment/search/ExperimentTypeSearchCriteria");
+			return this.addCriteria(new ExperimentTypeSearchCriteria());
+		};
 		prototype.withProject = function() {
 			var ProjectSearchCriteria = require("as/dto/project/search/ProjectSearchCriteria");
 			return this.addCriteria(new ProjectSearchCriteria());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentTypeSearchCriteria.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5dcb78d94da4007b98b3ef4ed04d8186b57b09a
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/experiment/search/ExperimentTypeSearchCriteria.js
@@ -0,0 +1,12 @@
+define([ "require", "stjs", "as/dto/entitytype/search/AbstractEntityTypeSearchCriteria" ], 
+	function(require, stjs, AbstractEntityTypeSearchCriteria) {
+		var ExperimentTypeSearchCriteria = function() {
+			AbstractEntityTypeSearchCriteria.call(this);
+		};
+		stjs.extend(ExperimentTypeSearchCriteria, AbstractEntityTypeSearchCriteria, [ AbstractEntityTypeSearchCriteria ], function(constructor, prototype) {
+			prototype['@type'] = 'as.dto.experiment.search.ExperimentTypeSearchCriteria';
+			constructor.serialVersionUID = 1;
+		}, {});
+		
+	return ExperimentTypeSearchCriteria;
+})
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialSearchCriteria.js
index 886538bc2313455bd6d8e04d895af5f43bf95f40..4bf4e10c5e4ed77d04777a82c51e17b3b6f4ab0c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialSearchCriteria.js
@@ -1,13 +1,18 @@
 /**
  * @author pkupczyk
  */
-define([ "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator" ], function(stjs, AbstractEntitySearchCriteria, SearchOperator) {
+define([ "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator",
+         "as/dto/material/search/MaterialTypeSearchCriteria" ], function(stjs, AbstractEntitySearchCriteria, SearchOperator) {
 	var MaterialSearchCriteria = function() {
 		AbstractEntitySearchCriteria.call(this);
 	};
 	stjs.extend(MaterialSearchCriteria, AbstractEntitySearchCriteria, [ AbstractEntitySearchCriteria ], function(constructor, prototype) {
 		prototype['@type'] = 'as.dto.material.search.MaterialSearchCriteria';
 		constructor.serialVersionUID = 1;
+		prototype.withType = function() {
+			var MaterialTypeSearchCriteria = require("as/dto/material/search/MaterialTypeSearchCriteria");
+			return this.addCriteria(new MaterialTypeSearchCriteria());
+		};
 		prototype.withOrOperator = function() {
 			return this.withOperator(SearchOperator.OR);
 		};
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialTypeSearchCriteria.js
new file mode 100644
index 0000000000000000000000000000000000000000..dfd1c1baa38ef73224414ee527a6e376844dedce
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/material/search/MaterialTypeSearchCriteria.js
@@ -0,0 +1,12 @@
+define([ "require", "stjs", "as/dto/entitytype/search/AbstractEntityTypeSearchCriteria" ], 
+	function(require, stjs, AbstractEntityTypeSearchCriteria) {
+		var MaterialTypeSearchCriteria = function() {
+			AbstractEntityTypeSearchCriteria.call(this);
+		};
+		stjs.extend(MaterialTypeSearchCriteria, AbstractEntityTypeSearchCriteria, [ AbstractEntityTypeSearchCriteria ], function(constructor, prototype) {
+			prototype['@type'] = 'as.dto.material.search.MaterialTypeSearchCriteria';
+			constructor.serialVersionUID = 1;
+		}, {});
+		
+	return MaterialTypeSearchCriteria;
+})
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/ListableSampleTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/ListableSampleTypeSearchCriteria.js
similarity index 86%
rename from openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/ListableSampleTypeSearchCriteria.js
rename to openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/ListableSampleTypeSearchCriteria.js
index 33e12d957f99b1f44c8cf0414c4dfc8a613a2ec0..e2dd74fde27382ad9f043de8280ec1c08ad527ca 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/entitytype/search/ListableSampleTypeSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/ListableSampleTypeSearchCriteria.js
@@ -1,12 +1,9 @@
-/**
- * @author pkupczyk
- */
 define([ "stjs", "as/dto/common/search/AbstractSearchCriteria" ], function(stjs, AbstractSearchCriteria) {
 	var ListableSampleTypeSearchCriteria = function() {
 		AbstractSearchCriteria.call(this);
 	};
 	stjs.extend(ListableSampleTypeSearchCriteria, AbstractSearchCriteria, [ AbstractSearchCriteria ], function(constructor, prototype) {
-		prototype['@type'] = 'as.dto.entitytype.search.ListableSampleTypeSearchCriteria';
+		prototype['@type'] = 'as.dto.sample.search.ListableSampleTypeSearchCriteria';
 		constructor.serialVersionUID = 1;
 		
 		prototype.listable;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleSearchCriteria.js
index 528e5ba6b8f25cef9c3f7ac5ec4d85ef95d7d4b3..be31718e0d1c8fc5d30f2ed591234b4232d93d5d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleSearchCriteria.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleSearchCriteria.js
@@ -3,7 +3,7 @@
  */
 define([ "require", "stjs", "as/dto/common/search/AbstractEntitySearchCriteria", "as/dto/common/search/SearchOperator", "as/dto/sample/search/SampleSearchRelation", "as/dto/space/search/SpaceSearchCriteria",
 		"as/dto/experiment/search/ExperimentSearchCriteria", "as/dto/experiment/search/NoExperimentSearchCriteria",
-		"as/dto/sample/search/NoSampleContainerSearchCriteria", "as/dto/entitytype/search/SampleTypeSearchCriteria" ], 
+		"as/dto/sample/search/NoSampleContainerSearchCriteria", "as/dto/sample/search/SampleTypeSearchCriteria" ], 
 		function(require, stjs, AbstractEntitySearchCriteria, SearchOperator, SampleSearchRelation) {
 
 	var SampleSearchCriteria = function(relation) {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleTypeSearchCriteria.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleTypeSearchCriteria.js
new file mode 100644
index 0000000000000000000000000000000000000000..cde7c26d8796ceffb269c6d3934e305735f45cee
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/sample/search/SampleTypeSearchCriteria.js
@@ -0,0 +1,16 @@
+define([ "require", "stjs", "as/dto/entitytype/search/AbstractEntityTypeSearchCriteria", "as/dto/sample/search/ListableSampleTypeSearchCriteria" ], 
+	function(require, stjs, AbstractEntityTypeSearchCriteria) {
+		var SampleTypeSearchCriteria = function() {
+			AbstractEntityTypeSearchCriteria.call(this);
+		};
+		stjs.extend(SampleTypeSearchCriteria, AbstractEntityTypeSearchCriteria, [ AbstractEntityTypeSearchCriteria ], function(constructor, prototype) {
+			prototype['@type'] = 'as.dto.sample.search.SampleTypeSearchCriteria';
+			constructor.serialVersionUID = 1;
+			prototype.withListable = function() {
+				var ListableSampleTypeSearchCriteria = require("as/dto/sample/search/ListableSampleTypeSearchCriteria");
+				return this.addCriteria(new ListableSampleTypeSearchCriteria());
+			};
+		}, {});
+		
+	return SampleTypeSearchCriteria;
+})
\ No newline at end of file
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTypeTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTypeTest.java
index 7bcaffda1d0ee9e5baf56a875d6cb105ae2d8454..0ac8015684e4d3d19133a0f7613b705f3e830935 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTypeTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchDataSetTypeTest.java
@@ -27,7 +27,7 @@ import org.testng.annotations.Test;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetTypeFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.DataTypeCode;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyType;
@@ -44,7 +44,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchAll()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
         SearchResult<DataSetType> searchResult = v3api.searchDataSetTypes(sessionToken, searchCriteria, fetchOptions);
@@ -63,7 +63,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchAllWithoutVocabularies()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
         
@@ -89,7 +89,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchAllWithVocabularies()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
         PropertyAssignmentFetchOptions assignmentFetchOptions = fetchOptions.withPropertyAssignments();
         assignmentFetchOptions.sortBy().label().desc();
@@ -154,7 +154,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchExactCode()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         searchCriteria.withCode().thatEquals("HCS_IMAGE");
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
@@ -172,7 +172,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchWithCodeThatStartsWithD()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
 
@@ -190,7 +190,7 @@ public class SearchDataSetTypeTest extends AbstractTest
     public void testSearchWithPropertyAssignmentSortByCodeDesc()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         DataSetTypeFetchOptions fetchOptions = new DataSetTypeFetchOptions();
         fetchOptions.withPropertyAssignments().sortBy().code().desc();
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTypeTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTypeTest.java
index b6827e9f5f46332c0c67a53c52ec0244daeae8d8..94dd1b0f10d282b9b0e5280e59c7bdf88d7a1341 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTypeTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchExperimentTypeTest.java
@@ -25,9 +25,9 @@ import java.util.List;
 import org.testng.annotations.Test;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.sort.CodeComparator;
 
@@ -40,7 +40,7 @@ public class SearchExperimentTypeTest extends AbstractTest
     public void testSearchAllWithVocabularies()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        ExperimentTypeSearchCriteria searchCriteria = new ExperimentTypeSearchCriteria();
         ExperimentTypeFetchOptions fetchOptions = new ExperimentTypeFetchOptions();
         fetchOptions.withPropertyAssignments().withVocabulary();
         SearchResult<ExperimentType> searchResult = v3api.searchExperimentTypes(sessionToken, searchCriteria, fetchOptions);
@@ -65,7 +65,7 @@ public class SearchExperimentTypeTest extends AbstractTest
     public void testSearchExactCode()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        ExperimentTypeSearchCriteria searchCriteria = new ExperimentTypeSearchCriteria();
         searchCriteria.withCode().thatEquals("SIRNA_HCS");
         ExperimentTypeFetchOptions fetchOptions = new ExperimentTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
@@ -83,7 +83,7 @@ public class SearchExperimentTypeTest extends AbstractTest
     public void testSearchWithCodeThatStartsWithD()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        ExperimentTypeSearchCriteria searchCriteria = new ExperimentTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         ExperimentTypeFetchOptions fetchOptions = new ExperimentTypeFetchOptions();
 
@@ -101,7 +101,7 @@ public class SearchExperimentTypeTest extends AbstractTest
     public void testSearchWithPropertyAssignmentSortByCodeDesc()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        ExperimentTypeSearchCriteria searchCriteria = new ExperimentTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         ExperimentTypeFetchOptions fetchOptions = new ExperimentTypeFetchOptions();
         fetchOptions.withPropertyAssignments().sortBy().code().desc();
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchMaterialTypeTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchMaterialTypeTest.java
index 32da83b0c1a7c3227362c06150c066aa5e6e988d..647ed97c0385970a1d7f9605a1ab2e1674b060c2 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchMaterialTypeTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchMaterialTypeTest.java
@@ -25,9 +25,9 @@ import java.util.List;
 import org.testng.annotations.Test;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.MaterialType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.sort.CodeComparator;
 
@@ -40,7 +40,7 @@ public class SearchMaterialTypeTest extends AbstractTest
     public void testSearchAll()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        MaterialTypeSearchCriteria searchCriteria = new MaterialTypeSearchCriteria();
         MaterialTypeFetchOptions fetchOptions = new MaterialTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
         SearchResult<MaterialType> searchResult = v3api.searchMaterialTypes(sessionToken, searchCriteria, fetchOptions);
@@ -58,7 +58,7 @@ public class SearchMaterialTypeTest extends AbstractTest
     public void testSearchExactCodeWithVocabularies()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        MaterialTypeSearchCriteria searchCriteria = new MaterialTypeSearchCriteria();
         searchCriteria.withCode().thatEquals("BACTERIUM");
         MaterialTypeFetchOptions fetchOptions = new MaterialTypeFetchOptions();
         fetchOptions.withPropertyAssignments().withVocabulary();
@@ -85,7 +85,7 @@ public class SearchMaterialTypeTest extends AbstractTest
     public void testSearchWithCodeThatStartsWithB()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        MaterialTypeSearchCriteria searchCriteria = new MaterialTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("B");
         MaterialTypeFetchOptions fetchOptions = new MaterialTypeFetchOptions();
 
@@ -103,7 +103,7 @@ public class SearchMaterialTypeTest extends AbstractTest
     public void testSearchWithPropertyAssignmentSortByLabelDesc()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        MaterialTypeSearchCriteria searchCriteria = new MaterialTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("B");
         MaterialTypeFetchOptions fetchOptions = new MaterialTypeFetchOptions();
         fetchOptions.withPropertyAssignments().sortBy().label().desc();
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 b2f6dc44d129af16fe47fded14844b1e336027ae..297f961b1c48356d896601a639bcfbe4c171d159 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
@@ -29,7 +29,6 @@ import org.testng.annotations.Test;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions.CacheMode;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier;
@@ -39,6 +38,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchO
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagCode;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.TagPermId;
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTypeTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTypeTest.java
index cc3cc3ad592eb839542f9caa9c58df4306803347..6a36d49a23f7cefcf9828cf90c8ca3abec0dad76 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTypeTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchSampleTypeTest.java
@@ -25,11 +25,10 @@ import java.util.List;
 import org.testng.annotations.Test;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.sort.CodeComparator;
 
 /**
@@ -41,7 +40,7 @@ public class SearchSampleTypeTest extends AbstractTest
     public void testSearchAllWithVocabularies()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        SampleTypeSearchCriteria searchCriteria = new SampleTypeSearchCriteria();
         SampleTypeFetchOptions fetchOptions = new SampleTypeFetchOptions();
         fetchOptions.withPropertyAssignments().withVocabulary();
         
@@ -72,7 +71,7 @@ public class SearchSampleTypeTest extends AbstractTest
     public void testSearchExactCode()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        SampleTypeSearchCriteria searchCriteria = new SampleTypeSearchCriteria();
         searchCriteria.withCode().thatEquals("MASTER_PLATE");
         SampleTypeFetchOptions fetchOptions = new SampleTypeFetchOptions();
         fetchOptions.withPropertyAssignments();
@@ -90,7 +89,7 @@ public class SearchSampleTypeTest extends AbstractTest
     public void testSearchWithCodeThatStartsWithD()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new EntityTypeSearchCriteria();
+        SampleTypeSearchCriteria searchCriteria = new SampleTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         SampleTypeFetchOptions fetchOptions = new SampleTypeFetchOptions();
 
@@ -108,7 +107,7 @@ public class SearchSampleTypeTest extends AbstractTest
     public void testSearchWithPropertyAssignmentSortByLabelDesc()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        EntityTypeSearchCriteria searchCriteria = new SampleTypeSearchCriteria();
+        SampleTypeSearchCriteria searchCriteria = new SampleTypeSearchCriteria();
         searchCriteria.withCode().thatStartsWith("D");
         SampleTypeFetchOptions fetchOptions = new SampleTypeFetchOptions();
         fetchOptions.withPropertyAssignments().sortBy().label().desc();
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java
index 0568e549464cb3b6ecd6a00ba336e0a050709b37..a04cd3d4e9cf6c7aec430a865e568213981dca72 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java
@@ -29,12 +29,12 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetType
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.update.DataSetUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.Deletion;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.fetchoptions.DeletionFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.IDeletionId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.search.DeletionSearchCriteria;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.ExperimentType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.create.ExperimentCreation;
@@ -44,6 +44,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.Experime
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.IExperimentId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.update.ExperimentUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.GlobalSearchObject;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.global.fetchoptions.GlobalSearchObjectFetchOptions;
@@ -57,6 +58,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialTy
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.IMaterialId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.search.MaterialTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.update.MaterialUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.ObjectKindModification;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.objectkindmodification.fetchoptions.ObjectKindModificationFetchOptions;
@@ -78,6 +80,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFe
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.update.SampleUpdate;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
@@ -194,22 +197,22 @@ public interface IApplicationServerApi extends IRpcService
     public SearchResult<Experiment> searchExperiments(String sessionToken, ExperimentSearchCriteria searchCriteria,
             ExperimentFetchOptions fetchOptions);
 
-    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<ExperimentType> searchExperimentTypes(String sessionToken, ExperimentTypeSearchCriteria searchCriteria,
             ExperimentTypeFetchOptions fetchOptions);
 
     public SearchResult<Sample> searchSamples(String sessionToken, SampleSearchCriteria searchCriteria, SampleFetchOptions fetchOptions);
 
-    public SearchResult<SampleType> searchSampleTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<SampleType> searchSampleTypes(String sessionToken, SampleTypeSearchCriteria searchCriteria,
             SampleTypeFetchOptions fetchOptions);
 
     public SearchResult<DataSet> searchDataSets(String sessionToken, DataSetSearchCriteria searchCriteria, DataSetFetchOptions fetchOptions);
 
-    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<DataSetType> searchDataSetTypes(String sessionToken, DataSetTypeSearchCriteria searchCriteria,
             DataSetTypeFetchOptions fetchOptions);
 
     public SearchResult<Material> searchMaterials(String sessionToken, MaterialSearchCriteria searchCriteria, MaterialFetchOptions fetchOptions);
 
-    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, EntityTypeSearchCriteria searchCriteria,
+    public SearchResult<MaterialType> searchMaterialTypes(String sessionToken, MaterialTypeSearchCriteria searchCriteria,
             MaterialTypeFetchOptions fetchOptions);
 
     public SearchResult<VocabularyTerm> searchVocabularyTerms(String sessionToken, VocabularyTermSearchCriteria searchCriteria,
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/search/AbstractEntitySearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/search/AbstractEntitySearchCriteria.java
index 18ba0675437601806b712d063251faea2171183b..f4364cd56dfd143a250fa5506a6d1a1d2671ea49 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/search/AbstractEntitySearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/search/AbstractEntitySearchCriteria.java
@@ -17,7 +17,6 @@
 package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.search.TagSearchCriteria;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -35,11 +34,6 @@ public abstract class AbstractEntitySearchCriteria<ID extends IObjectId> extends
         return with(new CodeSearchCriteria());
     }
 
-    public EntityTypeSearchCriteria withType()
-    {
-        return with(new EntityTypeSearchCriteria());
-    }
-
     public PermIdSearchCriteria withPermId()
     {
         return with(new PermIdSearchCriteria());
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetSearchCriteria.java
index 03e45448697db2270810f13040a01ea5080a94b4..d75169b8844813647e1deecd2701c2c78c76e1af 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetSearchCriteria.java
@@ -47,6 +47,11 @@ public class DataSetSearchCriteria extends AbstractEntitySearchCriteria<IDataSet
         this.relation = relation;
     }
 
+    public DataSetTypeSearchCriteria withType()
+    {
+        return with(new DataSetTypeSearchCriteria());
+    }
+
     public DataSetSearchCriteria withParents()
     {
         return with(new DataSetParentsSearchCriteria());
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetTypeSearchCriteria.java
new file mode 100644
index 0000000000000000000000000000000000000000..0da24e55b4a37a3fe942c0c0921de1e71c2ae2d3
--- /dev/null
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/search/DataSetTypeSearchCriteria.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search;
+
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+@JsonObject("as.dto.dataset.search.DataSetTypeSearchCriteria")
+public class DataSetTypeSearchCriteria extends AbstractEntityTypeSearchCriteria
+{
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    protected SearchCriteriaToStringBuilder createBuilder()
+    {
+        SearchCriteriaToStringBuilder builder = super.createBuilder();
+        builder.setName("DATA_SET_TYPE");
+        return builder;
+    }
+}
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/AbstractEntityTypeSearchCriteria.java
similarity index 87%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/AbstractEntityTypeSearchCriteria.java
index cc45a3bae71da19b120913a87023513011aaff61..7d9887d0672d84b9ffe05050167ea4acfac2941c 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/AbstractEntityTypeSearchCriteria.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014 ETH Zuerich, CISD
+ * Copyright 2016 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.
@@ -26,16 +26,12 @@ import ch.systemsx.cisd.base.annotation.JsonObject;
 /**
  * @author pkupczyk
  */
-@JsonObject("as.dto.entitytype.search.EntityTypeSearchCriteria")
-public class EntityTypeSearchCriteria extends AbstractObjectSearchCriteria<IEntityTypeId>
+@JsonObject("as.dto.entitytype.search.AbstractEntityTypeSearchCriteria")
+public abstract class AbstractEntityTypeSearchCriteria extends AbstractObjectSearchCriteria<IEntityTypeId>
 {
 
     private static final long serialVersionUID = 1L;
 
-    public EntityTypeSearchCriteria()
-    {
-    }
-
     public CodeSearchCriteria withCode()
     {
         return with(new CodeSearchCriteria());
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/SampleTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/SampleTypeSearchCriteria.java
deleted file mode 100644
index 308c79c25de6527d1ddea7c8698ee68f8b0c9649..0000000000000000000000000000000000000000
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/SampleTypeSearchCriteria.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search;
-
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
-import ch.systemsx.cisd.base.annotation.JsonObject;
-
-@JsonObject("as.dto.entitytype.search.SampleTypeSearchCriteria")
-public class SampleTypeSearchCriteria extends EntityTypeSearchCriteria
-{
-
-    private static final long serialVersionUID = 1L;
-
-    public ListableSampleTypeSearchCriteria withListable()
-    {
-        return with(new ListableSampleTypeSearchCriteria());
-    }
-
-    @Override
-    protected SearchCriteriaToStringBuilder createBuilder()
-    {
-        SearchCriteriaToStringBuilder builder = super.createBuilder();
-        builder.setName("SAMPLES_TYPE");
-        return builder;
-    }
-
-}
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentSearchCriteria.java
index a074e21f6840a6e11b9b0e32cef65bd731259dd0..ef2d092742fdafe74e02a781982db5f6c0d80d5c 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentSearchCriteria.java
@@ -36,6 +36,11 @@ public class ExperimentSearchCriteria extends AbstractEntitySearchCriteria<IExpe
     {
     }
 
+    public ExperimentTypeSearchCriteria withType()
+    {
+        return with(new ExperimentTypeSearchCriteria());
+    }
+
     public ProjectSearchCriteria withProject()
     {
         return with(new ProjectSearchCriteria());
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentTypeSearchCriteria.java
new file mode 100644
index 0000000000000000000000000000000000000000..47c17e601e19286649c554a02ceb8818e0c82283
--- /dev/null
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/search/ExperimentTypeSearchCriteria.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search;
+
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+@JsonObject("as.dto.experiment.search.ExperimentTypeSearchCriteria")
+public class ExperimentTypeSearchCriteria extends AbstractEntityTypeSearchCriteria
+{
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    protected SearchCriteriaToStringBuilder createBuilder()
+    {
+        SearchCriteriaToStringBuilder builder = super.createBuilder();
+        builder.setName("EXPERIMENT_TYPE");
+        return builder;
+    }
+
+}
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialSearchCriteria.java
index eb4d2da2b80d3c61071241bd08e4217540bc7af6..10c675c159558b445d31ac2582675f025f8c6719 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialSearchCriteria.java
@@ -35,6 +35,11 @@ public class MaterialSearchCriteria extends AbstractEntitySearchCriteria<IMateri
     {
     }
 
+    public MaterialTypeSearchCriteria withType()
+    {
+        return with(new MaterialTypeSearchCriteria());
+    }
+
     public MaterialSearchCriteria withOrOperator()
     {
         return (MaterialSearchCriteria) withOperator(SearchOperator.OR);
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialTypeSearchCriteria.java
new file mode 100644
index 0000000000000000000000000000000000000000..4fdb0661e81a5e43defcc4785d8cf9ce4b0f0337
--- /dev/null
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/search/MaterialTypeSearchCriteria.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 ETH Zuerich, SIS
+ *
+ * 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.ethz.sis.openbis.generic.asapi.v3.dto.material.search;
+
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+@JsonObject("as.dto.material.search.MaterialTypeSearchCriteria")
+public class MaterialTypeSearchCriteria extends AbstractEntityTypeSearchCriteria
+{
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    protected SearchCriteriaToStringBuilder createBuilder()
+    {
+        SearchCriteriaToStringBuilder builder = super.createBuilder();
+        builder.setName("MATERIAL_TYPE");
+        return builder;
+    }
+
+}
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/ListableSampleTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/ListableSampleTypeSearchCriteria.java
similarity index 83%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/ListableSampleTypeSearchCriteria.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/ListableSampleTypeSearchCriteria.java
index 47c35d98dd63a09484f55a0c2b09144285a99bff..24077969c10d536fc78d669b23407c12d56c13bb 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/ListableSampleTypeSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/ListableSampleTypeSearchCriteria.java
@@ -1,9 +1,9 @@
-package ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search;
+package ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractSearchCriteria;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
-@JsonObject("as.dto.entitytype.search.ListableSampleTypeSearchCriteria")
+@JsonObject("as.dto.sample.search.ListableSampleTypeSearchCriteria")
 public class ListableSampleTypeSearchCriteria extends AbstractSearchCriteria
 {
     private static final long serialVersionUID = 1L;
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleSearchCriteria.java
index 61ce72b12ad626cf969293e7046368dda2e781c8..a3674cc26610c6a543309da05fa3b679345a42e5 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleSearchCriteria.java
@@ -19,7 +19,6 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.search;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractEntitySearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchOperator;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.SampleTypeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.ExperimentSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.search.NoExperimentSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId;
@@ -84,7 +83,6 @@ public class SampleSearchCriteria extends AbstractEntitySearchCriteria<ISampleId
         return this;
     }
 
-    @Override
     public SampleTypeSearchCriteria withType()
     {
         return with(new SampleTypeSearchCriteria());
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleTypeSearchCriteria.java
new file mode 100644
index 0000000000000000000000000000000000000000..c90ae33bdf05fc909f0ea148d100c095dcf3c24f
--- /dev/null
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/search/SampleTypeSearchCriteria.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2016 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.ethz.sis.openbis.generic.asapi.v3.dto.sample.search;
+
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.AbstractEntityTypeSearchCriteria;
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
+@JsonObject("as.dto.sample.search.SampleTypeSearchCriteria")
+public class SampleTypeSearchCriteria extends AbstractEntityTypeSearchCriteria
+{
+    private static final long serialVersionUID = 1L;
+
+    public ListableSampleTypeSearchCriteria withListable()
+    {
+        return with(new ListableSampleTypeSearchCriteria());
+    }
+
+    @Override
+    protected SearchCriteriaToStringBuilder createBuilder()
+    {
+        SearchCriteriaToStringBuilder builder = super.createBuilder();
+        builder.setName("SAMPLE_TYPE");
+        return builder;
+    }
+
+}
diff --git a/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/dictionary.txt b/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/dictionary.txt
index 40a1ac1b63eabacb0f045104f25cbe8a55c55772..c68bd65b3d4769517106df7be41f226a61e3e876 100644
--- a/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/dictionary.txt
+++ b/openbis_api/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/dictionary.txt
@@ -149,7 +149,10 @@ ECMAScriptEngineFactory
 EmptyFetchOptions
 EntitySortOptions
 EntityTypePermId
-EntityTypeSearchCriteria
+Abstract Entity Type Search Criteria
+Data Set Type Search Criteria
+Experiment Type Search Criteria
+Material Type Search Criteria
 equals
 exec
 EXPERIMENT