diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
index c65e33018262555e9b38727cf434e221ec3ac4eb..1b932d19d2a567520bbdc4d0b0b3b0e73730f5ce 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
@@ -3,13 +3,17 @@ package de.ozgcloud.vorgang.servicekonto;
 import java.util.List;
 import java.util.Set;
 
+import jakarta.validation.constraints.NotEmpty;
+
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.validation.annotation.Validated;
 
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
 import lombok.extern.log4j.Log4j2;
 
+@Validated
 @Getter
 @Builder
 @Log4j2
@@ -21,6 +25,8 @@ public class ServiceKonto {
 
 	private String type;
 	private String trustLevel;
+
+	@NotEmpty
 	@Singular
 	private List<PostfachAddress> postfachAddresses;
 
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Eingang.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Eingang.java
index d8c1ab65d0365d32fed233f872c76569ecc36dfc..5b3c144fb06f7041feeeb423e938a5c515f47a90 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Eingang.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/Eingang.java
@@ -26,11 +26,14 @@ package de.ozgcloud.vorgang.vorgang;
 import java.util.List;
 import java.util.Map;
 
+import org.springframework.validation.annotation.Validated;
+
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
 import lombok.ToString;
 
+@Validated
 @ToString(onlyExplicitlyIncluded = true)
 @Getter
 @Builder(toBuilder = true)
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/EingangHeader.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/EingangHeader.java
index d092cc381f65bc11bc918bf1e3a157ceda3cb492..e85204977d73be962ca204fa299440d7332ad705 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/EingangHeader.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/EingangHeader.java
@@ -25,11 +25,14 @@ package de.ozgcloud.vorgang.vorgang;
 
 import java.time.ZonedDateTime;
 
+import org.springframework.validation.annotation.Validated;
+
 import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.ToString;
 
+@Validated
 @ToString
 @Getter
 @Builder
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 3b69aa9e535b41598d1f2d76f9645436e3c8e75c..51e2ba9baad098db8ba6c73cd84f6ee75ddd8d1a 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
@@ -30,6 +30,8 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import jakarta.validation.Valid;
+
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -37,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
 
 import de.ozgcloud.command.Command;
 import de.ozgcloud.command.VorgangCreatedEvent;
@@ -47,6 +50,7 @@ import de.ozgcloud.vorgang.common.errorhandling.NotFoundException;
 import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
 import lombok.NonNull;
 
+@Validated
 @Service
 public class VorgangService {
 
@@ -72,7 +76,7 @@ public class VorgangService {
 	@Autowired
 	private VorgangStubMapper stubMapper;
 
-	public Vorgang startCreation(Eingang eingang) {
+	public Vorgang startCreation(@Valid Eingang eingang) {
 		var mappedEingang = kopControlDataMapper.moveLabelsToControlData(eingang);
 
 		return repository.save(buildVorgang(mappedEingang, true));
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceITCase.java
index bf5cbf6aa9e27df1e36914d7584efebff804a04e..c2984475269832306c7462326caffeaadab6f276 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangGrpcServiceITCase.java
@@ -27,14 +27,11 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
-import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
-import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -42,29 +39,14 @@ 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;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.annotation.DirtiesContext;
 
-import de.ozgcloud.common.test.DataITCase;
 import de.ozgcloud.common.test.ITCase;
-import de.ozgcloud.vorgang.callcontext.CallContextUserTestFactory;
-import de.ozgcloud.vorgang.callcontext.CurrentUserService;
-import de.ozgcloud.vorgang.clientattribute.ClientAttribute;
-import de.ozgcloud.vorgang.clientattribute.ClientAttributeTestFactory;
-import de.ozgcloud.vorgang.clientattribute.ClientAttributesMap;
-import de.ozgcloud.vorgang.clientattribute.ClientAttributesMapTestFactory;
-import de.ozgcloud.vorgang.common.GrpcQueryOperator;
-import de.ozgcloud.vorgang.common.db.CriteriaUtil;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormFieldTestFactory;
 import de.ozgcloud.vorgang.common.grpc.GrpcSubFormTestFactory;
-import de.ozgcloud.vorgang.common.operator.OperatorBuilder;
-import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
 import io.grpc.stub.StreamObserver;
-import net.devh.boot.grpc.client.inject.GrpcClient;
 
 @ITCase
 class VorgangGrpcServiceITCase {
@@ -117,7 +99,7 @@ class VorgangGrpcServiceITCase {
 		void shouldKeepFieldsOrder() {
 			var grpcFormData = GrpcFormData.newBuilder().addAllField(formFields).build();
 
-			Map<String, Object> formData = startCreation(grpcFormData);
+			var formData = startCreation(grpcFormData);
 
 			assertThat(removeControlData(formData)).containsExactly(
 					entry(NAME_FIELD_1, FIELD_1),
@@ -131,7 +113,7 @@ class VorgangGrpcServiceITCase {
 					.addForm(GrpcSubFormTestFactory.createBuilder().setTitle(TITLE_SUBFORM_2))
 					.addForm(GrpcSubFormTestFactory.createBuilder().setTitle(TITLE_SUBFORM_3)).build();
 
-			Map<String, Object> formData = startCreation(grpcFormData);
+			var formData = startCreation(grpcFormData);
 
 			verifySubFormOrder(formData, TITLE_SUBFORM_1, TITLE_SUBFORM_2, TITLE_SUBFORM_3);
 		}
@@ -140,7 +122,7 @@ class VorgangGrpcServiceITCase {
 		@Test
 		void shouldKeepFieldsOrderInSubForm() {
 			var grpcFormData = GrpcFormDataTestFactory.createBuilder().addForm(
-							GrpcSubFormTestFactory.createBuilder().clearField().clearSubForm().setTitle(TITLE_SUBFORM_1).addAllField(formFields))
+					GrpcSubFormTestFactory.createBuilder().clearField().clearSubForm().setTitle(TITLE_SUBFORM_1).addAllField(formFields))
 					.build();
 
 			var formData = (Map<String, Object>) startCreation(grpcFormData).get(TITLE_SUBFORM_1);
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..5835a656a9cd2ed08c8002665bbc679e6439691f 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
@@ -29,6 +29,8 @@ import static org.mockito.Mockito.*;
 
 import java.util.List;
 
+import jakarta.validation.ConstraintViolationException;
+
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -40,6 +42,7 @@ import de.ozgcloud.common.test.DataITCase;
 import de.ozgcloud.notification.antragsteller.AntragstellerNotificationEventListener;
 import de.ozgcloud.notification.user.UserNotificationEventListener;
 import de.ozgcloud.vorgang.command.CommandService;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
 
 @DataITCase
 @WithMockUser
@@ -80,5 +83,20 @@ class VorgangServiceITCase {
 			verify(antragstellerNotificationEventListener, timeout(60000)).onVorgangCreated(any());
 			verify(userNotificationEventListener, timeout(60000)).onVorgangCreated(any());
 		}
+
+		@DisplayName("validation")
+		@Nested
+		class TestValidation {
+
+			@DisplayName("should be invalid on missing postfachAddress in serviceKonto")
+			@Test
+			void shouldBeInvalidOnMissingPostfachAddress() {
+				var eingang = EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder()
+						.serviceKonto(ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().build()).build())
+						.build();
+
+				assertThatThrownBy(() -> vorgangService.startCreation(eingang)).isInstanceOf(ConstraintViolationException.class);
+			}
+		}
 	}
 }
\ No newline at end of file