diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
index 67cd6aa2d77670d08edd0607b4ddcea82b552b7b..62e26faf820d9f3910de106c7a364e98de792439 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
@@ -192,6 +192,14 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
     public void rollbackTransaction(DataSetRegistrationService<T> service,
             DataSetRegistrationTransaction<T> transaction,
             DataSetStorageAlgorithmRunner<T> algorithmRunner, Throwable ex)
+    {
+        invokeRollbackTransactionFunction(service, transaction, algorithmRunner, ex);
+        super.rollbackTransaction(service, transaction, algorithmRunner, ex);
+    }
+
+    private void invokeRollbackTransactionFunction(DataSetRegistrationService<T> service,
+            DataSetRegistrationTransaction<T> transaction,
+            DataSetStorageAlgorithmRunner<T> algorithmRunner, Throwable ex)
     {
         PythonInterpreter interpreter = getInterpreterFromService(service);
         PyFunction function = tryJythonFunction(interpreter, ROLLBACK_TRANSACTION_FUNCTION_NAME);
@@ -199,8 +207,6 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
         {
             invokeRollbackTransactionFunction(function, service, transaction, algorithmRunner, ex);
         }
-
-        super.rollbackTransaction(service, transaction, algorithmRunner, ex);
     }
 
     private PyFunction tryJythonFunction(PythonInterpreter interpreter, String functionName)