diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java
index 4f86d57390467277d7cc9047009c8fe835f53971..75185f927873ca43b789f0a96c39458cb8453f46 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalDataGridColumnIDs.java
@@ -29,6 +29,12 @@ public class ExternalDataGridColumnIDs
 
     public static final String EXTERNAL_DMS_LABEL = "EXTERNAL_DMS_LABEL";
 
+    public static final String EXTERNAL_DMS_ADDRESS = "EXTERNAL_DMS_ADDRESS";
+
+    public static final String LINK_PATH = "LINK_PATH";
+
+    public static final String LINK_HASH = "LINK_HASH";
+
     public static final String DATA_SET_TYPE = "DATA_SET_TYPE";
 
     public static final String CONTAINER_DATASETS = "CONTAINER_DATASETS";
@@ -51,7 +57,7 @@ public class ExternalDataGridColumnIDs
     public static final String EXPERIMENT_TYPE = "EXPERIMENT_TYPE";
 
     public static final String PROJECT = "PROJECT";
-    
+
     public static final String PROJECT_IDENTIFIER = "PROJECT_IDENTIFIER";
 
     public static final String REGISTRATOR = "REGISTRATOR";
@@ -67,7 +73,7 @@ public class ExternalDataGridColumnIDs
     public static final String IS_COMPLETE = "IS_COMPLETE";
 
     public static final String LOCATION = "LOCATION";
-    
+
     public static final String SIZE = "SIZE";
 
     public static final String ARCHIVING_STATUS = "ARCHIVING_STATUS";
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java
index 96452a9d8ef2c85f474fc648c6be86afa3422b4c..bb73111ac646105b75793427cc0b0fec8e1d6c32 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/AbstractExternalDataProvider.java
@@ -29,11 +29,14 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDat
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_CODE;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_DATA_EXPERIMENT_IDENTIFIER;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_DATA_SAMPLE_IDENTIFIER;
+import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_DMS_ADDRESS;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_DMS_CODE;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.EXTERNAL_DMS_LABEL;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.FILE_FORMAT_TYPE;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.IS_COMPLETE;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.IS_DELETED;
+import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.LINK_HASH;
+import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.LINK_PATH;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.LOCATION;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.METAPROJECTS;
 import static ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalDataGridColumnIDs.ORDER_IN_CONTAINERS;
@@ -65,11 +68,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IContentCopy;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSet;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSetUrl;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
@@ -125,6 +126,10 @@ public abstract class AbstractExternalDataProvider extends
         builder.addColumn(DATA_STORE_CODE).hideByDefault();
         builder.addColumn(EXTERNAL_DMS_CODE).withDefaultWidth(150).hideByDefault();
         builder.addColumn(EXTERNAL_DMS_LABEL).withDefaultWidth(150).hideByDefault();
+        builder.addColumn(EXTERNAL_DMS_ADDRESS).withDefaultWidth(150).hideByDefault();
+        builder.addColumn(LINK_PATH).withDefaultWidth(150).hideByDefault();
+        builder.addColumn(LINK_HASH).withDefaultWidth(150).hideByDefault();
+
         builder.addColumn(PERM_ID).hideByDefault();
         builder.addColumn(SHOW_DETAILS_LINK).hideByDefault();
         builder.addColumn(METAPROJECTS);
@@ -141,20 +146,35 @@ public abstract class AbstractExternalDataProvider extends
                 builder.column(CODE).addEntityLink(dataSet, dataSet.getCode());
 
                 LinkDataSet linkDataSet = dataSet.tryGetAsLinkDataSet();
-                if (linkDataSet != null)
+                if (linkDataSet != null && linkDataSet.getCopies() != null)
                 {
-                    LinkTableCell externalCodeCell = new LinkTableCell();
-                    externalCodeCell.setText(linkDataSet.getExternalCode());
-                    externalCodeCell.setUrl(new LinkDataSetUrl(linkDataSet).toString());
-                    externalCodeCell.setOpenInNewWindow(true);
-                    builder.column(EXTERNAL_CODE).addValue(externalCodeCell);
-
-                    ExternalDataManagementSystem externalDms =
-                            linkDataSet.getExternalDataManagementSystem();
-                    if (externalDms != null)
+                    if (linkDataSet.getCopies().size() > 0)
                     {
-                        builder.column(EXTERNAL_DMS_CODE).addString(externalDms.getCode());
-                        builder.column(EXTERNAL_DMS_LABEL).addString(externalDms.getLabel());
+                        String dmsCodes = "";
+                        String dmsLabels = "";
+                        String dmsAddresses = "";
+                        String externalCodes = "";
+                        String paths = "";
+                        String hashes = "";
+
+                        for (IContentCopy copy : linkDataSet.getCopies())
+                        {
+                            dmsCodes += copy.getExternalDMSCode() + ", ";
+                            dmsLabels += copy.getExternalDMSLabel() + ", ";
+                            dmsAddresses += copy.getExternalDMSAddress() + ", ";
+
+                            externalCodes += emptyOnNull(copy.getExternalCode());
+                            paths += emptyOnNull(copy.getPath());
+                            hashes += emptyOnNull(copy.getCommitHash());
+                        }
+
+                        builder.column(EXTERNAL_DMS_CODE).addString(strip(dmsCodes));
+                        builder.column(EXTERNAL_DMS_LABEL).addString(strip(dmsLabels));
+                        builder.column(EXTERNAL_DMS_ADDRESS).addString(strip(dmsAddresses));
+
+                        builder.column(EXTERNAL_CODE).addString(strip(externalCodes));
+                        builder.column(LINK_PATH).addString(strip(paths));
+                        builder.column(LINK_HASH).addString(strip(hashes));
                     }
                 }
 
@@ -239,6 +259,28 @@ public abstract class AbstractExternalDataProvider extends
         return builder.getModel();
     }
 
+    private String emptyOnNull(String value)
+    {
+        if (value == null)
+        {
+            return "";
+        } else
+        {
+            return value + ", ";
+        }
+    }
+
+    private String strip(String value)
+    {
+        if (value.length() > 2)
+        {
+            return value.substring(0, value.length() - 2);
+        } else
+        {
+            return value;
+        }
+    }
+
     private void addProject(TypedTableModelBuilder<AbstractExternalData> builder, Project project)
     {
         if (project != null)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/ContentCopyRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/ContentCopyRecord.java
new file mode 100644
index 0000000000000000000000000000000000000000..563ce2b237d7a3f0b682f0e494580d595ce8b0ca
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/ContentCopyRecord.java
@@ -0,0 +1,23 @@
+package ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister;
+
+import ch.rinn.restrictions.Private;
+import ch.systemsx.cisd.openbis.generic.server.business.bo.common.CodeRecord;
+
+/**
+ * A record object representing one row of the content_copies table.
+ */
+@Private
+public class ContentCopyRecord extends CodeRecord
+{
+    public String edms_code;
+
+    public String edms_label;
+
+    public String edms_address;
+
+    public String external_code;
+
+    public String path;
+
+    public String hash;
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
index dfec3ec8d35385152c2ad88ea31d956f3978f7a3..90fec95f37bb0d6a4bac87d7f26a9ea862753f11 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetLister.java
@@ -74,6 +74,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystemType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileSystemContentCopy;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IContentCopy;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocationNode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkDataSet;
@@ -82,9 +84,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PhysicalDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TrackingDataSetCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.UrlContentCopy;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId;
 import ch.systemsx.cisd.openbis.generic.shared.translator.DataStoreTranslator;
-
 import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
 import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
@@ -356,7 +358,7 @@ public class DatasetLister extends AbstractLister implements IDatasetLister
             result.put(sample, new ArrayList<AbstractExternalData>());
             sampleIDs.add(sample.getId());
         }
-        List<AbstractExternalData> rootDataSets = listBySampleIds(sampleIDs, 
+        List<AbstractExternalData> rootDataSets = listBySampleIds(sampleIDs,
                 EnumSet.of(DataSetFetchOption.BASIC, DataSetFetchOption.PROPERTIES));
         addChildren(rootDataSets);
         for (AbstractExternalData dataSet : rootDataSets)
@@ -397,7 +399,7 @@ public class DatasetLister extends AbstractLister implements IDatasetLister
         }
         if (childIDs.isEmpty() == false)
         {
-            List<AbstractExternalData> children = listByDatasetIds(childIDs, 
+            List<AbstractExternalData> children = listByDatasetIds(childIDs,
                     EnumSet.of(DataSetFetchOption.BASIC, DataSetFetchOption.PROPERTIES));
             for (AbstractExternalData child : children)
             {
@@ -1009,7 +1011,7 @@ public class DatasetLister extends AbstractLister implements IDatasetLister
             }
         }
     }
-    
+
     private void enrichWithContainers(Long2ObjectMap<AbstractExternalData> datasetMap)
     {
         Set<Long> containersNotLoaded = new HashSet<Long>();
@@ -1182,14 +1184,22 @@ public class DatasetLister extends AbstractLister implements IDatasetLister
 
         convertStandardAttributes(linkDataSet, record);
 
-        if (record.edms_id != null)
+        List<ContentCopyRecord> copyRecords = query.getContentCopiesOf(record.id);
+        List<IContentCopy> copies = new ArrayList<>();
+        for (ContentCopyRecord copyRecord : copyRecords)
         {
-
-            linkDataSet.setExternalDataManagementSystem(externalDataManagementSystems
-                    .get(record.edms_id));
-            linkDataSet.setExternalCode(record.external_code);
+            if (copyRecord.external_code != null)
+            {
+                copies.add(new UrlContentCopy(copyRecord.edms_code, copyRecord.edms_label, copyRecord.edms_address, copyRecord.external_code));
+            } else
+            {
+                copies.add(new FileSystemContentCopy(copyRecord.edms_code, copyRecord.edms_label, copyRecord.edms_address, copyRecord.edms_address,
+                        copyRecord.hash, copyRecord.path));
+            }
         }
 
+        linkDataSet.setCopies(copies);
+
         return linkDataSet;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
index 3a0415314aa435eb9cdc0125236d8ce76df199aa..9b0810933e8ef51d97a18874818b3f35ff3216f8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/DatasetRecord.java
@@ -66,11 +66,5 @@ public class DatasetRecord extends CodeRecord
 
     public Boolean storage_confirmation;
 
-    // link data set
-
-    public Long edms_id;
-
-    public String external_code;
-
     public Boolean is_post_registered;
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
index 95831ed008dae4f9ea1b7bcf7e36758f17949c74..528846f0a1f68dfbf6c141c4b968eb8e5fd4d07e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/datasetlister/IDatasetListingQuery.java
@@ -355,4 +355,10 @@ public interface IDatasetListingQuery extends BaseQuery, IPropertyListingQuery
                     LongSetMapper.class }, fetchSize = FETCH_SIZE)
     public List<MetaProjectWithEntityId> getMetaprojects(LongSet entityIds, Long userId);
 
+    @Select(sql = "SELECT edms.code AS edms_code, edms.label AS edms_label, edms.address AS edms_address, "
+            + " cc.external_code AS external_code, cc.path as path, cc.git_commit_hash AS hash "
+            + " FROM content_copies cc, external_data_management_systems edms "
+            + " WHERE cc.edms_id = edms.id AND cc.data_id = ?{1}")
+    public List<ContentCopyRecord> getContentCopiesOf(long id);
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java
index ecc51545adad928daacc007806430e3f4ec3c61f..8f9fcd7e9fd525b3daab0b1acdc94aef5bdd12ba 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/detailed/IndexFieldNameHelper.java
@@ -175,7 +175,7 @@ class IndexFieldNameHelper
             case EXTERNAL_DMS_LABEL:
                 return SearchFieldConstants.PREFIX_CONTENT_COPY + SearchFieldConstants.PREFIX_EXTERNAL_DMS + SearchFieldConstants.LABEL;
 
-            case ADDRESS:
+            case EXTERNAL_DMS_ADDRESS:
                 return SearchFieldConstants.PREFIX_CONTENT_COPY + SearchFieldConstants.PREFIX_EXTERNAL_DMS + SearchFieldConstants.ADDRESS;
 
             case EXTERNAL_CODE:
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetAttributeSearchFieldKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetAttributeSearchFieldKind.java
index 8b52936fdbfb6a0e8d6eb8c0fa2e8ef188f806fd..0a976ead398333a57ac4fe97e563677a92317063 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetAttributeSearchFieldKind.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/DataSetAttributeSearchFieldKind.java
@@ -85,13 +85,13 @@ public enum DataSetAttributeSearchFieldKind implements Serializable, IAttributeS
 
     EXTERNAL_DMS_LABEL("External DMS label"),
 
-    ADDRESS("Link address"),
+    EXTERNAL_DMS_ADDRESS("External DMS address"),
 
     EXTERNAL_CODE("Link external code"),
 
     PATH("Link path"),
 
-    COMMIT_HASH("Link git commit hash");
+    COMMIT_HASH("Link commit hash");
 
     private final String description;
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/FileSystemContentCopy.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/FileSystemContentCopy.java
index a12824bb63fd778bfb2f60c29f424256ee0f49a8..349f679ab713618bc63eaac56e6112aa19a4ce9b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/FileSystemContentCopy.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/FileSystemContentCopy.java
@@ -50,4 +50,40 @@ public class FileSystemContentCopy implements IContentCopy
             return "External DMS: " + labelString + "</br>Host: " + host + "<br/>Directory: " + directory + path + "<br>Commit hash:" + hash;
         }
     }
+
+    @Override
+    public String getExternalDMSCode()
+    {
+        return this.code;
+    }
+
+    @Override
+    public String getExternalDMSLabel()
+    {
+        return this.label;
+    }
+
+    @Override
+    public String getExternalDMSAddress()
+    {
+        return this.host;
+    }
+
+    @Override
+    public String getPath()
+    {
+        return this.path;
+    }
+
+    @Override
+    public String getCommitHash()
+    {
+        return this.hash;
+    }
+
+    @Override
+    public String getExternalCode()
+    {
+        return null;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IContentCopy.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IContentCopy.java
index e76bdd68129bcfdda4b1e33b832e576fbe4eaf9d..87c1bad8b306bdd7cfa6653a67bd448fd52c1d1e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IContentCopy.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/IContentCopy.java
@@ -4,5 +4,18 @@ import java.io.Serializable;
 
 public interface IContentCopy extends Serializable
 {
+
+    String getExternalDMSCode();
+
+    String getExternalDMSLabel();
+
+    String getExternalDMSAddress();
+
+    String getPath();
+
+    String getCommitHash();
+
+    String getExternalCode();
+
     String getLocation();
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UrlContentCopy.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UrlContentCopy.java
index 32b28dc20000901e9a1ecd29486df5058445109c..3cd2e15f0d84a6b39c78fb2b75730fbb8b628fad 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UrlContentCopy.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/UrlContentCopy.java
@@ -10,11 +10,14 @@ public class UrlContentCopy implements IContentCopy
 
     private String url;
 
-    public UrlContentCopy(String code, String label, String url)
+    private String externalCode;
+
+    public UrlContentCopy(String code, String label, String url, String externalCode)
     {
         this.code = code;
         this.label = label;
         this.url = url;
+        this.externalCode = externalCode;
     }
 
     public UrlContentCopy()
@@ -35,4 +38,40 @@ public class UrlContentCopy implements IContentCopy
 
         return "External DMS: " + labelString + "</br>Link: <a class=\"gwt-Anchor\" href=\"" + url + "\" target=\"_blank\" \">" + url + "</a><br>";
     }
+
+    @Override
+    public String getExternalDMSCode()
+    {
+        return this.code;
+    }
+
+    @Override
+    public String getExternalDMSLabel()
+    {
+        return this.label;
+    }
+
+    @Override
+    public String getExternalDMSAddress()
+    {
+        return this.url;
+    }
+
+    @Override
+    public String getPath()
+    {
+        return null;
+    }
+
+    @Override
+    public String getCommitHash()
+    {
+        return null;
+    }
+
+    @Override
+    public String getExternalCode()
+    {
+        return this.externalCode;
+    }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
index 8069f75bc67f3edf4f191649263e8b985ab8b570..6a86562b006620c94b8dc2713f197d4ee97f4663 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
@@ -361,7 +361,7 @@ public class DataSetTranslator
             } else
             {
                 translatedCopy = new UrlContentCopy(edms.getCode(), edms.getLabel(),
-                        address.replaceAll(Pattern.quote("${") + ".*" + Pattern.quote("}"), copy.getExternalCode()));
+                        address.replaceAll(Pattern.quote("${") + ".*" + Pattern.quote("}"), copy.getExternalCode()), copy.getExternalCode());
             }
             translatedCopies.add(translatedCopy);
         }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
index df7fba8de11c7e8b6b6b5687ca5d569bbb941ce7..85c9cf91b8e485151fa811f31fe641382cc50948 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/common-dictionary.js
@@ -843,9 +843,12 @@ var common = {
  confirm_dataset_upload_comment_field: "Comment",
  confirm_dataset_upload_user_field: "CIFEX user",
  confirm_dataset_upload_password_field: "CIFEX password",
- external_code: "External Code",
+ external_code: "Link External Code",
  external_dms_code: "External DMS Code",
  external_dms_label: "External DMS Label",
+ external_dms_address: "External DMS Address",
+ link_path: "Link Path",
+ link_hash: "Link Commit Hash",
  
  //
  // Data Set Viewer