diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
index 7a994654aa92623602939a067f5a6155b6b45354..3aceb97490468096ade62e9803525e90f0cf8a03 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
@@ -1,32 +1,38 @@
 package de.ozgcloud.eingang.formcycle;
 
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
+import org.mapstruct.CollectionMappingStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.ReportingPolicy;
 
 import de.ozgcloud.eingang.common.formdata.ServiceKonto;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
 import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
 
-@Component
-class FormCycleServiceKontoMapper {
+@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, unmappedTargetPolicy = ReportingPolicy.WARN)
+interface FormCycleServiceKontoMapper {
+
+	@Mapping(target = "postfachAddress", ignore = true)
+	@Mapping(target = "postfachAddresses", expression = "java(fromGrpcPostfachAddresses(serviceKonto))")
+	ServiceKonto fromGrpc(FormCycleServiceKonto serviceKonto);
 
-	public ServiceKonto fromGrpc(FormCycleServiceKonto serviceKonto) {
-		return ServiceKonto.builder()
-				.type(serviceKonto.getType())
-				.postfachAddress(buildPostfachAddress(serviceKonto))
-				.trustLevel(StringUtils.trimToNull(serviceKonto.getTrustLevel()))
-				.build();
+	default String fromString(String str) {
+		return StringUtils.trimToNull(str);
 	}
 
-	PostfachAddress buildPostfachAddress(FormCycleServiceKonto serviceKonto) {
-		if (!serviceKonto.hasAddress()) {
-			return null;
-		}
-		var address = serviceKonto.getAddress();
-		return PostfachAddress.builder().identifier(buildPostfachId(address.getIdentifier())).version(address.getVersion()).build();
+	default List<PostfachAddress> fromGrpcPostfachAddresses(FormCycleServiceKonto serviceKonto) {
+		return serviceKonto.hasAddress() ? List.of(fromGrpc(serviceKonto.getAddress())) : Collections.emptyList();
 	}
 
-	private StringBasedIdentifier buildPostfachId(String identifier) {
+	@Mapping(target = "type", ignore = true)
+	@Mapping(target = "identifier", expression = "java(buildIdentifier(postfachAddress.getIdentifier()))")
+	PostfachAddress fromGrpc(FormCyclePostfachAddress postfachAddress);
+
+	default StringBasedIdentifier buildIdentifier(String identifier) {
 		return StringBasedIdentifier.builder().postfachId(identifier).build();
 	}
 }
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
index dd44600b8589f52baf63a56d1a337191bb863da0..b328284eb6b3ab4fdf010dd4240d4726ebd13209 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
@@ -6,7 +6,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
+import org.mapstruct.factory.Mappers;
 
 import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
 import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
@@ -14,12 +14,11 @@ import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
 
 class FormCycleServiceKontoMapperTest {
 
-	@Spy
-	private FormCycleServiceKontoMapper mapper;
+	private final FormCycleServiceKontoMapper mapper = Mappers.getMapper(FormCycleServiceKontoMapper.class);
 
-	@DisplayName("From grpc")
+	@DisplayName("From grpc serviceKonto")
 	@Nested
-	class TestFromGrpc {
+	class TestFromGrpcServiceKonto {
 
 		@DisplayName("trustLevel")
 		@Nested
@@ -42,28 +41,28 @@ class FormCycleServiceKontoMapperTest {
 			}
 		}
 
-		@DisplayName("build postfacha address")
+		@Test
+		void shouldNotPostfachAddressIfNotExists() {
+			var serviceKonto = mapper.fromGrpc(FormCycleServiceKontoTestFactory.createBuilder().clearAddress().build());
+
+			assertThat(serviceKonto.getPostfachAddresses()).isEmpty();
+		}
+
+		@DisplayName("postfachAddress")
 		@Nested
-		class TestBuildPostfachAddress {
+		class TestPostfachAddress {
 
 			@Test
 			void shouldMapPostkorbId() {
-				var postfachAddress = mapper.buildPostfachAddress(FormCycleServiceKontoTestFactory.create());
+				var postfachAddress = mapPostfachAddressFromGrpc();
 
 				assertThat(((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId())
 						.isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
 			}
 
 			@Test
-			void shouldNotMapEmptyPostkorbId() {
-				var postfachAddress = mapper.buildPostfachAddress(FormCycleServiceKonto.newBuilder().build());
-
-				assertThat(postfachAddress).isNull();
-			}
-
-			@Test
-			void shouldMapPostfachIdentifier() {
-				var postfachAddress = mapper.buildPostfachAddress(FormCycleServiceKontoTestFactory.create());
+			void shouldMapIdentifier() {
+				var postfachAddress = mapPostfachAddressFromGrpc();
 
 				assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
 			}
@@ -73,11 +72,15 @@ class FormCycleServiceKontoMapperTest {
 			}
 
 			@Test
-			void shouldMapPostfachAddressVersion() {
-				var postfachAddress = mapper.buildPostfachAddress(FormCycleServiceKontoTestFactory.create());
+			void shouldMapVersion() {
+				var postfachAddress = mapPostfachAddressFromGrpc();
 
 				assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION);
 			}
+
+			private PostfachAddress mapPostfachAddressFromGrpc() {
+				return mapper.fromGrpc(FormCycleServiceKontoTestFactory.create()).getPostfachAddresses().get(0);
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
index 4bce56df988633d787ccf865dafbf2bf3dcaba3b..2f8f6281405178875f7058247764e7a59cf06151 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
@@ -346,9 +346,4 @@ class FormDataControllerTest {
 			return FormData.builder().header(FormHeader.builder().build()).build();
 		}
 	}
-
-//	private String getPostfachIdFormData(FormData formData) {
-//		return ((StringBasedIdentifier) formData.getHeader().getServiceKonto().getPostfachAddresses()
-//				.get(0).getIdentifier()).getPostfachId();
-//	}
 }
\ No newline at end of file