diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
index f69a079683afe34a77fc46138805ce86754234fc..9fe5a4ea6f06bf1b71ec5eae18957c81519bb001 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java
@@ -86,6 +86,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCrite
 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.MaterialIdentifier;
+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.NewMaterial;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewProject;
@@ -379,6 +380,7 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements
         {
             return null;
         }
+        enrichWithProperties(experiment);
         return ExperimentTranslator.translate(experiment, session.getBaseIndexURL(),
                 LoadableFields.PROPERTIES);
     }
@@ -1464,7 +1466,34 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements
     {
         Session session = getSession(sessionToken);
         IMaterialLister lister = businessObjectFactory.createMaterialLister(session);
-        return lister.list(criteria, withProperties);
+        ListMaterialCriteria criteriaWithIds = populateMissingTypeId(criteria);
+        return lister.list(criteriaWithIds, withProperties);
+    }
+
+    private ListMaterialCriteria populateMissingTypeId(ListMaterialCriteria criteria)
+    {
+        MaterialType materialTypeOrNull = criteria.tryGetMaterialType();
+        if (materialTypeOrNull != null && materialTypeOrNull.getId() == null)
+        {
+            String materialTypeCode = materialTypeOrNull.getCode();
+            EntityTypePE typeWithId =
+                    daoFactory.getEntityTypeDAO(EntityKind.MATERIAL).tryToFindEntityTypeByCode(
+                            materialTypeCode);
+            if (typeWithId == null)
+            {
+                throw UserFailureException.fromTemplate("Invalid material type '%s'",
+                        materialTypeCode);
+            } else
+            {
+                MaterialType materialTypeWithId = new MaterialType();
+                materialTypeWithId.setId(typeWithId.getId());
+                materialTypeWithId.setCode(materialTypeCode);
+                return new ListMaterialCriteria(materialTypeWithId);
+            }
+        }
+
+        return criteria;
+
     }
 
 }