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 a2ce216d7f8bbb8fb43f680d51ef10f8bc097498..a0d32bd2bca6eb3312b698942e9302b12f035df5 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,7 +183,6 @@ 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.InvalidationPE;
-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;
@@ -1582,9 +1581,11 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
 
     public Material getMaterialInfo(String sessionToken, final MaterialIdentifier identifier)
     {
-        checkSession(sessionToken);
-        MaterialPE materialPE = getDAOFactory().getMaterialDAO().tryFindMaterial(identifier);
-        return (materialPE != null) ? MaterialTranslator.translate(materialPE) : null;
+        Session session = getSession(sessionToken);
+        IMaterialBO materialBO = getBusinessObjectFactory().createMaterialBO(session);
+        materialBO.loadByMaterialIdentifier(identifier);
+        materialBO.enrichWithProperties();
+        return MaterialTranslator.translate(materialBO.getMaterial());
     }
 
     public IEntityInformationHolderWithPermId getMaterialInformationHolder(String sessionToken,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java
index 07e051261136ade741a99ab6fff57ba1a419c6ec..0f44e9f1238722191303e7f598d0948b459a9c96 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IMaterialBO.java
@@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.server.business.bo;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty;
 import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE;
 
@@ -31,6 +32,11 @@ public interface IMaterialBO extends IEntityBusinessObject
     /** Returns the material which has been loaded. */
     MaterialPE getMaterial();
 
+    /**
+     * Loads the material by a given identifier.
+     */
+    public void loadByMaterialIdentifier(MaterialIdentifier identifier);
+    
     /** Adds properties */
     public void enrichWithProperties();
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java
index ca52a4ffaab563e4d21b879e9c998a70ec680108..d34b376a60d3ff9d277738f0e397cb1872e6bd84 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/MaterialBO.java
@@ -26,6 +26,7 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EventPE.EntityType;
@@ -60,6 +61,17 @@ public final class MaterialBO extends AbstractMaterialBusinessObject implements
         dataChanged = false;
     }
 
+    public void loadByMaterialIdentifier(MaterialIdentifier identifier)
+    {
+        material = getMaterialDAO().tryFindMaterial(identifier);
+        if (material == null)
+        {
+            throw new UserFailureException(String.format(
+                    "Material with identifier '%s' does not exist.", identifier));
+        }
+        dataChanged = false;
+    }
+
     public final void enrichWithProperties()
     {
         if (material != null)