diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java
index 95dcfbfaa2b210148f3dac4e45b83c1688e24217..40a39954ab98c3b284c3a19817e9277f893d123b 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRequest.java
@@ -24,8 +24,10 @@
 package de.ozgcloud.vorgang.collaboration;
 
 import lombok.Builder;
+import lombok.Getter;
 
 @Builder
+@Getter
 public class CollaborationRequest {
 
 	private String vorgangId;
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 cbccfedbf7f8c8279fba415c1b0e8eca195ced0d..2ac1a1e277bb6cdadfea950cefeb4ddea589ce97 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
@@ -25,10 +25,33 @@ package de.ozgcloud.vorgang.collaboration;
 
 import org.springframework.stereotype.Service;
 
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangHead;
+import de.ozgcloud.vorgang.vorgang.VorgangService;
+import lombok.RequiredArgsConstructor;
+
 @Service
+@RequiredArgsConstructor
 public class CollaborationService {
 
+	private final VorgangService vorgangService;
+
 	public String createCollaborationVorgang(CollaborationRequest request) {
-		return "collaboration-vorgang-id";
+		var vorgang = updateVorgang(vorgangService.getById(request.getVorgangId()), request);
+		return vorgangService.createVorgang(vorgang);
+	}
+
+	Vorgang updateVorgang(Vorgang vorgang, CollaborationRequest request) {
+		vorgang.getClientAttributes().clear();
+		return vorgang.toBuilder()
+				.header(updateHeader(vorgang.getHeader(), request))
+				.build();
+	}
+
+	VorgangHead updateHeader(VorgangHead header, CollaborationRequest request) {
+		return header.toBuilder()
+				.collaborationLevel(request.getCollaborationLevel())
+				.organisationsEinheitId(request.getZustaendigeStelle())
+				.build();
 	}
 }
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHead.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHead.java
index cc6c36f1f60d8aa55082ffd0304ef699f5cf1041..13e858035e377296843b70740e23c96ca3c3485e 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHead.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHead.java
@@ -6,7 +6,7 @@ import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
 import lombok.Builder;
 import lombok.Getter;
 
-@Builder
+@Builder(toBuilder = true)
 @Getter
 @TypeAlias("VorgangHeader")
 public class VorgangHead {
@@ -14,4 +14,6 @@ public class VorgangHead {
 	private ServiceKonto serviceKonto;
 
 	private String organisationsEinheitId;
+	@Builder.Default
+	private int collaborationLevel = 0;
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java
index f94a842b60e31af85300a8d3438e4bd407a84908..2028349a693227ddea0620ec67b52dc5ed56bd3f 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRequestTestFactory.java
@@ -28,7 +28,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
 
 public class CollaborationRequestTestFactory {
 
-	public static final int COLLABORATION_lEVEL = 1;
+	public static final int COLLABORATION_LEVEL = 1;
 	public static final String ZUSTAENDIGE_STELLE = "zustaendige-stelle";
 
 	public static CollaborationRequest create() {
@@ -39,7 +39,7 @@ public class CollaborationRequestTestFactory {
 		return CollaborationRequest.builder()
 				.vorgangId(VorgangTestFactory.ID)
 				.zustaendigeStelle(ZUSTAENDIGE_STELLE)
-				.collaborationLevel(COLLABORATION_lEVEL);
+				.collaborationLevel(COLLABORATION_LEVEL);
 	}
 
 }
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
new file mode 100644
index 0000000000000000000000000000000000000000..07cc14f7840e896df34a84096a96707e48da1cb0
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java
@@ -0,0 +1,161 @@
+/*
+ * 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.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangHead;
+import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
+import de.ozgcloud.vorgang.vorgang.VorgangService;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
+
+class CollaborationServiceTest {
+
+	@Spy
+	@InjectMocks
+	private CollaborationService service;
+
+	@Mock
+	private VorgangService vorgangService;
+
+	@Nested
+	class TestCreateCollaborationVorgang {
+
+		private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
+		private static final String COLLABORATION_VORGANG_ID = "collaboratino-vorgang-id";
+
+		@Mock
+		private Vorgang loadedVorgang;
+		@Mock
+		private Vorgang modifiedVorgang;
+
+		@BeforeEach
+		void init() {
+			when(vorgangService.getById(any())).thenReturn(loadedVorgang);
+			when(vorgangService.createVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
+			doReturn(modifiedVorgang).when(service).updateVorgang(any(), any());
+		}
+
+		@Test
+		void shouldCallGetVorgang() {
+			createCollaborationVorgang();
+
+			verify(vorgangService).getById(VorgangTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallModifyVorgang() {
+			createCollaborationVorgang();
+
+			verify(service).updateVorgang(loadedVorgang, COLLABORATION_REQUEST);
+		}
+
+		@Test
+		void shouldCallCreateVorgang() {
+			createCollaborationVorgang();
+
+			verify(vorgangService).createVorgang(modifiedVorgang);
+		}
+
+		@Test
+		void shouldReturnVorgangId() {
+			var result = createCollaborationVorgang();
+
+			assertThat(result).isEqualTo(COLLABORATION_VORGANG_ID);
+		}
+
+		private String createCollaborationVorgang() {
+			return service.createCollaborationVorgang(COLLABORATION_REQUEST);
+		}
+	}
+
+	@Nested
+	class TestUpdateVorgang {
+
+		private static final VorgangHead HEAD = VorgangHeadTestFactory.create();
+		private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
+
+		@Mock
+		private VorgangHead updatedHead;
+
+		@Test
+		void shouldRemoveClientAttributes() {
+			var result = modifyVorgang();
+
+			assertThat(result.getClientAttributes()).isEmpty();
+		}
+
+		@Test
+		void shouldCallUpdateHeader() {
+			modifyVorgang();
+
+			verify(service).updateHeader(HEAD, COLLABORATION_REQUEST);
+		}
+
+		@Test
+		void shouldSetUpdatedHeader() {
+			doReturn(updatedHead).when(service).updateHeader(any(), any());
+
+			var result = modifyVorgang();
+
+			assertThat(result.getHeader()).isSameAs(updatedHead);
+		}
+
+		private Vorgang modifyVorgang() {
+			return service.updateVorgang(VorgangTestFactory.createBuilder().header(HEAD).build(), COLLABORATION_REQUEST);
+		}
+	}
+
+	@Nested
+	class TestUpdateHeader {
+
+		@Test
+		void shouldSetZustaendigeStelle() {
+			var result = updateHeader();
+
+			assertThat(result.getOrganisationsEinheitId()).isEqualTo(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE);
+		}
+
+		@Test
+		void shouldSetCollaborationLevel() {
+			var result = updateHeader();
+
+			assertThat(result.getCollaborationLevel()).isEqualTo(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
+		}
+
+		private VorgangHead updateHeader() {
+			return service.updateHeader(VorgangHeadTestFactory.create(), CollaborationRequestTestFactory.create());
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
index ea7b8304da1c996ca1edc733f556318869959dba..67d6a8a18a8c2eb865d9205e4033ee0139e2ccae 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCollaborationRequestTestFactory.java
@@ -36,6 +36,6 @@ public class GrpcCollaborationRequestTestFactory {
 		return GrpcCollaborationRequest.newBuilder()
 				.setVorgangId(VorgangTestFactory.ID)
 				.setZustaendigeStelle(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE)
-				.setCollaborationLevel(CollaborationRequestTestFactory.COLLABORATION_lEVEL);
+				.setCollaborationLevel(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
 	}
 }
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceITCase.java
index 443303a1c8212f534df06dfb03c17def5d0c6ca3..3aef7fb64c636bf5cd42df44f010416024463fdb 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceITCase.java
@@ -81,4 +81,10 @@ class VorgangServiceITCase {
 			verify(userNotificationEventListener, timeout(60000)).onVorgangCreated(any());
 		}
 	}
+
+	@Nested
+	class TestCreateVorgang {
+
+		// TODO impleent tests
+	}
 }
\ No newline at end of file