diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/externaldms/ExternalDmsTranslator.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/externaldms/ExternalDmsTranslator.java
index f5fe7d2c10ca87ca9e1b6d778df71b4376841e28..8066b7742f7e54b17e903fa22742204d1c97338f 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/externaldms/ExternalDmsTranslator.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/externaldms/ExternalDmsTranslator.java
@@ -24,6 +24,7 @@ import org.springframework.stereotype.Component;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.ExternalDms;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.ExternalDmsAddressType;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.fetchoptions.ExternalDmsFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.id.ExternalDmsPermId;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.AbstractCachingTranslator;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.TranslationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.TranslationResults;
@@ -65,6 +66,7 @@ public class ExternalDmsTranslator extends AbstractCachingTranslator<Long, Exter
         TranslationResults relations = (TranslationResults) objectRelations;
         ExternalDmsBaseRecord baseRecord = relations.get(IExternalDmsBaseTranslator.class, externalDmsId);
 
+        result.setPermId(new ExternalDmsPermId(baseRecord.code));
         result.setCode(baseRecord.code);
         result.setLabel(baseRecord.label);
         result.setUrlTemplate(baseRecord.address);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/externaldms/ExternalDms.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/externaldms/ExternalDms.js
index d0f8dceaebfb58cccc4724bc6721f9c8d9bc8bc8..f1b4ec4860d766ca43e02a38f3d2c6a6149a2ba7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/externaldms/ExternalDms.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/externaldms/ExternalDms.js
@@ -9,6 +9,7 @@ define([ "stjs", "util/Exceptions" ], function(stjs, exceptions) {
 		prototype['@type'] = 'as.dto.externaldms.ExternalDms';
 		constructor.serialVersionUID = 1;
 		prototype.fetchOptions = null;
+		prototype.permId = null;
 		prototype.code = null;
 		prototype.label = null;
 		prototype.urlTemplate = null;
@@ -22,6 +23,12 @@ define([ "stjs", "util/Exceptions" ], function(stjs, exceptions) {
 		prototype.setFetchOptions = function(fetchOptions) {
 			this.fetchOptions = fetchOptions;
 		};
+		prototype.getPermId = function() {
+			return this.permId;
+		};
+		prototype.setPermId = function(permId) {
+			this.permId = permId;
+		};
 		prototype.getCode = function() {
 			return this.code;
 		};
@@ -62,6 +69,7 @@ define([ "stjs", "util/Exceptions" ], function(stjs, exceptions) {
 			return "ExternalDms " + this.code;
 		};
 	}, {
+		permId : "ExternalDmsPermId",
 		fetchOptions : "ExternalDmsFetchOptions",
 		addressType : "ExternalDmsAddressType"
 	});
diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractExternalDmsTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractExternalDmsTest.java
index 00f2b0d613092f3870cca4abf2c1ca185aeb1ad4..4ebd347d20de81d1e3ddda5535225580819bca2e 100644
--- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractExternalDmsTest.java
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractExternalDmsTest.java
@@ -208,6 +208,7 @@ public abstract class AbstractExternalDmsTest extends AbstractTest
                     return Objects.equals(edms.getAddress(), another.getAddress()) &&
                             Objects.equals(edms.getAddressType(), another.getAddressType()) &&
                             Objects.equals(edms.getCode(), another.getCode()) &&
+                            Objects.equals(edms.getPermId(), another.getPermId()) &&
                             Objects.equals(edms.getLabel(), another.getLabel()) &&
                             Objects.equals(edms.getUrlTemplate(), another.getUrlTemplate());
                 }
diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/externaldms/ExternalDms.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/externaldms/ExternalDms.java
index 8a384c5e8b0e8d588de3845b68ebcfb9ceb83e50..77ce59482dbd30b4574a6a1f2ed3fbea585c57b8 100644
--- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/externaldms/ExternalDms.java
+++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/externaldms/ExternalDms.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICodeHolder;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.fetchoptions.ExternalDmsFetchOptions;
+import ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.id.ExternalDmsPermId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 import ch.systemsx.cisd.common.annotation.TechPreview;
 
@@ -36,6 +37,9 @@ public class ExternalDms implements Serializable, ICodeHolder
     @JsonProperty
     private ExternalDmsFetchOptions fetchOptions;
 
+    @JsonProperty
+    private ExternalDmsPermId permId;
+    
     @JsonProperty
     private String code;
 
@@ -66,7 +70,17 @@ public class ExternalDms implements Serializable, ICodeHolder
     {
         this.fetchOptions = fetchOptions;
     }
-
+    @JsonIgnore
+    public ExternalDmsPermId getPermId()
+    {
+        return permId;
+    }
+    
+    public void setPermId(ExternalDmsPermId permId)
+    {
+        this.permId = permId;
+    }
+    
     // Method automatically generated with DtoGenerator
     @JsonIgnore
     @Override