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 bd46add69f1a533a6a5c49f30d9d1a64bbf7a585..6285970c71ffbe0b577bbea4dd8a453145f07ac8 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
@@ -341,6 +341,14 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET
         return SampleTranslator.translate(sample, session.getBaseIndexURL());
     }
 
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException
+    {
+        assert sessionToken != null : "Unspecified session token.";
+        assert samplePermID != null : "Unspecified sample perm ID.";
+        return daoFactory.getSampleDAO().tryToFindByPermID(samplePermID).getSampleIdentifier();
+    }
+
     private ExperimentPE tryLoadExperimentBySampleIdentifier(final Session session,
             SampleIdentifier sampleIdentifier)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
index 9cce33786abef4b251784bd99209683c4de27fdf..a0cd9be82cbe452db9305ec52649b87f02fc8667 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java
@@ -152,6 +152,13 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic
         return null;
     }
 
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException
+    {
+        logAccess(sessionToken, "tryToGetSampleIdentifier", "SAMPLE(%s)", samplePermID);
+        return null;
+    }
+
     public ExperimentType getExperimentType(String sessionToken, String experimentTypeCode)
             throws UserFailureException
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
index 40e11583f407b801c88fa03c4665917563ef52b0..ba1157aa5308f1abcec0f882e10ffe3df9c4c66e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java
@@ -117,6 +117,16 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             final String sessionToken,
             @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier)
             throws UserFailureException;
+    
+    /**
+     * Tries to get the identifier of sample with specified permanent ID.
+     * 
+     * @return <code>null</code> if nothing found.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleSet.ETL_SERVER)
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException;
 
     /**
      * Returns the ExperimentType together with assigned property types for specified experiment
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
index dfc55412ceed547c5ac38095b4dd92ec100d8b37..4bfb9cf3bb44e58e88f847892cd563dc4baadc5a 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceTest.java
@@ -307,6 +307,24 @@ public class ETLServiceTest extends AbstractServerTestCase
         context.assertIsSatisfied();
     }
 
+    @Test
+    public void testTryToGetSampleIdentifier()
+    {
+        context.checking(new Expectations()
+            {
+                {
+                    one(sampleDAO).tryToFindByPermID("abc");
+                    SamplePE sample = new SamplePE();
+                    sample.setCode("s42");
+                    will(returnValue(sample));
+                }
+            });
+        
+        SampleIdentifier identifier = createService().tryToGetSampleIdentifier(SESSION_TOKEN, "abc");
+        
+        assertEquals("s42", identifier.toString());
+        context.assertIsSatisfied();
+    }
     @Test
     public void testGetSampleType()
     {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
index 40e11583f407b801c88fa03c4665917563ef52b0..ba1157aa5308f1abcec0f882e10ffe3df9c4c66e 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected
@@ -117,6 +117,16 @@ public interface IETLLIMSService extends IServer, ISessionProvider
             final String sessionToken,
             @AuthorizationGuard(guardClass = SampleOwnerIdentifierPredicate.class) final SampleIdentifier sampleIdentifier)
             throws UserFailureException;
+    
+    /**
+     * Tries to get the identifier of sample with specified permanent ID.
+     * 
+     * @return <code>null</code> if nothing found.
+     */
+    @Transactional(readOnly = true)
+    @RolesAllowed(RoleSet.ETL_SERVER)
+    public SampleIdentifier tryToGetSampleIdentifier(String sessionToken, String samplePermID)
+            throws UserFailureException;
 
     /**
      * Returns the ExperimentType together with assigned property types for specified experiment