diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/ListSampleTechIdByIdentifier.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/ListSampleTechIdByIdentifier.java
index dc4c7ef7ac3c0e99c1d3bb0796c8beb08c440741..2677186b333933152788e9dd5835828547c7127b 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/ListSampleTechIdByIdentifier.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/ListSampleTechIdByIdentifier.java
@@ -38,7 +38,13 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa
  */
 public class ListSampleTechIdByIdentifier implements IListObjectById<SampleIdentifier, Long>
 {
-    private Map<Long, SampleIdentifier> identifiersByTechIds = new HashMap<Long, SampleIdentifier>(); 
+    private Map<Long, SampleIdentifier> identifiersByTechIds = new HashMap<Long, SampleIdentifier>();
+    private String homeSpaceCodeOrNull; 
+    
+    public ListSampleTechIdByIdentifier(String homeSpaceCodeOrNull)
+    {
+        this.homeSpaceCodeOrNull = homeSpaceCodeOrNull;
+    }
 
     @Override
     public Class<SampleIdentifier> getIdClass()
@@ -63,7 +69,17 @@ public class ListSampleTechIdByIdentifier implements IListObjectById<SampleIdent
             String spaceCode = null;
             if (sampleIdentifier2.isSpaceLevel())
             {
-                spaceCode = CodeConverter.tryToDatabase(sampleIdentifier2.getSpaceLevel().getSpaceCode());
+                if (sampleIdentifier2.isInsideHomeSpace())
+                {
+                    if (homeSpaceCodeOrNull == null)
+                    {
+                        continue;
+                    }
+                    spaceCode = homeSpaceCodeOrNull;
+                } else
+                {
+                    spaceCode = CodeConverter.tryToDatabase(sampleIdentifier2.getSpaceLevel().getSpaceCode());
+                }
             }
             String sampleSubCode = CodeConverter.tryToDatabase(sampleIdentifier2.getSampleSubCode());
             String containerCode = CodeConverter.tryToDatabase(sampleIdentifier2.tryGetContainerCode());
diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/MapSampleTechIdByIdExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/MapSampleTechIdByIdExecutor.java
index fc3a69622099792365c023534e67ddeeb2619574..1e8116c19a503f9ab80a9e4cfee6d4eb9f08c06c 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/MapSampleTechIdByIdExecutor.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/api/v3/executor/sample/MapSampleTechIdByIdExecutor.java
@@ -25,6 +25,7 @@ import ch.ethz.sis.openbis.generic.server.api.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.api.v3.executor.common.AbstractMapObjectByIdExecutor;
 import ch.ethz.sis.openbis.generic.server.api.v3.helper.common.IListObjectById;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.ISampleId;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
 
 /**
  * 
@@ -41,7 +42,8 @@ public class MapSampleTechIdByIdExecutor extends AbstractMapObjectByIdExecutor<I
         List<IListObjectById<? extends ISampleId, Long>> listers =
                 new LinkedList<IListObjectById<? extends ISampleId, Long>>();
         listers.add(new ListSampleTechIdByPermId());
-        listers.add(new ListSampleTechIdByIdentifier());
+        SpacePE homeSpace = context.getSession().tryGetHomeGroup();
+        listers.add(new ListSampleTechIdByIdentifier(homeSpace == null ? null : homeSpace.getCode()));
         return listers;
     }
 
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
index 936facf86f4111a9121213f173c32efcb0aa23ad..1094f1a7fb76ba1543dbb62589687c2b7d05e2bf 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/MapSampleTest.java
@@ -63,6 +63,8 @@ import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.SampleIdentifier;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.SamplePermId;
 import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.space.SpacePermId;
 import ch.systemsx.cisd.common.test.AssertionUtil;
+import ch.systemsx.cisd.openbis.generic.shared.basic.CodeConverter;
+import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory;
 
 /**
  * @author pkupczyk
@@ -103,11 +105,12 @@ public class MapSampleTest extends AbstractSampleTest
         SampleIdentifier identifier2 = new SampleIdentifier("/TEST-SPACE/CP-TEST-4");
         SampleIdentifier identifier3 = new SampleIdentifier("/CISD/3VCP8");
         SampleIdentifier identifier4 = new SampleIdentifier("/MP");
-        SampleIdentifier identifier5 = new SampleIdentifier("/MP:A03");
-        SampleIdentifier identifier6 = new SampleIdentifier("/CISD/CL1:A03");
+        SampleIdentifier identifier5 = new SampleIdentifier("/MP:a03");
+        SampleIdentifier identifier6 = new SampleIdentifier("/cisd/cl1:A03");
+        SampleIdentifier identifier7 = new SampleIdentifier("//CL1:A01");
 
         List<SampleIdentifier> identifiers = Arrays.asList(identifier1, identifier2, identifier3, identifier4, 
-                identifier5, identifier6);
+                identifier5, identifier6, identifier7);
         Map<ISampleId, Sample> map = v3api.mapSamples(sessionToken, identifiers, new SampleFetchOptions());
 
         assertEquals(map.size(), identifiers.size());
@@ -115,15 +118,35 @@ public class MapSampleTest extends AbstractSampleTest
         Iterator<Sample> iter = map.values().iterator();
         for (SampleIdentifier identifier : identifiers)
         {
-            assertEquals(iter.next().getIdentifier(), identifier);
+            assertEquals(iter.next().getIdentifier(), normalize(identifier));
         }
         for (SampleIdentifier identifier : identifiers)
         {
-            assertEquals(map.get(identifier).getIdentifier(), identifier);
+            assertEquals(map.get(identifier).getIdentifier(), normalize(identifier));
         }
 
         v3api.logout(sessionToken);
     }
+    
+    private SampleIdentifier normalize(SampleIdentifier identifier)
+    {
+        ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier identifier2 = SampleIdentifierFactory.parse(identifier.getIdentifier());
+        String spaceCode = null;
+        if (identifier2.isSpaceLevel())
+        {
+            if (identifier2.isInsideHomeSpace())
+            {
+                spaceCode = "CISD";
+            } else
+            {
+                spaceCode = CodeConverter.tryToDatabase(identifier2.getSpaceLevel().getSpaceCode());
+            }
+        }
+        String sampleSubCode = CodeConverter.tryToDatabase(identifier2.getSampleSubCode());
+        String containerCode = CodeConverter.tryToDatabase(identifier2.tryGetContainerCode());
+        return new SampleIdentifier(spaceCode, containerCode, sampleSubCode);
+
+    }
 
     @Test
     public void testMapByIdsNonexistent()