diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSetProcessingContext.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSetProcessingContext.java
index 07a8c834ecd08983c9fd8a603d51846fcb1095f7..d2a8624a4d0a25fca49b75dac47f918b7f5b7cf0 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSetProcessingContext.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/DataSetProcessingContext.java
@@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IProcessingPlug
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.ISessionWorkspaceProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
+import ch.systemsx.cisd.openbis.generic.shared.dto.OpenBISSessionHolder;
 
 /**
  * Context for processing data sets by a {@link IProcessingPluginTask}.
@@ -165,6 +166,7 @@ public class DataSetProcessingContext
 
     public IHierarchicalContentProvider getHierarchicalContentProvider()
     {
+        final IHierarchicalContentProvider contentProvider = getContentProvider();
         return new IHierarchicalContentProvider()
             {
 
@@ -172,7 +174,7 @@ public class DataSetProcessingContext
                 public IHierarchicalContent asContent(ExternalData dataSet)
                 {
                     assertAuthorization(dataSet.getCode());
-                    return hierarchicalContentProvider.asContent(dataSet);
+                    return contentProvider.asContent(dataSet);
                 }
 
                 @Override
@@ -180,33 +182,46 @@ public class DataSetProcessingContext
                         throws IllegalArgumentException
                 {
                     assertAuthorization(dataSetCode);
-                    return hierarchicalContentProvider.asContent(dataSetCode);
+                    return contentProvider.asContent(dataSetCode);
                 }
 
                 @SuppressWarnings("deprecation")
                 @Override
                 public IHierarchicalContent asContent(File datasetDirectory)
                 {
-                    return hierarchicalContentProvider.asContent(datasetDirectory);
+                    return contentProvider.asContent(datasetDirectory);
                 }
 
                 @SuppressWarnings("deprecation")
                 @Override
                 public IHierarchicalContent asContent(IDatasetLocation datasetLocation)
                 {
-                    return hierarchicalContentProvider.asContent(datasetLocation);
+                    return contentProvider.asContent(datasetLocation);
                 }
 
                 @Override
                 public IHierarchicalContentProvider cloneFor(
                         ISessionTokenProvider sessionTokenProvider)
                 {
-                    return hierarchicalContentProvider.cloneFor(sessionTokenProvider);
+                    return contentProvider.cloneFor(sessionTokenProvider);
                 }
                 
             };
     }
-    
+
+    private IHierarchicalContentProvider getContentProvider()
+    {
+        if (sessionTokenOrNull == null)
+        {
+            return hierarchicalContentProvider;
+        }
+        OpenBISSessionHolder sessionHolder = new OpenBISSessionHolder();
+        sessionHolder.setSessionToken(sessionTokenOrNull);
+        final IHierarchicalContentProvider contentProvider =
+                hierarchicalContentProvider.cloneFor(sessionHolder);
+        return contentProvider;
+    }
+
     public IHierarchicalContentProvider getHierarchicalContentProviderUnfiltered()
     {
         return hierarchicalContentProvider;