diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/EntityPropertiesConverter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/EntityPropertiesConverter.java
index fa9514d32417b12537b38b18c9c3ba61e4fd569b..d49dd8938381cae6f4968d1aecde1f3ef4a09b40 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/EntityPropertiesConverter.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/EntityPropertiesConverter.java
@@ -37,7 +37,6 @@ import ch.systemsx.cisd.common.collection.IKeyExtractor;
 import ch.systemsx.cisd.common.collection.TableMap;
 import ch.systemsx.cisd.common.collection.TableMap.UniqueKeyViolationStrategy;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
-import ch.systemsx.cisd.common.shared.basic.string.StringUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.util.KeyExtractorFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
@@ -51,7 +50,6 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE;
 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.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE;
@@ -663,20 +661,11 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert
             {
                 return null; // this is not a property of MATERIAL type
             }
-            MaterialIdentifier materialIdentifier = MaterialIdentifier.tryParseIdentifier(value);
+            MaterialIdentifier materialIdentifier =
+                    MaterialIdentifier.tryCreate(value, propertyType.getMaterialType());
             if (materialIdentifier == null)
             {
-                MaterialTypePE fixedMaterialType = propertyType.getMaterialType();
-                // if the material type of the property is fixed, then we accept when only material
-                // code is specified and its type is skipped (we know what the type should be)
-                if (fixedMaterialType != null && StringUtils.isBlank(value) == false)
-                {
-                    materialIdentifier = new MaterialIdentifier(value, fixedMaterialType.getCode());
-                } else
-                {
-                    // identifier is invalid or null
-                    return null;
-                }
+                return null;
             }
 
             final MaterialPE material;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialIdentifier.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialIdentifier.java
index 090ddbcd5aa1e05a64c0d03cd3294804da50862f..74394898bc2fe52d31b46ba0d85aeec7264ab5f5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialIdentifier.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/MaterialIdentifier.java
@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 import java.io.Serializable;
 
 import ch.systemsx.cisd.common.shared.basic.string.StringUtils;
+import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId;
 
 /**
@@ -87,6 +88,35 @@ public final class MaterialIdentifier implements Serializable
     }
 
     // -----------
+    /**
+     * Creates material identifier from specified identifier or code and material type code if no
+     * full identifier is specified.
+     * 
+     * @return <code>null</code> if no full identifier specified and material type is unknown.
+     */
+    public static MaterialIdentifier tryCreate(String codeOrIdentifierOrNull,
+            ICodeHolder materialTypeCodeHolderOrNull)
+    {
+        MaterialIdentifier materialIdentifier =
+                MaterialIdentifier.tryParseIdentifier(codeOrIdentifierOrNull);
+        if (materialIdentifier == null)
+        {
+            // if the material type of the property is fixed, then we accept when only material
+            // code is specified and its type is skipped (we know what the type should be)
+            if (materialTypeCodeHolderOrNull != null
+                    && StringUtils.isBlank(codeOrIdentifierOrNull) == false)
+            {
+                materialIdentifier =
+                        new MaterialIdentifier(codeOrIdentifierOrNull,
+                                materialTypeCodeHolderOrNull.getCode());
+            } else
+            {
+                // identifier is invalid or null
+                return null;
+            }
+        }
+        return materialIdentifier;
+    }
 
     /**
      * Parses the material code and type. Assumes the syntax: "code (type)". Returns the chosen
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/EntityExistenceChecker.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/EntityExistenceChecker.java
index beb664c7fca96285d125d0e88ff3bee545a68784..27d4e2130084714282afcf0551c6b0e3f71c4ab6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/EntityExistenceChecker.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/EntityExistenceChecker.java
@@ -357,14 +357,8 @@ class EntityExistenceChecker
             {
                 String value = property.getValue();
                 MaterialTypePE materialType = propertyTypePE.getMaterialType();
-                MaterialIdentifier materialIdentifier;
-                if (materialType != null)
-                {
-                    materialIdentifier = new MaterialIdentifier(value, materialType.getCode());
-                } else
-                {
-                    materialIdentifier = MaterialIdentifier.tryParseIdentifier(value);
-                }
+                MaterialIdentifier materialIdentifier =
+                        MaterialIdentifier.tryCreate(value, materialType);
                 if (materialIdentifier == null)
                 {
                     errors.add("Material identifier not in the form '<material code> (<material type code>)': "
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/LibraryEntityRegistrator.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/LibraryEntityRegistrator.java
index c3c2e31deae3b3662c7d9fd4c9d2b672e0189755..98dada26ba66e3637092345a924a1a0422f25b57 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/LibraryEntityRegistrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/library_tools/LibraryEntityRegistrator.java
@@ -179,8 +179,10 @@ public class LibraryEntityRegistrator
         {
             String wellCode = extractor.getWellCode(row);
             String wellIdentifier = plateId + ":" + wellCode;
-            String oligoMaterialProperty = oligoId;
-            String geneMaterialProperty = geneId;
+            String oligoMaterialProperty =
+                    oligoId + " (" + ScreeningConstants.SIRNA_PLUGIN_TYPE_NAME + ")";
+            String geneMaterialProperty =
+                    geneId + " (" + ScreeningConstants.GENE_PLUGIN_TYPE_CODE + ")";
             saveWell(wellIdentifier, experimentIdentifier, plateId, oligoMaterialProperty,
                     geneMaterialProperty);
         }