diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java
index be998cd114cbd99f15aa075b0444ffb579ab3c6d..41286a9b56f1332f09bc7c701c3a7d0b086cad0e 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java
@@ -298,86 +298,18 @@ public class OperationsExecutor implements IOperationsExecutor
 
         try
         {
-            // delete
-            resultMap.putAll(deleteDataSetsExecutor.execute(context, operations));
-            resultMap.putAll(deleteSamplesExecutor.execute(context, operations));
-            resultMap.putAll(deleteExperimentsExecutor.execute(context, operations));
-            resultMap.putAll(deleteProjectsExecutor.execute(context, operations));
-            resultMap.putAll(deleteSpacesExecutor.execute(context, operations));
-            resultMap.putAll(deleteMaterialsExecutor.execute(context, operations));
-            resultMap.putAll(deleteTagsExecutor.execute(context, operations));
-            resultMap.putAll(deleteVocabularyTermsExecutor.execute(context, operations));
-            resultMap.putAll(deleteOperationExecutionsExecutor.execute(context, operations));
-
-            // create
-            resultMap.putAll(createVocabularyTermsExecutor.execute(context, operations));
-            resultMap.putAll(createTagsExecutor.execute(context, operations));
-            resultMap.putAll(createMaterialsExecutor.execute(context, operations));
-            resultMap.putAll(createSpacesExecutor.execute(context, operations));
-            resultMap.putAll(createProjectsExecutor.execute(context, operations));
-            resultMap.putAll(createExperimentsExecutor.execute(context, operations));
-            resultMap.putAll(createSamplesExecutor.execute(context, operations));
-            resultMap.putAll(createDataSetsExecutor.execute(context, operations));
-
-            // update
-            resultMap.putAll(updateOperationExecutionsExecutor.execute(context, operations));
-            resultMap.putAll(updateVocabularyTermsExecutor.execute(context, operations));
-            resultMap.putAll(updateTagsExecutor.execute(context, operations));
-            resultMap.putAll(updateMaterialsExecutor.execute(context, operations));
-            resultMap.putAll(updateSpacesExecutor.execute(context, operations));
-            resultMap.putAll(updateProjectsExecutor.execute(context, operations));
-            resultMap.putAll(updateExperimentsExecutor.execute(context, operations));
-            resultMap.putAll(updateSamplesExecutor.execute(context, operations));
-            resultMap.putAll(updateDataSetsExecutor.execute(context, operations));
-
-            // internal
+            executeDeletions(operations, resultMap, context);
+            executeCreations(operations, resultMap, context);
+            executeUpdates(operations, resultMap, context);
             resultMap.putAll(internalOperationExecutor.execute(context, operations));
 
             flushCurrentSession();
 
-            // verify
-            verifyMaterialsExecutor.verify(context, operations, resultMap);
-            verifyExperimentsExecutor.verify(context, operations, resultMap);
-            verifySamplesExecutor.verify(context, operations, resultMap);
-            verifyDataSetsExecutor.verify(context, operations, resultMap);
-
-            // get
-            resultMap.putAll(getSpacesExecutor.execute(context, operations));
-            resultMap.putAll(getProjectsExecutor.execute(context, operations));
-            resultMap.putAll(getExperimentsExecutor.execute(context, operations));
-            resultMap.putAll(getSamplesExecutor.execute(context, operations));
-            resultMap.putAll(getDataSetsExecutor.execute(context, operations));
-            resultMap.putAll(getMaterialsExecutor.execute(context, operations));
-            resultMap.putAll(getTagsExecutor.execute(context, operations));
-            resultMap.putAll(getVocabularyTermsExecutor.execute(context, operations));
-            resultMap.putAll(getOperationExecutionsExecutor.execute(context, operations));
-
-            // search
-            resultMap.putAll(searchSpacesExecutor.execute(context, operations));
-            resultMap.putAll(searchProjectsExecutor.execute(context, operations));
-            resultMap.putAll(searchExperimentsExecutor.execute(context, operations));
-            resultMap.putAll(searchSamplesExecutor.execute(context, operations));
-            resultMap.putAll(searchDataSetsExecutor.execute(context, operations));
-            resultMap.putAll(searchMaterialsExecutor.execute(context, operations));
-            resultMap.putAll(searchTagsExecutor.execute(context, operations));
-            resultMap.putAll(searchVocabularyTermsExecutor.execute(context, operations));
-            resultMap.putAll(searchExperimentTypesExecutor.execute(context, operations));
-            resultMap.putAll(searchSampleTypesExecutor.execute(context, operations));
-            resultMap.putAll(searchDataSetTypesExecutor.execute(context, operations));
-            resultMap.putAll(searchMaterialTypesExecutor.execute(context, operations));
-            resultMap.putAll(searchCustomASServicesExecutor.execute(context, operations));
-            resultMap.putAll(searchDeletionsExecutor.execute(context, operations));
-            resultMap.putAll(searchGloballyExecutor.execute(context, operations));
-            resultMap.putAll(searchObjectKindModificationsExecutor.execute(context, operations));
-            resultMap.putAll(searchOperationExecutionsExecutor.execute(context, operations));
-
-            // others
-            resultMap.putAll(executeCustomASServiceExecutor.execute(context, operations));
-            resultMap.putAll(revertDeletionsExecutor.execute(context, operations));
-            resultMap.putAll(confirmDeletionsExecutor.execute(context, operations));
-            resultMap.putAll(archiveDataSetsExecutor.execute(context, operations));
-            resultMap.putAll(unarchiveDataSetsExecutor.execute(context, operations));
-            resultMap.putAll(getSessionInformationExecutor.execute(context, operations));
+            verify(operations, resultMap, context);
+
+            executeGets(operations, resultMap, context);
+            executeSearches(operations, resultMap, context);
+            executeOthers(operations, resultMap, context);
 
             List<IOperationResult> resultList = new ArrayList<IOperationResult>();
             for (IOperation operation : operations)
@@ -395,6 +327,103 @@ public class OperationsExecutor implements IOperationsExecutor
         }
     }
 
+    private void executeOthers(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(executeCustomASServiceExecutor.execute(context, operations));
+        resultMap.putAll(revertDeletionsExecutor.execute(context, operations));
+        resultMap.putAll(confirmDeletionsExecutor.execute(context, operations));
+        resultMap.putAll(archiveDataSetsExecutor.execute(context, operations));
+        resultMap.putAll(unarchiveDataSetsExecutor.execute(context, operations));
+        resultMap.putAll(getSessionInformationExecutor.execute(context, operations));
+    }
+
+    private void executeSearches(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(searchSpacesExecutor.execute(context, operations));
+        resultMap.putAll(searchProjectsExecutor.execute(context, operations));
+        resultMap.putAll(searchExperimentsExecutor.execute(context, operations));
+        resultMap.putAll(searchSamplesExecutor.execute(context, operations));
+        resultMap.putAll(searchDataSetsExecutor.execute(context, operations));
+        resultMap.putAll(searchMaterialsExecutor.execute(context, operations));
+        resultMap.putAll(searchTagsExecutor.execute(context, operations));
+        resultMap.putAll(searchVocabularyTermsExecutor.execute(context, operations));
+        resultMap.putAll(searchExperimentTypesExecutor.execute(context, operations));
+        resultMap.putAll(searchSampleTypesExecutor.execute(context, operations));
+        resultMap.putAll(searchDataSetTypesExecutor.execute(context, operations));
+        resultMap.putAll(searchMaterialTypesExecutor.execute(context, operations));
+        resultMap.putAll(searchCustomASServicesExecutor.execute(context, operations));
+        resultMap.putAll(searchDeletionsExecutor.execute(context, operations));
+        resultMap.putAll(searchGloballyExecutor.execute(context, operations));
+        resultMap.putAll(searchObjectKindModificationsExecutor.execute(context, operations));
+        resultMap.putAll(searchOperationExecutionsExecutor.execute(context, operations));
+    }
+
+    private void executeGets(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(getSpacesExecutor.execute(context, operations));
+        resultMap.putAll(getProjectsExecutor.execute(context, operations));
+        resultMap.putAll(getExperimentsExecutor.execute(context, operations));
+        resultMap.putAll(getSamplesExecutor.execute(context, operations));
+        resultMap.putAll(getDataSetsExecutor.execute(context, operations));
+        resultMap.putAll(getMaterialsExecutor.execute(context, operations));
+        resultMap.putAll(getTagsExecutor.execute(context, operations));
+        resultMap.putAll(getVocabularyTermsExecutor.execute(context, operations));
+        resultMap.putAll(getOperationExecutionsExecutor.execute(context, operations));
+    }
+
+    private void verify(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        verifyMaterialsExecutor.verify(context, operations, resultMap);
+        verifyExperimentsExecutor.verify(context, operations, resultMap);
+        verifySamplesExecutor.verify(context, operations, resultMap);
+        verifyDataSetsExecutor.verify(context, operations, resultMap);
+    }
+
+    private void executeUpdates(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(updateOperationExecutionsExecutor.execute(context, operations));
+        resultMap.putAll(updateVocabularyTermsExecutor.execute(context, operations));
+        resultMap.putAll(updateTagsExecutor.execute(context, operations));
+        resultMap.putAll(updateMaterialsExecutor.execute(context, operations));
+        resultMap.putAll(updateSpacesExecutor.execute(context, operations));
+        resultMap.putAll(updateProjectsExecutor.execute(context, operations));
+        resultMap.putAll(updateExperimentsExecutor.execute(context, operations));
+        resultMap.putAll(updateSamplesExecutor.execute(context, operations));
+        resultMap.putAll(updateDataSetsExecutor.execute(context, operations));
+    }
+
+    private void executeCreations(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(createVocabularyTermsExecutor.execute(context, operations));
+        resultMap.putAll(createTagsExecutor.execute(context, operations));
+        resultMap.putAll(createMaterialsExecutor.execute(context, operations));
+        resultMap.putAll(createSpacesExecutor.execute(context, operations));
+        resultMap.putAll(createProjectsExecutor.execute(context, operations));
+        resultMap.putAll(createExperimentsExecutor.execute(context, operations));
+        resultMap.putAll(createSamplesExecutor.execute(context, operations));
+        resultMap.putAll(createDataSetsExecutor.execute(context, operations));
+    }
+
+    private void executeDeletions(List<? extends IOperation> operations, 
+            Map<IOperation, IOperationResult> resultMap, IOperationContext context)
+    {
+        resultMap.putAll(deleteDataSetsExecutor.execute(context, operations));
+        resultMap.putAll(deleteSamplesExecutor.execute(context, operations));
+        resultMap.putAll(deleteExperimentsExecutor.execute(context, operations));
+        resultMap.putAll(deleteProjectsExecutor.execute(context, operations));
+        resultMap.putAll(deleteSpacesExecutor.execute(context, operations));
+        resultMap.putAll(deleteMaterialsExecutor.execute(context, operations));
+        resultMap.putAll(deleteTagsExecutor.execute(context, operations));
+        resultMap.putAll(deleteVocabularyTermsExecutor.execute(context, operations));
+        resultMap.putAll(deleteOperationExecutionsExecutor.execute(context, operations));
+    }
+
     protected void clearCurrentSession()
     {
         daoFactory.getSessionFactory().getCurrentSession().clear();