diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
index c01e4cb97df81768a848bfad9504925e5ad349c4..fbb040268ab06c453924309fff06e6757d3c2946 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtil.java
@@ -231,19 +231,31 @@ public class DssPropertyParametersUtil
             String dirDescription, String pathKey)
     {
         assertDirExists(fileOperations, dir, dirDescription, pathKey);
-        File emptyTestFileInDir = new File(dir, EMPTY_TEST_FILE.getName());
+
+        File emptyTestFile = null;
+        File emptyTestFileInDir = null;
+
         try
         {
-            fileOperations.createNewFile(EMPTY_TEST_FILE);
-            if (fileOperations.rename(EMPTY_TEST_FILE, emptyTestFileInDir) == false)
+            // make the file name unique so that multiple threads can safely perform this check at the same time
+            emptyTestFile = fileOperations.createTempFile(EMPTY_TEST_FILE.getName(), "");
+            emptyTestFileInDir = new File(dir, emptyTestFile.getName());
+
+            if (fileOperations.rename(emptyTestFile, emptyTestFileInDir) == false)
             {
                 throw createException(NON_LOCAL_DIR_TEMPLATE.createFreshCopy(), dir,
                         dirDescription, pathKey);
             }
         } finally
         {
-            fileOperations.delete(EMPTY_TEST_FILE);
-            fileOperations.delete(emptyTestFileInDir);
+            if (emptyTestFile != null)
+            {
+                fileOperations.delete(emptyTestFile);
+            }
+            if (emptyTestFileInDir != null)
+            {
+                fileOperations.delete(emptyTestFileInDir);
+            }
         }
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtilTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtilTest.java
index f861d825a8c35d37bb8eff74eaaa7c3bc5488e2a..19bcad7215b505bff80af10bce4c86b66c76df19 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtilTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/DssPropertyParametersUtilTest.java
@@ -64,7 +64,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
         File expectedDir = new File(System.getProperty("user.dir"), "dss-tmp");
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, true);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -85,7 +85,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
         properties.setProperty(DssPropertyParametersUtil.DSS_TEMP_DIR_PATH, expectedDir.getPath());
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, true);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -130,7 +130,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
         properties.setProperty(DssPropertyParametersUtil.DSS_TEMP_DIR_PATH, expectedDir.getPath());
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, false);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -157,7 +157,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
         File expectedDir = new File(System.getProperty("user.dir"), "log-registrations");
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, true);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -180,7 +180,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
                 expectedDir.getPath());
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, true);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -228,7 +228,7 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
                 expectedDir.getPath());
         prepareForMkdirs(expectedDir);
         prepareForExists(expectedDir);
-        prepareForCreateNewFile(EMPTY_TEST_FILE);
+        prepareForCreateTempFile(EMPTY_TEST_FILE);
         File movedEmptyTestFile = new File(expectedDir, EMPTY_TEST_FILE.getName());
         prepareForRenameFile(EMPTY_TEST_FILE, movedEmptyTestFile, false);
         prepareForDeleteFile(EMPTY_TEST_FILE);
@@ -283,13 +283,13 @@ public class DssPropertyParametersUtilTest extends AssertJUnit
             });
     }
 
-    private void prepareForCreateNewFile(final File file)
+    private void prepareForCreateTempFile(final File file)
     {
         context.checking(new Expectations()
             {
                 {
-                    one(fileOperations).createNewFile(file);
-                    will(returnValue(true));
+                    one(fileOperations).createTempFile(file.getName(), "");
+                    will(returnValue(file));
                 }
             });
     }