diff --git a/bescheid-manager/pom.xml b/bescheid-manager/pom.xml
index d501177bcb7be95d4fc83acd167be59b906b964d..0919d7e470b7f729376b616fdfdd54caf2dc3d3f 100644
--- a/bescheid-manager/pom.xml
+++ b/bescheid-manager/pom.xml
@@ -17,7 +17,7 @@
 	<properties>
 		<vorgang-manager.version>2.13.0</vorgang-manager.version>
 		<nachrichten-manager.version>2.9.0</nachrichten-manager.version>
-		<api-lib.version>0.11.0</api-lib.version>
+		<api-lib.version>0.12.0</api-lib.version>
 		<spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version>
 	</properties>
 
diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml
index 4d96c4ad0b805b2ef3a3dd6475f0185d8de63d52..e31d13e0620038b7ecf48cdf88813e8e003bb0f1 100644
--- a/vorgang-manager-server/pom.xml
+++ b/vorgang-manager-server/pom.xml
@@ -56,9 +56,9 @@
 		<bescheid-manager.version>1.18.0-SNAPSHOT</bescheid-manager.version>
 		<processor-manager.version>0.4.1</processor-manager.version>
 		<nachrichten-manager.version>2.12.0-SNAPSHOT</nachrichten-manager.version>
-		<ozgcloud-starter.version>0.10.0</ozgcloud-starter.version>
+		<ozgcloud-starter.version>0.12.0</ozgcloud-starter.version>
 		<notification-manager.version>2.11.0-SNAPSHOT</notification-manager.version>
-		<collaboration-manager.version>0.2.0</collaboration-manager.version>
+		<collaboration-manager.version>0.3.0-SNAPSHOT</collaboration-manager.version>
 
 		<zip.version>2.11.1</zip.version>
 		<jsoup.version>1.15.3</jsoup.version>
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemService.java
index ce8c2dfd120901ce2e599a0c66c0f2d1ac108d5f..ef0d12da9202197c9c16570fe7005f8052f7a178 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemService.java
@@ -187,7 +187,7 @@ public class VorgangAttachedItemService {
 	}
 
 	public void revokeCreate(Command command) {
-		handleRevoke(command, () -> delete(command.getRelationId(), command.getRelationVersion()));
+		handleRevoke(command, () -> delete(command.getCreatedResource(), command.getRelationVersion() + 1));
 	}
 
 	void delete(String id, long version) {
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java
index a9f57bac1d65ca9aba3af9671ab6d2efb2948558..dce3ec92f0c506bcabce138f6104003737adff39 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandRepository.java
@@ -36,11 +36,13 @@ import java.util.stream.Stream;
 
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.FindAndModifyOptions;
 import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.data.mongodb.core.aggregation.Aggregation;
 import org.springframework.data.mongodb.core.aggregation.ComparisonOperators.Eq;
+import org.springframework.data.mongodb.core.aggregation.ConditionalOperators;
 import org.springframework.data.mongodb.core.aggregation.ConditionalOperators.Switch;
 import org.springframework.data.mongodb.core.aggregation.ConditionalOperators.Switch.CaseOperator;
 import org.springframework.data.mongodb.core.aggregation.SetOperation;
@@ -261,17 +263,30 @@ class CommandRepository {
 		return query;
 	}
 
-	public Command setRevokeStatus(String id) {
-		return mongoOperations.findAndModify(queryById(id), buildUpdateStatusRevoke(), FindAndModifyOptions.options().returnNew(true), Command.class);
+	public Command setRevokeStatus(String id, String createdResource) {
+		return mongoOperations.findAndModify(queryById(id), buildUpdateStatusRevoke(createdResource), FindAndModifyOptions.options().returnNew(true),
+				Command.class);
 	}
 
-	private UpdateDefinition buildUpdateStatusRevoke() {
-		var switchOperation = Switch.switchCases(
-				CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.NEW)).then(CommandStatus.CANCELED),
-				CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.PENDING)).then(CommandStatus.REVOKE_PENDING),
-				CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.FINISHED)).then(CommandStatus.REVOKE_PENDING))
+	private UpdateDefinition buildUpdateStatusRevoke(String createdResource) {
+		var setOperation = SetOperation.set(MONGODB_STATUS).toValue(buildSetStatusCondition());
+		if (StringUtils.isNotBlank(createdResource)) {
+			setOperation = setOperation.and().set(MONGODB_CREATED_RESOURCE).toValue(buildSetCreatedResourceCondition(createdResource));
+		}
+		return Aggregation.newUpdate(setOperation);
+	}
+
+	private Switch buildSetStatusCondition() {
+		return Switch.switchCases(
+						CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.NEW)).then(CommandStatus.CANCELED),
+						CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.PENDING)).then(CommandStatus.REVOKE_PENDING),
+						CaseOperator.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.FINISHED)).then(CommandStatus.REVOKE_PENDING))
 				.defaultTo(MONGODB_REFERENCE_STATUS);
-		return Aggregation.newUpdate(SetOperation.set(MONGODB_STATUS).toValue(switchOperation));
+	}
+
+	private ConditionalOperators.Cond buildSetCreatedResourceCondition(String createdResource) {
+		return ConditionalOperators.Cond.when(Eq.valueOf(MONGODB_STATUS).equalToValue(CommandStatus.PENDING)).then(createdResource)
+				.otherwiseValueOf(MONGODB_CREATED_RESOURCE);
 	}
 
 	public Optional<Command> setRevokeStatusIfNotPending(String id) {
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
index 2f661a37b47f0da8143fdd5332e8385da4ecb1e5..ff7653e640230c195b26595b3b50c0589f305303 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
@@ -117,7 +117,7 @@ public class CommandService {
 	public void setCommandFinished(String commandId, String createdResource) {
 		var command = getById(commandId);
 		if (shouldRevoke(command)) {
-			repository.setRevokeStatus(commandId);
+			command = repository.setRevokeStatus(commandId, createdResource);
 			publishRevokeCommandEvent(command);
 			return;
 		}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemITCase.java
index cfaf9ff74c00daa0d1405a656fb898ce181a0256..ef465103f6ad9e81c6a4741bd581d40179b1d6aa 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemITCase.java
@@ -289,7 +289,8 @@ class VorgangAttachedItemITCase {
 		private Command createRevokeCommand() {
 			return CommandTestFactory.createBuilder().order(Order.CREATE_ATTACHED_ITEM.name())
 					.relationId(persistedItem.getId())
-					.relationVersion(persistedItem.getVersion())
+					.relationVersion(persistedItem.getVersion() - 1)
+					.createdResource(persistedItem.getId())
 					.bodyObject(VorgangAttachedItemTestFactory.asMap()).build();
 		}
 	}
@@ -298,11 +299,11 @@ class VorgangAttachedItemITCase {
 	@Nested
 	class TestRevokeUpdateItem {
 
-		private final Map<String, Object> createItem = Map.<String, Object>of("EntryToRecoverByRevokeKey", "EntryToRecoverByRevokeValue",
+		private final Map<String, Object> createItem = Map.of("EntryToRecoverByRevokeKey", "EntryToRecoverByRevokeValue",
 				VorgangAttachedItemTestFactory.ITEM_FIELD_NAME, VorgangAttachedItemTestFactory.ITEM_FIELD_STRING_VALUE);
 		private VorgangAttachedItem persistedItem;
 
-		private final Map<String, Object> updateItem = Map.<String, Object>of(
+		private final Map<String, Object> updateItem = Map.of(
 				VorgangAttachedItemTestFactory.ITEM_FIELD_NAME, "RevertByRevokeValue",
 				"NewToRemoveByRevokeKey", "NewToRemoveByRevokeValue");
 		private Command updatedCommand;
@@ -391,11 +392,11 @@ class VorgangAttachedItemITCase {
 	@Nested
 	class TestRevokePatchItem {
 
-		private final Map<String, Object> createItem = Map.<String, Object>of(VorgangAttachedItemTestFactory.ITEM_FIELD_NAME,
+		private final Map<String, Object> createItem = Map.of(VorgangAttachedItemTestFactory.ITEM_FIELD_NAME,
 				VorgangAttachedItemTestFactory.ITEM_FIELD_STRING_VALUE);
 		private VorgangAttachedItem persistedItem;
 
-		private final Map<String, Object> patchItem = Map.<String, Object>of(VorgangAttachedItemTestFactory.ITEM_FIELD_NAME, "UpdatedStringValue");
+		private final Map<String, Object> patchItem = Map.of(VorgangAttachedItemTestFactory.ITEM_FIELD_NAME, "UpdatedStringValue");
 		private Command patchedCommand;
 		private String vorgangId;
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemServiceTest.java
index fcb9657c560845ce3a0b4e61cf3a7d003585db08..7447aa18488ebd0ed7406989214afbda377580da 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemServiceTest.java
@@ -516,7 +516,7 @@ class VorgangAttachedItemServiceTest {
 	@Nested
 	class TestRevokeCreate {
 
-		private final Command command = CommandTestFactory.create();
+		private final Command command = CommandTestFactory.createBuilder().createdResource(CommandTestFactory.CREATED_RESOURCE).build();
 
 		@Test
 		void shouldCallHandleRevoke() {
@@ -529,7 +529,7 @@ class VorgangAttachedItemServiceTest {
 		void shouldCallDelete() {
 			service.revokeCreate(command);
 
-			verify(service).delete(CommandTestFactory.RELATION_ID, CommandTestFactory.RELATION_VERSION);
+			verify(service).delete(CommandTestFactory.CREATED_RESOURCE, CommandTestFactory.RELATION_VERSION + 1);
 		}
 	}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
index 32db2a67bebf61625a2e5eea835a61eaa5c87665..3a1508c570ac7a6ac3bd1e41fe1815041e1541e6 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
@@ -24,7 +24,6 @@
 package de.ozgcloud.vorgang.collaboration;
 
 import static org.assertj.core.api.Assertions.*;
-import static org.assertj.core.api.InstanceOfAssertFactories.*;
 import static org.awaitility.Awaitility.*;
 import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.ArgumentMatchers.*;
@@ -41,6 +40,8 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.Mock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -60,7 +61,11 @@ import de.ozgcloud.collaboration.CollaborationServiceGrpc.CollaborationServiceBl
 import de.ozgcloud.collaboration.GrpcGetFileContentRequest;
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.CommandStatus;
+import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.common.test.DataITCase;
+import de.ozgcloud.nachrichten.postfach.PostfachAddress;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.PostfachRemoteService;
 import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
 import de.ozgcloud.vorgang.callcontext.CallContext;
 import de.ozgcloud.vorgang.callcontext.TestCallContextAttachingInterceptor;
@@ -71,6 +76,7 @@ import de.ozgcloud.vorgang.command.CreateCommandRequest;
 import de.ozgcloud.vorgang.files.FileService;
 import de.ozgcloud.vorgang.files.GridFsTestFactory;
 import de.ozgcloud.vorgang.files.OzgFileTestFactory;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
 import de.ozgcloud.vorgang.vorgang.Vorgang;
 import de.ozgcloud.vorgang.vorgang.VorgangHead;
 import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
@@ -89,6 +95,10 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
 @DirtiesContext
 class CollaborationITCase {
 
+	private static final String FIELD_COLLABORATION_VORGANG_ID = "collaborationVorgangId";
+	private static final String TITEL = "Collaboration Vorgang";
+	private static final String ANFRAGE = "Anfrage";
+
 	@Autowired
 	private CommandService commandService;
 
@@ -97,85 +107,21 @@ class CollaborationITCase {
 
 	@MockBean
 	private OzgCloudUserProfileService ozgCloudUserProfileService;
+	@MockBean
+	private PostfachRemoteService postfachRemoteService;
 
 	@Mock
 	private OzgCloudUserProfile ozgCloudUserProfile;
 
-	@Nested
-	class TestCreateCollaborationVorgang {
+	private String vorgangId;
 
-		@BeforeEach
-		void init() {
-			mongoOperations.dropCollection(Command.class);
-			mongoOperations.dropCollection(Vorgang.class);
-			mongoOperations.dropCollection(VorgangAttachedItem.class);
-			when(ozgCloudUserProfile.getId()).thenReturn(OzgCloudUserId.from(CommandTestFactory.CREATED_BY));
-			when(ozgCloudUserProfileService.getById(any())).thenReturn(ozgCloudUserProfile);
-
-			vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0L).build()).getId();
-		}
-
-		private static final String FIELD_COLLABORATION_VORGANG_ID = "collaborationVorgangId";
-		private static final String TITEL = "Collaboration Vorgang";
-		private static final String ANFRAGE = "Anfrage";
-
-		private String vorgangId;
-
-		@Test
-		void shouldSetCollaborationVorgangId() {
-			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId));
+	@BeforeEach
+	void init() {
+		mongoOperations.dropCollection(Command.class);
+		mongoOperations.dropCollection(Vorgang.class);
+		mongoOperations.dropCollection(VorgangAttachedItem.class);
 
-			waitUntilCommandFinished(command.getId());
-
-			var collaborationRequests = loadCollaborationRequest(vorgangId);
-			assertThat(collaborationRequests).hasSize(1).first().extracting(VorgangAttachedItem::getItem, MAP)
-					.containsKey(FIELD_COLLABORATION_VORGANG_ID);
-		}
-
-		@Test
-		void shouldCreateCollaborationVorgang() {
-			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId));
-
-			waitUntilCommandFinished(command.getId());
-
-			var collaborationVorgang = loadCollaborationVorgang(vorgangId);
-			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getCollaborationLevel)
-					.isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL);
-			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getOrganisationsEinheitId)
-					.isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
-			assertThat(collaborationVorgang.getClientAttributes()).isEmpty();
-		}
-
-		private CreateCommandRequest buildCreateCollaborationVorgangCommand(String vorgangId) {
-			return CreateCommandRequest.builder()
-					.callContext(CallContext.builder().client("test").build())
-					.vorgangId(vorgangId)
-					.relationId(vorgangId)
-					.order("CREATE_COLLABORATION_REQUEST")
-					.bodyObject(Map.of(
-							"titel", TITEL,
-							"anfrage", ANFRAGE,
-							"zustaendigeStelle", ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID))
-					.build();
-		}
-
-		private void waitUntilCommandFinished(String commandId) {
-			await().atMost(60, TimeUnit.SECONDS).until(
-					() -> mongoOperations.findById(commandId, Command.class),
-					command -> command.getStatus() == CommandStatus.FINISHED);
-		}
-
-		private Vorgang loadCollaborationVorgang(String sourceVorgangId) {
-			var collaborationVorgangId = loadCollaborationRequest(sourceVorgangId).getFirst().getItem().get(FIELD_COLLABORATION_VORGANG_ID);
-			return mongoOperations.findById(collaborationVorgangId, Vorgang.class);
-		}
-
-		private List<VorgangAttachedItem> loadCollaborationRequest(String vorgangId) {
-			var query = new Query(new Criteria().andOperator(
-					Criteria.where(VorgangAttachedItem.FIELDNAME_VORGANG_ID).is(vorgangId),
-					Criteria.where(VorgangAttachedItem.FIELDNAME_ITEM_NAME).is("CollaborationRequest")));
-			return mongoOperations.find(query, VorgangAttachedItem.class);
-		}
+		vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0L).build()).getId();
 	}
 
 	@DisplayName("Get file content")
@@ -244,4 +190,121 @@ class CollaborationITCase {
 			return collaborationStub.withInterceptors(new TestCallContextAttachingInterceptor());
 		}
 	}
+
+	private CreateCommandRequest buildCreateCollaborationVorgangCommand(String vorgangId, int collaborationLevel) {
+		return CreateCommandRequest.builder()
+				.callContext(CallContext.builder().client("test").build())
+				.vorgangId(vorgangId)
+				.relationId(vorgangId)
+				.order("CREATE_COLLABORATION_REQUEST")
+				.bodyObject(Map.of(
+						"titel", TITEL,
+						"anfrage", ANFRAGE,
+						"collaborationLevel", collaborationLevel,
+						"zustaendigeStelle", ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID))
+				.build();
+	}
+
+	private List<VorgangAttachedItem> loadCollaborationRequest(String vorgangId) {
+		var query = new Query(new Criteria().andOperator(
+				Criteria.where(VorgangAttachedItem.FIELDNAME_VORGANG_ID).is(vorgangId),
+				Criteria.where(VorgangAttachedItem.FIELDNAME_ITEM_NAME).is("CollaborationRequest")));
+		return mongoOperations.find(query, VorgangAttachedItem.class);
+	}
+
+	private void waitUntilCommandHasStatus(String commandId, CommandStatus status) {
+		await().atMost(60, TimeUnit.SECONDS).until(
+				() -> mongoOperations.findById(commandId, Command.class),
+				command -> command.getStatus() == status);
+	}
+
+	@Nested
+	class TestCreateCollaborationVorgang {
+
+		@BeforeEach
+		void init() {
+			when(ozgCloudUserProfile.getId()).thenReturn(OzgCloudUserId.from(CommandTestFactory.CREATED_BY));
+			when(ozgCloudUserProfileService.getById(any())).thenReturn(ozgCloudUserProfile);
+		}
+
+		@Test
+		void shouldSetCollaborationVorgangId() {
+			var command = commandService.createCommand(
+					buildCreateCollaborationVorgangCommand(vorgangId, CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL));
+
+			waitUntilCommandHasStatus(command.getId(), CommandStatus.FINISHED);
+
+			var collaborationRequests = loadCollaborationRequest(vorgangId);
+			assertThat(collaborationRequests).hasSize(1).first().extracting(VorgangAttachedItem::getItem, MAP)
+					.containsKey(FIELD_COLLABORATION_VORGANG_ID);
+		}
+
+		@Test
+		void shouldCreateCollaborationVorgang() {
+			var command = commandService.createCommand(
+					buildCreateCollaborationVorgangCommand(vorgangId, CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL));
+
+			waitUntilCommandHasStatus(command.getId(), CommandStatus.FINISHED);
+
+			var collaborationVorgang = loadCollaborationVorgang(vorgangId);
+			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getCollaborationLevel)
+					.isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL);
+			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getOrganisationsEinheitId)
+					.isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
+			assertThat(collaborationVorgang.getClientAttributes()).isEmpty();
+		}
+
+		private Vorgang loadCollaborationVorgang(String sourceVorgangId) {
+			var collaborationVorgangId = loadCollaborationRequest(sourceVorgangId).getFirst().getItem().get(FIELD_COLLABORATION_VORGANG_ID);
+			return mongoOperations.findById(collaborationVorgangId, Vorgang.class);
+		}
+
+	}
+
+	@Nested
+	class TestCreateFachstellenBeteiligungRequest {
+
+		private static final int COLLABORATION_LEVEL = 4;
+
+		@Captor
+		private ArgumentCaptor<PostfachNachricht> postfachNachrichtCaptor;
+
+		@BeforeEach
+		void init() {
+			when(ozgCloudUserProfile.getId()).thenReturn(OzgCloudUserId.from(CommandTestFactory.CREATED_BY));
+			when(ozgCloudUserProfileService.getById(any())).thenReturn(ozgCloudUserProfile);
+		}
+
+		@Test
+		void shouldCreateCollaborationRequest() {
+			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId, COLLABORATION_LEVEL));
+
+			waitUntilCommandHasStatus(command.getId(), CommandStatus.FINISHED);
+
+			var collaborationRequests = loadCollaborationRequest(vorgangId);
+			assertThat(collaborationRequests).hasSize(1).first().extracting(VorgangAttachedItem::getItem, MAP)
+					.containsEntry(FIELD_COLLABORATION_VORGANG_ID, vorgangId);
+		}
+
+		@Test
+		void shouldSendPostfachNachricht() {
+			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId, COLLABORATION_LEVEL));
+
+			waitUntilCommandHasStatus(command.getId(), CommandStatus.FINISHED);
+
+			verify(postfachRemoteService).sendMessage(postfachNachrichtCaptor.capture());
+			assertThat(postfachNachrichtCaptor.getValue().getPostfachAddress()).extracting(PostfachAddress::getIdentifier)
+					.hasToString(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+		}
+
+		@Test
+		void shouldDeleteCollaborationRequest() {
+			doThrow(TechnicalException.class).when(postfachRemoteService).sendMessage(any());
+			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId, COLLABORATION_LEVEL));
+
+			waitUntilCommandHasStatus(command.getId(), CommandStatus.ERROR);
+
+			assertThat(loadCollaborationRequest(vorgangId)).isEmpty();
+		}
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java
index 6f99e9b91bef7f1664e80194b2755173a0c1da37..106c571385c18760a91d1198d34993944a08704d 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandRepositoryITCase.java
@@ -92,21 +92,20 @@ class CommandRepositoryITCase {
 	@Nested
 	class TestFinishCommand {
 
-		@BeforeEach
-		void init() {
-			mongoOperations.dropCollection(PersistedCommand.COLLECTION_NAME);
-		}
-
 		@DisplayName("should update status to finished")
 		@ParameterizedTest(name = "with status {0}")
 		@EnumSource(value = CommandStatus.class, names = { "PENDING", "REVOKE_PENDING" })
 		void shouldUpdateStatusToFinished(CommandStatus commandStatus) {
-			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).status(commandStatus).build());
+			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).status(commandStatus)
+					.createdResource(CommandTestFactory.CREATED_RESOURCE).build());
 
 			repository.finishCommand(command.getId());
 
 			var result = repository.findById(command.getId());
-			assertThat(result).isPresent().get().extracting(Command::getStatus).isEqualTo(CommandStatus.FINISHED);
+			assertThat(result).isPresent().get().satisfies(cmd -> {
+				assertThat(cmd.getStatus()).isEqualTo(CommandStatus.FINISHED);
+				assertThat(cmd.getCreatedResource()).isEqualTo(CommandTestFactory.CREATED_RESOURCE);
+			});
 		}
 
 		@DisplayName("should update status to finished")
@@ -322,7 +321,7 @@ class CommandRepositoryITCase {
 			}
 
 			@Test
-			// TODO schreibe ein Testcase für Order, Status und Zeit
+				// TODO schreibe ein Testcase für Order, Status und Zeit
 			void shouldFindCommand() {
 				var command = repository.save(createCommandBuilder()
 						.status(CommandStatus.FINISHED)
@@ -483,7 +482,7 @@ class CommandRepositoryITCase {
 		@Test
 		void shouldReturnParentId() {
 			var commandId = mongoOperations.save(
-					CommandTestFactory.createBuilder().id(null).bodyObject(Map.of(PersistedCommand.PROPERTY_PARENT_ID, PARENT_ID)).build())
+							CommandTestFactory.createBuilder().id(null).bodyObject(Map.of(PersistedCommand.PROPERTY_PARENT_ID, PARENT_ID)).build())
 					.getId();
 
 			var parentId = repository.getParentId(commandId);
@@ -615,30 +614,39 @@ class CommandRepositoryITCase {
 		void shouldSetCanceled() {
 			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).status(CommandStatus.NEW).build());
 
-			repository.setRevokeStatus(command.getId());
+			setRevokeStatus(command.getId());
 
 			var result = repository.findById(command.getId());
-			assertThat(result).isPresent().get().extracting(Command::getStatus).isEqualTo(CommandStatus.CANCELED);
+			assertThat(result).isPresent().get().satisfies(cmd -> {
+				assertThat(cmd.getStatus()).isEqualTo(CommandStatus.CANCELED);
+				assertThat(cmd.getCreatedResource()).isBlank();
+			});
 		}
 
 		@Test
 		void shouldSetRevokePendingWhenPending() {
 			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).build());
 
-			repository.setRevokeStatus(command.getId());
+			setRevokeStatus(command.getId());
 
 			var result = repository.findById(command.getId());
-			assertThat(result).isPresent().get().extracting(Command::getStatus).isEqualTo(CommandStatus.REVOKE_PENDING);
+			assertThat(result).isPresent().get().satisfies(cmd -> {
+				assertThat(cmd.getStatus()).isEqualTo(CommandStatus.REVOKE_PENDING);
+				assertThat(cmd.getCreatedResource()).isEqualTo(CommandTestFactory.CREATED_RESOURCE);
+			});
 		}
 
 		@Test
 		void shouldSetRevokePendingWhenFinished() {
 			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).status(CommandStatus.FINISHED).build());
 
-			repository.setRevokeStatus(command.getId());
+			setRevokeStatus(command.getId());
 
 			var result = repository.findById(command.getId());
-			assertThat(result).isPresent().get().extracting(Command::getStatus).isEqualTo(CommandStatus.REVOKE_PENDING);
+			assertThat(result).isPresent().get().satisfies(cmd -> {
+				assertThat(cmd.getStatus()).isEqualTo(CommandStatus.REVOKE_PENDING);
+				assertThat(cmd.getCreatedResource()).isBlank();
+			});
 		}
 
 		@DisplayName("should not update when")
@@ -647,10 +655,17 @@ class CommandRepositoryITCase {
 		void shouldNotUpdate(CommandStatus status) {
 			var command = mongoOperations.save(CommandTestFactory.createBuilder().id(null).status(status).build());
 
-			repository.setRevokeStatus(command.getId());
+			setRevokeStatus(command.getId());
 
 			var result = repository.findById(command.getId());
-			assertThat(result).isPresent().get().extracting(Command::getStatus).isEqualTo(status);
+			assertThat(result).isPresent().get().satisfies(cmd -> {
+				assertThat(cmd.getStatus()).isEqualTo(status);
+				assertThat(cmd.getCreatedResource()).isNull();
+			});
+		}
+
+		private void setRevokeStatus(String commandId) {
+			repository.setRevokeStatus(commandId, CommandTestFactory.CREATED_RESOURCE);
 		}
 	}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
index 85714d30f81e92ba77ce0c7f575e89dcc04343fa..3f4d68d90efa91280762ec75d49a7692d352a175 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
@@ -214,10 +214,12 @@ class CommandServiceTest {
 		@Nested
 		class TestRevokePendingCommand {
 
-			private static final Command REVOKE_PENDING_COMMAND = CommandTestFactory.createBuilder().status(CommandStatus.REVOKE_PENDING).build();
+			private static final Command REVOKE_PENDING_COMMAND = CommandTestFactory.createBuilder().status(CommandStatus.REVOKE_PENDING)
+					.createdResource(CommandTestFactory.CREATED_RESOURCE).build();
 
 			@BeforeEach
 			void init() {
+				when(repository.setRevokeStatus(anyString(), anyString())).thenReturn(REVOKE_PENDING_COMMAND);
 				doReturn(true).when(service).shouldRevoke(any());
 				doReturn(REVOKE_PENDING_COMMAND).when(service).getById(anyString());
 			}
@@ -233,7 +235,7 @@ class CommandServiceTest {
 			void shouldCallRepository() {
 				setCommandFinished();
 
-				verify(repository).setRevokeStatus(CommandTestFactory.ID);
+				verify(repository).setRevokeStatus(CommandTestFactory.ID, CommandTestFactory.CREATED_RESOURCE);
 			}
 
 			@Test
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/GrpcCommandServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/GrpcCommandServiceITCase.java
index 7df40567d8e858171053fe352454a7e67decde01..e890e4ea2097781bba11e16db414d51370c90562 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/GrpcCommandServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/GrpcCommandServiceITCase.java
@@ -168,7 +168,7 @@ class GrpcCommandServiceITCase {
 			mongoOperations.dropCollection(Command.COLLECTION_NAME);
 			mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
 
-			vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build());
+			vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0).build());
 			when(readIsPermitted.test(any())).thenReturn(true);
 
 			parentCommand = createParentCommand();
@@ -259,9 +259,5 @@ class GrpcCommandServiceITCase {
 			return mongoOperations.findById(grpcCommand.getId(), Command.class);
 		}
 
-		private void assertCommandIsFinished(GrpcCommand grpcCommand) {
-			var command = mongoOperations.findById(grpcCommand.getId(), Command.class);
-			assertThat(command.getStatus()).isEqualTo(CommandStatus.FINISHED);
-		}
 	}
 }