diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java
index 0ddf4623772e6d049a50812fcaaccc90e3051a6b..37082eeb2507293cc92074beac71b770201721e2 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java
@@ -158,6 +158,12 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc
     public void execute()
     {
         long freeSpace = getFreeSpace();
+        if (operationLog.isDebugEnabled())
+        {
+            operationLog.debug(String.format(
+                    "Free space: %d MB, minimal free space required: %d MB", freeSpace,
+                    minimumFreeSpace));
+        }
         if (freeSpace >= minimumFreeSpace)
         {
             return;
@@ -182,27 +188,32 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc
         }
         Collections.sort(infos, new ExperimentDataSetsInfoComparator());
         StringBuilder archivingMessages = new StringBuilder();
-        if (monitorDataStoreShare())
+        try
         {
-            for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++)
+            if (monitorDataStoreShare())
             {
-                ExperimentDataSetsInfo info = infos.get(i);
-                freeSpace += info.calculateSize();
-                archive(info, archivingMessages);
-            }
-        } else
-        {
-            for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++)
+                for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++)
+                {
+                    ExperimentDataSetsInfo info = infos.get(i);
+                    freeSpace += info.calculateSize();
+                    archive(info, archivingMessages);
+                }
+            } else
             {
-                if (archive(infos.get(i), archivingMessages))
+                for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++)
                 {
-                    freeSpace = getFreeSpace();
+                    if (archive(infos.get(i), archivingMessages))
+                    {
+                        freeSpace = getFreeSpace();
+                    }
                 }
             }
-        }
-        if (archivingMessages.length() > 0)
+        } finally
         {
-            notificationLog.info("Archiving summary:" + archivingMessages);
+            if (archivingMessages.length() > 0)
+            {
+                notificationLog.info("Archiving summary:" + archivingMessages);
+            }
         }
     }
 
@@ -235,11 +246,11 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc
             dataSetCodes.add(dataSet.getCode());
         }
         final String message =
-                "Starting archiving " + dataSetCodes.size() + " data sets of experiment "
+                "#" + dataSetCodes.size() + " data sets of experiment "
                         + info.getExperimentIdentifier() + ": " + dataSetCodes;
-        operationLog.info(message);
-        archivingMessages.append('\n').append(message);
+        operationLog.info("Starting archiving " + message);
         service.archiveDataSets(dataSetCodes, true);
+        archivingMessages.append('\n').append("Archived " + message);
         return true;
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java
index 0b2736f7f82e48f15de9263e36d04794759856cb..ce2017a5ab51a2aee30aa6052d82b00af37a3002 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java
@@ -404,7 +404,8 @@ public class ExperimentBasedArchivingTaskTest extends AbstractFileSystemTestCase
         if (archivingEntries.length > 0)
         {
             operationLogBuilder.append("\n").append(NOTIFY_LOG_ENTRY_PREFIX);
-            operationLogBuilder.append("Archiving summary:").append(notifyMessageBuilder);
+            operationLogBuilder.append("Archiving summary:").append(
+                    notifyMessageBuilder.toString().replaceAll("Starting archiving ", "Archived "));
         }
         assertEquals(operationLogBuilder.toString(), logRecorder.getLogContent());
     }
@@ -412,8 +413,7 @@ public class ExperimentBasedArchivingTaskTest extends AbstractFileSystemTestCase
     private String logEntry(Experiment experiment, DataSet... dataSets)
     {
         List<String> dataSetCodes = getDataSetCodes(dataSets);
-        return "Starting archiving " + dataSetCodes.size()
-                + " data sets of experiment "
+        return "Starting archiving #" + dataSetCodes.size() + " data sets of experiment "
                 + experiment.getIdentifier() + ": " + dataSetCodes;
     }