diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java
index 333516967842411a19f933ecfe6220361e31f792..f041f16ad9815b734d20f1b8845580b1b00d1a58 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/utils/ExceptionUtils.java
@@ -15,12 +15,12 @@
  */
 package ch.ethz.sis.openbis.generic.server.asapi.v3.utils;
 
-import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 
 public class ExceptionUtils
 {
-    public static RuntimeException create(OperationContext context, Throwable t)
+    public static RuntimeException create(IOperationContext context, Throwable t)
     {
         if (t instanceof UserFailureException)
         {
@@ -29,7 +29,7 @@ public class ExceptionUtils
         return new RuntimeException(createMessage(context, t), t);
     }
 
-    private static String createMessage(OperationContext context, Throwable t)
+    private static String createMessage(IOperationContext context, Throwable t)
     {
         String message = t.getMessage() == null ? t.toString() : t.getMessage();
         return message + " (Context: " + context.getProgressStack().toString() + ")";
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
index faaf4aaf78e1a961db55ca1a50bf1640a983416c..cf7dfbb91789c6ef1e565d36b81c7543d3780e46 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ServiceForDataStoreServer.java
@@ -55,6 +55,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.IOperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.OperationContext;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.dataset.ICreateDataSetExecutor;
 import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.sample.ListSampleTechIdByIdentifier;
+import ch.ethz.sis.openbis.generic.server.asapi.v3.utils.ExceptionUtils;
 import ch.rinn.restrictions.Private;
 import ch.systemsx.cisd.authentication.DefaultSessionManager;
 import ch.systemsx.cisd.authentication.DummyAuthenticationService;
@@ -1419,7 +1420,7 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD
                         DATASET_FETCH_OPTIONS_FILE_DATASETS);
         return SimpleDataSetHelper.filterAndTranslate(dataSets);
     }
-    
+
     @Override
     @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER)
     public List<SimpleDataSetInformationDTO> listPhysicalDataSetsWithUnknownSize(String sessionToken, String dataStoreCode, int chunkSize,
@@ -2638,8 +2639,15 @@ public class ServiceForDataStoreServer extends AbstractCommonServer<IServiceForD
             creations.add(creation);
         }
 
-        List<DataSetPermId> ids = createDataSetExecutor.create(context, creations);
-        return ids.size();
+        try
+        {
+            List<DataSetPermId> ids = createDataSetExecutor.create(context, creations);
+            daoFactory.getSessionFactory().getCurrentSession().flush();
+            return ids.size();
+        } catch (Throwable t)
+        {
+            throw ExceptionUtils.create(context, t);
+        }
     }
 
     private void injectSampleId(DataSetCreation creation, NewExternalData newData)