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 3d6a8257353ce4bdcdb8674963536984e1ba0184..987497076952a2ef70e2f11eeb8a41f4acf710f9 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
@@ -305,8 +305,7 @@ public class ETLService extends AbstractServer<IETLService> implements IETLServi
             ExperimentIdentifier experimentIdentifier)
     {
         final IExperimentBO experimentBO = boFactory.createExperimentBO(session);
-        experimentBO.loadByExperimentIdentifier(experimentIdentifier);
-        return experimentBO.getExperiment();
+        return experimentBO.tryFindByExperimentIdentifier(experimentIdentifier);
     }
 
     private SamplePE tryLoadSample(final Session session, SampleIdentifier sampleIdentifier)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java
index 23879833ba3c1ef71a67c7ac38858467554d473c..fffbfa85733d1cfc01b3595141835ec6db118f3d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java
@@ -154,22 +154,41 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper
         dataChanged = false;
     }
 
+    public final ExperimentPE tryFindByExperimentIdentifier(final ExperimentIdentifier identifier)
+    {
+        final ProjectPE project = tryGetProject(identifier);
+        if (project == null)
+        {
+            return null;
+        }
+        return tryGetExperiment(identifier, project);
+    }
+
     private ExperimentPE getExperimentByIdentifier(final ExperimentIdentifier identifier)
     {
         assert identifier != null : "Experiment identifier unspecified.";
-        final ProjectPE project =
-                getProjectDAO().tryFindProject(identifier.getDatabaseInstanceCode(),
-                        identifier.getGroupCode(), identifier.getProjectCode());
+        final ProjectPE project = tryGetProject(identifier);
         if (project == null)
         {
             throw new UserFailureException("Unkown experiment because of unkown project: "
                     + identifier);
         }
-        final ExperimentPE exp =
-                getExperimentDAO().tryFindByCodeAndProject(project, identifier.getExperimentCode());
+        final ExperimentPE exp = tryGetExperiment(identifier, project);
         return exp;
     }
 
+    private ExperimentPE tryGetExperiment(final ExperimentIdentifier identifier,
+            final ProjectPE project)
+    {
+        return getExperimentDAO().tryFindByCodeAndProject(project, identifier.getExperimentCode());
+    }
+
+    private ProjectPE tryGetProject(final ExperimentIdentifier identifier)
+    {
+        return getProjectDAO().tryFindProject(identifier.getDatabaseInstanceCode(),
+                identifier.getGroupCode(), identifier.getProjectCode());
+    }
+
     public final void enrichWithProperties()
     {
         if (experiment != null)
@@ -297,9 +316,7 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper
     private void defineExperimentProject(NewExperiment newExperiment,
             final ExperimentIdentifier experimentIdentifier)
     {
-        ProjectPE project =
-                getProjectDAO().tryFindProject(experimentIdentifier.getDatabaseInstanceCode(),
-                        experimentIdentifier.getGroupCode(), experimentIdentifier.getProjectCode());
+        ProjectPE project = tryGetProject(experimentIdentifier);
         if (project == null)
         {
             throw UserFailureException.fromTemplate(ERR_PROJECT_NOT_FOUND, newExperiment);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java
index f861adc71cb273e3b4ddd6a54af416eaf8eb02ad..4541d460387c78f3e2686e3df7a6eb0c5191d3ff 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java
@@ -35,6 +35,12 @@ public interface IExperimentBO extends IEntityBusinessObject
     /** Loads a experiment given by its identifier. */
     void loadByExperimentIdentifier(final ExperimentIdentifier identifier);
 
+    /**
+     * Returns an experiment found at the given identifier or null if it does not exist. Does not
+     * change the state of this object, especially the result of {@link #getExperiment()}.
+     */
+    ExperimentPE tryFindByExperimentIdentifier(final ExperimentIdentifier identifier);
+
     /** Returns the sample which has been loaded. */
     ExperimentPE getExperiment();