diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties
index e86f9fa5cb762255b413e13f4ace9bf206491cb6..a0ad5b4da2a91798c9adb78d66e6ffb0e9bb4219 100644
--- a/datastore_server/dist/etc/service.properties
+++ b/datastore_server/dist/etc/service.properties
@@ -4,6 +4,9 @@ data-store-server-code = DSS1
 # The root directory of the data store
 storeroot-dir = data/store
 
+# The directory where the command queue file is located; defaults to storeroot-dir 
+commandqueue-dir =
+
 # Port
 port = 8444
 
diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties
index c479994f10eeb0fed788695f40ee84fab6c3e168..35f1bb2dfd6f1cecb71451a4fc2e2754613442b7 100644
--- a/datastore_server/etc/service.properties
+++ b/datastore_server/etc/service.properties
@@ -4,6 +4,9 @@ data-store-server-code = my-dss
 # The root directory of the data store
 storeroot-dir = targets/store
 
+# The directory where the command queue file is located; defaults to storeroot-dir 
+commandqueue-dir =
+
 # Port
 port = 8889
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
index 20484481b65ead60cf8989906ac27082db527416..9e48f5b056e9fc2c36eb81d2a1ad71c95075f021 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataSetCommandExecutor.java
@@ -47,10 +47,10 @@ class DataSetCommandExecutor implements IDataSetCommandExecutor
 
     private final IExtendedBlockingQueue<IDataSetCommand> commandQueue;
 
-    public DataSetCommandExecutor(File store)
+    public DataSetCommandExecutor(File store, File queueDir)
     {
         this.store = store;
-        File queueFile = getCommandQueueFile(store);
+        File queueFile = getCommandQueueFile(queueDir);
         commandQueue =
                 ExtendedBlockingQueueFactory.<IDataSetCommand> createPersistRecordBased(queueFile);
     }
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 69c27cde5aab34c293aad8d2d1f577b45553f173..d4b898ef44cabbdee0d1b5bf7498d1b80051eab5 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
@@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IProcessingPlug
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.PluginTaskProvider;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.PluginTaskProviders;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
 import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
@@ -56,6 +57,8 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
     private final PluginTaskProviders pluginTaskParameters;
 
     private File storeRoot;
+    
+    private File commandQueueDirOrNull;
 
     private IDataSetCommandExecutor commandExecuter;
 
@@ -64,9 +67,9 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
     {
         this(sessionTokenManager, new IDataSetCommandExecutorFactory()
             {
-                public IDataSetCommandExecutor create(File store)
+                public IDataSetCommandExecutor create(File store, File queueDir)
                 {
-                    return new DataSetCommandExecutor(store);
+                    return new DataSetCommandExecutor(store, queueDir);
                 }
             }, mailClientParameters, pluginTaskParameters);
     }
@@ -86,6 +89,17 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
         this.storeRoot = storeRoot;
     }
 
+    public final void setCommandQueueDir(String queueDirOrNull)
+    {
+        if (StringUtils.isBlank(queueDirOrNull))
+        {
+            this.commandQueueDirOrNull = null;
+        } else
+        {
+            this.commandQueueDirOrNull = new File(queueDirOrNull);
+        }
+    }
+
     public void afterPropertiesSet()
     {
         String prefix = "Property 'storeRoot' ";
@@ -111,7 +125,11 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic
                 operationLog.info("Creates root directory of the data store: " + storeRootPath);
             }
         }
-        commandExecuter = commandExecutorFactory.create(storeRoot);
+        if (commandQueueDirOrNull == null)
+        {
+            commandQueueDirOrNull = storeRoot;
+        }
+        commandExecuter = commandExecutorFactory.create(storeRoot, commandQueueDirOrNull);
         commandExecuter.start();
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java
index 6081d0040f512fd5b0bc6fd3e1812c115b4e9cfc..7303b8d9e9568dc4661bcf23042067f6c5f4f333 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/IDataSetCommandExecutorFactory.java
@@ -20,13 +20,14 @@ import java.io.File;
 
 /**
  * Factory of {@link IDataSetCommandExecutor} operating on a specified data store.
- *
+ * 
  * @author Franz-Josef Elmer
  */
 interface IDataSetCommandExecutorFactory
 {
     /**
-     * Creates command executor for the specified data store.
+     * Creates command executor for the specified data store. The file of the command queue will be
+     * located in <var>commandQueueDir</var>.
      */
-    IDataSetCommandExecutor create(File store);
+    IDataSetCommandExecutor create(File store, File commandQueueDir);
 }
diff --git a/datastore_server/source/java/dssApplicationContext.xml b/datastore_server/source/java/dssApplicationContext.xml
index c269a1a67a56006a98344b11afcfcfd80a22f69d..13580c66641c91b978de7c15edb32f9aedb3d6c8 100644
--- a/datastore_server/source/java/dssApplicationContext.xml
+++ b/datastore_server/source/java/dssApplicationContext.xml
@@ -46,6 +46,7 @@
                 </constructor-arg>
                 <constructor-arg ref="plugin-tasks" />
                 <property name="storeRoot" value="${storeroot-dir}"/>
+                <property name="commandQueueDir" value="${commandqueue-dir}"/>
             </bean>
         </property>
         <property name="serviceInterface" value="ch.systemsx.cisd.openbis.generic.shared.IDataStoreService" />
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java
index 877426063f7b0a932edf120be1cbeadaa4c8706e..c10ac29ab76c22ab5083ae1916934db17a07c5f6 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java
@@ -283,7 +283,7 @@ public class DataStoreServiceTest extends AssertJUnit
         context.checking(new Expectations()
             {
                 {
-                    one(commandExecutorFactory).create(TEST_STORE);
+                    one(commandExecutorFactory).create(TEST_STORE, TEST_STORE);
                     will(returnValue(commandExecutor));
 
                     one(commandExecutor).start();