diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
index 58907b69d370ecba6ff25e875c3bd6b547e8abf2..0eee41ccf3a83b0b384f2fe71ae908255ad83f75 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java
@@ -26,6 +26,7 @@ import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.authorization.IAuthorizationService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable;
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IMaterialImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IProjectImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable;
@@ -179,6 +180,15 @@ public interface IDataSetRegistrationTransaction
      */
     IMaterial createNewMaterial(String materialCode, String materialType);
 
+    /**
+     * Get an external data management system from the openBIS AS. Returns null if the object does
+     * not exist.
+     * 
+     * @return external data management system or null
+     */
+    IExternalDataManagementSystemImmutable getExternalDataManagementSystem(
+            String externalDataManagementSystemCode);
+
     // File operations -- The source and destination paths are local to the incoming data set folder
     // or incoming directory if the data set is just one file
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExternalDataManagementSystem.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExternalDataManagementSystem.java
new file mode 100644
index 0000000000000000000000000000000000000000..69635f06bd8e0803c7938431e65f54b31f3aa158
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExternalDataManagementSystem.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.etlserver.registrator.api.v1;
+
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable;
+
+/**
+ * @author Jakub Straszewski
+ */
+public interface IExternalDataManagementSystem extends IExternalDataManagementSystemImmutable
+{
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
index 0dfcf845236a6eac3720e669123c883f257a5808..ffc3dc5b49ad4bd9abd73358b164a73eb2d3d513 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java
@@ -34,8 +34,8 @@ import ch.systemsx.cisd.etlserver.DssRegistrationLogger;
 import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState;
 import ch.systemsx.cisd.etlserver.registrator.AbstractOmniscientTopLevelDataSetRegistrator.OmniscientTopLevelDataSetRegistratorState;
 import ch.systemsx.cisd.etlserver.registrator.DataSetFile;
-import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap;
 import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails;
+import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap;
 import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationService;
 import ch.systemsx.cisd.etlserver.registrator.DataSetStorageAlgorithmRunner;
 import ch.systemsx.cisd.etlserver.registrator.IDataSetOnErrorActionDecision.ErrorType;
@@ -60,6 +60,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.authorization.IAuthorizationService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable;
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IMaterialImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IProjectImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable;
@@ -225,11 +226,13 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
         this.autoRecoverySettings = autoRecoverySettings;
     }
 
+    @Override
     public String getUserId()
     {
         return getStateAsLiveState().getUserId();
     }
 
+    @Override
     public void setUserId(String userIdOrNull)
     {
         getStateAsLiveState().setUserId(userIdOrNull);
@@ -380,6 +383,15 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
         return getStateAsLiveState().createNewMaterial(materialCode, materialType);
     }
 
+    @Override
+    public IExternalDataManagementSystemImmutable getExternalDataManagementSystem(
+            String externalDataManagementSystemCode)
+    {
+        ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem result =
+                openBisService.tryGetExternalDataManagementSystem(externalDataManagementSystemCode);
+        return (null == result) ? null : new ExternalDataManagementSystemImmutable(result);
+    }
+
     @Override
     public String moveFile(String src, IDataSet dst)
     {
@@ -420,8 +432,6 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
     {
         return registrationContext;
     }
-    
-    
 
     /**
      * Commit the transaction. Does not throw exceptions if the commit fails on some datasets!
@@ -641,7 +651,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem
     {
         return registrationService.getIncomingDataSetFile();
     }
-    
+
     @Override
     public File getIncoming()
     {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystem.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystem.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8e6aa6e8f5e6759bdd6faafc87cd3fa5312861e
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystem.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
+
+import ch.systemsx.cisd.etlserver.registrator.api.v1.IExternalDataManagementSystem;
+
+/**
+ * @author Jakub Straszewski
+ */
+public class ExternalDataManagementSystem extends ExternalDataManagementSystemImmutable implements
+        IExternalDataManagementSystem
+{
+    public ExternalDataManagementSystem(
+            ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem externalDMS)
+    {
+        super(externalDMS);
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystemImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystemImmutable.java
new file mode 100644
index 0000000000000000000000000000000000000000..295c0f1cfea35b175cc4b5f4c4906331e651587f
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExternalDataManagementSystemImmutable.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2012 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
+
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExternalDataManagementSystemImmutable;
+
+/**
+ * @author Jakub Straszewski
+ */
+public class ExternalDataManagementSystemImmutable implements
+        IExternalDataManagementSystemImmutable
+{
+    private final ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem externalDMS;
+
+    public ExternalDataManagementSystemImmutable(
+            ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem externalDMS)
+    {
+        this.externalDMS = externalDMS;
+    }
+
+    @Override
+    public String getCode()
+    {
+        return externalDMS.getCode();
+    }
+
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
index b8df2d8c23f4f4e10aeb4eb05d8aadeaa7bd6867..9f97cfbaa28a0e45fd5bf3ebeaad1ac9924b0c45 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java
@@ -50,6 +50,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletedDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria;
@@ -749,4 +750,12 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
         return service.filterToVisibleSamples(session.getSessionToken(), user, sampleIdentifiers);
     }
 
+    @Override
+    public ExternalDataManagementSystem tryGetExternalDataManagementSystem(
+            String externalDataManagementSystemCode)
+    {
+        return service.tryGetExternalDataManagementSystem(session.getToken(),
+                externalDataManagementSystemCode);
+    }
+
 }
\ No newline at end of file
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
index 85940cd0bb7afb6d50690a080a3bcddde0bcad83..6221a068ef560b2f2ac835a5b255be7f6f14fe5e 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java
@@ -34,6 +34,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DeletedDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria;
@@ -545,4 +546,12 @@ public interface IEncapsulatedOpenBISService
      */
     @ManagedAuthentication
     public List<String> filterToVisibleSamples(String user, List<String> sampleIdentifiers);
+
+    /**
+     * For given code returns the corresponding {@link ExternalDataManagementSystem}.
+     */
+    @ManagedAuthentication
+    public ExternalDataManagementSystem tryGetExternalDataManagementSystem(
+            String externalDataManagementSystemCode);
+
 }
\ No newline at end of file
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IExternalDataManagementSystemImmutable.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IExternalDataManagementSystemImmutable.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a3361a60b571224a31f07c812695eb8a0bdd059
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v1/IExternalDataManagementSystemImmutable.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1;
+
+/**
+ * 
+ *
+ * @author Jakub Straszewski
+ */
+public interface IExternalDataManagementSystemImmutable
+{
+    String getCode();
+}