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 d93e24f9581053049312eec74e58b6b9f6cff34f..77c1b55a4704a382c08b39f8c9df7fc16a38a0cb 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
@@ -16,7 +16,6 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3;
 
-import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
@@ -73,11 +72,11 @@ 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.update.SampleUpdate;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.delete.SpaceDeletionOptions;
@@ -99,7 +98,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IDeleteMateri
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IDeleteProjectMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IDeleteSampleMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IDeleteSpaceMethodExecutor;
-import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IExecuteServiceMethodExecutor;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IExecuteCustomASServiceMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IMapDataSetMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IMapExperimentMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IMapMaterialMethodExecutor;
@@ -114,7 +113,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchMateri
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchObjectKindModificationMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchProjectMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchSampleMethodExecutor;
-import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchServiceMethodExecutor;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchCustomASServiceMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.ISearchSpaceMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IUpdateDataSetMethodExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method.IUpdateExperimentMethodExecutor;
@@ -223,7 +222,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     private ISearchMaterialMethodExecutor searchMaterialExecutor;
 
     @Autowired
-    private ISearchServiceMethodExecutor searchServiceExecutor;
+    private ISearchCustomASServiceMethodExecutor searchCustomASServiceExecutor;
 
     @Autowired
     private ISearchObjectKindModificationMethodExecutor searchObjectKindModificationExecutor;
@@ -256,7 +255,7 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     private IConfirmDeletionMethodExecutor confirmDeletionExecutor;
 
     @Autowired
-    private IExecuteServiceMethodExecutor executeServiceExecutor;
+    private IExecuteCustomASServiceMethodExecutor executeCustomASServiceExecutor;
 
     // @Autowired
     // private IGlobalSearchMethodExecutor globalSearchExecutor;
@@ -613,10 +612,10 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    @Capability("SEARCH_SERVICES")
-    public SearchResult<Service> searchServices(String sessionToken, ServiceSearchCriteria searchCriteria, ServiceFetchOptions fetchOptions)
+    @Capability("SEARCH_CUSTOM_AS_SERVICES")
+    public SearchResult<CustomASService> searchCustomASServices(String sessionToken, CustomASServiceSearchCriteria searchCriteria, CustomASServiceFetchOptions fetchOptions)
     {
-        return searchServiceExecutor.search(sessionToken, searchCriteria, fetchOptions);
+        return searchCustomASServiceExecutor.search(sessionToken, searchCriteria, fetchOptions);
     }
 
     @Override
@@ -632,10 +631,10 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi>
     @Override
     @Transactional
     @RolesAllowed({ RoleWithHierarchy.SPACE_OBSERVER, RoleWithHierarchy.SPACE_ETL_SERVER })
-    @Capability("EXECUTE_SERVICE")
-    public Serializable executeService(String sessionToken, IServiceId serviceId, ExecutionOptions options)
+    @Capability("EXECUTE_CUSTOM_AS_SERVICE")
+    public Object executeCustomASService(String sessionToken, ICustomASServiceId serviceId, CustomASServiceExecutionOptions options)
     {
-        return executeServiceExecutor.executeService(sessionToken, serviceId, options);
+        return executeCustomASServiceExecutor.executeService(sessionToken, serviceId, options);
     }
 
     // @Override
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 0bec844ae967602e1be61c6a7f90ca17c40595ef..e9ad6ffb5498aa055b52b42dfc8eebce2f95c41d 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
@@ -69,11 +69,11 @@ 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.update.SampleUpdate;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.delete.SpaceDeletionOptions;
@@ -353,9 +353,9 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public SearchResult<Service> searchServices(String sessionToken, ServiceSearchCriteria searchCriteria, ServiceFetchOptions fetchOptions)
+    public SearchResult<CustomASService> searchCustomASServices(String sessionToken, CustomASServiceSearchCriteria searchCriteria, CustomASServiceFetchOptions fetchOptions)
     {
-        logAccess(sessionToken, "search-services", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
+        logAccess(sessionToken, "search-custom-as-services", "SEARCH_CRITERIA:\n%s\nFETCH_OPTIONS:\n%s\n", searchCriteria, fetchOptions);
         return null;
     }
 
@@ -368,9 +368,9 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements
     }
 
     @Override
-    public Serializable executeService(String sessionToken, IServiceId serviceId, ExecutionOptions options)
+    public Object executeCustomASService(String sessionToken, ICustomASServiceId serviceId, CustomASServiceExecutionOptions options)
     {
-        logAccess(sessionToken, "execute-service", "SERVICE_ID(%s) EXECUTION_OPTIONS(%s)", serviceId, options);
+        logAccess(sessionToken, "execute-custom-as-service", "SERVICE_ID(%s) EXECUTION_OPTIONS(%s)", serviceId, options);
         return null;
     }
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteServiceMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteCustomASServiceMethodExecutor.java
similarity index 61%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteServiceMethodExecutor.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteCustomASServiceMethodExecutor.java
index cd5c9d84d7b57de6996af8f6e19019e848a8126f..70af7b3e1e79cb9949a95c913d3ead38e51be5b4 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteServiceMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ExecuteCustomASServiceMethodExecutor.java
@@ -16,19 +16,16 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import java.io.Serializable;
-import java.util.Map;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.CustomASServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
 import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.ObjectNotFoundException;
 import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.UnsupportedObjectIdException;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IServiceExecutor;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.ServiceContext;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.ICustomASServiceExecutor;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.CustomASServiceContext;
 
 /**
  * 
@@ -36,25 +33,25 @@ import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.ServiceContex
  * @author Franz-Josef Elmer
  */
 @Component
-public class ExecuteServiceMethodExecutor implements IExecuteServiceMethodExecutor
+public class ExecuteCustomASServiceMethodExecutor implements IExecuteCustomASServiceMethodExecutor
 {
     @Autowired
     private IServiceProvider serviceProvider;
 
     @Override
-    public Serializable executeService(String sessionToken, IServiceId serviceId, ExecutionOptions options)
+    public Object executeService(String sessionToken, ICustomASServiceId serviceId, CustomASServiceExecutionOptions options)
     {
-        if (serviceId instanceof ServiceCode == false)
+        if (serviceId instanceof CustomASServiceCode == false)
         {
             throw new UnsupportedObjectIdException(serviceId);
         }
-        ServiceCode serviceCode = (ServiceCode) serviceId;
-        IServiceExecutor serviceExecutor = serviceProvider.tryGetExecutor(serviceCode.getPermId());
+        CustomASServiceCode serviceCode = (CustomASServiceCode) serviceId;
+        ICustomASServiceExecutor serviceExecutor = serviceProvider.tryGetCustomASServiceExecutor(serviceCode.getPermId());
         if (serviceExecutor == null)
         {
             throw new ObjectNotFoundException(serviceId);
         }
-        ServiceContext serviceContext = new ServiceContext();
+        CustomASServiceContext serviceContext = new CustomASServiceContext();
         serviceContext.setSessionToken(sessionToken);
         return serviceExecutor.executeService(serviceContext, options);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteServiceMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteCustomASServiceMethodExecutor.java
similarity index 67%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteServiceMethodExecutor.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteCustomASServiceMethodExecutor.java
index f5c3baed2ad55f031af85b336157c7532bc10c5d..d6f4983ce1f877a1e5172e4e1eca97b4916d8f8f 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteServiceMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IExecuteCustomASServiceMethodExecutor.java
@@ -16,17 +16,15 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import java.io.Serializable;
-
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
 
 /**
  * 
  *
  * @author Franz-Josef Elmer
  */
-public interface IExecuteServiceMethodExecutor
+public interface IExecuteCustomASServiceMethodExecutor
 {
-    public Serializable executeService(String sessionToken, IServiceId serviceId, ExecutionOptions options);
+    public Object executeService(String sessionToken, ICustomASServiceId serviceId, CustomASServiceExecutionOptions options);
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchServiceMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchCustomASServiceMethodExecutor.java
similarity index 68%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchServiceMethodExecutor.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchCustomASServiceMethodExecutor.java
index c3d73392d270e9f9b630013ba90ac03fea70956d..a12a2f639c1b3ebd5c83d2f584b72e9bcf0ebb32 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchServiceMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ISearchCustomASServiceMethodExecutor.java
@@ -16,16 +16,16 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 
 /**
  * 
  *
  * @author Franz-Josef Elmer
  */
-public interface ISearchServiceMethodExecutor extends ISearchMethodExecutor<Service, ServiceSearchCriteria, ServiceFetchOptions>
+public interface ISearchCustomASServiceMethodExecutor extends ISearchMethodExecutor<CustomASService, CustomASServiceSearchCriteria, CustomASServiceFetchOptions>
 {
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IServiceProvider.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IServiceProvider.java
index fb0dc885e6072153f1222694974d5b5c29d12ff9..10c155e522e4ced5e33ce60f22aa2bef7e090b91 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IServiceProvider.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/IServiceProvider.java
@@ -18,8 +18,8 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.method;
 
 import java.util.List;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IServiceExecutor;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.ICustomASServiceExecutor;
 
 /**
  * 
@@ -28,8 +28,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IServiceExecutor;
  */
 public interface IServiceProvider
 {
-    public List<Service> getServices();
+    public List<CustomASService> getCustomASServices();
 
-    public IServiceExecutor tryGetExecutor(String code);
+    public ICustomASServiceExecutor tryGetCustomASServiceExecutor(String code);
 
 }
\ No newline at end of file
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchServiceMethodExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchCustomASServiceMethodExecutor.java
similarity index 68%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchServiceMethodExecutor.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchCustomASServiceMethodExecutor.java
index 0f43369e6bce9c9981b2cb1b716d801113a89c71..59ecd8da26431978c0d1da6e02422c13abd797cb 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchServiceMethodExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/SearchCustomASServiceMethodExecutor.java
@@ -27,9 +27,9 @@ import org.springframework.stereotype.Component;
 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.SearchResult;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.AbstractSearchObjectManuallyExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.sort.SortAndPage;
@@ -40,8 +40,8 @@ import ch.systemsx.cisd.openbis.generic.shared.IOpenBisSessionManager;
  * @author Franz-Josef Elmer
  */
 @Component
-public class SearchServiceMethodExecutor extends AbstractSearchObjectManuallyExecutor<ServiceSearchCriteria, Service>
-        implements ISearchServiceMethodExecutor
+public class SearchCustomASServiceMethodExecutor extends AbstractSearchObjectManuallyExecutor<CustomASServiceSearchCriteria, CustomASService>
+        implements ISearchCustomASServiceMethodExecutor
 {
     @Autowired
     private IServiceProvider serviceProvider;
@@ -50,17 +50,17 @@ public class SearchServiceMethodExecutor extends AbstractSearchObjectManuallyExe
     private IOpenBisSessionManager sessionManager;
 
     @Override
-    public SearchResult<Service> search(String sessionToken, ServiceSearchCriteria searchCriteria, ServiceFetchOptions fetchOptions)
+    public SearchResult<CustomASService> search(String sessionToken, CustomASServiceSearchCriteria searchCriteria, CustomASServiceFetchOptions fetchOptions)
     {
-        List<Service> services = search(new OperationContext(sessionManager.getSession(sessionToken)), searchCriteria);
-        List<Service> filtered = new ArrayList<>(new SortAndPage().sortAndPage(services, fetchOptions));
-        return new SearchResult<Service>(filtered, services.size());
+        List<CustomASService> services = search(new OperationContext(sessionManager.getSession(sessionToken)), searchCriteria);
+        List<CustomASService> filtered = new ArrayList<>(new SortAndPage().sortAndPage(services, fetchOptions));
+        return new SearchResult<CustomASService>(filtered, services.size());
     }
 
     @Override
-    protected List<Service> listAll()
+    protected List<CustomASService> listAll()
     {
-        return serviceProvider.getServices();
+        return serviceProvider.getCustomASServices();
     }
 
     @Override
@@ -77,7 +77,7 @@ public class SearchServiceMethodExecutor extends AbstractSearchObjectManuallyExe
     {
 
         @Override
-        protected String getFieldValue(Service object)
+        protected String getFieldValue(CustomASService object)
         {
             return object.getCode().getPermId();
         }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ServiceProvider.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ServiceProvider.java
index 1804c87494e7d57dfad063c7161f8992a0d33bb0..3abc01b724a244f121646f3c50aa523b9fd5bf3c 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ServiceProvider.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/method/ServiceProvider.java
@@ -28,9 +28,9 @@ import javax.annotation.Resource;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.stereotype.Component;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ServiceCode;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IServiceExecutor;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.CustomASServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.ICustomASServiceExecutor;
 import ch.systemsx.cisd.common.properties.PropertyParametersUtil;
 import ch.systemsx.cisd.common.properties.PropertyParametersUtil.SectionProperties;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
@@ -50,8 +50,8 @@ public class ServiceProvider implements InitializingBean, IServiceProvider
     public static final String LABEL_KEY = "label";
     public static final String DESCRIPTION_KEY = "description";
     
-    private List<Service> services;
-    private Map<String, IServiceExecutor> executors = new HashMap<String, IServiceExecutor>();
+    private List<CustomASService> services;
+    private Map<String, ICustomASServiceExecutor> executors = new HashMap<String, ICustomASServiceExecutor>();
     
     @Resource(name = ExposablePropertyPlaceholderConfigurer.PROPERTY_CONFIGURER_BEAN_NAME)
     protected ExposablePropertyPlaceholderConfigurer configurer;
@@ -63,17 +63,17 @@ public class ServiceProvider implements InitializingBean, IServiceProvider
         SectionProperties[] sectionsProperties =
                 PropertyParametersUtil.extractSectionProperties(serviceProperties,
                         SERVICES_PROPERTY_KEY, false);
-        ArrayList<Service> list = new ArrayList<Service>();
+        ArrayList<CustomASService> list = new ArrayList<CustomASService>();
         for (SectionProperties sectionProperties : sectionsProperties)
         {
             String code = sectionProperties.getKey();
             Properties properties = sectionProperties.getProperties();
             String className = PropertyUtils.getMandatoryProperty(properties, CLASS_KEY);
-            Service service = new Service();
-            service.setCode(new ServiceCode(code));
+            CustomASService service = new CustomASService();
+            service.setCode(new CustomASServiceCode(code));
             service.setLabel(properties.getProperty(LABEL_KEY, code));
             service.setDescription(properties.getProperty(DESCRIPTION_KEY, ""));
-            IServiceExecutor serviceExecutor = ClassUtils.create(IServiceExecutor.class, className, properties);
+            ICustomASServiceExecutor serviceExecutor = ClassUtils.create(ICustomASServiceExecutor.class, className, properties);
             list.add(service);
             executors.put(code, serviceExecutor);
         }
@@ -81,13 +81,13 @@ public class ServiceProvider implements InitializingBean, IServiceProvider
     }
     
     @Override
-    public List<Service> getServices()
+    public List<CustomASService> getCustomASServices()
     {
         return services;
     }
     
     @Override
-    public IServiceExecutor tryGetExecutor(String code)
+    public ICustomASServiceExecutor tryGetCustomASServiceExecutor(String code)
     {
         return executors.get(code);
     }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
index 54c707da8bd115d8ecd18ad7f0ea51da119affa2..44a539c607115f1bc25a62ee87376bef49a5120b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
@@ -63,8 +63,8 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchO
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleTypeFetchOptions;
 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.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.CustomASServiceCode;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions.SpaceFetchOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.fetchoptions.TagFetchOptions;
@@ -552,14 +552,14 @@ public class Generator extends AbstractGenerator
         return gen;
     }
 
-    private static DtoGenerator createServiceGenerator()
+    private static DtoGenerator createCustomASServiceGenerator()
     {
-        DtoGenerator gen = new DtoGenerator("service", "Service", ServiceFetchOptions.class);
-        gen.addSimpleField(ServiceCode.class, "code");
+        DtoGenerator gen = new DtoGenerator("service", "CustomASService", CustomASServiceFetchOptions.class);
+        gen.addSimpleField(CustomASServiceCode.class, "code");
         gen.addStringField("label");
         gen.addStringField("description");
 
-        gen.setToStringMethod("\"Service code: \" + code");
+        gen.setToStringMethod("\"CustomASService code: \" + code");
 
         return gen;
     }
@@ -625,7 +625,7 @@ public class Generator extends AbstractGenerator
         list.add(createDeletion());
         list.add(createDataStoreGenerator());
         list.add(createExternalDmsGenerator());
-        list.add(createServiceGenerator());
+        list.add(createCustomASServiceGenerator());
         list.add(createObjectKindModificationGenerator());
         // list.add(createGlobalSearchObject());
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/ScriptRunnerFactory.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/CustomASServiceScriptRunnerFactory.java
similarity index 67%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/ScriptRunnerFactory.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/CustomASServiceScriptRunnerFactory.java
index 1fc9ab586d9acb41902f9ba83a540a858a6bec7e..c9e72d2c0343b8471ac97b3addb8f92b71d8eb46 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/ScriptRunnerFactory.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/CustomASServiceScriptRunnerFactory.java
@@ -19,7 +19,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service;
 import java.io.Serializable;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
 import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.ServiceContext;
 import ch.systemsx.cisd.common.jython.JythonUtils;
 import ch.systemsx.cisd.common.jython.evaluator.Evaluator;
@@ -30,12 +30,12 @@ import ch.systemsx.cisd.common.jython.evaluator.EvaluatorException;
  *
  * @author Franz-Josef Elmer
  */
-class ScriptRunnerFactory implements IScriptRunnerFactory
+class CustomASServiceScriptRunnerFactory implements IScriptRunnerFactory
 {
     private final String scriptPath;
     private final IApplicationServerApi applicationService;
 
-    public ScriptRunnerFactory(String scriptPath, IApplicationServerApi applicationService)
+    public CustomASServiceScriptRunnerFactory(String scriptPath, IApplicationServerApi applicationService)
     {
         this.scriptPath = scriptPath;
         this.applicationService = applicationService;
@@ -57,9 +57,9 @@ class ScriptRunnerFactory implements IScriptRunnerFactory
         try
         {
             Evaluator evaluator = new Evaluator("", pythonPath, null, scriptString, false);
-            evaluator.set("sessionToken", context.getSessionToken());
-            evaluator.set("applicationService", applicationService);
-            return new ServiceScriptRunner(evaluator);
+            String sessionToken = context.getSessionToken();
+            ExecutionContext executionContext = new ExecutionContext(sessionToken, applicationService);
+            return new ServiceScriptRunner(evaluator, executionContext);
         } catch (EvaluatorException ex)
         {
             throw new EvaluatorException(ex.getMessage() + " [" + scriptPath + "]");
@@ -72,9 +72,12 @@ class ScriptRunnerFactory implements IScriptRunnerFactory
         
         private Evaluator evaluator;
 
-        ServiceScriptRunner(Evaluator evaluator)
+        private ExecutionContext context;
+
+        ServiceScriptRunner(Evaluator evaluator, ExecutionContext context)
         {
             this.evaluator = evaluator;
+            this.context = context;
             if (evaluator.hasFunction(PROCESS_FUNCTION_NAME) == false)
             {
                 throw new EvaluatorException("Function '" + PROCESS_FUNCTION_NAME
@@ -84,9 +87,9 @@ class ScriptRunnerFactory implements IScriptRunnerFactory
         }
 
         @Override
-        public Serializable process(ExecutionOptions options)
+        public Serializable process(CustomASServiceExecutionOptions options)
         {
-            Object result = evaluator.evalFunction(PROCESS_FUNCTION_NAME, options.getParameters());
+            Object result = evaluator.evalFunction(PROCESS_FUNCTION_NAME, context, options.getParameters());
             if (result == null || result instanceof Serializable)
             {
                 return (Serializable) result;
@@ -96,4 +99,25 @@ class ScriptRunnerFactory implements IScriptRunnerFactory
         }
     }
 
+    public static final class ExecutionContext
+    {
+        private final String sessionToken;
+        private final IApplicationServerApi applicationService;
+
+        ExecutionContext(String sessionToken, IApplicationServerApi applicationService)
+        {
+            this.sessionToken = sessionToken;
+            this.applicationService = applicationService;
+        }
+
+        public String getSessionToken()
+        {
+            return sessionToken;
+        }
+
+        public IApplicationServerApi getApplicationService()
+        {
+            return applicationService;
+        }
+    }
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/IServiceScriptRunner.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/IServiceScriptRunner.java
index 2064d6e8fb6a67a6991ea54a4499250ff07c0cc0..547d1fce28e9dca3821717314cebf2b7f7f16974 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/IServiceScriptRunner.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/IServiceScriptRunner.java
@@ -18,7 +18,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service;
 
 import java.io.Serializable;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
 
 /**
  * 
@@ -27,5 +27,5 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
  */
 public interface IServiceScriptRunner
 {
-    public Serializable process(ExecutionOptions options);
+    public Serializable process(CustomASServiceExecutionOptions options);
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedServiceExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedCustomASServiceExecutor.java
similarity index 65%
rename from openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedServiceExecutor.java
rename to openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedCustomASServiceExecutor.java
index 05d2cab96e9ffac5ca3fef555ced9018fe3cffbc..762875119f26ee9763855db203788cf1a9e199ba 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedServiceExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/service/JythonBasedCustomASServiceExecutor.java
@@ -17,13 +17,12 @@
 
 package ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service;
 
-import java.io.Serializable;
 import java.util.Properties;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.IApplicationServerApi;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IServiceExecutor;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.ServiceContext;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.ICustomASServiceExecutor;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.CustomASServiceContext;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
 import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider;
 
@@ -32,26 +31,25 @@ import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider;
  *
  * @author Franz-Josef Elmer
  */
-public class JythonBasedServiceExecutor implements IServiceExecutor
+public class JythonBasedCustomASServiceExecutor implements ICustomASServiceExecutor
 {
     private static final String SCRIPT_PATH = "script-path";
     
-    private final ScriptRunnerFactory factory;
+    private final CustomASServiceScriptRunnerFactory factory;
 
-    public JythonBasedServiceExecutor(Properties properties)
+    public JythonBasedCustomASServiceExecutor(Properties properties)
     {
         this(PropertyUtils.getMandatoryProperty(properties, SCRIPT_PATH), CommonServiceProvider.getApplicationServerApi());
     }
     
-    JythonBasedServiceExecutor(String scriptPath, IApplicationServerApi applicationService)
+    JythonBasedCustomASServiceExecutor(String scriptPath, IApplicationServerApi applicationService)
     {
-        factory = new ScriptRunnerFactory(scriptPath, applicationService);
+        factory = new CustomASServiceScriptRunnerFactory(scriptPath, applicationService);
     }
 
     @Override
-    public Serializable executeService(ServiceContext context, ExecutionOptions options)
+    public Object executeService(CustomASServiceContext context, CustomASServiceExecutionOptions options)
     {
         return factory.createServiceRunner(context).process(options);
     }
-
 }
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/plugin.properties b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/plugin.properties
index 0e66181d828f7fb9cd2c5a0cfd12829e913b1e8f..adce0389b097c5c796c556ca0f2e4f0df219925d 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/plugin.properties
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/plugin.properties
@@ -1,2 +1,2 @@
-class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedServiceExecutor
+class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
 script-path = script.py
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/script.py b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/script.py
index 2f3c5cf15c917673eb4147ff5859ba8ef4296db0..0c0b3c95c2a8ec6a4f7a276c56acc16e7a30a760 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/script.py
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service1/script.py
@@ -1,2 +1,2 @@
-def process(parameters):
+def process(context, parameters):
     return "hello world"
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/plugin.properties b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/plugin.properties
index 0e66181d828f7fb9cd2c5a0cfd12829e913b1e8f..adce0389b097c5c796c556ca0f2e4f0df219925d 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/plugin.properties
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/plugin.properties
@@ -1,2 +1,2 @@
-class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedServiceExecutor
+class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
 script-path = script.py
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/script.py b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/script.py
index 2f3c5cf15c917673eb4147ff5859ba8ef4296db0..0c0b3c95c2a8ec6a4f7a276c56acc16e7a30a760 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/script.py
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service2/script.py
@@ -1,2 +1,2 @@
-def process(parameters):
+def process(context, parameters):
     return "hello world"
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/plugin.properties b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/plugin.properties
index 0e66181d828f7fb9cd2c5a0cfd12829e913b1e8f..adce0389b097c5c796c556ca0f2e4f0df219925d 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/plugin.properties
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/plugin.properties
@@ -1,2 +1,2 @@
-class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedServiceExecutor
+class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
 script-path = script.py
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/script.py b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/script.py
index 2f3c5cf15c917673eb4147ff5859ba8ef4296db0..0c0b3c95c2a8ec6a4f7a276c56acc16e7a30a760 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/script.py
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/service3/script.py
@@ -1,2 +1,2 @@
-def process(parameters):
+def process(context, parameters):
     return "hello world"
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/plugin.properties b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/plugin.properties
index 0e66181d828f7fb9cd2c5a0cfd12829e913b1e8f..adce0389b097c5c796c556ca0f2e4f0df219925d 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/plugin.properties
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/plugin.properties
@@ -1,2 +1,2 @@
-class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedServiceExecutor
+class = ch.ethz.sis.openbis.generic.server.asapi.v3.helper.service.JythonBasedCustomASServiceExecutor
 script-path = script.py
diff --git a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/script.py b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/script.py
index 595b8c695add1365a4922b97e7c4df707b9ff52d..65198d443349bcd27d3f5ff0ab3b0b3e93bb9d83 100644
--- a/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/script.py
+++ b/openbis/sourceTest/core-plugins/test-v3api-services/1/as/services/simple-service/script.py
@@ -1,9 +1,9 @@
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.fetchoptions import SpaceFetchOptions
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.search import SpaceSearchCriteria
 
-def process(parameters):
+def process(context, parameters):
     name = parameters.get("name");
     searchCriteria = SpaceSearchCriteria();
     searchCriteria.withCode().thatEquals("CISD");
-    result = applicationService.searchSpaces(sessionToken, searchCriteria, SpaceFetchOptions());
+    result = context.applicationService.searchSpaces(context.sessionToken, searchCriteria, SpaceFetchOptions());
     return "hello %s. Spaces: %s" % (name, result.objects)
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteServiceTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteServiceTest.java
index 3932593352c9d42ebfa72fec642bdb508c3fbf4f..66c0ef8cb44346f68e18f8712670adfaff4e5d1a 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteServiceTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/ExecuteServiceTest.java
@@ -18,12 +18,10 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3;
 
 import static org.testng.Assert.assertEquals;
 
-import java.io.Serializable;
-
 import org.testng.annotations.Test;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.CustomASServiceCode;
 
 /**
  * @author Franz-Josef Elmer
@@ -35,10 +33,10 @@ public class ExecuteServiceTest extends AbstractTest
     public void testSearchServices()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        ExecutionOptions options = new ExecutionOptions();
+        CustomASServiceExecutionOptions options = new CustomASServiceExecutionOptions();
         options.withParameter("name", Math.PI);
 
-        Serializable result = v3api.executeService(sessionToken, new ServiceCode("simple-service"), options);
+        Object result = v3api.executeCustomASService(sessionToken, new CustomASServiceCode("simple-service"), options);
 
         assertEquals(result, "hello 3.14159265359. Spaces: [Space CISD]");
     }
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchServiceTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchServiceTest.java
index c3a5ce62438d17137e1e247106520cc8fd78a4ad..c35e60fec7a1f7dbc5338ea1e5dde4f4988db3e5 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchServiceTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchServiceTest.java
@@ -21,9 +21,9 @@ import static org.testng.Assert.assertEquals;
 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.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 
 /**
  * @author Franz-Josef Elmer
@@ -35,10 +35,11 @@ public class SearchServiceTest extends AbstractTest
     public void testSearchServices()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        ServiceSearchCriteria searchCriteria = new ServiceSearchCriteria();
+        CustomASServiceSearchCriteria searchCriteria = new CustomASServiceSearchCriteria();
         searchCriteria.withCode().thatEquals("simple-service");
 
-        SearchResult<Service> result = v3api.searchServices(sessionToken, searchCriteria, new ServiceFetchOptions());
+        SearchResult<CustomASService> result = v3api.searchCustomASServices(sessionToken, searchCriteria, 
+                new CustomASServiceFetchOptions());
 
         assertEquals(result.getTotalCount(), 1);
     }
@@ -46,12 +47,13 @@ public class SearchServiceTest extends AbstractTest
     @Test
     public void testSearchAllServicesSortedPage2()
     {
-        ServiceFetchOptions fetchOptions = new ServiceFetchOptions();
+        CustomASServiceFetchOptions fetchOptions = new CustomASServiceFetchOptions();
         fetchOptions.from(2).count(1).sortBy();
-        SearchResult<Service> result = v3api.searchServices(systemSessionToken, new ServiceSearchCriteria(), 
+        SearchResult<CustomASService> result = v3api.searchCustomASServices(systemSessionToken, 
+                new CustomASServiceSearchCriteria(), 
                 fetchOptions);
         
-        assertEquals(result.getObjects().toString(), "[Service code: service3]");
+        assertEquals(result.getObjects().toString(), "[CustomASService code: service3]");
         assertEquals(result.getTotalCount(), 4);
     }
     
@@ -59,12 +61,13 @@ public class SearchServiceTest extends AbstractTest
     public void testSearchServiceByCode()
     {
         String sessionToken = v3api.login(TEST_USER, PASSWORD);
-        ServiceSearchCriteria searchCriteria = new ServiceSearchCriteria();
+        CustomASServiceSearchCriteria searchCriteria = new CustomASServiceSearchCriteria();
         searchCriteria.withCode().thatStartsWith("simple");
         
-        SearchResult<Service> result = v3api.searchServices(sessionToken, searchCriteria, new ServiceFetchOptions());
+        SearchResult<CustomASService> result = v3api.searchCustomASServices(sessionToken, searchCriteria, new 
+                CustomASServiceFetchOptions());
         
-        assertEquals(result.getObjects().toString(), "[Service code: simple-service]");
+        assertEquals(result.getObjects().toString(), "[CustomASService code: simple-service]");
         assertEquals(result.getTotalCount(), 1);
     }
     
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 097e7c21a05abec0c4cf56bfb96a3fae2833fbd7..245d15b8fcb2e4fbe07100114efde5956f711dd9 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
@@ -16,7 +16,6 @@
 
 package ch.ethz.sis.openbis.generic.asapi.v3;
 
-import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 
@@ -68,11 +67,11 @@ 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.update.SampleUpdate;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.ServiceSearchCriteria;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search.CustomASServiceSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.Space;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create.SpaceCreation;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.delete.SpaceDeletionOptions;
@@ -160,7 +159,7 @@ public interface IApplicationServerApi extends IRpcService
 
     public SearchResult<Material> searchMaterials(String sessionToken, MaterialSearchCriteria searchCriteria, MaterialFetchOptions fetchOptions);
 
-    public SearchResult<Service> searchServices(String sessionToken, ServiceSearchCriteria searchCriteria, ServiceFetchOptions fetchOptions);
+    public SearchResult<CustomASService> searchCustomASServices(String sessionToken, CustomASServiceSearchCriteria searchCriteria, CustomASServiceFetchOptions fetchOptions);
 
     public SearchResult<ObjectKindModification> searchObjectKindModifications(String sessionToken,
             ObjectKindModificationSearchCriteria searchCriteria, ObjectKindModificationFetchOptions fetchOptions);
@@ -187,6 +186,6 @@ public interface IApplicationServerApi extends IRpcService
 
     public void confirmDeletions(String sessionToken, List<? extends IDeletionId> deletionIds);
 
-    public Serializable executeService(String sessionToken, IServiceId serviceId, ExecutionOptions options);
+    public Object executeCustomASService(String sessionToken, ICustomASServiceId serviceId, CustomASServiceExecutionOptions options);
 
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/Service.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASService.java
similarity index 80%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/Service.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASService.java
index 57831296c0d0c01b62f824d01fd6fdefe1167e05..05e4230e5de8be435e9cb85df13e965cba4618bb 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/Service.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASService.java
@@ -15,29 +15,27 @@
  */
 package ch.ethz.sis.openbis.generic.asapi.v3.dto.service;
 
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.ServiceFetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ServiceCode;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions.CustomASServiceFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.CustomASServiceCode;
 import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.NotFetchedException;
 import ch.systemsx.cisd.base.annotation.JsonObject;
-
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-
 import java.io.Serializable;
 
 /*
  * Class automatically generated with DtoGenerator
  */
-@JsonObject("dto.service.Service")
-public class Service implements Serializable
+@JsonObject("dto.service.CustomASService")
+public class CustomASService implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
     @JsonProperty
-    private ServiceFetchOptions fetchOptions;
+    private CustomASServiceFetchOptions fetchOptions;
 
     @JsonProperty
-    private ServiceCode code;
+    private CustomASServiceCode code;
 
     @JsonProperty
     private String label;
@@ -47,26 +45,26 @@ public class Service implements Serializable
 
     // Method automatically generated with DtoGenerator
     @JsonIgnore
-    public ServiceFetchOptions getFetchOptions()
+    public CustomASServiceFetchOptions getFetchOptions()
     {
         return fetchOptions;
     }
 
     // Method automatically generated with DtoGenerator
-    public void setFetchOptions(ServiceFetchOptions fetchOptions)
+    public void setFetchOptions(CustomASServiceFetchOptions fetchOptions)
     {
         this.fetchOptions = fetchOptions;
     }
 
     // Method automatically generated with DtoGenerator
     @JsonIgnore
-    public ServiceCode getCode()
+    public CustomASServiceCode getCode()
     {
         return code;
     }
 
     // Method automatically generated with DtoGenerator
-    public void setCode(ServiceCode code)
+    public void setCode(CustomASServiceCode code)
     {
         this.code = code;
     }
@@ -101,7 +99,7 @@ public class Service implements Serializable
     @Override
     public String toString()
     {
-        return "Service code: " + code;
+        return "CustomASService code: " + code;
     }
 
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/ExecutionOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASServiceExecutionOptions.java
similarity index 74%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/ExecutionOptions.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASServiceExecutionOptions.java
index a038921e2c8d84e98711d9c280663bba07fac4d0..4314b4e9cb681956a425f00ccd1659e94a0afbfc 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/ExecutionOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/CustomASServiceExecutionOptions.java
@@ -27,20 +27,20 @@ import ch.systemsx.cisd.base.annotation.JsonObject;
  *
  * @author Franz-Josef Elmer
  */
-@JsonObject("dto.service.ExecutionOptions")
-public class ExecutionOptions implements Serializable
+@JsonObject("dto.service.CustomASServiceExecutionOptions")
+public class CustomASServiceExecutionOptions implements Serializable
 {
     private static final long serialVersionUID = 1L;
     
-    private final Map<String, Serializable> parameters = new HashMap<String, Serializable>();
+    private final Map<String, Object> parameters = new HashMap<String, Object>();
     
-    public ExecutionOptions withParameter(String parameterName, Serializable value)
+    public CustomASServiceExecutionOptions withParameter(String parameterName, Object value)
     {
         parameters.put(parameterName, value);
         return this;
     }
     
-    public Map<String, Serializable> getParameters()
+    public Map<String, Object> getParameters()
     {
         return parameters;
     }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceFetchOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceFetchOptions.java
similarity index 74%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceFetchOptions.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceFetchOptions.java
index d91b9959fa1d61c2b766e01abe1ee22860fd01d5..11fa635615f260705ac37903d4901d331dc5c89f 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceFetchOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceFetchOptions.java
@@ -16,38 +16,36 @@
 package ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions.FetchOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
 import ch.systemsx.cisd.base.annotation.JsonObject;
-
 import com.fasterxml.jackson.annotation.JsonProperty;
-
 import java.io.Serializable;
 
 /*
  * Class automatically generated with DtoGenerator
  */
-@JsonObject("dto.service.fetchoptions.ServiceFetchOptions")
-public class ServiceFetchOptions extends FetchOptions<Service> implements Serializable
+@JsonObject("dto.service.fetchoptions.CustomASServiceFetchOptions")
+public class CustomASServiceFetchOptions extends FetchOptions<CustomASService> implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
     @JsonProperty
-    private ServiceSortOptions sort;
+    private CustomASServiceSortOptions sort;
 
     // Method automatically generated with DtoGenerator
     @Override
-    public ServiceSortOptions sortBy()
+    public CustomASServiceSortOptions sortBy()
     {
         if (sort == null)
         {
-            sort = new ServiceSortOptions();
+            sort = new CustomASServiceSortOptions();
         }
         return sort;
     }
 
     // Method automatically generated with DtoGenerator
     @Override
-    public ServiceSortOptions getSortBy()
+    public CustomASServiceSortOptions getSortBy()
     {
         return sort;
     }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceSortOptions.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceSortOptions.java
similarity index 80%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceSortOptions.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceSortOptions.java
index 44ec507eb1b7ace3a85e285e46f4f498b2e095af..193c9f044b829474f1811f4dab6170cd86ba56e8 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/ServiceSortOptions.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/fetchoptions/CustomASServiceSortOptions.java
@@ -17,7 +17,7 @@
 package ch.ethz.sis.openbis.generic.asapi.v3.dto.service.fetchoptions;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.fetchoptions.SortOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
 /**
@@ -25,8 +25,8 @@ import ch.systemsx.cisd.base.annotation.JsonObject;
  *
  * @author Franz-Josef Elmer
  */
-@JsonObject("dto.service.fetchoptions.ServiceSortOptions")
-public class ServiceSortOptions extends SortOptions<Service>
+@JsonObject("dto.service.fetchoptions.CustomASServiceSortOptions")
+public class CustomASServiceSortOptions extends SortOptions<CustomASService>
 {
     private static final long serialVersionUID = 1L;
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ServiceCode.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/CustomASServiceCode.java
similarity index 77%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ServiceCode.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/CustomASServiceCode.java
index 6963064ee0499e3dcd9f0e8b58648a25dd6fb351..0aad2e6f2f77ad0313e36bea161b5cdac7287b2e 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ServiceCode.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/CustomASServiceCode.java
@@ -20,16 +20,16 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
 /**
- * Generic service code. This is the name of an AS core plugin of type 'services'.
+ * Custom AS service code. This is the name of an AS core plugin of type 'services'.
  * 
  * @author Franz-Josef Elmer
  */
-@JsonObject("dto.service.id.ServiceCode")
-public class ServiceCode extends ObjectPermId implements IServiceId
+@JsonObject("dto.service.id.CustomASServiceCode")
+public class CustomASServiceCode extends ObjectPermId implements ICustomASServiceId
 {
     private static final long serialVersionUID = 1L;
 
-    public ServiceCode(String code)
+    public CustomASServiceCode(String code)
     {
         // case sensitive
         super(code);
@@ -40,7 +40,7 @@ public class ServiceCode extends ObjectPermId implements IServiceId
     //
 
     @SuppressWarnings("unused")
-    private ServiceCode()
+    private CustomASServiceCode()
     {
     }
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/IServiceId.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ICustomASServiceId.java
similarity index 83%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/IServiceId.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ICustomASServiceId.java
index 3c4f89d4b844ce547d8ec63fe2d2925b90ee5d7a..c25d5c21f9b502e10ffc645d332799b208d2707b 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/IServiceId.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/id/ICustomASServiceId.java
@@ -20,12 +20,12 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
 /**
- * Holds information that uniquely identifies a generic service in openBIS.
+ * Holds information that uniquely identifies a custom AS service.
  *
  * @author Franz-Josef Elmer
  */
-@JsonObject("dto.service.id.IServiceId")
-public interface IServiceId extends IObjectId
+@JsonObject("dto.service.id.ICustomASServiceId")
+public interface ICustomASServiceId extends IObjectId
 {
 
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/ServiceSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/CustomASServiceSearchCriteria.java
similarity index 83%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/ServiceSearchCriteria.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/CustomASServiceSearchCriteria.java
index 84a84b9e611e38c25262bbed5beebbd694b3a28e..6aa1d18d07561b294428a4a1971f4adb4e13f8bf 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/ServiceSearchCriteria.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/service/search/CustomASServiceSearchCriteria.java
@@ -19,7 +19,7 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.service.search;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractObjectSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.CodeSearchCriteria;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.IServiceId;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.id.ICustomASServiceId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
 /**
@@ -27,12 +27,12 @@ import ch.systemsx.cisd.base.annotation.JsonObject;
  *
  * @author Franz-Josef Elmer
  */
-@JsonObject("dto.service.search.ServiceSearchCriteria")
-public class ServiceSearchCriteria extends AbstractObjectSearchCriteria<IServiceId>
+@JsonObject("dto.service.search.CustomASServiceSearchCriteria")
+public class CustomASServiceSearchCriteria extends AbstractObjectSearchCriteria<ICustomASServiceId>
 {
     private static final long serialVersionUID = 1L;
 
-    public ServiceSearchCriteria()
+    public CustomASServiceSearchCriteria()
     {
     }
     
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/IServiceExecutor.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/ICustomASServiceExecutor.java
similarity index 67%
rename from openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/IServiceExecutor.java
rename to openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/ICustomASServiceExecutor.java
index 207f514b95ac1f784f84f31e043723f19ad38dad..3916a8939d13ee27f96a3e4e1c970158d03bb670 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/IServiceExecutor.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/ICustomASServiceExecutor.java
@@ -16,18 +16,16 @@
 
 package ch.ethz.sis.openbis.generic.asapi.v3.plugin.service;
 
-import java.io.Serializable;
-
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.ExecutionOptions;
-import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.Service;
-import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.ServiceContext;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASService;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.service.CustomASServiceExecutionOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.context.CustomASServiceContext;
 
 /**
- * Executor of a {@link Service}.
+ * Executor of a {@link CustomASService}.
  *
  * @author Franz-Josef Elmer
  */
-public interface IServiceExecutor
+public interface ICustomASServiceExecutor
 {
-    public Serializable executeService(ServiceContext context, ExecutionOptions options);
+    public Object executeService(CustomASServiceContext context, CustomASServiceExecutionOptions options);
 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/context/CustomASServiceContext.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/context/CustomASServiceContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..668b6cab5d4e365f7bc57fbeaed18df803dab8f3
--- /dev/null
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/plugin/service/context/CustomASServiceContext.java
@@ -0,0 +1,27 @@
+/*
+ * 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.plugin.service.context;
+
+/**
+ * 
+ *
+ * @author Franz-Josef Elmer
+ */
+public class CustomASServiceContext extends ServiceContext
+{
+
+}
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 5dd5e97bc9c457a000937421d2453acfe5ddf8c3..7584a2d14e64dc59c226ddc24adb51f235152057 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
@@ -995,4 +995,16 @@ withText
 getDataProducer
 getDataProductionDate
 setDataProducer
-setDataProductionDate
\ No newline at end of file
+setDataProductionDate
+
+Custom AS Service
+Custom AS Service Code
+Custom AS Service Context
+Custom AS Service Execution Options
+Custom AS Service Fetch Options
+Custom AS Service Search Criteria
+Custom AS Service Sort Options
+execute Custom AS Service
+I Custom AS Service Executor
+I Custom AS Service Id
+search Custom AS Services