diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
index 262e5f2682702e764a57bc2afa0c7c16631a7403..3258c7fe1e5eaf4dfb8843686824aea53f7cd798 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/HierarchicalContentProvider.java
@@ -35,6 +35,8 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
 
     private IHierarchicalContentFactory hierarchicalContentFactory;
 
+    private IEncapsulatedOpenBISService openbisService;
+
     private IDataSetDirectoryProvider getDataSetDirectoryProvider()
     {
         if (directoryProvider == null)
@@ -56,21 +58,26 @@ public class HierarchicalContentProvider implements IHierarchicalContentProvider
         return hierarchicalContentFactory;
     }
 
-    public IHierarchicalContent asContent(String dataSetCode)
+    private IEncapsulatedOpenBISService getOpenBISService()
     {
-        File dataSetDirectory = null; // TODO
-        return asContent(dataSetDirectory);
+        if (openbisService == null)
+        {
+            openbisService = ServiceProvider.getOpenBISService();
+        }
+        return openbisService;
     }
 
-    public IHierarchicalContent asContent(ExternalData externalData)
+    public IHierarchicalContent asContent(String dataSetCode)
     {
-        File dataSetDirectory = null; // TODO
-        return asContent(dataSetDirectory);
+        // this is temporary implementation - it shouldn't access openBIS after LMS-2172 is done
+        ExternalData dataSet = getOpenBISService().tryGetDataSet(dataSetCode);
+        return asContent(dataSet);
     }
 
-    public IHierarchicalContent asContent(IDatasetLocation dataset)
+    public IHierarchicalContent asContent(IDatasetLocation datasetLocation)
     {
-        File dataSetDirectory = getDataSetDirectoryProvider().getDataSetDirectory(dataset);
+        // this is temporary implementation - it should access DB instead of filesystem
+        File dataSetDirectory = getDataSetDirectoryProvider().getDataSetDirectory(datasetLocation);
         return asContent(dataSetDirectory);
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
index 392a27fc34ea30644fd307720c7c175d5cc0b91d..b1bcad893adb4ddca00b8f639ee22c019bd4f3e9 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IHierarchicalContentProvider.java
@@ -17,7 +17,6 @@
 package ch.systemsx.cisd.openbis.dss.generic.shared;
 
 import ch.systemsx.cisd.common.io.IHierarchicalContent;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.IDatasetLocation;
 
 /**
@@ -31,8 +30,6 @@ public interface IHierarchicalContentProvider
 
     IHierarchicalContent asContent(String dataSetCode);
 
-    IHierarchicalContent asContent(ExternalData externalData);
-
     IHierarchicalContent asContent(IDatasetLocation datasetLocation);
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
index 77013d7431098256e9c17813f3fbeeb9be2a4fcf..b7e410b56193a537a247e87dbba8609c34cd5fc8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ExternalData.java
@@ -24,6 +24,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWit
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IInvalidationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
+import ch.systemsx.cisd.openbis.generic.shared.dto.IDatasetLocation;
 
 /**
  * A DTO for external data sets.
@@ -32,7 +33,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IPermIdHolder;
  */
 public class ExternalData extends CodeWithRegistration<ExternalData> implements
         IInvalidationProvider, IEntityInformationHolderWithProperties, IIdAndCodeHolder,
-        IPermIdHolder
+        IPermIdHolder, IDatasetLocation
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
@@ -57,7 +58,7 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements
     private Collection<ExternalData> parents;
 
     private Long size;
-    
+
     private String location;
 
     private FileFormatType fileFormatType;
@@ -342,6 +343,18 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements
         return getCode();
     }
 
+    // IDatasetLocation
+
+    public String getDataSetLocation()
+    {
+        return getLocation();
+    }
+
+    public String getDatasetCode()
+    {
+        return getCode();
+    }
+
     // 'transient'
 
     public String getSourceType()