diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
index 0c3e86726f8d0075e60d9ea6fd9aa3a4fe870afe..aef5328702350ee0f2ee6c486758bceee89bd084 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java
@@ -365,24 +365,24 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
     }
 
     @Override
-    public void unarchiveDatasets(String sessionToken, List<DatasetDescription> datasets,
+    public void unarchiveDatasets(String sessionToken, String userSessionToken, List<DatasetDescription> datasets,
             String userId, String userEmailOrNull)
     {
         String description = "Unarchiving";
         IProcessingPluginTask task = new UnarchiveProcessingPluginTask(getArchiverPlugin());
 
-        scheduleTask(sessionToken, description, task, datasets, userId, userEmailOrNull);
+        scheduleTask(sessionToken, userSessionToken, description, task, datasets, userId, userEmailOrNull);
     }
 
     @Override
-    public void archiveDatasets(String sessionToken, List<DatasetDescription> datasets,
+    public void archiveDatasets(String sessionToken, String userSessionToken, List<DatasetDescription> datasets,
             String userId, String userEmailOrNull, boolean removeFromDataStore)
     {
         String description = removeFromDataStore ? "Archiving" : "Copying data sets to archive";
         IProcessingPluginTask task =
                 new ArchiveProcessingPluginTask(getArchiverPlugin(), removeFromDataStore);
 
-        scheduleTask(sessionToken, description, task, datasets, userId, userEmailOrNull);
+        scheduleTask(sessionToken, userSessionToken, description, task, datasets, userId, userEmailOrNull);
     }
 
     @Override
@@ -431,7 +431,7 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
         return new MailClient(mailClientParameters);
     }
 
-    private void scheduleTask(String sessionToken, String description,
+    private void scheduleTask(String sessionToken, String userSessionToken, String description,
             IProcessingPluginTask processingTask, List<DatasetDescription> datasets, String userId,
             String userEmailOrNull)
     {
@@ -440,7 +440,7 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
                 DatastoreServiceDescription.processing(description, description, null, null);
         Map<String, String> parameterBindings = Collections.<String, String> emptyMap();
         commandExecutor.scheduleProcessDatasets(processingTask, datasets, parameterBindings,
-                userId, userEmailOrNull, sessionToken, pluginDescription, mailClientParameters);
+                userId, userEmailOrNull, userSessionToken, pluginDescription, mailClientParameters);
     }
 
     private static class ArchiveProcessingPluginTask implements IProcessingPluginTask
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java
index d96e6d5ab36ae40245c3fffae9beb9e4886f98a3..1b6870116c80dea41a65a61937eb5ae09a27ea51 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java
@@ -146,7 +146,7 @@ class DataStoreServiceLogger implements IDataStoreService, IInitializable
     }
 
     @Override
-    public void unarchiveDatasets(String sessionToken, List<DatasetDescription> datasets,
+    public void unarchiveDatasets(String sessionToken, String userSessionToken, List<DatasetDescription> datasets,
             String userId, String userEmailOrNull)
     {
         log("activateDatasets", "NO_OF_DATASETS(%s) USER_ID (%s) USER_EMAIL(%s)", datasets.size(),
@@ -154,7 +154,7 @@ class DataStoreServiceLogger implements IDataStoreService, IInitializable
     }
 
     @Override
-    public void archiveDatasets(String sessionToken, List<DatasetDescription> datasets,
+    public void archiveDatasets(String sessionToken, String userSessionToken, List<DatasetDescription> datasets,
             String userId, String userEmailOrNull, boolean removeFromDataStore)
     {
         log("archiveDatasets",
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
index fa1509aa9892a5045881ef889176eca848b54af3..d66d4ff6e5a12809caee5fcb1f115dfe473f727a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java
@@ -757,7 +757,8 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements
                 public void execute(String sessionToken, IDataStoreService service,
                         List<DatasetDescription> descriptions, String userId, String userEmailOrNull)
                 {
-                    service.unarchiveDatasets(sessionToken, descriptions, userId, userEmailOrNull);
+                    service.unarchiveDatasets(sessionToken, session.getSessionToken(),
+                            descriptions, userId, userEmailOrNull);
                 }
 
                 @Override
@@ -779,8 +780,8 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements
                 public void execute(String sessionToken, IDataStoreService service,
                         List<DatasetDescription> descriptions, String userId, String userEmailOrNull)
                 {
-                    service.archiveDatasets(sessionToken, descriptions, userId, userEmailOrNull,
-                            removeFromDataStore);
+                    service.archiveDatasets(sessionToken, session.getSessionToken(), descriptions,
+                            userId, userEmailOrNull, removeFromDataStore);
                 }
 
                 @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java
index 5ced05af6a32e37361087d2cf0bbb6b719148a36..2bf39a876b6c9e65738fa88de1ccef8c0bfed0a8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.generic.shared;
 import java.util.List;
 import java.util.Map;
 
+import ch.systemsx.cisd.common.exception.InvalidAuthenticationException;
 import ch.systemsx.cisd.openbis.common.conversation.annotation.Conversational;
 import ch.systemsx.cisd.openbis.common.conversation.annotation.Progress;
-import ch.systemsx.cisd.common.exception.InvalidAuthenticationException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CustomImportFile;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation;
@@ -113,8 +113,9 @@ public interface IDataStoreService
      * @param removeFromDataStore when set to <code>true</code> the data sets will be removed from
      *            the data store after a successful archiving operation.
      */
-    public void archiveDatasets(String sessionToken, List<DatasetDescription> datasets,
-            String userId, String userEmailOrNull, boolean removeFromDataStore);
+    public void archiveDatasets(String sessionToken, String userSessionToken,
+            List<DatasetDescription> datasets, String userId, String userEmailOrNull,
+            boolean removeFromDataStore);
 
     /**
      * Schedules unarchiving of provided datasets.
@@ -124,8 +125,8 @@ public interface IDataStoreService
      *            the task is finished. It may be null if the user doesn't have email and no message
      *            will be send in such case.
      */
-    public void unarchiveDatasets(String sessionToken, List<DatasetDescription> datasets,
-            String userId, String userEmailOrNull);
+    public void unarchiveDatasets(String sessionToken, String userSessionToken,
+            List<DatasetDescription> datasets, String userId, String userEmailOrNull);
 
     /**
      * Gets the link from a service that supports the IReportingPluginTask#createLink method.
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
index 3e48b5f21096eff1d75d895c00c312bd09eb13fb..3f090bb614ab36daf87b58d655ed299a4f39eb05 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java
@@ -679,8 +679,9 @@ public final class DataSetTableTest extends AbstractBOTest
 
                     prepareUpdateDatasetStatuses(allDataSets, ARCHIVE_PENDING);
 
+                    String userSessionToken = ManagerTestTool.EXAMPLE_SESSION.getSessionToken();
                     allowing(dataStoreService2).archiveDatasets(
-                            with(equal(dss2.getSessionToken())),
+                            with(equal(dss2.getSessionToken())), with(equal(userSessionToken)),
                             with(createDatasetDescriptionsMatcher(d2Array)),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId())),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getEmail())),
@@ -688,7 +689,7 @@ public final class DataSetTableTest extends AbstractBOTest
                     will(throwException(new RuntimeException()));
 
                     allowing(dataStoreService3).archiveDatasets(
-                            with(equal(dss3.getSessionToken())),
+                            with(equal(dss3.getSessionToken())), with(equal(userSessionToken)),
                             with(createDatasetDescriptionsMatcher(d3Array)),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId())),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getEmail())),
@@ -737,7 +738,9 @@ public final class DataSetTableTest extends AbstractBOTest
         context.checking(new Expectations()
             {
                 {
+                    String userSessionToken = ManagerTestTool.EXAMPLE_SESSION.getSessionToken();
                     one(service).archiveDatasets(with(equal(store.getSessionToken())),
+                            with(equal(userSessionToken)),
                             with(createDatasetDescriptionsMatcher(dataSets)),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId())),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getEmail())),
@@ -752,7 +755,9 @@ public final class DataSetTableTest extends AbstractBOTest
         context.checking(new Expectations()
             {
                 {
+                    String userSessionToken = ManagerTestTool.EXAMPLE_SESSION.getSessionToken();
                     one(service).unarchiveDatasets(with(equal(store.getSessionToken())),
+                            with(equal(userSessionToken)),
                             with(createDatasetDescriptionsMatcher(dataSets)),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId())),
                             with(equal(ManagerTestTool.EXAMPLE_PERSON.getEmail())));