diff --git a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/Integration2PCTest.java b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/Integration2PCTest.java
index c92045995d4d460780edbdb0dfe1a651c52b7878..5473f7f82ebc69a39c2c856311299ee90338de7e 100644
--- a/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/Integration2PCTest.java
+++ b/test-integration/sourceTest/java/ch/ethz/sis/openbis/systemtests/Integration2PCTest.java
@@ -202,11 +202,78 @@ public class Integration2PCTest extends AbstractIntegrationTest
         }
     }
 
+    @Test
+    public void testBeginFailsAtAS()
+    {
+        // make begin fail at AS
+        setApplicationServerProxyInterceptor((method, defaultAction) ->
+        {
+            if (method != null && method.equals("beginTransaction"))
+            {
+                throw new RuntimeException("Test begin exception");
+            } else
+            {
+                defaultAction.call();
+            }
+        });
+
+        OpenBIS openBIS = createOpenBIS();
+        openBIS.setInteractiveSessionKey(TEST_INTERACTIVE_SESSION_KEY);
+        openBIS.login(USER, PASSWORD);
+
+        openBIS.beginTransaction();
+
+        String owner = OWNER_PREFIX + UUID.randomUUID();
+        String source = SOURCE_PREFIX + UUID.randomUUID();
+        byte[] bytesToWrite = CONTENT.getBytes(StandardCharsets.UTF_8);
+        openBIS.getAfsServerFacade().write(owner, source, 0L, bytesToWrite, calculateMD5(bytesToWrite));
+
+        assertTransactions(coordinatorApi.getTransactionMap(), new TestTransaction(openBIS.getTransactionId(), TransactionStatus.BEGIN_FINISHED));
+
+        SpaceCreation spaceCreation = new SpaceCreation();
+        spaceCreation.setCode(CODE_PREFIX + UUID.randomUUID());
+
+        try
+        {
+            // first attempt
+            openBIS.createSpaces(List.of(spaceCreation));
+            fail();
+        } catch (Exception e)
+        {
+            assertEquals(e.getMessage(),
+                    "Transaction '" + openBIS.getTransactionId() + "' execute operation 'createSpaces' for participant 'application-server' failed.");
+            assertEquals(e.getCause().getMessage(),
+                    "Begin transaction '" + openBIS.getTransactionId() + "' failed for participant 'application-server'.");
+        }
+
+        assertTransactions(coordinatorApi.getTransactionMap(), new TestTransaction(openBIS.getTransactionId(), TransactionStatus.BEGIN_FINISHED));
+
+        // make begin succeed at AS
+        setApplicationServerProxyInterceptor((method, defaultAction) -> defaultAction.call());
+
+        // second attempt
+        SpacePermId spaceId = openBIS.createSpaces(List.of(spaceCreation)).get(0);
+
+        openBIS.commitTransaction();
+
+        assertTransactions(coordinatorApi.getTransactionMap());
+
+        // check committed data
+        OpenBIS openBISNoTr = createOpenBIS();
+        openBISNoTr.login(USER, PASSWORD);
+
+        Space createdSpace = openBISNoTr.getSpaces(List.of(spaceId), new SpaceFetchOptions()).get(spaceId);
+        assertNotNull(createdSpace);
+
+        byte[] bytesRead = openBISNoTr.getAfsServerFacade().read(owner, source, 0L, bytesToWrite.length);
+        assertEquals(new String(bytesRead, StandardCharsets.UTF_8), CONTENT);
+    }
+
     @Test
     public void testBeginFailsAtAFS()
     {
         // make begin fail at AFS
-        setAfsServerProxyInterceptor((method, parameters, defaultAction) ->
+        setAfsServerProxyInterceptor((method, defaultAction) ->
         {
             if (method != null && method.equals("begin"))
             {
@@ -226,7 +293,7 @@ public class Integration2PCTest extends AbstractIntegrationTest
         SpaceCreation spaceCreation = new SpaceCreation();
         spaceCreation.setCode(CODE_PREFIX + UUID.randomUUID());
 
-        openBIS.createSpaces(List.of(spaceCreation));
+        SpacePermId spaceId = openBIS.createSpaces(List.of(spaceCreation)).get(0);
 
         String owner = OWNER_PREFIX + UUID.randomUUID();
         String source = SOURCE_PREFIX + UUID.randomUUID();
@@ -249,10 +316,7 @@ public class Integration2PCTest extends AbstractIntegrationTest
         assertTransactions(coordinatorApi.getTransactionMap(), new TestTransaction(openBIS.getTransactionId(), TransactionStatus.BEGIN_FINISHED));
 
         // make begin succeed at AFS
-        setAfsServerProxyInterceptor((method, parameters, defaultAction) ->
-        {
-            defaultAction.call();
-        });
+        setAfsServerProxyInterceptor((method, defaultAction) -> defaultAction.call());
 
         // second attempt
         openBIS.getAfsServerFacade().write(owner, source, 0L, bytesToWrite, calculateMD5(bytesToWrite));
@@ -260,6 +324,16 @@ public class Integration2PCTest extends AbstractIntegrationTest
         openBIS.commitTransaction();
 
         assertTransactions(coordinatorApi.getTransactionMap());
+
+        // check committed data
+        OpenBIS openBISNoTr = createOpenBIS();
+        openBISNoTr.login(USER, PASSWORD);
+
+        Space createdSpace = openBISNoTr.getSpaces(List.of(spaceId), new SpaceFetchOptions()).get(spaceId);
+        assertNotNull(createdSpace);
+
+        byte[] bytesRead = openBISNoTr.getAfsServerFacade().read(owner, source, 0L, bytesToWrite.length);
+        assertEquals(new String(bytesRead, StandardCharsets.UTF_8), CONTENT);
     }
 
     private void rollbackPreparedDatabaseTransactions() throws Exception