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 cbc4486a436a9034203b908cb252993c083917e3..c1a28f807e3a19dbcb38ede306d860404375b792 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
@@ -784,6 +784,11 @@ public interface ICommonClientService extends IClientService
      */
     public Material getMaterialInfo(MaterialIdentifier identifier) throws UserFailureException;
 
+    /**
+     * For given {@link MaterialIdentifier} returns the corresponding {@link Material}.
+     */
+    public Material getMaterialInfo(TechId techId) throws UserFailureException;
+
     /**
      * For given {@link MaterialIdentifier} returns the corresponding
      * {@link IEntityInformationHolderWithPermId}.
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 eadc781f65577bfff369c6c7ef5428136f4a32a3..a0e87eb0d6264647b2987ad48f8d61e1eff57ecb 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
@@ -692,6 +692,11 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
     public void getMaterialInfo(MaterialIdentifier materialIdentifier,
             AsyncCallback<Material> callback);
 
+    /**
+     * @see ICommonClientService#getMaterialInfo(TechId)
+     */
+    public Material getMaterialInfo(TechId techId, AsyncCallback<Material> callback);
+
     /**
      * @see ICommonClientService#getMaterialInformationHolder(MaterialIdentifier)
      */
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 42797c1e6934be9f5e9cdc6ce5b15e61981dece1..56cd5a3ac3835b96c68f7199c4b528b42a15335e 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
@@ -1955,6 +1955,21 @@ public final class CommonClientService extends AbstractClientService implements
         }
     }
 
+    public Material getMaterialInfo(TechId techId)
+            throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException
+    {
+        final String sessionToken = getSessionToken();
+        try
+        {
+            final Material material = commonServer.getMaterialInfo(sessionToken, techId);
+            transformXML(material);
+            return material;
+        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
+        {
+            throw UserFailureExceptionTranslator.translate(e);
+        }
+    }
+
     public String getTemplate(EntityKind entityKind, String type, boolean autoGenerate,
             boolean withExperiments, BatchOperationKind operationKind)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
index 9715122a24d2c3fe087f6647e8c026c5e4428cf2..13a98bf00085ab3c33f769b7c42e243750bbcaa9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
@@ -183,6 +183,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.FileFormatTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.GridCustomFilterPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationHolderDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder;
+import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewRoleAssignment;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
@@ -1586,6 +1587,16 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
         return MaterialTranslator.translate(materialBO.getMaterial());
     }
 
+    public Material getMaterialInfo(final String sessionToken, final TechId materialId)
+    {
+        final Session session = getSession(sessionToken);
+        final IMaterialBO materialBO = businessObjectFactory.createMaterialBO(session);
+        materialBO.loadDataByTechId(materialId);
+        materialBO.enrichWithProperties();
+        final MaterialPE material = materialBO.getMaterial();
+        return MaterialTranslator.translate(material, true);
+    }
+
     public IEntityInformationHolderWithPermId getMaterialInformationHolder(String sessionToken,
             MaterialIdentifier identifier)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
index 9a003a8c76be70db5da1b19c1d655aa55db8e3d2..02a46f3ade1caa8607bf53613b3723aebf416a02 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java
@@ -767,6 +767,12 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe
         return null;
     }
 
+    public Material getMaterialInfo(final String sessionToken, final TechId materialId)
+    {
+        logAccess(sessionToken, "get_material_info", "ID(%s)", materialId);
+        return null;
+    }
+
     public Date updateMaterial(String sessionToken, TechId materialId,
             List<IEntityProperty> properties, Date version)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java
index c1ed9bd8b4cfea7558b885ffff21462e12e14d75..d4a129d61d2c957a886d299c43cf214a7b15eea6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java
@@ -1020,6 +1020,13 @@ public interface ICommonServer extends IServer
     @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
     public Material getMaterialInfo(String sessionToken, MaterialIdentifier identifier);
 
+    /**
+     * For given {@link TechId} returns the corresponding {@link Material}.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
+    public Material getMaterialInfo(String sessionToken, TechId materialId);
+
     /**
      * For given {@link MaterialIdentifier} returns the corresponding
      * {@link IEntityInformationHolder}.
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 1363d956e8e1c09c5ba6eb1002aea7bd0d995673..effeb4fef160c5678777a9098333be7eb7c2528a 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
@@ -32,7 +32,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdates;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
@@ -107,11 +106,6 @@ public interface IGenericClientService extends IClientService
     public List<BatchRegistrationResult> updateExperiments(final ExperimentType experimentType,
             final String sessionKey) throws UserFailureException;
 
-    /**
-     * For given {@link TechId} returns corresponding {@link Material}.
-     */
-    public Material getMaterialInfo(final TechId materialId) throws UserFailureException;
-
     /**
      * For given {@link TechId} returns corresponding {@link ExternalData}.
      */
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 fb626504f1a8de097998198c0d62574519340e77..293c940df31ecfc167ddcc0af95fd3053f1b7cc5 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
@@ -34,7 +34,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdates;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample;
@@ -90,12 +89,6 @@ public interface IGenericClientServiceAsync extends IClientServiceAsync
             final AsyncCallback<List<BatchRegistrationResult>> asyncCallback)
             throws UserFailureException;
 
-    /**
-     * @see IGenericClientService#getMaterialInfo(TechId)
-     */
-    public void getMaterialInfo(TechId materialId,
-            final AsyncCallback<Material> materialInfoCallback);
-
     /**
      * @see IGenericClientService#getDataSetInfo(TechId)
      */
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java
index a60486cf72871db19628296533326058835c3801..c4a482d3fe2c3a8f4c1777577c3cf7e00b1a6c82 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialEditForm.java
@@ -132,7 +132,7 @@ public final class GenericMaterialEditForm extends
     @Override
     protected void loadForm()
     {
-        viewContext.getService().getMaterialInfo(techIdOrNull,
+        viewContext.getCommonService().getMaterialInfo(techIdOrNull,
                 new MaterialInfoCallback(viewContext));
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialViewer.java
index 886203b9194af80f8801bca8600f9b795770f7b6..9311ef27986e5ecbedeb1c61bd59842d69c16892 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialViewer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/material/GenericMaterialViewer.java
@@ -83,7 +83,7 @@ abstract public class GenericMaterialViewer extends AbstractViewerWithVerticalSp
                 protected void loadMaterialInfo(TechId materialTechId,
                         AsyncCallback<Material> material)
                 {
-                    viewContext.getService().getMaterialInfo(materialTechId, material);
+                    viewContext.getCommonService().getMaterialInfo(materialTechId, material);
                 }
             };
         viewer.reloadAllData();
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 64a0e121dc3598bc23d7b13eb6e03bd4622d9fbf..8121483e16ef85c0c47d9492f25952c9737c1126 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
@@ -50,7 +50,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdates;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSetsWithTypes;
@@ -187,20 +186,6 @@ public class GenericClientService extends AbstractClientService implements IGene
 
     }
 
-    public final Material getMaterialInfo(final TechId materialId)
-    {
-        try
-        {
-            final String sessionToken = getSessionToken();
-            final Material material = genericServer.getMaterialInfo(sessionToken, materialId);
-            transformXML(material);
-            return material;
-        } catch (final ch.systemsx.cisd.common.exceptions.UserFailureException e)
-        {
-            throw UserFailureExceptionTranslator.translate(e);
-        }
-    }
-
     public final ExternalData getDataSetInfo(final TechId datasetId)
     {
         try
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
index e538f35ff9929e8394c6a0b054627f652fa5cc33..4ed12dc99451035e36bb0e40d1d756f1998caa63 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java
@@ -42,7 +42,6 @@ import ch.systemsx.cisd.openbis.generic.server.batch.BatchOperationExecutor;
 import ch.systemsx.cisd.openbis.generic.server.batch.IBatchOperation;
 import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO;
-import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO;
@@ -89,7 +88,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentBatchUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO;
-import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SampleBatchUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
@@ -107,7 +105,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa
 import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.translator.AttachmentTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.translator.ExperimentTranslator;
-import ch.systemsx.cisd.openbis.generic.shared.translator.MaterialTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.translator.MaterialTypeTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.translator.SampleTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.util.ServerUtils;
@@ -235,16 +232,6 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen
                 ExperimentTranslator.LoadableFields.ATTACHMENTS);
     }
 
-    public Material getMaterialInfo(final String sessionToken, final TechId materialId)
-    {
-        final Session session = getSession(sessionToken);
-        final IMaterialBO materialBO = businessObjectFactory.createMaterialBO(session);
-        materialBO.loadDataByTechId(materialId);
-        materialBO.enrichWithProperties();
-        final MaterialPE material = materialBO.getMaterial();
-        return MaterialTranslator.translate(material, true);
-    }
-
     public ExternalData getDataSetInfo(final String sessionToken, final TechId datasetId)
     {
         return commonServer.getDataSetInfo(sessionToken, datasetId);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java
index 4b0fb1eb2c353fd29adabecde5cd7b68b0e96d1f..da756e54b7623b9170b4d415e4b4bc280bd49421 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerLogger.java
@@ -33,7 +33,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSetsWithTypes;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
@@ -93,12 +92,6 @@ final class GenericServerLogger extends AbstractServerLogger implements IGeneric
                 newSample.getSampleType(), newSample.getIdentifier(), attachments.size());
     }
 
-    public Material getMaterialInfo(final String sessionToken, final TechId materialId)
-    {
-        logAccess(sessionToken, "get_material_info", "ID(%s)", materialId);
-        return null;
-    }
-
     public ExternalData getDataSetInfo(final String sessionToken, final TechId datasetId)
     {
         logAccess(sessionToken, "get_data_set_info", "ID(%s)", datasetId);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java
index 7027063db24dba8e725cfec765bcc569cf59dda3..60370725b4c831179558f0b59d31bbb5cfbf5013 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java
@@ -48,7 +48,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSetsWithTypes;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
@@ -101,13 +100,6 @@ public interface IGenericServer extends IServer
             @AuthorizationGuard(guardClass = NewSamplePredicate.class) final NewSample newSample,
             final Collection<NewAttachment> attachments);
 
-    /**
-     * For given {@link TechId} returns the corresponding {@link Material}.
-     */
-    @Transactional(readOnly = true)
-    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
-    public Material getMaterialInfo(String sessionToken, TechId materialId);
-
     /**
      * For given {@link TechId} returns the corresponding {@link ExternalData}.
      */
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
index 13f04c7e46842c3d71098f4ab263b4377cdc5eac..20a416851eb62159188ad83b4911b982664b3c9c 100644
--- 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
@@ -64,6 +64,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomColumn;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewVocabulary;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
@@ -577,6 +578,31 @@ public final class CommonClientServiceTest extends AbstractClientServiceTest
         context.assertIsSatisfied();
     }
 
+    @Test
+    public void testGetMaterialInfo()
+    {
+        final TechId id = new TechId(4711L);
+        context.checking(new Expectations()
+            {
+                {
+                    prepareGetSessionToken(this);
+
+                    one(commonServer).getMaterialInfo(SESSION_TOKEN, id);
+                    Material material = new Material();
+                    material.setProperties(Arrays.asList(createXmlProperty()));
+                    will(returnValue(material));
+                }
+            });
+
+        Material info = commonClientService.getMaterialInfo(id);
+
+        IEntityProperty transformedXMLProperty = info.getProperties().get(0);
+        assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>",
+                transformedXMLProperty.tryGetAsString());
+        assertEquals("<root>hello</root>", transformedXMLProperty.tryGetOriginalValue());
+        context.assertIsSatisfied();
+    }
+
     @Test
     public void testLogout()
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
index c1ed9bd8b4cfea7558b885ffff21462e12e14d75..d4a129d61d2c957a886d299c43cf214a7b15eea6 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java.expected
@@ -1020,6 +1020,13 @@ public interface ICommonServer extends IServer
     @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
     public Material getMaterialInfo(String sessionToken, MaterialIdentifier identifier);
 
+    /**
+     * For given {@link TechId} returns the corresponding {@link Material}.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
+    public Material getMaterialInfo(String sessionToken, TechId materialId);
+
     /**
      * For given {@link MaterialIdentifier} returns the corresponding
      * {@link IEntityInformationHolder}.
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 bd40ba91d547ca0ea2618009ce8186b918221105..4ef6d6c1358744a3452e9aaa5764e39b6cfa966e 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
@@ -49,7 +49,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
@@ -212,31 +211,6 @@ public final class GenericClientServiceTest extends AbstractClientServiceTest
         context.assertIsSatisfied();
     }
 
-    @Test
-    public void testGetMaterialInfo()
-    {
-        final TechId id = new TechId(4711L);
-        context.checking(new Expectations()
-            {
-                {
-                    prepareGetSessionToken(this);
-
-                    one(genericServer).getMaterialInfo(SESSION_TOKEN, id);
-                    Material material = new Material();
-                    material.setProperties(Arrays.asList(createXmlProperty()));
-                    will(returnValue(material));
-                }
-            });
-
-        Material info = genericClientService.getMaterialInfo(id);
-
-        IEntityProperty transformedXMLProperty = info.getProperties().get(0);
-        assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?><b>hello</b>",
-                transformedXMLProperty.tryGetAsString());
-        assertEquals("<root>hello</root>", transformedXMLProperty.tryGetOriginalValue());
-        context.assertIsSatisfied();
-    }
-
     @Test
     public final void testRegisterSample()
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected
index 7027063db24dba8e725cfec765bcc569cf59dda3..60370725b4c831179558f0b59d31bbb5cfbf5013 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/shared/IGenericServer.java.expected
@@ -48,7 +48,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewDataSetsWithTypes;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment;
@@ -101,13 +100,6 @@ public interface IGenericServer extends IServer
             @AuthorizationGuard(guardClass = NewSamplePredicate.class) final NewSample newSample,
             final Collection<NewAttachment> attachments);
 
-    /**
-     * For given {@link TechId} returns the corresponding {@link Material}.
-     */
-    @Transactional(readOnly = true)
-    @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER)
-    public Material getMaterialInfo(String sessionToken, TechId materialId);
-
     /**
      * For given {@link TechId} returns the corresponding {@link ExternalData}.
      */
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/BatchMaterialRegistrationAndUpdateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/BatchMaterialRegistrationAndUpdateTest.java
index 578497dee9416a1e16e7a26e5622d3edfcfef4ef..aa57e3112697cbc0f808c2f612ddbf2d8ecb6be4 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/BatchMaterialRegistrationAndUpdateTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/BatchMaterialRegistrationAndUpdateTest.java
@@ -188,7 +188,7 @@ public class BatchMaterialRegistrationAndUpdateTest extends SystemTestCase
             IEntityInformationHolderWithPermId m =
                     commonClientService.getMaterialInformationHolder(new MaterialIdentifier(code,
                             MATERIAL_TYPE));
-            Material materialInfo = genericClientService.getMaterialInfo(new TechId(m.getId()));
+            Material materialInfo = commonClientService.getMaterialInfo(new TechId(m.getId()));
             assertEquals(code, materialInfo.getCode());
             Collections.sort(materialInfo.getProperties(), new Comparator<IEntityProperty>()
                 {
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
index 5854c2f0432947b2d8b588cc0734aede5aabb068..ca934c964dfbd291c184df7415ee247b5033d819 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
@@ -26,11 +26,10 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
-import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.GenericViewContext;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.material.GenericMaterialViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
-import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchByProjectCriteria;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.SingleExperimentSearchCriteria;
 
 /**
@@ -70,8 +69,7 @@ public class ImagingMaterialViewer extends GenericMaterialViewer
     @Override
     protected void loadMaterialInfo(TechId materialTechId, AsyncCallback<Material> callback)
     {
-        new GenericViewContext(screeningViewContext.getCommonViewContext()).getService()
-                .getMaterialInfo(materialTechId, callback);
+        screeningViewContext.getCommonService().getMaterialInfo(materialTechId, callback);
     }
 
     @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java
index d93b2bcac28441d4742de054620688a5fd42df50..37460453df3b78d043d94a4e9c3081cf33c97778 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/ScreeningServer.java
@@ -264,7 +264,7 @@ public final class ScreeningServer extends AbstractServer<IScreeningServer> impl
 
     public Material getMaterialInfo(String sessionToken, TechId materialId)
     {
-        return genericServer.getMaterialInfo(sessionToken, materialId);
+        return commonServer.getMaterialInfo(sessionToken, materialId);
     }
 
     public Vocabulary getVocabulary(String sessionToken, String code) throws UserFailureException