diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractMapObjectByIdExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractMapObjectByIdExecutor.java
index 21a154deea6dc52ceacdc0b4eba6981cde268518..00d139d47b058c18bc05edfe4c686491e9878a54 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractMapObjectByIdExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/common/AbstractMapObjectByIdExecutor.java
@@ -47,7 +47,7 @@ public abstract class AbstractMapObjectByIdExecutor<ID extends IObjectId, OBJECT
 
         List<IListObjectById<? extends ID, OBJECT>> listers = new ArrayList<IListObjectById<? extends ID, OBJECT>>();
         addListers(context, listers);
-        return new MapObjectById<ID, OBJECT>().map(listers, ids);
+        return new MapObjectById<ID, OBJECT>().map(context, listers, ids);
     }
 
     protected abstract void addListers(IOperationContext context, List<IListObjectById<? extends ID, OBJECT>> listers);
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/MapEntityTypeByIdExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/MapEntityTypeByIdExecutor.java
index a8af9f7be680032965a30553f14bb7aad876daa1..44c50f5052ecbab018a099216248c3e53bcb010d 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/MapEntityTypeByIdExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/MapEntityTypeByIdExecutor.java
@@ -60,7 +60,7 @@ public class MapEntityTypeByIdExecutor implements IMapEntityTypeByIdExecutor
                 new LinkedList<IListObjectById<? extends IEntityTypeId, EntityTypePE>>();
         listers.add(new ListEntityTypeByPermId(daoFactory, entityKind));
 
-        return new MapObjectById<IEntityTypeId, EntityTypePE>().map(listers, entityTypeIds);
+        return new MapObjectById<IEntityTypeId, EntityTypePE>().map(context, listers, entityTypeIds);
     }
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ListMaterialsTechIdByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ListMaterialsTechIdByPermId.java
index 5a7a51e1b68d996f022f8485148e1cdf5e0375a3..ea1e90a62f38605ea718ed0c999c476095ca9e53 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ListMaterialsTechIdByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/material/ListMaterialsTechIdByPermId.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import net.lemnik.eodsql.QueryTool;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.TechIdStringIdentifierRecord;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListTechIdById;
 import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter;
@@ -44,7 +45,7 @@ public class ListMaterialsTechIdByPermId  extends AbstractListTechIdById<Materia
     }
 
     @Override
-    protected Map<Long, MaterialPermId> createIdsByTechIdsMap(List<MaterialPermId> ids)
+    protected Map<Long, MaterialPermId> createIdsByTechIdsMap(IOperationContext context, List<MaterialPermId> ids)
     {
         Map<String, Map<String, MaterialPermId>> groupedIdentifiers = new HashMap<>();
         for (MaterialPermId permId : ids)
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/project/ListProjectTechIdByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/project/ListProjectTechIdByIdentifier.java
index dc8795b3abaaffa74951ddccf716afaed786472a..32d3887cbcf7a08a68fe7f74029633bdcfe04499 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/project/ListProjectTechIdByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/project/ListProjectTechIdByIdentifier.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import net.lemnik.eodsql.QueryTool;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.TechIdStringIdentifierRecord;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListTechIdById;
 import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter;
@@ -45,7 +46,7 @@ public class ListProjectTechIdByIdentifier extends AbstractListTechIdById<Projec
     }
 
     @Override
-    protected Map<Long, ProjectIdentifier> createIdsByTechIdsMap(List<ProjectIdentifier> ids)
+    protected Map<Long, ProjectIdentifier> createIdsByTechIdsMap(IOperationContext context, List<ProjectIdentifier> ids)
     {
         Map<String, Map<String, ProjectIdentifier>> groupedIdentifiers = new HashMap<>();
         for (ProjectIdentifier projectIdentifier : ids)
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ListSampleTechIdByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ListSampleTechIdByIdentifier.java
index 80a1bf0c78f5df7cba3a0a21385bce1fc1f1ca14..98354b02c6c4bc1cc8be2acc190afa588bcdf52b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ListSampleTechIdByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/ListSampleTechIdByIdentifier.java
@@ -29,6 +29,7 @@ import java.util.Set;
 import net.lemnik.eodsql.QueryTool;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.TechIdStringIdentifierRecord;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListTechIdById;
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
@@ -38,6 +39,8 @@ import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
  */
 public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleIdentifier>
 {
+    public static final String CONTAINER_SHORTCUT_ALLOWED_ATTRIBUTE = "container-shortcut-allowed";
+    
     private String homeSpaceCodeOrNull;
 
     public ListSampleTechIdByIdentifier(String homeSpaceCodeOrNull)
@@ -52,17 +55,17 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
     }
 
     @Override
-    protected Map<Long, SampleIdentifier> createIdsByTechIdsMap(List<SampleIdentifier> ids)
+    protected Map<Long, SampleIdentifier> createIdsByTechIdsMap(IOperationContext context, List<SampleIdentifier> ids)
     {
         Map<SampleIdentifierParts, Map<String, SampleIdentifier>> groupedIdentifiers = groupIdentifiers(ids);
-
+        boolean containerShortcutAllowed = getContainerShortcutAllowed(context);
         Map<Long, SampleIdentifier> result = new HashMap<>();
         SampleQuery query = QueryTool.getManagedQuery(SampleQuery.class);
         for (Entry<SampleIdentifierParts, Map<String, SampleIdentifier>> entry : groupedIdentifiers.entrySet())
         {
             SampleIdentifierParts key = entry.getKey();
             Map<String, SampleIdentifier> identifiersByCode = entry.getValue();
-            List<TechIdStringIdentifierRecord> records = list(query, key, identifiersByCode.keySet());
+            List<TechIdStringIdentifierRecord> records = list(query, key, identifiersByCode.keySet(), containerShortcutAllowed);
             for (TechIdStringIdentifierRecord record : records)
             {
                 String sampleCode = record.identifier;
@@ -71,6 +74,12 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
         }
         return result;
     }
+    
+    private boolean getContainerShortcutAllowed(IOperationContext context)
+    {
+        Object value = context.getAttribute(CONTAINER_SHORTCUT_ALLOWED_ATTRIBUTE);
+        return Boolean.TRUE.equals(value);
+    }
 
     private Map<SampleIdentifierParts, Map<String, SampleIdentifier>> groupIdentifiers(List<SampleIdentifier> ids)
     {
@@ -92,7 +101,8 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
         return groupedIdentifiers;
     }
 
-    private List<TechIdStringIdentifierRecord> list(final SampleQuery query, final SampleIdentifierParts key, final Collection<String> codes)
+    private List<TechIdStringIdentifierRecord> list(final SampleQuery query, final SampleIdentifierParts key, 
+            final Collection<String> codes, boolean containerShortcutAllowed)
     {
         final String[] codesArray = codes.toArray(new String[codes.size()]);
         final String spaceCode = key.getSpaceCodeOrNull();
@@ -117,7 +127,7 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
                         {
                             return query.listSharedSampleTechIdsByCodesWithSomeContainer(codesToList);
                         }
-                    });
+                    }, containerShortcutAllowed);
             }
             return query.listSharedSampleTechIdsByContainerCodeAndCodes(containerCode, codesArray);
         }
@@ -139,7 +149,7 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
                         {
                             return query.listSpaceSampleTechIdsByCodesWithSomeContainer(spaceCode, codesToList);
                         }
-                    });
+                    }, containerShortcutAllowed);
             }
             return query.listSpaceSampleTechIdsByContainerCodeAndCodes(spaceCode, containerCode, codesArray);
         }
@@ -159,13 +169,14 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
                     {
                         return query.listProjectSampleTechIdsByCodesWithSomeContainer(spaceCode, projectCode, codesToList);
                     }
-                });
+                }, containerShortcutAllowed);
         }
         return query.listProjectSampleTechIdsByContainerCodeAndCodes(spaceCode, projectCode, containerCode, codesArray);
     }
 
-    private List<TechIdStringIdentifierRecord> listWithoutContainerOrWithSomeContainerAndUniqueCode(SampleQuery query, String[] codes,
-            IListAction listWithoutContainer, IListAction listWithSomeContainer)
+    private List<TechIdStringIdentifierRecord> listWithoutContainerOrWithSomeContainerAndUniqueCode(SampleQuery query, 
+            String[] codes, IListAction listWithoutContainer, IListAction listWithSomeContainer, 
+            boolean containerShortcutAllowed)
     {
         try
         {
@@ -177,7 +188,7 @@ public class ListSampleTechIdByIdentifier extends AbstractListTechIdById<SampleI
                 codesNotFound.remove(found.identifier);
             }
 
-            if (codesNotFound.isEmpty())
+            if (codesNotFound.isEmpty() || containerShortcutAllowed == false)
             {
                 return foundWithoutContainer;
             }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/MapVocabularyTermByIdExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/MapVocabularyTermByIdExecutor.java
index 54d5548ca20ff947c33cd7a6c5e8b02aabf79712..00dc7fe52927e059ab92f3c56278c1a9d81db3ce 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/MapVocabularyTermByIdExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/MapVocabularyTermByIdExecutor.java
@@ -65,7 +65,7 @@ public class MapVocabularyTermByIdExecutor implements IMapVocabularyTermByIdExec
             listers.add(new ListVocabularyTermByCode(vocabulary));
         }
 
-        return new MapObjectById<IVocabularyTermId, VocabularyTermPE>().map(listers, vocabularyTermIds);
+        return new MapObjectById<IVocabularyTermId, VocabularyTermPE>().map(context, listers, vocabularyTermIds);
     }
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdById.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdById.java
index b152e1db460d4bf2b729f58a62294eb27b39a4ed..5a2c2936f624fd44502b8f630f3f56f5eeae6183 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdById.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdById.java
@@ -21,6 +21,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
+
 /**
  * @author Franz-Josef Elmer
  */
@@ -35,12 +37,12 @@ public abstract class AbstractListTechIdById<ID> extends AbstractListObjectById<
     }
 
     @Override
-    public List<Long> listByIds(List<ID> ids)
+    public List<Long> listByIds(IOperationContext context, List<ID> ids)
     {
-        idsByTechIds = createIdsByTechIdsMap(ids);
+        idsByTechIds = createIdsByTechIdsMap(context, ids);
         return new ArrayList<>(idsByTechIds.keySet());
     }
 
-    protected abstract Map<Long, ID> createIdsByTechIdsMap(List<ID> ids);
+    protected abstract Map<Long, ID> createIdsByTechIdsMap(IOperationContext context, List<ID> ids);
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdByPermId.java
index 1fa3b4818244307ccf966d1249733ce4a5c5a983..c321c3b13f803dc0b1902828f32cd4ed0e706fa0 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/AbstractListTechIdByPermId.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.TechIdStringIdentifierRecord;
 
 /**
@@ -33,7 +34,7 @@ public abstract class AbstractListTechIdByPermId<ID extends ObjectPermId> extend
 {
 
     @Override
-    protected Map<Long, ID> createIdsByTechIdsMap(List<ID> ids)
+    protected Map<Long, ID> createIdsByTechIdsMap(IOperationContext context, List<ID> ids)
     {
         List<String> permIds = new ArrayList<>(ids.size());
         for (ID permId : ids)
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/IListObjectById.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/IListObjectById.java
index 61922774a557a151541b1501116cff4bf3d37daa..e5a673e101ef263d07233f547331719101ebde5b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/IListObjectById.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/IListObjectById.java
@@ -18,6 +18,8 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common;
 
 import java.util.List;
 
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
+
 /**
  * @author pkupczyk
  */
@@ -28,6 +30,6 @@ public interface IListObjectById<ID, OBJECT>
 
     public ID createId(OBJECT entity);
 
-    public List<OBJECT> listByIds(List<ID> ids);
+    public List<OBJECT> listByIds(IOperationContext context, List<ID> ids);
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/MapObjectById.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/MapObjectById.java
index bcbe306e28566c94fd594d5724b1c5f1e86e1f2f..11bf245bcd8f0d38a95b14f5f2b8d9836e4c17cc 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/MapObjectById.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/common/MapObjectById.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.IObjectId;
 import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.UnsupportedObjectIdException;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 
 /**
  * @author pkupczyk
@@ -58,7 +59,8 @@ public class MapObjectById<ID, OBJECT>
         return idClassToIdListMap;
     }
 
-    private Map mapByIds(List<IListObjectById<? extends ID, OBJECT>> listers, Map<Class, List> idClassToIdListMap)
+    private Map mapByIds(IOperationContext context, List<IListObjectById<? extends ID, OBJECT>> listers, 
+            Map<Class, List> idClassToIdListMap)
     {
         final Map idToObject = new HashMap();
 
@@ -66,7 +68,7 @@ public class MapObjectById<ID, OBJECT>
         {
             List idList = idClassToIdListMap.get(idClass);
             IListObjectById listerForIdClass = findLister(listers, idClass, idList); 
-            List objects = listerForIdClass.listByIds(idList);
+            List objects = listerForIdClass.listByIds(context, idList);
             if (objects != null)
             {
                 for (Object object : objects)
@@ -92,10 +94,11 @@ public class MapObjectById<ID, OBJECT>
         throw new UnsupportedObjectIdException((IObjectId) idList.iterator().next());
     }
 
-    public Map<ID, OBJECT> map(List<IListObjectById<? extends ID, OBJECT>> listers, Collection<? extends ID> ids)
+    public Map<ID, OBJECT> map(IOperationContext context, List<IListObjectById<? extends ID, OBJECT>> listers, 
+            Collection<? extends ID> ids)
     {
         Map<Class, List> idClassToIdListMap = groupIdsByClass(ids);
-        Map idToObjectMap = mapByIds(listers, idClassToIdListMap);
+        Map idToObjectMap = mapByIds(context, listers, idClassToIdListMap);
         Map orderedMap = new LinkedHashMap();
 
         for (ID id : ids)
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListDataSetByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListDataSetByPermId.java
index 216d763096e8c148ed454bdd241b89cc050c57d7..0becc8a6ee12fb426422bf68368d80823f122a4a 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListDataSetByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListDataSetByPermId.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Set;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
@@ -51,7 +52,7 @@ public class ListDataSetByPermId extends AbstractListObjectById<DataSetPermId, D
     }
 
     @Override
-    public List<DataPE> listByIds(List<DataSetPermId> ids)
+    public List<DataPE> listByIds(IOperationContext context, List<DataSetPermId> ids)
     {
         Set<String> codes = new HashSet<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListFileFormatTypeByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListFileFormatTypeByPermId.java
index 0ecc4b5a3aec9a6ace80a83d80a22586cbcb9a9d..320246e5fb48d603863601500b9ad0d5adb3a2d3 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListFileFormatTypeByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListFileFormatTypeByPermId.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.FileFormatTypePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IFileFormatTypeDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.FileFormatTypePE;
@@ -50,7 +51,7 @@ public class ListFileFormatTypeByPermId extends AbstractListObjectById<FileForma
     }
 
     @Override
-    public List<FileFormatTypePE> listByIds(List<FileFormatTypePermId> ids)
+    public List<FileFormatTypePE> listByIds(IOperationContext context, List<FileFormatTypePermId> ids)
     {
         List<FileFormatTypePE> types = new ArrayList<FileFormatTypePE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListLocatorTypeByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListLocatorTypeByPermId.java
index 0a6551bed98d18440ce617c8b9760e4b1679e465..1c923786f48622d2d60785c00ef68d531ab891f7 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListLocatorTypeByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/dataset/ListLocatorTypeByPermId.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.LocatorTypePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ILocatorTypeDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.LocatorTypePE;
@@ -50,7 +51,7 @@ public class ListLocatorTypeByPermId extends AbstractListObjectById<LocatorTypeP
     }
 
     @Override
-    public List<LocatorTypePE> listByIds(List<LocatorTypePermId> ids)
+    public List<LocatorTypePE> listByIds(IOperationContext context, List<LocatorTypePermId> ids)
     {
         List<LocatorTypePE> types = new ArrayList<LocatorTypePE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/datastore/ListDataStoreByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/datastore/ListDataStoreByPermId.java
index 78857b1cf28418b645b721ccf41f75ada42d1f1c..5421c9b0752468beebf1e20b728803898249a854 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/datastore/ListDataStoreByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/datastore/ListDataStoreByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.id.DataStorePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataStoreDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
@@ -50,7 +51,7 @@ public class ListDataStoreByPermId extends AbstractListObjectById<DataStorePermI
     }
 
     @Override
-    public List<DataStorePE> listByIds(List<DataStorePermId> ids)
+    public List<DataStorePE> listByIds(IOperationContext context, List<DataStorePermId> ids)
     {
         List<DataStorePE> dataStores = new LinkedList<DataStorePE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/deletion/ListDeletionByTechId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/deletion/ListDeletionByTechId.java
index 9d857ebe454a6575db8c980dd1b15e8c8c124f94..631a96ebd30755bcd5b1f2de721507a0a25bb10b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/deletion/ListDeletionByTechId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/deletion/ListDeletionByTechId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.deletion.id.DeletionTechId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDeletionDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DeletionPE;
@@ -50,7 +51,7 @@ public class ListDeletionByTechId extends AbstractListObjectById<DeletionTechId,
     }
 
     @Override
-    public List<DeletionPE> listByIds(List<DeletionTechId> ids)
+    public List<DeletionPE> listByIds(IOperationContext context, List<DeletionTechId> ids)
     {
         List<Long> techIds = new LinkedList<Long>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/entity/ListEntityTypeByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/entity/ListEntityTypeByPermId.java
index a9d57fe91f16661f9b735454c83ed646939e7689..79ace0f121e238e8228c974e1192859a28582514 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/entity/ListEntityTypeByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/entity/ListEntityTypeByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IEntityTypeDAO;
@@ -52,7 +53,7 @@ public class ListEntityTypeByPermId extends AbstractListObjectById<EntityTypePer
     }
 
     @Override
-    public List<EntityTypePE> listByIds(List<EntityTypePermId> ids)
+    public List<EntityTypePE> listByIds(IOperationContext context, List<EntityTypePermId> ids)
     {
         List<String> permIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByIdentifier.java
index 5d994816116e6557ed00eaaea41bf32d541b37c6..973734860d312cb2fbdfc7c7f0da9c59fa2d6ed9 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByIdentifier.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IProjectDAO;
@@ -59,7 +60,7 @@ public class ListExperimentByIdentifier extends AbstractListObjectById<Experimen
     }
 
     @Override
-    public List<ExperimentPE> listByIds(List<ExperimentIdentifier> experimentIdentifiers)
+    public List<ExperimentPE> listByIds(IOperationContext context, List<ExperimentIdentifier> experimentIdentifiers)
     {
         List<ExperimentPE> experiments = new LinkedList<ExperimentPE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByPermId.java
index 3992c90e9b52301f9c811ce0fb6bda39da7f73d7..e3a685bbce6fb5ff5b7c393878024a7c5ba778c4 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/experiment/ListExperimentByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
@@ -50,7 +51,7 @@ public class ListExperimentByPermId extends AbstractListObjectById<ExperimentPer
     }
 
     @Override
-    public List<ExperimentPE> listByIds(List<ExperimentPermId> ids)
+    public List<ExperimentPE> listByIds(IOperationContext context, List<ExperimentPermId> ids)
     {
         List<String> permIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/externaldms/ListExternalDmsByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/externaldms/ListExternalDmsByPermId.java
index 5c70e72ad7f802c1830d49735503993ccae908f8..98ba7a0c28a45d4be5bfd57883fc24609c826848 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/externaldms/ListExternalDmsByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/externaldms/ListExternalDmsByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.id.ExternalDmsPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExternalDataManagementSystemDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataManagementSystemPE;
@@ -50,7 +51,7 @@ public class ListExternalDmsByPermId extends AbstractListObjectById<ExternalDmsP
     }
 
     @Override
-    public List<ExternalDataManagementSystemPE> listByIds(List<ExternalDmsPermId> ids)
+    public List<ExternalDataManagementSystemPE> listByIds(IOperationContext context, List<ExternalDmsPermId> ids)
     {
         List<ExternalDataManagementSystemPE> externalDmses = new LinkedList<ExternalDataManagementSystemPE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/material/ListMaterialsByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/material/ListMaterialsByPermId.java
index 013ee50afcf443042022d03a699ba7e2547ce6c3..e93232fd35fe5afe1f24726f9ee4ab198efe8a87 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/material/ListMaterialsByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/material/ListMaterialsByPermId.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Set;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IMaterialDAO;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
@@ -52,7 +53,7 @@ public class ListMaterialsByPermId extends AbstractListObjectById<MaterialPermId
     }
 
     @Override
-    public List<MaterialPE> listByIds(List<MaterialPermId> ids)
+    public List<MaterialPE> listByIds(IOperationContext context, List<MaterialPermId> ids)
     {
         System.out.println("list by ids: " + ids);
         Set<MaterialIdentifier> codes = new HashSet<MaterialIdentifier>();
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/person/ListPersonByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/person/ListPersonByPermId.java
index 777771de6648f4f7be6e2498c42cfdd07d7c6f3a..9a665e4ca4f3ede2daac297c92bdcfe2217a9af5 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/person/ListPersonByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/person/ListPersonByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.id.PersonPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IPersonDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
@@ -50,7 +51,7 @@ public class ListPersonByPermId extends AbstractListObjectById<PersonPermId, Per
     }
 
     @Override
-    public List<PersonPE> listByIds(List<PersonPermId> ids)
+    public List<PersonPE> listByIds(IOperationContext context, List<PersonPermId> ids)
     {
         List<String> userIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByIdentifier.java
index 52c2cf6b05a1ebe90277520b66feb28efa66909b..5465ecd087ce2019ded29583fda945a48ae81ed3 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByIdentifier.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IProjectDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
@@ -51,7 +52,7 @@ public class ListProjectByIdentifier extends AbstractListObjectById<ProjectIdent
     }
 
     @Override
-    public List<ProjectPE> listByIds(List<ProjectIdentifier> ids)
+    public List<ProjectPE> listByIds(IOperationContext context, List<ProjectIdentifier> ids)
     {
         List<ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier> identifiers =
                 new LinkedList<ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier>();
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByPermId.java
index 4fd0ab3ba552a5cc63d9d112c6421dc0ecf017bc..accd740aa195a074b39548462885523d8bb9d5b8 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/project/ListProjectByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.ProjectPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IProjectDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
@@ -50,7 +51,7 @@ public class ListProjectByPermId extends AbstractListObjectById<ProjectPermId, P
     }
 
     @Override
-    public List<ProjectPE> listByIds(List<ProjectPermId> ids)
+    public List<ProjectPE> listByIds(IOperationContext context, List<ProjectPermId> ids)
     {
         List<String> permIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByIdentifier.java
index ab52d96e9e80cf262a3379ae63a83e26ebd25c9e..245e7fd19affaf46b3ee34adbc65f1f02fe490da 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByIdentifier.java
@@ -19,6 +19,7 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.helper.sample;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ListSampleTechIdByIdentifier;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO;
@@ -56,9 +57,9 @@ public class ListSampleByIdentifier extends AbstractListObjectById<SampleIdentif
     }
 
     @Override
-    public List<SamplePE> listByIds(List<SampleIdentifier> ids)
+    public List<SamplePE> listByIds(IOperationContext context, List<SampleIdentifier> ids)
     {
-        return sampleDAO.listByIDs(techIdByIdentifier.listByIds(ids));
+        return sampleDAO.listByIDs(techIdByIdentifier.listByIds(context, ids));
     }
 
 }
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByPermId.java
index 4be5d890df7d15b39eb02c51e441e5cba391fd3c..2ae5d506cf63a6dd7264001d6f8f46f4327b4a36 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/sample/ListSampleByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISampleDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
@@ -50,7 +51,7 @@ public class ListSampleByPermId extends AbstractListObjectById<SamplePermId, Sam
     }
 
     @Override
-    public List<SamplePE> listByIds(List<SamplePermId> ids)
+    public List<SamplePE> listByIds(IOperationContext context, List<SamplePermId> ids)
     {
         List<String> permIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/space/ListSpaceByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/space/ListSpaceByPermId.java
index 1a8f3caf3098bfa85a727410a1f6d321db0819f1..62e2d7b0602f6b4b3fb8e937b50f0996eb7c2144 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/space/ListSpaceByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/space/ListSpaceByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id.SpacePermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.ISpaceDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
@@ -50,7 +51,7 @@ public class ListSpaceByPermId extends AbstractListObjectById<SpacePermId, Space
     }
 
     @Override
-    public List<SpacePE> listByIds(List<SpacePermId> ids)
+    public List<SpacePE> listByIds(IOperationContext context, List<SpacePermId> ids)
     {
         List<String> permIds = new LinkedList<String>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyByPermId.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyByPermId.java
index 1cfd0829ff82037a3069e52805de87e883607731..9b9ea0f5e45aaf653cc8e4944aa1c511b8048ddf 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyByPermId.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyByPermId.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyPermId;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IVocabularyDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE;
@@ -50,7 +51,7 @@ public class ListVocabularyByPermId extends AbstractListObjectById<VocabularyPer
     }
 
     @Override
-    public List<VocabularyPE> listByIds(List<VocabularyPermId> ids)
+    public List<VocabularyPE> listByIds(IOperationContext context, List<VocabularyPermId> ids)
     {
         List<VocabularyPE> vocabularies = new LinkedList<VocabularyPE>();
 
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyTermByCode.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyTermByCode.java
index 45022eda0a624ae4a8c3715b3973188b35bde082..76c1aa568b56a182da5b19c9351d786e61c15cf0 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyTermByCode.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/vocabulary/ListVocabularyTermByCode.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Set;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermCode;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.helper.common.AbstractListObjectById;
 import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyTermPE;
@@ -52,7 +53,7 @@ public class ListVocabularyTermByCode extends AbstractListObjectById<VocabularyT
     }
 
     @Override
-    public List<VocabularyTermPE> listByIds(List<VocabularyTermCode> ids)
+    public List<VocabularyTermPE> listByIds(IOperationContext context, List<VocabularyTermCode> ids)
     {
         List<VocabularyTermPE> terms = new LinkedList<VocabularyTermPE>();
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
index 925f72c55077b533d19cc781b93236e73a8cb4d8..4ed6eb2bc14729b431b0b1da58ee1b88c7167f6d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
@@ -52,6 +52,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.context.IProgressListener;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset.ICreateDataSetExecutor;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ListSampleTechIdByIdentifier;
 import ch.rinn.restrictions.Private;
 import ch.systemsx.cisd.authentication.DefaultSessionManager;
 import ch.systemsx.cisd.authentication.DummyAuthenticationService;
@@ -2427,6 +2428,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD
         }
 
         IOperationContext context = new OperationContext(session);
+        context.setAttribute(ListSampleTechIdByIdentifier.CONTAINER_SHORTCUT_ALLOWED_ATTRIBUTE, true);
         context.addProgressListener(new IProgressListener()
             {
                 @Override
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/MapSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/MapSampleTest.java
index 0700033bfc18a08d413dd690b4870f70d087db16..3c947c75306440aa7a3103f0233f406152361fc8 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/MapSampleTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/MapSampleTest.java
@@ -156,11 +156,7 @@ public class MapSampleTest extends AbstractSampleTest
 
         Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, Arrays.asList(identifier1), new SampleFetchOptions());
 
-        assertEquals(map.size(), 1);
-
-        Sample sample1 = map.get(identifier1);
-
-        assertEquals(sample1.getIdentifier().getIdentifier(), "/MP:A03");
+        assertEquals(map.size(), 0);
 
         v3api.logout(sessionToken);
     }
@@ -224,13 +220,7 @@ public class MapSampleTest extends AbstractSampleTest
 
         Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, Arrays.asList(identifier1, identifier2), new SampleFetchOptions());
 
-        assertEquals(map.size(), 2);
-
-        Sample sample1 = map.get(identifier1);
-        Sample sample2 = map.get(identifier2);
-
-        assertEquals(sample1.getIdentifier().getIdentifier(), "/CISD/PLATE_WELLSEARCH:WELL-A01");
-        assertEquals(sample2.getIdentifier().getIdentifier(), "/CISD/PLATE_WELLSEARCH:WELL-A02");
+        assertEquals(map.size(), 0);
 
         v3api.logout(sessionToken);
     }
@@ -260,10 +250,7 @@ public class MapSampleTest extends AbstractSampleTest
 
         Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, Arrays.asList(identifier1, identifier2), new SampleFetchOptions());
 
-        assertEquals(map.size(), 1);
-
-        Sample sample1 = map.get(identifier1);
-        assertEquals(sample1.getIdentifier().getIdentifier(), "/CISD/PLATE_WELLSEARCH:WELL-A01");
+        assertEquals(map.size(), 0);
 
         v3api.logout(sessionToken);
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
index 821e26d4358a507632ed0ccfd3138ea9b9dc0215..75299eb069e808d2855aef258b0ec7062c65563d 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/EntityOperationTest.java
@@ -28,6 +28,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.exceptions.AuthorizationFailureException;
+import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
@@ -647,7 +648,7 @@ public class EntityOperationTest extends SystemTestCase
                         new DataSetBuilder().code(dataSetCode).type("HCS_IMAGE")
                                 .store(new DataStoreBuilder("STANDARD").getStore())
                                 .fileFormat("XML").location("a/b/c").property("COMMENT", "my data")
-                                .sample(new SampleBuilder().identifier("/CISD/CP1-A1").getSample())
+                                .sample(new SampleBuilder().identifier("/CISD/WELL-A01").getSample())
                                 .getDataSet()).create();
 
         AtomicEntityOperationResult result = etlService.performEntityOperations(sessionToken, eo);
@@ -657,6 +658,30 @@ public class EntityOperationTest extends SystemTestCase
         assertEquals(dataSetCode, dataSet.getCode());
         assertEquals("HCS_IMAGE", dataSet.getDataSetType().getCode());
         assertEquals("[COMMENT: my data]", dataSet.getProperties().toString());
+        assertEquals("/CISD/PLATE_WELLSEARCH:WELL-A01", dataSet.getSampleIdentifier());
+    }
+    
+    @Test
+    public void testCreateDataSetForUnknownSample()
+    {
+        String sessionToken = authenticateAs(SPACE_ETL_SERVER_FOR_A);
+        String dataSetCode = "DS-1";
+        AtomicEntityOperationDetails eo =
+                new EntityOperationBuilder().dataSet(
+                        new DataSetBuilder().code(dataSetCode).type("HCS_IMAGE")
+                        .store(new DataStoreBuilder("STANDARD").getStore())
+                        .fileFormat("XML").location("a/b/c").property("COMMENT", "my data")
+                        .sample(new SampleBuilder().identifier("/CISD/A01").getSample())
+                        .getDataSet()).create();
+        
+        try
+        {
+            etlService.performEntityOperations(sessionToken, eo);
+            fail("UserFailureException expected");
+        } catch (UserFailureException ex)
+        {
+            assertEquals("Object with SampleIdentifier = [/CISD/A01] has not been found.", ex.getMessage());
+        }
     }
 
     @Test