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 94ae0bf89a8dd504ef44241cced13848a62aad7f..e017b5c8dff1909ad633968165da61d251823b16 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
@@ -82,7 +82,7 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc
 
     static final String FREE_SPACE_PROVIDER_PREFIX = "free-space-provider.";
 
-    static final String DATA_SET_SIZE_PREFIX = "data-set-size.";
+    static final String DATA_SET_SIZE_PREFIX = "data-set-size-in-KB.";
 
     static final String DEFAULT_DATA_SET_TYPE = "DEFAULT";
 
@@ -161,7 +161,7 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc
         
         if (ClassUtils.hasConstructor(clazz, properties))
         {
-            return ClassUtils.create(IFreeSpaceProvider.class, clazz, properties);
+            return ClassUtils.create(IFreeSpaceProvider.class, clazz, providerProps);
 
         } else
         {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
index 561a9975a37bd6e5a6712c30722ac66e008256e0..f17f8606856604d9558ca2c532a8193bdbfafc6c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProvider.java
@@ -66,8 +66,7 @@ public class PostgresPlusFileSystemFreeSpaceProvider implements IFreeSpaceProvid
                     + "   (SELECT relname, (SELECT free_space FROM pgstattuple(relid)) "
                     + "       AS free_space FROM pg_catalog.pg_statio_user_tables);";
 
-    private static final String SELECT_FREE_SPACE_QUERY = CREATE_TMP_FREE_SPACE_TABLE
-            + " SELECT sum(free_space) FROM freespace;";
+    private static final String SELECT_FREE_SPACE_QUERY = "SELECT sum(free_space) FROM freespace;";
 
     private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION,
             PostgresPlusFileSystemFreeSpaceProvider.class);
@@ -95,7 +94,7 @@ public class PostgresPlusFileSystemFreeSpaceProvider implements IFreeSpaceProvid
 
     public long freeSpaceKb(HostAwareFile path) throws IOException
     {
-        long dataSourceFreeSpace = calculateDataSourceFreeSpace();
+        long dataSourceFreeSpace = calculateDataSourceFreeSpace() / 1024L;
         long fsFreeSpace = fileSystemFreeSpaceProvider.freeSpaceKb(path);
         return dataSourceFreeSpace + fsFreeSpace;
     }
@@ -129,8 +128,17 @@ public class PostgresPlusFileSystemFreeSpaceProvider implements IFreeSpaceProvid
 
     private long calculateFreeSpace(Connection connection) throws SQLException
     {
-        ResultSet result = connection.createStatement().executeQuery(SELECT_FREE_SPACE_QUERY);
-        return result.getLong(1);
+        connection.setAutoCommit(false);
+        try
+        {
+            connection.createStatement().execute(CREATE_TMP_FREE_SPACE_TABLE);
+            ResultSet result = connection.createStatement().executeQuery(SELECT_FREE_SPACE_QUERY);
+            result.next();
+            return result.getLong(1);
+        } finally
+        {
+            connection.setAutoCommit(true);
+        }
     }
 
     private Connection createConnection() throws SQLException
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
index 3feb155ffc24cbb6893f5661ac0a7502633acfa3..333528a0542e0a37c243a4cc731e619be9c44b1c 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/PostgresPlusFileSystemFreeSpaceProviderTest.java
@@ -111,7 +111,7 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
     {
         provider = createProvider(false);
 
-        final long postgresFreeSpace = 1000L;
+        final long postgresFreeSpace = 4098L;
         final long fsFreeSpace = 5001L;
         prepareFreeSpaceExpectations(postgresFreeSpace, fsFreeSpace);
         
@@ -119,7 +119,7 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
         HostAwareFile file = new HostAwareFile(workDir);
         long totalFreeSpace = provider.freeSpaceKb(file);
         
-        assertEquals(fsFreeSpace + postgresFreeSpace, totalFreeSpace);
+        assertEquals(5005, totalFreeSpace);
     }
 
     @Test
@@ -127,7 +127,7 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
     {
         provider = createProvider(true);
 
-        final long postgresFreeSpace = 1000L;
+        final long postgresFreeSpace = 4098L;
         final long fsFreeSpace = 5001L;
         prepareVacuumExpectations();
         prepareFreeSpaceExpectations(postgresFreeSpace, fsFreeSpace);
@@ -136,7 +136,7 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
         HostAwareFile file = new HostAwareFile(workDir);
         long totalFreeSpace = provider.freeSpaceKb(file);
 
-        assertEquals(fsFreeSpace + postgresFreeSpace, totalFreeSpace);
+        assertEquals(5005, totalFreeSpace);
     }
 
     private void prepareVacuumExpectations() throws Exception
@@ -159,7 +159,14 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
         context.checking(new Expectations()
             {
                 {
-                    Statement statement = context.mock(Statement.class, "freeSpaceStatement");
+                    one(connection).setAutoCommit(false);
+
+                    Statement statement = context.mock(Statement.class, "tempTableStatement");
+                    one(connection).createStatement();
+                    will(returnValue(statement));
+                    one(statement).execute(with(any(String.class)));
+
+                    statement = context.mock(Statement.class, "freeSpaceStatement");
                     one(connection).createStatement();
                     will(returnValue(statement));
 
@@ -168,9 +175,12 @@ public class PostgresPlusFileSystemFreeSpaceProviderTest extends AssertJUnit
                     ResultSet rs = context.mock(ResultSet.class);
                     will(returnValue(rs));
 
+                    one(rs).next();
                     one(rs).getLong(1);
                     will(returnValue(freeSpace));
 
+                    one(connection).setAutoCommit(true);
+
                     one(fsFreeSpaceProvider).freeSpaceKb(with(any(HostAwareFile.class)));
                     will(returnValue(fsFreeSpace));
                 }