diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangBadRequestException.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangBadRequestException.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2d35ef9553325cc6b97b5be1deb09b0ef315b0d
--- /dev/null
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CreateCollaborationVorgangBadRequestException.java
@@ -0,0 +1,34 @@
+/*
+ * 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 de.ozgcloud.vorgang.common.errorhandling.FunctionalException;
+
+public class CreateCollaborationVorgangBadRequestException extends FunctionalException {
+
+	public CreateCollaborationVorgangBadRequestException(String message) {
+		super(message, () -> "CREATE_COLLABORATION_VORGANG.BAD_REQUEST");
+	}
+
+}
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
index 7236e43b1cc188d06727af667f443baf5e82644d..2702fcfdd2926473b9f938d80eae8f33fee49156 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java
@@ -26,6 +26,7 @@ package de.ozgcloud.vorgang.vorgang;
 import org.springframework.data.domain.Page;
 
 import de.ozgcloud.vorgang.collaboration.CollaborationService;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangBadRequestException;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestMapper;
 import io.grpc.stub.StreamObserver;
@@ -114,17 +115,23 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase {
 	@Override
 	public void createCollaborationVorgang(GrpcCreateCollaborationVorgangRequest request,
 			StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver) {
+		GrpcCreateCollaborationVorgangResponse response;
 		if (request.hasCollaborationRequest()) {
-			var collaborationVorgangId = collaborationService.createCollaborationVorgang(buildCreateCollaborationVorgangRequest(request));
-			responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(collaborationVorgangId).build());
+			response = createCollaborationVorgang(request.getCollaborationRequest());
 		} else {
-			responseObserver.onNext(GrpcCreateCollaborationVorgangResponse.newBuilder().build());
+			throw new CreateCollaborationVorgangBadRequestException("Cannot create collaboration vorgang. Collaboration request is empty.");
 		}
+		responseObserver.onNext(response);
 		responseObserver.onCompleted();
 	}
 
-	CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest(GrpcCreateCollaborationVorgangRequest request) {
-		var vorgang = vorgangService.getById(request.getCollaborationRequest().getVorgangId());
-		return createCollaborationVorgangRequestMapper.mapFrom(request.getCollaborationRequest()).toBuilder().vorgang(vorgang).build();
+	GrpcCreateCollaborationVorgangResponse createCollaborationVorgang(GrpcCollaborationRequest request) {
+		var collaborationVorgangId = collaborationService.createCollaborationVorgang(buildCreateCollaborationVorgangRequest(request));
+		return GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(collaborationVorgangId).build();
+	}
+
+	CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest(GrpcCollaborationRequest request) {
+		var vorgang = vorgangService.getById(request.getVorgangId());
+		return createCollaborationVorgangRequestMapper.mapFrom(request).toBuilder().vorgang(vorgang).build();
 	}
 }
\ 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 ac0aa99d2a8ddef7e38966209faf2e00802f5b08..469ef800742ad7b26d74b2c4ae94cde53fff0a67 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
@@ -103,7 +103,7 @@ class CollaborationServiceTest {
 	class TestUpdateVorgang {
 
 		private static final VorgangHead HEAD = VorgangHeadTestFactory.create();
-		private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
+		private static final CreateCollaborationVorgangRequest COLLABORATION_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
 
 		@Mock
 		private VorgangHead updatedHead;
@@ -136,18 +136,18 @@ class CollaborationServiceTest {
 		void shouldSetZustaendigeStelle() {
 			var result = updateHeader();
 
-			assertThat(result.getOrganisationsEinheitId()).isEqualTo(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE);
+			assertThat(result.getOrganisationsEinheitId()).isEqualTo(CreateCollaborationVorgangRequestTestFactory.ZUSTAENDIGE_STELLE);
 		}
 
 		@Test
 		void shouldSetCollaborationLevel() {
 			var result = updateHeader();
 
-			assertThat(result.getCollaborationLevel()).isEqualTo(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
+			assertThat(result.getCollaborationLevel()).isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL);
 		}
 
 		private VorgangHead updateHeader() {
-			return service.updateHeader(VorgangHeadTestFactory.create(), CollaborationRequestTestFactory.create());
+			return service.updateHeader(VorgangHeadTestFactory.create(), CreateCollaborationVorgangRequestTestFactory.create());
 		}
 	}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationVorgangResponseTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationVorgangResponseTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1851256f15a55aeb97fc63b77399d1e71a41ae6d
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/GrpcCreateCollaborationVorgangResponseTestFactory.java
@@ -0,0 +1,42 @@
+/*
+ * 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 java.util.UUID;
+
+import de.ozgcloud.vorgang.vorgang.GrpcCreateCollaborationVorgangResponse;
+
+public class GrpcCreateCollaborationVorgangResponseTestFactory {
+
+	public static final String VORGANG_ID = UUID.randomUUID().toString();
+
+	public static GrpcCreateCollaborationVorgangResponse create() {
+		return createBuilder().build();
+	}
+
+	public static GrpcCreateCollaborationVorgangResponse.Builder createBuilder() {
+		return GrpcCreateCollaborationVorgangResponse.newBuilder()
+				.setVorgangId(VORGANG_ID);
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
index 11ec08b24c25f767417dc0fa6ba38ffe6ef6527f..7e7b7d99af9f9ce95935eed46f38262f21cd35b8 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.*;
 import java.util.Collections;
 import java.util.List;
 
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -42,10 +43,12 @@ import org.mockito.Spy;
 import org.springframework.data.domain.Page;
 
 import de.ozgcloud.vorgang.collaboration.CollaborationService;
+import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangBadRequestException;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequest;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestMapper;
 import de.ozgcloud.vorgang.collaboration.CreateCollaborationVorgangRequestTestFactory;
 import de.ozgcloud.vorgang.collaboration.GrpcCollaborationRequestTestFactory;
+import de.ozgcloud.vorgang.collaboration.GrpcCreateCollaborationVorgangResponseTestFactory;
 import io.grpc.stub.StreamObserver;
 
 class GrpcVorgangServiceTest {
@@ -341,13 +344,7 @@ class GrpcVorgangServiceTest {
 	}
 
 	@Nested
-	class TestCreateCollaborationVorgang {
-
-		@Mock
-		private StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver;
-
-		@Captor
-		private ArgumentCaptor<GrpcCreateCollaborationVorgangResponse> responseCaptor;
+	class TestCreateCollaborationVorgangEndpoint {
 
 		@Nested
 		class TestCollaborationRequest {
@@ -355,27 +352,25 @@ class GrpcVorgangServiceTest {
 			private static final GrpcCollaborationRequest GRPC_COLLABORATION_REQUEST = GrpcCollaborationRequestTestFactory.create();
 			private static final GrpcCreateCollaborationVorgangRequest REQUEST = GrpcCreateCollaborationVorgangRequest.newBuilder()
 					.setCollaborationRequest(GRPC_COLLABORATION_REQUEST).build();
-			private static final String COLLABORATION_VORGANG_ID = "collaboration-vorgang-id";
-			private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
+			private static final GrpcCreateCollaborationVorgangResponse GRPC_COLLABORATION_RESPONSE =
+					GrpcCreateCollaborationVorgangResponseTestFactory.create();
 
-			@BeforeEach
-			void init() {
-				doReturn(CREATE_COLLABORATION_VORGANG_REQUEST).when(service).buildCreateCollaborationVorgangRequest(any());
-				when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
-			}
+			@Mock
+			private StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver;
 
-			@Test
-			void shouldCallBuildCreateCollaborationVorgangRequest() {
-				createCollaborationVorgang();
+			@Captor
+			private ArgumentCaptor<GrpcCreateCollaborationVorgangResponse> responseCaptor;
 
-				verify(service).buildCreateCollaborationVorgangRequest(REQUEST);
+			@BeforeEach
+			void init() {
+				doReturn(GRPC_COLLABORATION_RESPONSE).when(service).createCollaborationVorgang(any());
 			}
 
 			@Test
 			void shouldCallCreateCollaborationVorgang() {
 				createCollaborationVorgang();
 
-				verify(collaborationService).createCollaborationVorgang(CREATE_COLLABORATION_VORGANG_REQUEST);
+				verify(service).createCollaborationVorgang(GRPC_COLLABORATION_REQUEST);
 			}
 
 			@Test
@@ -383,7 +378,7 @@ class GrpcVorgangServiceTest {
 				createCollaborationVorgang();
 
 				verify(responseObserver).onNext(responseCaptor.capture());
-				assertThat(responseCaptor.getValue().getVorgangId()).isEqualTo(COLLABORATION_VORGANG_ID);
+				assertThat(responseCaptor.getValue().getVorgangId()).isEqualTo(GrpcCreateCollaborationVorgangResponseTestFactory.VORGANG_ID);
 			}
 
 			@Test
@@ -399,28 +394,59 @@ class GrpcVorgangServiceTest {
 		}
 
 		@Nested
-		class TestEmptyRequest {
-
-			@Test
-			void shouldCallOnNext() {
-				createCollaborationVorgang();
+		class TestEmptyCollaborationRequest {
 
-				verify(responseObserver).onNext(responseCaptor.capture());
-				assertThat(responseCaptor.getValue().getVorgangId()).isEmpty();
-			}
+			@Mock
+			private StreamObserver<GrpcCreateCollaborationVorgangResponse> responseObserver;
 
 			@Test
-			void shouldCallOnCompleted() {
-				createCollaborationVorgang();
-
-				verify(responseObserver).onCompleted();
+			void shouldThrowException() {
+				Assertions.assertThrows(CreateCollaborationVorgangBadRequestException.class, this::createCollaborationVorgang);
 			}
 
 			private void createCollaborationVorgang() {
 				service.createCollaborationVorgang(GrpcCreateCollaborationVorgangRequest.newBuilder().build(), responseObserver);
 			}
 		}
+	}
 
+	@Nested
+	class TestCreateCollaborationVorgang {
+
+		private static final GrpcCollaborationRequest GRPC_COLLABORATION_REQUEST = GrpcCollaborationRequestTestFactory.create();
+		private static final String COLLABORATION_VORGANG_ID = "collaboration-vorgang-id";
+		private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			doReturn(CREATE_COLLABORATION_VORGANG_REQUEST).when(service).buildCreateCollaborationVorgangRequest(any());
+			when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
+		}
+
+		@Test
+		void shouldCallBuildCreateCollaborationVorgangRequest() {
+			createCollaborationVorgang();
+
+			verify(service).buildCreateCollaborationVorgangRequest(GRPC_COLLABORATION_REQUEST);
+		}
+
+		@Test
+		void shouldCallCreateCollaborationVorgang() {
+			createCollaborationVorgang();
+
+			verify(collaborationService).createCollaborationVorgang(CREATE_COLLABORATION_VORGANG_REQUEST);
+		}
+
+		@Test
+		void should() {
+			var result = createCollaborationVorgang();
+
+			assertThat(result.getVorgangId()).isEqualTo(COLLABORATION_VORGANG_ID);
+		}
+
+		private GrpcCreateCollaborationVorgangResponse createCollaborationVorgang() {
+			return service.createCollaborationVorgang(GRPC_COLLABORATION_REQUEST);
+		}
 	}
 
 	@Nested
@@ -458,8 +484,7 @@ class GrpcVorgangServiceTest {
 		}
 
 		private CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest() {
-			return service.buildCreateCollaborationVorgangRequest(GrpcCreateCollaborationVorgangRequest.newBuilder()
-					.setCollaborationRequest(GRPC_COLLABORATION_REQUEST).build());
+			return service.buildCreateCollaborationVorgangRequest(GRPC_COLLABORATION_REQUEST);
 		}
 	}
 }
\ No newline at end of file