diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
index 16c3cebf094ad2ec828e4e0c8ddf25ae1687a57e..c920680e4ef441f5efa0f998633b0f6ab12d3f9c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
@@ -27,8 +27,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
@@ -99,12 +97,6 @@ public interface ICommonClientService extends IClientService
     public ResultSet<Sample> listSamples(final ListSampleCriteria criteria)
             throws UserFailureException;
 
-    /**
-     * For given <var>sampleIdentifier</var> returns corresponding {@link Sample}.
-     */
-    public SampleGeneration getSampleInfo(final String sampleIdentifier)
-            throws UserFailureException;
-
     /**
      * For given <var>sampleIdentifier</var> returns corresponding list of {@link ExternalData}.
      */
@@ -127,9 +119,4 @@ public interface ICommonClientService extends IClientService
      * Removes the session result set associated with given key.
      */
     public void removeResultSet(final String resultSetKey) throws UserFailureException;
-
-    /**
-     * Registers a new sample.
-     */
-    public void registerSample(final SampleToRegister sample) throws UserFailureException;
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
index 609c8cc61509641e94d651105983fd931f6b7bc7..6ce7a431ed753b11d126d264373de97095129464 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
@@ -29,11 +29,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
-import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 
 /**
  * Asynchronous version of {@link ICommonClientService}.
@@ -83,12 +80,6 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
     public void listSamples(final ListSampleCriteria criteria,
             AsyncCallback<ResultSet<Sample>> asyncCallback);
 
-    /**
-     * @see ICommonClientService#getSampleInfo(String)
-     */
-    public void getSampleInfo(final String sampleIdentifier,
-            AsyncCallback<SampleGeneration> asyncCallback);
-
     /**
      * @see ICommonClientService#listExternalData(String)
      */
@@ -111,10 +102,4 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
      * @see ICommonClientService#removeResultSet(String)
      */
     public void removeResultSet(final String resultSetKey, final AsyncCallback<Void> asyncCallback);
-
-    /**
-     * @see ICommonClientService#registerSample(SampleToRegister)
-     */
-    public void registerSample(final SampleToRegister sample,
-            final AsyncCallback<Void> asyncCallback) throws UserFailureException;
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
index 141b504e3ec5136fb41263212a61c5fd01489b7a..ee22cd73c48089857fe0bbdfc7b16c19d926c040 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
@@ -50,7 +50,7 @@ public final class Client implements EntryPoint
     {
         final ICommonClientServiceAsync service = GWT.create(ICommonClientService.class);
         final ServiceDefTarget endpoint = (ServiceDefTarget) service;
-        endpoint.setServiceEntryPoint(GenericConstants.GENERIC_SERVER_NAME);
+        endpoint.setServiceEntryPoint(GenericConstants.COMMON_SERVER_NAME);
         final IGenericImageBundle imageBundle =
                 GWT.<IGenericImageBundle> create(IGenericImageBundle.class);
         final IMessageProvider messageProvider = new DictonaryBasedMessageProvider("common");
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityChooser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityChooser.java
index 0b7a4a1745c269a9a20e97c49bba11870b5bf8ca..9834c848e746e7d39d7c00dc004cbf508225fca7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityChooser.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/EntityChooser.java
@@ -35,11 +35,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
  */
 final class EntityChooser extends ComboBox<SearchableEntityModel>
 {
-    private final IViewContext<ICommonClientServiceAsync> genericContext;
+    private final IViewContext<ICommonClientServiceAsync> commonContext;
 
-    EntityChooser(final IViewContext<ICommonClientServiceAsync> genericContext)
+    EntityChooser(final IViewContext<ICommonClientServiceAsync> commonContext)
     {
-        this.genericContext = genericContext;
+        this.commonContext = commonContext;
         setEditable(false);
         setDisplayField(ModelDataPropertyNames.DESCRIPTION);
         setWidth(100);
@@ -66,8 +66,8 @@ final class EntityChooser extends ComboBox<SearchableEntityModel>
     protected final void onRender(final Element parent, final int index)
     {
         super.onRender(parent, index);
-        genericContext.getService().listSearchableEntities(
-                new ListSearchableEntities(genericContext));
+        commonContext.getService().listSearchableEntities(
+                new ListSearchableEntities(commonContext));
     }
 
     //
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
index a4c80dc8741d88ae5b4c46900e2d7c7a686638e9..7f9a0d9789324a6ef200d0e92e46ce9519023689 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericConstants.java
@@ -30,7 +30,7 @@ public class GenericConstants
 
     private static final String APPLICATION_NAME = "genericopenbis";
 
-    public static final String GENERIC_SERVER_NAME = createServicePath("generic");
+    public static final String COMMON_SERVER_NAME = createServicePath("common");
 
     /**
      * Creates for the specified service name the service path.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
index 18f131b668b2813d5346e1f14ce836116327fde8..5af5b63380512ab62258293e3c5145e6b3d60757 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
@@ -40,8 +40,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider;
@@ -54,7 +52,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.util.PersonTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.ResultSetTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.RoleAssignmentTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.RoleCodeTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleToRegisterTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleTypeTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.SearchableEntityTranslator;
@@ -66,7 +63,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.SampleGenerationDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier;
@@ -87,7 +83,7 @@ public final class CommonClientService extends AbstractClientService implements
 {
 
     @Resource(name = ch.systemsx.cisd.openbis.generic.shared.ResourceNames.COMMON_SERVER)
-    private ICommonServer genericServer;
+    private ICommonServer commonServer;
 
     public CommonClientService()
     {
@@ -98,7 +94,7 @@ public final class CommonClientService extends AbstractClientService implements
             final IRequestContextProvider requestContextProvider)
     {
         super(requestContextProvider);
-        this.genericServer = genericServer;
+        this.commonServer = genericServer;
     }
 
     @SuppressWarnings("unchecked")
@@ -115,7 +111,7 @@ public final class CommonClientService extends AbstractClientService implements
     @Override
     protected final IServer getServer()
     {
-        return genericServer;
+        return commonServer;
     }
 
     //
@@ -129,7 +125,7 @@ public final class CommonClientService extends AbstractClientService implements
             final DatabaseInstanceIdentifier identifier =
                     new DatabaseInstanceIdentifier(databaseInstanceCode);
             final List<Group> result = new ArrayList<Group>();
-            final List<GroupPE> groups = genericServer.listGroups(getSessionToken(), identifier);
+            final List<GroupPE> groups = commonServer.listGroups(getSessionToken(), identifier);
             for (final GroupPE group : groups)
             {
                 result.add(GroupTranslator.translate(group));
@@ -147,7 +143,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final String sessionToken = getSessionToken();
-            genericServer.registerGroup(sessionToken, groupCode, descriptionOrNull,
+            commonServer.registerGroup(sessionToken, groupCode, descriptionOrNull,
                     groupLeaderOrNull);
         } catch (final UserFailureException e)
         {
@@ -162,7 +158,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final List<Person> result = new ArrayList<Person>();
-            final List<PersonPE> persons = genericServer.listPersons(getSessionToken());
+            final List<PersonPE> persons = commonServer.listPersons(getSessionToken());
             for (final PersonPE person : persons)
             {
                 result.add(PersonTranslator.translate(person));
@@ -179,7 +175,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final String sessionToken = getSessionToken();
-            genericServer.registerPerson(sessionToken, code);
+            commonServer.registerPerson(sessionToken, code);
         } catch (final UserFailureException e)
         {
             throw UserFailureExceptionTranslator.translate(e);
@@ -192,7 +188,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final List<RoleAssignment> result = new ArrayList<RoleAssignment>();
-            final List<RoleAssignmentPE> roles = genericServer.listRoles(getSessionToken());
+            final List<RoleAssignmentPE> roles = commonServer.listRoles(getSessionToken());
             for (final RoleAssignmentPE role : roles)
             {
                 result.add(RoleAssignmentTranslator.translate(role));
@@ -213,7 +209,7 @@ public final class CommonClientService extends AbstractClientService implements
             final GroupIdentifier groupIdentifier =
                     new GroupIdentifier(DatabaseInstanceIdentifier.HOME, group);
             final String sessionToken = getSessionToken();
-            genericServer.registerGroupRole(sessionToken,
+            commonServer.registerGroupRole(sessionToken,
                     RoleCodeTranslator.translate(roleSetCode), groupIdentifier, person);
         } catch (final UserFailureException e)
         {
@@ -227,7 +223,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final String sessionToken = getSessionToken();
-            genericServer.registerInstanceRole(sessionToken, RoleCodeTranslator
+            commonServer.registerInstanceRole(sessionToken, RoleCodeTranslator
                     .translate(roleSetCode), person);
         } catch (final UserFailureException e)
         {
@@ -244,7 +240,7 @@ public final class CommonClientService extends AbstractClientService implements
             final GroupIdentifier groupIdentifier =
                     new GroupIdentifier(DatabaseInstanceIdentifier.HOME, group);
             final String sessionToken = getSessionToken();
-            genericServer.deleteGroupRole(sessionToken, RoleCodeTranslator.translate(roleSetCode),
+            commonServer.deleteGroupRole(sessionToken, RoleCodeTranslator.translate(roleSetCode),
                     groupIdentifier, person);
         } catch (final UserFailureException e)
         {
@@ -259,7 +255,7 @@ public final class CommonClientService extends AbstractClientService implements
         try
         {
             final String sessionToken = getSessionToken();
-            genericServer.deleteInstanceRole(sessionToken, RoleCodeTranslator
+            commonServer.deleteInstanceRole(sessionToken, RoleCodeTranslator
                     .translate(roleSetCode), person);
         } catch (final UserFailureException e)
         {
@@ -273,7 +269,7 @@ public final class CommonClientService extends AbstractClientService implements
     {
         try
         {
-            final List<SampleTypePE> sampleTypes = genericServer.listSampleTypes(getSessionToken());
+            final List<SampleTypePE> sampleTypes = commonServer.listSampleTypes(getSessionToken());
             final List<SampleType> result = new ArrayList<SampleType>();
             for (final SampleTypePE sampleTypePE : sampleTypes)
             {
@@ -303,7 +299,7 @@ public final class CommonClientService extends AbstractClientService implements
                             public final List<Sample> getOriginalData()
                             {
                                 final List<SamplePE> samples =
-                                        genericServer.listSamples(getSessionToken(),
+                                        commonServer.listSamples(getSessionToken(),
                                                 ListSampleCriteriaTranslator
                                                         .translate(listCriteria));
                                 final List<Sample> list = new ArrayList<Sample>(samples.size());
@@ -321,22 +317,6 @@ public final class CommonClientService extends AbstractClientService implements
         }
     }
 
-    public final SampleGeneration getSampleInfo(final String sampleIdentifier)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final SampleIdentifier identifier = SampleIdentifierFactory.parse(sampleIdentifier);
-            final SampleGenerationDTO sampleGeneration =
-                    genericServer.getSampleInfo(getSessionToken(), identifier);
-            return BeanUtils.createBean(SampleGeneration.class, sampleGeneration, DtoConverters
-                    .getSampleConverter());
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
     public final List<ExternalData> listExternalData(final String sampleIdentifier)
             throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
     {
@@ -344,7 +324,7 @@ public final class CommonClientService extends AbstractClientService implements
         {
             final SampleIdentifier identifier = SampleIdentifierFactory.parse(sampleIdentifier);
             final List<ExternalDataPE> externalData =
-                    genericServer.listExternalData(getSessionToken(), identifier);
+                    commonServer.listExternalData(getSessionToken(), identifier);
             return BeanUtils.createBeanList(ExternalData.class, externalData);
         } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
         {
@@ -391,7 +371,7 @@ public final class CommonClientService extends AbstractClientService implements
                                     public final List<MatchingEntity> getOriginalData()
                                     {
                                         return BeanUtils.createBeanList(MatchingEntity.class,
-                                                genericServer.listMatchingEntities(
+                                                commonServer.listMatchingEntities(
                                                         getSessionToken(), matchingEntities,
                                                         queryText), DtoConverters
                                                         .getMatchingEntityConverter());
@@ -416,18 +396,4 @@ public final class CommonClientService extends AbstractClientService implements
             throw UserFailureExceptionTranslator.translate(e);
         }
     }
-
-    public final void registerSample(SampleToRegister sample)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            genericServer
-                    .registerSample(sessionToken, SampleToRegisterTranslator.translate(sample));
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java
index 3899bcce297330c0f9a12c3de623c393b93576f5..5b4880802153b6f912aa99272be2f5dac476c9b3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientService.java
@@ -16,22 +16,10 @@
 
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.client;
 
-import java.util.List;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.IClientService;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 
 /**
@@ -41,64 +29,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureE
  */
 public interface IGenericClientService extends IClientService
 {
-    /**
-     * Returns a list of all groups which belong to the specified database instance.
-     */
-    public List<Group> listGroups(String databaseInstanceCode) throws UserFailureException;
-
-    /**
-     * Registers a new group with specified code and optional description and group leader ID.
-     */
-    public void registerGroup(String groupCode, String descriptionOrNull, String groupLeaderOrNull)
-            throws UserFailureException;
-
-    /**
-     * Returns a list of all persons which belong to the current database instance.
-     */
-    public List<Person> listPersons() throws UserFailureException;
-
-    /**
-     * Registers a new person with specified code.
-     */
-    public void registerPerson(String code) throws UserFailureException;
-
-    /**
-     * Returns a list of all roles.
-     */
-    public List<RoleAssignment> listRoles() throws UserFailureException;
-
-    /**
-     * Registers a new role from given role set code, group code and person code
-     */
-    public void registerGroupRole(String roleSetCode, String group, String person)
-            throws UserFailureException;
-
-    /**
-     * Deletes the role described by given role set code, group code and person code
-     */
-    public void deleteGroupRole(String roleSetCode, String group, String person)
-            throws UserFailureException;
-
-    /**
-     * Registers a new role from given role set code and person code
-     */
-    public void registerInstanceRole(String roleSetCode, String person) throws UserFailureException;
-
-    /**
-     * Deletes the role described by given role set code and person code
-     */
-    public void deleteInstanceRole(String roleSetCode, String person) throws UserFailureException;
-
-    /**
-     * Returns a list of sample types.
-     */
-    public List<SampleType> listSampleTypes() throws UserFailureException;
-
-    /**
-     * Returns a list of samples for given sample type.
-     */
-    public ResultSet<Sample> listSamples(final ListSampleCriteria criteria)
-            throws UserFailureException;
 
     /**
      * For given <var>sampleIdentifier</var> returns corresponding {@link Sample}.
@@ -106,29 +36,6 @@ public interface IGenericClientService extends IClientService
     public SampleGeneration getSampleInfo(final String sampleIdentifier)
             throws UserFailureException;
 
-    /**
-     * For given <var>sampleIdentifier</var> returns corresponding list of {@link ExternalData}.
-     */
-    public List<ExternalData> listExternalData(final String sampleIdentifier)
-            throws UserFailureException;
-
-    /**
-     * Lists the searchable entities.
-     */
-    public List<SearchableEntity> listSearchableEntities() throws UserFailureException;
-
-    /**
-     * Lists the entities matching the search.
-     */
-    public ResultSet<MatchingEntity> listMatchingEntities(
-            final SearchableEntity searchableEntityOrNull, final String queryText,
-            final IResultSetConfig<String> resultSetConfig) throws UserFailureException;
-
-    /**
-     * Removes the session result set associated with given key.
-     */
-    public void removeResultSet(final String resultSetKey) throws UserFailureException;
-
     /**
      * Registers a new sample.
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java
index 6b9a909ba2fa11d87bcbb0956a001627ee801e9f..c1b0e33ea8a6bb20b56ae261f697f0a5b5b4aa5a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/IGenericClientServiceAsync.java
@@ -16,24 +16,11 @@
 
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.client;
 
-import java.util.List;
-
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 
 /**
@@ -43,46 +30,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureE
  */
 public interface IGenericClientServiceAsync extends IClientServiceAsync
 {
-    /** @see IGenericClientService#listGroups(String) */
-    public void listGroups(String databaseInstanceCode, AsyncCallback<List<Group>> callback);
-
-    /** @see IGenericClientService#registerGroup(String, String, String) */
-    public void registerGroup(String groupCode, String descriptionOrNull, String groupLeaderOrNull,
-            AsyncCallback<Void> callback);
-
-    /** @see IGenericClientService#listPersons() */
-    public void listPersons(AsyncCallback<List<Person>> asyncCallback);
-
-    /** @see IGenericClientService#registerPerson(String) */
-    public void registerPerson(String code, AsyncCallback<Void> asyncCallback);
-
-    /** @see IGenericClientService#listRoles() */
-    public void listRoles(AsyncCallback<List<RoleAssignment>> asyncCallback);
-
-    /** @see IGenericClientService#registerGroupRole(String, String, String) */
-    public void registerGroupRole(String roleSetCode, String group, String person,
-            AsyncCallback<Void> asyncCallback);
-
-    /** @see IGenericClientService#deleteGroupRole(String, String, String) */
-    public void deleteGroupRole(String roleSetCode, String group, String person,
-            AsyncCallback<Void> asyncCallback);
-
-    /** @see IGenericClientService#registerInstanceRole(String, String) */
-    public void registerInstanceRole(String roleSetCode, String person,
-            AsyncCallback<Void> asyncCallback);
-
-    /** @see IGenericClientService#deleteInstanceRole(String, String) */
-    public void deleteInstanceRole(String roleSetCode, String person,
-            AsyncCallback<Void> asyncCallback);
-
-    /** @see IGenericClientService#listSampleTypes() */
-    public void listSampleTypes(AsyncCallback<List<SampleType>> asyncCallback);
-
-    /**
-     * @see IGenericClientService#listSamples(ListSampleCriteria)
-     */
-    public void listSamples(final ListSampleCriteria criteria,
-            AsyncCallback<ResultSet<Sample>> asyncCallback);
 
     /**
      * @see IGenericClientService#getSampleInfo(String)
@@ -90,29 +37,6 @@ public interface IGenericClientServiceAsync extends IClientServiceAsync
     public void getSampleInfo(final String sampleIdentifier,
             AsyncCallback<SampleGeneration> asyncCallback);
 
-    /**
-     * @see IGenericClientService#listExternalData(String)
-     */
-    public void listExternalData(final String sampleIdentifier,
-            AsyncCallback<List<ExternalData>> asyncCallback);
-
-    /**
-     * @see IGenericClientService#listSearchableEntities()
-     */
-    public void listSearchableEntities(final AsyncCallback<List<SearchableEntity>> asyncCallback);
-
-    /**
-     * @see IGenericClientService#listMatchingEntities(SearchableEntity, String, IResultSetConfig)
-     */
-    public void listMatchingEntities(final SearchableEntity searchableEntity,
-            final String queryText, final IResultSetConfig<String> resultSetConfig,
-            final AsyncCallback<ResultSet<MatchingEntity>> asyncCallback);
-
-    /**
-     * @see IGenericClientService#removeResultSet(String)
-     */
-    public void removeResultSet(final String resultSetKey, final AsyncCallback<Void> asyncCallback);
-
     /**
      * @see IGenericClientService#registerSample(SampleToRegister)
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
index b076c79df6f915b378b3137a77908db30c3b7ed6..b0e497a6c9b1658b900f6e746fcb92eca87aa17f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java
@@ -114,7 +114,7 @@ public final class GenericSampleViewer extends LayoutContainer
         final LayoutContainer container = new LayoutContainer();
         container.setLayout(new RowLayout());
         // 'Part of' samples
-        IMessageProvider messageProvider = viewContext.getMessageProvider();
+        final IMessageProvider messageProvider = viewContext.getMessageProvider();
         ContentPanel panel = createContentPanel(messageProvider.getMessage("part_of_heading"));
         final ListLoader<BaseListLoadConfig> sampleLoader =
                 createListLoader(createRpcProxyForPartOfSamples());
@@ -175,7 +175,7 @@ public final class GenericSampleViewer extends LayoutContainer
                 {
                     final ListSampleCriteria sampleCriteria = new ListSampleCriteria();
                     sampleCriteria.setContainerIdentifier(sampleIdentifier);
-                    viewContext.getService().listSamples(sampleCriteria,
+                    viewContext.getCommonViewContext().getService().listSamples(sampleCriteria,
                             new ListSamplesCallback(viewContext, callback));
                 }
             };
@@ -194,8 +194,8 @@ public final class GenericSampleViewer extends LayoutContainer
                 public final void load(final BaseListLoadConfig loadConfig,
                         final AsyncCallback<BaseListLoadResult<ExternalDataModel>> callback)
                 {
-                    viewContext.getService().listExternalData(sampleIdentifier,
-                            new ListExternalDataCallback(viewContext, callback));
+                    viewContext.getCommonViewContext().getService().listExternalData(
+                            sampleIdentifier, new ListExternalDataCallback(viewContext, callback));
                 }
             };
     }
@@ -409,7 +409,7 @@ public final class GenericSampleViewer extends LayoutContainer
 
         private SampleGenerationInfoCallback(
                 final IViewContext<IGenericClientServiceAsync> viewContext,
-                GenericSampleViewer genericSampleViewer)
+                final GenericSampleViewer genericSampleViewer)
         {
             super(viewContext);
             this.genericSampleViewer = genericSampleViewer;
@@ -432,10 +432,10 @@ public final class GenericSampleViewer extends LayoutContainer
             genericSampleViewer.removeAll();
             genericSampleViewer.setLayout(new BorderLayout());
             // Left panel
-            Component leftPanel = genericSampleViewer.createLeftPanel(result);
+            final Component leftPanel = genericSampleViewer.createLeftPanel(result);
             genericSampleViewer.add(leftPanel, GenericSampleViewer.createLeftBorderLayoutData());
             // Right panel
-            Component rightPanel = genericSampleViewer.createRightPanel();
+            final Component rightPanel = genericSampleViewer.createRightPanel();
             genericSampleViewer.add(rightPanel, GenericSampleViewer.createRightBorderLayoutData());
             genericSampleViewer.layout();
             genericSampleViewer.loadStores();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
index 62efca32d76fd20db77ef6b11460df962f30d720..cfe23f04a72b68d90be1b9f90fdfae6fba0fd296 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
@@ -16,11 +16,6 @@
 
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.server;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Component;
@@ -30,45 +25,13 @@ import ch.rinn.restrictions.Private;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
 import ch.systemsx.cisd.common.utilities.BeanUtils;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntity;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Person;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.RoleAssignment;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleGeneration;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSetManager;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.DtoConverters;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.GroupTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.ListSampleCriteriaTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.PersonTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.ResultSetTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.RoleAssignmentTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.RoleCodeTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleToRegisterTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.SampleTypeTranslator;
-import ch.systemsx.cisd.openbis.generic.client.web.server.util.SearchableEntityTranslator;
 import ch.systemsx.cisd.openbis.generic.client.web.server.util.UserFailureExceptionTranslator;
-import ch.systemsx.cisd.openbis.generic.server.SessionConstants;
 import ch.systemsx.cisd.openbis.generic.shared.IServer;
-import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleGenerationDTO;
-import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE;
-import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier;
-import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
 import ch.systemsx.cisd.openbis.plugin.AbstractClientService;
@@ -102,13 +65,6 @@ public final class GenericClientService extends AbstractClientService implements
         this.genericServer = genericServer;
     }
 
-    @SuppressWarnings("unchecked")
-    private final <K> IResultSetManager<K> getResultSetManager()
-    {
-        return (IResultSetManager<K>) getHttpSession().getAttribute(
-                SessionConstants.OPENBIS_RESULT_SET_MANAGER);
-    }
-
     //
     // AbstractClientService
     //
@@ -123,205 +79,6 @@ public final class GenericClientService extends AbstractClientService implements
     // IGenericClientService
     //
 
-    public final List<Group> listGroups(final String databaseInstanceCode)
-    {
-        try
-        {
-            final DatabaseInstanceIdentifier identifier =
-                    new DatabaseInstanceIdentifier(databaseInstanceCode);
-            final List<Group> result = new ArrayList<Group>();
-            final List<GroupPE> groups = genericServer.listGroups(getSessionToken(), identifier);
-            for (final GroupPE group : groups)
-            {
-                result.add(GroupTranslator.translate(group));
-            }
-            return result;
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void registerGroup(final String groupCode, final String descriptionOrNull,
-            final String groupLeaderOrNull)
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            genericServer.registerGroup(sessionToken, groupCode, descriptionOrNull,
-                    groupLeaderOrNull);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final List<Person> listPersons()
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-
-        try
-        {
-            final List<Person> result = new ArrayList<Person>();
-            final List<PersonPE> persons = genericServer.listPersons(getSessionToken());
-            for (final PersonPE person : persons)
-            {
-                result.add(PersonTranslator.translate(person));
-            }
-            return result;
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void registerPerson(final String code)
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            genericServer.registerPerson(sessionToken, code);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final List<RoleAssignment> listRoles()
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final List<RoleAssignment> result = new ArrayList<RoleAssignment>();
-            final List<RoleAssignmentPE> roles = genericServer.listRoles(getSessionToken());
-            for (final RoleAssignmentPE role : roles)
-            {
-                result.add(RoleAssignmentTranslator.translate(role));
-            }
-            return result;
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void registerGroupRole(final String roleSetCode, final String group,
-            final String person)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final GroupIdentifier groupIdentifier =
-                    new GroupIdentifier(DatabaseInstanceIdentifier.HOME, group);
-            final String sessionToken = getSessionToken();
-            genericServer.registerGroupRole(sessionToken,
-                    RoleCodeTranslator.translate(roleSetCode), groupIdentifier, person);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void registerInstanceRole(final String roleSetCode, final String person)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            genericServer.registerInstanceRole(sessionToken, RoleCodeTranslator
-                    .translate(roleSetCode), person);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void deleteGroupRole(final String roleSetCode, final String group,
-            final String person)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final GroupIdentifier groupIdentifier =
-                    new GroupIdentifier(DatabaseInstanceIdentifier.HOME, group);
-            final String sessionToken = getSessionToken();
-            genericServer.deleteGroupRole(sessionToken, RoleCodeTranslator.translate(roleSetCode),
-                    groupIdentifier, person);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-
-    }
-
-    public final void deleteInstanceRole(final String roleSetCode, final String person)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            genericServer.deleteInstanceRole(sessionToken, RoleCodeTranslator
-                    .translate(roleSetCode), person);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-
-    }
-
-    public final List<SampleType> listSampleTypes()
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final List<SampleTypePE> sampleTypes = genericServer.listSampleTypes(getSessionToken());
-            final List<SampleType> result = new ArrayList<SampleType>();
-            for (final SampleTypePE sampleTypePE : sampleTypes)
-            {
-                result.add(SampleTypeTranslator.translate(sampleTypePE));
-            }
-            return result;
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final ResultSet<Sample> listSamples(final ListSampleCriteria listCriteria)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final IResultSetManager<String> resultSetManager = getResultSetManager();
-            final IResultSet<String, Sample> result =
-                    resultSetManager.getResultSet(listCriteria, new IOriginalDataProvider<Sample>()
-                        {
-
-                            //
-                            // IDataRetriever
-                            //
-
-                            public final List<Sample> getOriginalData()
-                            {
-                                final List<SamplePE> samples =
-                                        genericServer.listSamples(getSessionToken(),
-                                                ListSampleCriteriaTranslator
-                                                        .translate(listCriteria));
-                                final List<Sample> list = new ArrayList<Sample>(samples.size());
-                                for (final SamplePE sample : samples)
-                                {
-                                    list.add(SampleTranslator.translate(sample));
-                                }
-                                return list;
-                            }
-                        });
-            return ResultSetTranslator.translate(result);
-        } catch (final UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
     public final SampleGeneration getSampleInfo(final String sampleIdentifier)
             throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
     {
@@ -338,87 +95,7 @@ public final class GenericClientService extends AbstractClientService implements
         }
     }
 
-    public final List<ExternalData> listExternalData(final String sampleIdentifier)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final SampleIdentifier identifier = SampleIdentifierFactory.parse(sampleIdentifier);
-            final List<ExternalDataPE> externalData =
-                    genericServer.listExternalData(getSessionToken(), identifier);
-            return BeanUtils.createBeanList(ExternalData.class, externalData);
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final List<SearchableEntity> listSearchableEntities()
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final List<SearchableEntity> searchableEntities =
-                    BeanUtils.createBeanList(SearchableEntity.class, Arrays
-                            .asList(ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity
-                                    .values()));
-            Collections.sort(searchableEntities);
-            return searchableEntities;
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final ResultSet<MatchingEntity> listMatchingEntities(
-            final SearchableEntity searchableEntityOrNull, final String queryText,
-            final IResultSetConfig<String> resultSetConfig)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity[] matchingEntities =
-                    SearchableEntityTranslator.translate(searchableEntityOrNull);
-            final IResultSetManager<String> resultSetManager = getResultSetManager();
-            final IResultSet<String, MatchingEntity> result =
-                    resultSetManager.getResultSet(resultSetConfig,
-                            new IOriginalDataProvider<MatchingEntity>()
-                                {
-
-                                    //
-                                    // IDataRetriever
-                                    //
-
-                                    public final List<MatchingEntity> getOriginalData()
-                                    {
-                                        return BeanUtils.createBeanList(MatchingEntity.class,
-                                                genericServer.listMatchingEntities(
-                                                        getSessionToken(), matchingEntities,
-                                                        queryText), DtoConverters
-                                                        .getMatchingEntityConverter());
-                                    }
-                                });
-            return ResultSetTranslator.translate(result);
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void removeResultSet(final String resultSetKey)
-            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
-    {
-        try
-        {
-            final IResultSetManager<String> resultSetManager = getResultSetManager();
-            resultSetManager.removeResultSet(resultSetKey);
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
-    public final void registerSample(SampleToRegister sample)
+    public final void registerSample(final SampleToRegister sample)
             throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
     {
         try
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c09db61284c012bf449cadbf9e52f5afa168cbd8
--- /dev/null
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientServiceTest.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2008 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.systemsx.cisd.openbis.generic.client.web.server;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import ch.rinn.restrictions.Friend;
+import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DatabaseInstance;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
+import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DefaultResultSet;
+import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider;
+import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSetManager;
+import ch.systemsx.cisd.openbis.generic.server.SessionConstants;
+import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
+import ch.systemsx.cisd.openbis.plugin.generic.client.web.server.GenericClientService;
+
+/**
+ * Test cases for corresponding {@link GenericClientService} class.
+ * 
+ * @author Christian Ribeaud
+ */
+@Friend(toClasses = CommonClientService.class)
+public final class CommonClientServiceTest
+{
+
+    private Mockery context;
+
+    private ICommonServer commonServer;
+
+    private IRequestContextProvider requestContextProvider;
+
+    private CommonClientService commonClientService;
+
+    private HttpServletRequest servletRequest;
+
+    private HttpSession httpSession;
+
+    private IResultSetManager<String> resultSetManager;
+
+    private final static ListSampleCriteria createListCriteria()
+    {
+        final ListSampleCriteria criteria = new ListSampleCriteria();
+        final SampleType sampleType = createSampleType("MASTER_PLATE", "DB1");
+        criteria.setSampleType(sampleType);
+        return criteria;
+    }
+
+    private final static SampleType createSampleType(final String code, final String dbCode)
+    {
+        final SampleType sampleType = new SampleType();
+        sampleType.setCode(code);
+        final DatabaseInstance databaseInstance = new DatabaseInstance();
+        databaseInstance.setCode(dbCode);
+        sampleType.setDatabaseInstance(databaseInstance);
+        return sampleType;
+    }
+
+    private final void prepareGetSession(final Expectations expectations)
+    {
+        expectations.one(requestContextProvider).getHttpServletRequest();
+        expectations.will(Expectations.returnValue(servletRequest));
+
+        expectations.one(servletRequest).getSession(false);
+        expectations.will(Expectations.returnValue(httpSession));
+    }
+
+    private final void prepareGetResultSetManager(final Expectations expectations)
+    {
+        expectations.one(httpSession).getAttribute(SessionConstants.OPENBIS_RESULT_SET_MANAGER);
+        expectations.will(Expectations.returnValue(resultSetManager));
+    }
+
+    private final static List<Sample> createSampleList()
+    {
+        return Collections.emptyList();
+    }
+
+    @BeforeMethod
+    @SuppressWarnings("unchecked")
+    public final void setUp()
+    {
+        context = new Mockery();
+        commonServer = context.mock(ICommonServer.class);
+        requestContextProvider = context.mock(IRequestContextProvider.class);
+        servletRequest = context.mock(HttpServletRequest.class);
+        httpSession = context.mock(HttpSession.class);
+        resultSetManager = context.mock(IResultSetManager.class);
+        commonClientService = new CommonClientService(commonServer, requestContextProvider);
+    }
+
+    @AfterMethod
+    public final void tearDown()
+    {
+        // To following line of code should also be called at the end of each test method.
+        // Otherwise one do not known which test failed.
+        context.assertIsSatisfied();
+    }
+
+    @Test
+    public final void testListSamples()
+    {
+        final String resultSetKey = "1";
+        final DefaultResultSet<String, Sample> defaultResultSet =
+                new DefaultResultSet<String, Sample>(resultSetKey, createSampleList(), 0);
+        final ListSampleCriteria listCriteria = createListCriteria();
+        context.checking(new Expectations()
+            {
+                {
+                    prepareGetSession(this);
+                    prepareGetResultSetManager(this);
+
+                    one(resultSetManager).getResultSet(with(listCriteria),
+                            getOriginalDataProvider());
+                    will(returnValue(defaultResultSet));
+                }
+
+                @SuppressWarnings("unchecked")
+                private final IOriginalDataProvider<Sample> getOriginalDataProvider()
+                {
+                    return with(any(IOriginalDataProvider.class));
+                }
+
+            });
+        final ResultSet<Sample> resultSet = commonClientService.listSamples(listCriteria);
+        assertEquals(0, resultSet.getList().size());
+        assertEquals(resultSetKey, resultSet.getResultSetKey());
+        assertEquals(0, resultSet.getTotalLength());
+        context.assertIsSatisfied();
+    }
+
+}
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
index f650fa5123e2fa4a3412f58edb745313ef270aa5..7938dda40b8d7c0990d702ec5e5e1f0bb5cb1a2f 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientServiceTest.java
@@ -16,10 +16,7 @@
 
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.server;
 
-import static org.testng.AssertJUnit.assertEquals;
-
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -34,16 +31,8 @@ import org.testng.annotations.Test;
 import ch.rinn.restrictions.Friend;
 import ch.systemsx.cisd.authentication.Principal;
 import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DatabaseInstance;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleCriteria;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleProperty;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleToRegister;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SampleType;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DefaultResultSet;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider;
-import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IResultSetManager;
 import ch.systemsx.cisd.openbis.generic.server.SessionConstants;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleToRegisterDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
@@ -71,33 +60,13 @@ public final class GenericClientServiceTest
 
     private HttpSession httpSession;
 
-    private IResultSetManager<String> resultSetManager;
-
     private Session session;
 
-    private final static ListSampleCriteria createListCriteria()
-    {
-        final ListSampleCriteria criteria = new ListSampleCriteria();
-        final SampleType sampleType = createSampleType("MASTER_PLATE", "DB1");
-        criteria.setSampleType(sampleType);
-        return criteria;
-    }
-
-    private final static SampleType createSampleType(String code, String dbCode)
-    {
-        final SampleType sampleType = new SampleType();
-        sampleType.setCode(code);
-        final DatabaseInstance databaseInstance = new DatabaseInstance();
-        databaseInstance.setCode(dbCode);
-        sampleType.setDatabaseInstance(databaseInstance);
-        return sampleType;
-    }
-
-    private final static SampleToRegister createSampleToRegister(String sampleIdentifier,
-            String type, List<SampleProperty> properties, String generatorParent,
-            String containerParent)
+    private final static SampleToRegister createSampleToRegister(final String sampleIdentifier,
+            final String type, final List<SampleProperty> properties, final String generatorParent,
+            final String containerParent)
     {
-        SampleToRegister s = new SampleToRegister();
+        final SampleToRegister s = new SampleToRegister();
         s.setSampleIdentifier(sampleIdentifier);
         s.setType(type);
         s.setProperties(properties);
@@ -115,7 +84,7 @@ public final class GenericClientServiceTest
         expectations.will(Expectations.returnValue(httpSession));
     }
 
-    private void prepareGetSessionToken(Expectations expectations)
+    private void prepareGetSessionToken(final Expectations expectations)
     {
         prepareGetSession(expectations);
 
@@ -123,17 +92,6 @@ public final class GenericClientServiceTest
         expectations.will(Expectations.returnValue(session));
     }
 
-    private final void prepareGetResultSetManager(final Expectations expectations)
-    {
-        expectations.one(httpSession).getAttribute(SessionConstants.OPENBIS_RESULT_SET_MANAGER);
-        expectations.will(Expectations.returnValue(resultSetManager));
-    }
-
-    private final static List<Sample> createSampleList()
-    {
-        return Collections.emptyList();
-    }
-
     @BeforeMethod
     @SuppressWarnings("unchecked")
     public final void setUp()
@@ -143,7 +101,6 @@ public final class GenericClientServiceTest
         requestContextProvider = context.mock(IRequestContextProvider.class);
         servletRequest = context.mock(HttpServletRequest.class);
         httpSession = context.mock(HttpSession.class);
-        resultSetManager = context.mock(IResultSetManager.class);
         genericClientService = new GenericClientService(genericServer, requestContextProvider);
         session = createSessionMock();
     }
@@ -162,42 +119,10 @@ public final class GenericClientServiceTest
         context.assertIsSatisfied();
     }
 
-    @Test
-    public final void testListSamples()
-    {
-        final String resultSetKey = "1";
-        final DefaultResultSet<String, Sample> defaultResultSet =
-                new DefaultResultSet<String, Sample>(resultSetKey, createSampleList(), 0);
-        final ListSampleCriteria listCriteria = createListCriteria();
-        context.checking(new Expectations()
-            {
-                {
-                    prepareGetSession(this);
-                    prepareGetResultSetManager(this);
-
-                    one(resultSetManager).getResultSet(with(listCriteria),
-                            getOriginalDataProvider());
-                    will(returnValue(defaultResultSet));
-                }
-
-                @SuppressWarnings("unchecked")
-                private final IOriginalDataProvider<Sample> getOriginalDataProvider()
-                {
-                    return with(any(IOriginalDataProvider.class));
-                }
-
-            });
-        final ResultSet<Sample> resultSet = genericClientService.listSamples(listCriteria);
-        assertEquals(0, resultSet.getList().size());
-        assertEquals(resultSetKey, resultSet.getResultSetKey());
-        assertEquals(0, resultSet.getTotalLength());
-        context.assertIsSatisfied();
-    }
-
     @Test
     public final void testRegisterSample()
     {
-        SampleToRegister newSample =
+        final SampleToRegister newSample =
                 createSampleToRegister("/group1/sample1", "MASTER_PLATE",
                         new ArrayList<SampleProperty>(), null, null);
         context.checking(new Expectations()