diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerExtended.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerRpc.java
similarity index 73%
rename from datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerExtended.java
rename to datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerRpc.java
index a4f63ce595e246672ed0ba5eaf268bca9934b53f..d4d95561ffb07d022cd73f190efa57dffa3c03ed 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerExtended.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/IDataSetHandlerRpc.java
@@ -20,11 +20,14 @@ import java.io.File;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 
 /**
+ * The interface for data set handlers that are used in RPC situtations.
+ * 
  * @author Chandrasekhar Ramakrishnan
  */
-public interface IDataSetHandlerExtended extends IDataSetHandler
+public interface IDataSetHandlerRpc extends IDataSetHandler
 {
     /**
      * Handles the data set using the template to get default information for the data sets to be
@@ -36,4 +39,14 @@ public interface IDataSetHandlerExtended extends IDataSetHandler
      */
     public List<DataSetInformation> handleDataSet(final File dataSet,
             final DataSetInformation template);
+
+    /**
+     * Returns the session context for the current user.
+     */
+    public SessionContextDTO getSessionContext();
+
+    /**
+     * Get the file for a path from the data store.
+     */
+    public File getStoreFileForPath(String path);
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java
index cd160ccbe8ad92246ac885105c37457ff6cbedd7..d493c142f5e98fc97eefb2606177da17ada0f49f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/api/v1/PutDataSetExecutor.java
@@ -39,7 +39,7 @@ import ch.systemsx.cisd.common.mail.IMailClient;
 import ch.systemsx.cisd.common.utilities.IDelegatedActionWithResult;
 import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm;
 import ch.systemsx.cisd.etlserver.IDataSetHandler;
-import ch.systemsx.cisd.etlserver.IDataSetHandlerExtended;
+import ch.systemsx.cisd.etlserver.IDataSetHandlerRpc;
 import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor;
 import ch.systemsx.cisd.etlserver.IDataStrategyStore;
 import ch.systemsx.cisd.etlserver.IETLServerPlugin;
@@ -56,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseInstance;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType;
+import ch.systemsx.cisd.openbis.generic.shared.dto.SessionContextDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
@@ -69,7 +70,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-class PutDataSetExecutor implements IDataSetHandlerExtended
+class PutDataSetExecutor implements IDataSetHandlerRpc
 {
     // General State
     private final PutDataSetService service;
@@ -180,6 +181,11 @@ class PutDataSetExecutor implements IDataSetHandlerExtended
         return Collections.singletonList(helper.getDataSetInformation());
     }
 
+    public SessionContextDTO getSessionContext()
+    {
+        return getOpenBisService().tryGetSession(sessionToken);
+    }
+
     private void createDefaultOverride()
     {
         override = new DataSetInformation();
@@ -536,12 +542,17 @@ class PutDataSetExecutor implements IDataSetHandlerExtended
                 dataSetInfo.setDataSetProperties(override.getDataSetProperties());
             }
 
-            dataSetInfo.setUploadingUserEmail(service.getOpenBisService().tryGetSession()
-                    .getUserEmail());
+            dataSetInfo.setUploadingUserEmail(service.getOpenBisService().tryGetSession(
+                    sessionToken).getUserEmail());
 
             // TODO: When registering, set the registrator to the session owner; only an admin on
             // the space or an ETL server can override.
             return dataSetInfo;
         }
     }
+
+    public File getStoreFileForPath(String path)
+    {
+        return new File(service.getStoreRootDirectory(), path);
+    }
 }
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 a7ada36c132cf0e131686d6d6299ea92635f56fd..2ffbf55024232f380b9a6277e7fd3f8eecf0a94c 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
@@ -708,8 +708,8 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer
                 containerPermId, codes, sampleTypeCode));
     }
 
-    public SessionContextDTO tryGetSession()
+    public SessionContextDTO tryGetSession(String sToken)
     {
-        return service.tryGetSession(sessionToken);
+        return service.tryGetSession(sToken);
     }
 }
\ 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 22af017aa6ada5b02b171651c743e2ae3c23f2b2..6b53e3327047f843a0a345bab5bfe8ed6f9b3954 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
@@ -232,6 +232,7 @@ public interface IEncapsulatedOpenBISService
     public Map<String, String> listOrRegisterComponents(final String containerPermId,
             Set<String> codes, String sampleTypeCode) throws UserFailureException;
 
-    /** See {@link IETLLIMSService#tryGetSession(String)} */
-    public SessionContextDTO tryGetSession();
+    /** See {@link IETLLIMSService#tryGetSession(String)} 
+     * @param sessionToken */
+    public SessionContextDTO tryGetSession(String sessionToken);
 }
\ No newline at end of file