diff --git a/datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/original/f1.png b/datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/f1.png
similarity index 100%
rename from datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/original/f1.png
rename to datastore_server/resource/test-data/HierarchicalStorageUpdaterTest/store-root/1/ds1/f1.png
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java
index 841594cee555164807df3ff777ed45bd876dc1d5..094cc2c3713fb53feb74b5be83be7b9942511b17 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdater.java
@@ -315,7 +315,7 @@ public class HierarchicalStorageUpdater implements IDataStoreLockingMaintenanceT
                 {
                     toDelete = parent;
                     parent = toDelete.getParentFile();
-                    toDelete.delete();
+                    delete(toDelete);
                 } else
                 {
                     break;
@@ -326,40 +326,38 @@ public class HierarchicalStorageUpdater implements IDataStoreLockingMaintenanceT
 
     private static void deleteWithSymbolicLinks(File toDelete)
     {
-        if (FileUtilities.isSymbolicLink(toDelete))
+        if (toDelete.isDirectory())
         {
-            toDelete.delete();
-            return;
+            for (File file : toDelete.listFiles())
+            {
+                // all these files should be symbolic links to a dataset directory.
+                // We cannot delete recursively here, it would remove the original files.
+                boolean ok = delete(file);
+                if (ok == false)
+                {
+                    operationLog.error("Cannot delete the file: " + file.getPath());
+                }
+            }
         }
 
-        if (toDelete.isDirectory() == false)
-        {
-                operationLog.error("Directory structure is different than expected. File '"
-                        + toDelete.getPath() + "' should be a directory. It will not be cleared.");
-            return;
-        }
+        delete(toDelete);
+    }
 
-        for (File file : toDelete.listFiles())
+    private static boolean delete(File file)
+    {
+        if (FileUtilities.isSymbolicLink(file) || file.isDirectory())
         {
-            // all these files should be symbolic links to a dataset directory.
-            // We cannot delete recursively here, it would remove the original files.
-            if (false == FileUtilities.isSymbolicLink(file))
-            {
-                operationLog.error(file.getPath()
-                        + " is not a symbolic link and will not be deleted.");
-                return;
-            }
-            boolean ok = file.delete();
-            if (ok == false)
-            {
-                operationLog.error("Cannot delete the file: " + file.getPath());
-            }
+            operationLog.info("Deleting " + file.getAbsolutePath());
+            return file.delete();
+        } else
+        {
+            operationLog.error(file.getPath() + " is not a symbolic link and will not be deleted.");
+            return false;
         }
 
-        // delete the folder in the end
-        toDelete.delete();
     }
 
+
     /**
      * Creates the soft links for files with paths defined in <code>linkMappings</code> {@link Map}.
      */
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java
index 1d7b15b4f0dd9af18f75ea98eb96597bcc3c1d25..ac9a216d38d3c9521987dc6daa54f41e6f1af1d1 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/HierarchicalStorageUpdaterTest.java
@@ -143,7 +143,7 @@ public class HierarchicalStorageUpdaterTest extends AbstractFileSystemTestCase
     }
 
 
-    private HierarchicalStorageUpdater createUpdater(boolean linkFromFirstChild)
+    private HierarchicalStorageUpdater createUpdater(boolean reconfiguredExecution)
     {
         final String pluginName = "hierarchical-storage-updater";
         final String pluginPrefix = pluginName + ".";
@@ -156,10 +156,13 @@ public class HierarchicalStorageUpdaterTest extends AbstractFileSystemTestCase
                 .getAbsolutePath());
 
         Properties properties = new Properties();
-        properties.put(HierarchicalStorageUpdater.LINK_SOURCE_SUBFOLDER + "."
-                + DATASET_TYPE, "original");
-        properties.put(HierarchicalStorageUpdater.LINK_FROM_FIRST_CHILD + "." + DATASET_TYPE, ""
-                + linkFromFirstChild);
+        if (reconfiguredExecution)
+        {
+            properties.put(HierarchicalStorageUpdater.LINK_SOURCE_SUBFOLDER + "." + DATASET_TYPE,
+                    "original");
+            properties.put(HierarchicalStorageUpdater.LINK_FROM_FIRST_CHILD + "." + DATASET_TYPE,
+                    "" + true);
+        }
 
         HierarchicalStorageUpdater updater = new HierarchicalStorageUpdater();
         updater.setUp(pluginName, properties);