diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java
index 2ac1a1e277bb6cdadfea950cefeb4ddea589ce97..7afd28a3be542ed4c8a5bfb8651dfabc59f969c4 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java
@@ -38,11 +38,10 @@ public class CollaborationService {
 
 	public String createCollaborationVorgang(CollaborationRequest request) {
 		var vorgang = updateVorgang(vorgangService.getById(request.getVorgangId()), request);
-		return vorgangService.createVorgang(vorgang);
+		return vorgangService.createVorgangSilent(vorgang);
 	}
 
 	Vorgang updateVorgang(Vorgang vorgang, CollaborationRequest request) {
-		vorgang.getClientAttributes().clear();
 		return vorgang.toBuilder()
 				.header(updateHeader(vorgang.getHeader(), request))
 				.build();
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
index 172138a213608eaf6ee332fbc2673281e784180e..4e6b37051239340631d052eb5657620a73fff729 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
@@ -129,14 +129,23 @@ public class VorgangService {
 		return vorgang.toBuilder().clearEingangs().eingang(eingang);
 	}
 
-	public String createVorgang(Vorgang vorgang) {
+	public String createVorgangSilent(Vorgang vorgang) {
 		var mappedEingang = kopControlDataMapper.moveLabelsToControlData(vorgang.getEingangs().getFirst());
-		var modifiedBuilder = vorgang.toBuilder().id(null).version(0).inCreation(false).clearEingangs().eingang(mappedEingang).build();
-		var result = repository.save(modifiedBuilder);
-		publishVorgangeCreatedEvent(result);
+		var result = repository.save(createVorgangCopy(vorgang, mappedEingang));
 		return result.getId();
 	}
 
+	Vorgang createVorgangCopy(Vorgang vorgang, Eingang eingang) {
+		return Vorgang.builder()
+				.name(vorgang.getName())
+				.nummer(vorgang.getNummer())
+				.formEngineName(vorgang.getFormEngineName())
+				.aktenzeichen(vorgang.getAktenzeichen())
+				.header(vorgang.getHeader())
+				.eingang(eingang)
+				.forwardings(vorgang.getForwardings())
+				.build();
+	}
 	private void publishVorgangeCreatedEvent(Vorgang vorgang) {
 		publisher.publishEvent(new VorgangCreatedEvent(vorgang.getId()));
 	}
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
new file mode 100644
index 0000000000000000000000000000000000000000..4a89482ef8b80bd443d1d30a9da2b881d12fb491
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationITCase.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.vorgang.collaboration;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.awaitility.Awaitility.*;
+import static org.mockito.Mockito.*;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.annotation.DirtiesContext;
+
+import de.ozgcloud.apilib.user.OzgCloudUserId;
+import de.ozgcloud.apilib.user.OzgCloudUserProfile;
+import de.ozgcloud.apilib.user.OzgCloudUserProfileService;
+import de.ozgcloud.command.Command;
+import de.ozgcloud.command.CommandStatus;
+import de.ozgcloud.common.test.DataITCase;
+import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
+import de.ozgcloud.vorgang.callcontext.CallContext;
+import de.ozgcloud.vorgang.callcontext.WithMockCustomUser;
+import de.ozgcloud.vorgang.command.CommandService;
+import de.ozgcloud.vorgang.command.CommandTestFactory;
+import de.ozgcloud.vorgang.command.CreateCommandRequest;
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangHead;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
+
+@SpringBootTest(properties = {
+		"grpc.server.inProcessName=test",
+		"grpc.client.vorgang-manager.address=in-process:test",
+		"grpc.client.ozgcloud-command-manager.address=in-process:test",
+})
+@DataITCase
+@WithMockCustomUser
+@DirtiesContext
+class CollaborationITCase {
+
+	@Autowired
+	private CommandService commandService;
+
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@MockBean
+	private OzgCloudUserProfileService ozgCloudUserProfileService;
+	@Mock
+	private OzgCloudUserProfile ozgCloudUserProfile;
+
+	@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);
+	}
+
+	@Nested
+	class TestCreateCollaborationVorgang {
+
+		private static final String FIELD_COLLABORATION_VORGANG_ID = "collaborationVorgangId";
+		private static final String TITEL = "Collaboration Vorgang";
+		private static final String ANFRAGE = "Anfrage";
+		private static final String ZUSTAENDIGE_STELLE = UUID.randomUUID().toString();
+
+		private String vorgangId;
+
+		@BeforeEach
+		void init() {
+			vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0L).build()).getId();
+		}
+
+		@Test
+		void shouldSetCollaborationVorgangId() {
+			var command = commandService.createCommand(buildCreateCollaborationVorgangCommand(vorgangId));
+
+			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(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
+			assertThat(collaborationVorgang.getHeader()).extracting(VorgangHead::getOrganisationsEinheitId)
+					.isEqualTo(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE);
+			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", CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE
+					))
+					.build();
+		}
+
+		private void waitUntilCommandFinished(String commandId) {
+			await().atMost(5, 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("vorgangId").is(vorgangId),
+					Criteria.where("itemName").is("CollaborationRequest")
+			));
+			return mongoOperations.find(query, VorgangAttachedItem.class);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
index 07cc14f7840e896df34a84096a96707e48da1cb0..7e2ab2c24e670d8205c28280e68076d5c5a8cafd 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
@@ -62,7 +62,7 @@ class CollaborationServiceTest {
 		@BeforeEach
 		void init() {
 			when(vorgangService.getById(any())).thenReturn(loadedVorgang);
-			when(vorgangService.createVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
+			when(vorgangService.createVorgangSilent(any())).thenReturn(COLLABORATION_VORGANG_ID);
 			doReturn(modifiedVorgang).when(service).updateVorgang(any(), any());
 		}
 
@@ -84,7 +84,7 @@ class CollaborationServiceTest {
 		void shouldCallCreateVorgang() {
 			createCollaborationVorgang();
 
-			verify(vorgangService).createVorgang(modifiedVorgang);
+			verify(vorgangService).createVorgangSilent(modifiedVorgang);
 		}
 
 		@Test
@@ -108,13 +108,6 @@ class CollaborationServiceTest {
 		@Mock
 		private VorgangHead updatedHead;
 
-		@Test
-		void shouldRemoveClientAttributes() {
-			var result = modifyVorgang();
-
-			assertThat(result.getClientAttributes()).isEmpty();
-		}
-
 		@Test
 		void shouldCallUpdateHeader() {
 			modifyVorgang();
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
index 82b54fb91cf1cd94faaca488f313e3971a8f0504..d23a82274596be343dc089c5a1367637c74e4e88 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
@@ -53,6 +53,7 @@ import de.ozgcloud.vorgang.command.CommandTestFactory;
 import de.ozgcloud.vorgang.common.errorhandling.NotFoundException;
 import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
 import de.ozgcloud.vorgang.vorgang.redirect.ForwardingService;
+import de.ozgcloud.vorgang.vorgang.redirect.ForwardingTestFactory;
 
 class VorgangServiceTest {
 
@@ -291,7 +292,7 @@ class VorgangServiceTest {
 	}
 
 	@Nested
-	class TestCreateVorgang {
+	class TestCreateVorgangSilent {
 
 		private static final Eingang EINGANG = EingangTestFactory.create();
 		private static final Vorgang SRC_VORGANG = VorgangTestFactory.createBuilder().clientAttributes(null).clearEingangs().eingang(EINGANG).build();
@@ -301,17 +302,15 @@ class VorgangServiceTest {
 		private Eingang mappedEingang;
 		@Mock
 		private Vorgang createdVorgang;
-
-		@Captor
-		private ArgumentCaptor<Vorgang> vorgangCaptor;
-		@Captor
-		private ArgumentCaptor<VorgangCreatedEvent> eventCaptor;
+		@Mock
+		private Vorgang vorgangCopy;
 
 		@BeforeEach
 		void init() {
 			when(kopControlDataMapper.moveLabelsToControlData(any(Eingang.class))).thenReturn(mappedEingang);
 			when(createdVorgang.getId()).thenReturn(CREATED_VORGANG_ID);
 			when(repository.save(any())).thenReturn(createdVorgang);
+			doReturn(vorgangCopy).when(service).createVorgangCopy(any(), any());
 		}
 
 		@Test
@@ -322,54 +321,142 @@ class VorgangServiceTest {
 		}
 
 		@Test
-		void shouldResetIdBeforeSave() {
+		void shouldCallCreateVorgangCopy() {
 			createVorgang();
 
-			verify(repository).save(vorgangCaptor.capture());
-			assertThat(vorgangCaptor.getValue().getId()).isNull();
+			verify(service).createVorgangCopy(SRC_VORGANG, mappedEingang);
 		}
 
 		@Test
-		void shouldResetVersionBeforeSave() {
+		void shouldNotPublishVorgangCreatedEvent() {
 			createVorgang();
 
-			verify(repository).save(vorgangCaptor.capture());
-			assertThat(vorgangCaptor.getValue().getVersion()).isEqualTo(0);
+			verify(publisher, never()).publishEvent(any(VorgangCreatedEvent.class));
 		}
 
 		@Test
-		void shouldSetInCreationFalse() {
+		void shouldCallSaveVorgang() {
 			createVorgang();
 
-			verify(repository).save(vorgangCaptor.capture());
-			assertThat(vorgangCaptor.getValue().isInCreation()).isFalse();
+			verify(repository).save(vorgangCopy);
 		}
 
 		@Test
-		void shouldSetMappedEingang() {
-			createVorgang();
+		void shouldReturnCreatedVorgangId() {
+			var result = createVorgang();
 
-			verify(repository).save(vorgangCaptor.capture());
-			assertThat(vorgangCaptor.getValue().getEingangs()).hasSize(1).first().isEqualTo(mappedEingang);
+			assertThat(result).isEqualTo(CREATED_VORGANG_ID);
 		}
 
+		private String createVorgang() {
+			return service.createVorgangSilent(SRC_VORGANG);
+		}
+	}
+
+	@Nested
+	class TestCreateVorgangCopy {
+
+		@Mock
+		private Eingang eingang;
+
 		@Test
-		void shouldPublishVorgangCreatedEvent() {
-			createVorgang();
+		void shouldNotCopyId() {
+			var result = createVorgangCopy();
 
-			verify(publisher).publishEvent(eventCaptor.capture());
-			assertThat(eventCaptor.getValue().getSource()).isEqualTo(CREATED_VORGANG_ID);
+			assertThat(result.getId()).isNull();
 		}
 
 		@Test
-		void shouldReturnCreatedVorgangId() {
-			var result = createVorgang();
+		void shouldNotCopyVersion() {
+			var result = createVorgangCopy();
 
-			assertThat(result).isEqualTo(CREATED_VORGANG_ID);
+			assertThat(result.getVersion()).isZero();
 		}
 
-		private String createVorgang() {
-			return service.createVorgang(SRC_VORGANG);
+		@Test
+		void shouldSetInCreationFalse() {
+			var result = createVorgangCopy();
+
+			assertThat(result.isInCreation()).isFalse();
+		}
+
+		@Test
+		void shouldNotCopyStatus() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getStatus()).isEqualTo(Vorgang.Status.NEU);
+		}
+
+		@Test
+		void shouldNotCopyAssignedTo() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getAssignedTo()).isNull();
+		}
+
+		@Test
+		void shouldNotCopyClientAttributes() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getClientAttributes()).isEmpty();
+		}
+
+		@Test
+		void shouldCopyName() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getName()).isEqualTo(VorgangTestFactory.NAME);
+		}
+
+		@Test
+		void shouldCopyNummer() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getNummer()).isEqualTo(VorgangTestFactory.VORGANG_NUMMER);
+		}
+
+		@Test
+		void shouldSetFormEngineName() {
+			var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().formEngineName(VorgangTestFactory.FORM_ENGINE_NAME).build(),
+					eingang);
+
+			assertThat(result.getFormEngineName()).isEqualTo(VorgangTestFactory.FORM_ENGINE_NAME);
+		}
+
+		@Test
+		void shouldCopyAktenzeichen() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getAktenzeichen()).isEqualTo(VorgangTestFactory.AKTENZEICHEN);
+		}
+
+		@Test
+		void shouldCopyHeader() {
+			var header = VorgangHeadTestFactory.create();
+
+			var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().header(header).build(), eingang);
+
+			assertThat(result.getHeader()).isEqualTo(header);
+		}
+
+		@Test
+		void shouldSetEingang() {
+			var result = createVorgangCopy();
+
+			assertThat(result.getEingangs()).hasSize(1).first().isSameAs(eingang);
+		}
+
+		@Test
+		void shouldSetForwardings() {
+			var forwarding = ForwardingTestFactory.create();
+
+			var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().forwarding(forwarding).build(), eingang);
+
+			assertThat(result.getForwardings()).containsExactly(forwarding);
+		}
+
+		private Vorgang createVorgangCopy() {
+			return service.createVorgangCopy(VorgangTestFactory.create(), eingang);
 		}
 	}
 
@@ -429,8 +516,7 @@ class VorgangServiceTest {
 			void shouldThrowAccessDeniedException() {
 				when(vorgangAuthorizationService.authorizeByOrganisationseinheitenId(any(), any())).thenReturn(false);
 
-				assertThrows(AccessDeniedException.class,
-						() -> service.getById(VorgangTestFactory.ID, FilterCriteriaTestFactory.create())); // NOSONAR
+				assertThrows(AccessDeniedException.class, () -> service.getById(VorgangTestFactory.ID, FilterCriteriaTestFactory.create())); //NOSONAR
 			}
 		}