diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml
index 13b7b781af235f336c2fe725fcf39d1afad19e11..211e36fb379d01edfe4d452df0e5fd9df148b2ae 100644
--- a/pluto-server/pom.xml
+++ b/pluto-server/pom.xml
@@ -165,6 +165,13 @@
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>de.itvsh.ozg.pluto</groupId>
+			<artifactId>pluto-utils</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
 
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapper.java
index cbc5e64d4de3e8a4bc16b80238c62f8788eaffd9..d4661300bfdb6e8657d6df86feef70b85891b705 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapper.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapper.java
@@ -5,6 +5,8 @@ import org.mapstruct.Mapping;
 import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 
+import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper;
+
 @Mapper(uses = { GrpcFormDataMapper.class }, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
 interface AntragstellerMapper {
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java
index 88746c78005ea852fd010d8a297b0d616b672bc4..bb6afdb4bca4baa9bb98638da373302f21dea246 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java
@@ -9,6 +9,8 @@ import org.mapstruct.Mapping;
 import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 
+import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper;
+
 @Mapper(uses = { AntragstellerMapper.class,
 		EingangHeaderMapper.class, IncomingFileMapper.class, GrpcFormDataMapper.class }, //
 		nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapperTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapperTest.java
index 02bf7ec9fb2b484b0b543857353c9d68ba8e2e3e..9a099021e8c845a7e612137164f01b0c1557f481 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapperTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/AntragstellerMapperTest.java
@@ -9,6 +9,8 @@ import org.mapstruct.factory.Mappers;
 import org.mockito.InjectMocks;
 import org.mockito.Spy;
 
+import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper;
+
 class AntragstellerMapperTest {
 
 	@InjectMocks
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/EingangMapperTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/EingangMapperTest.java
index 978d8e8f2eab5739fcf0d7841cd5f266046ddeb6..e515edfec212f2c1b05712e844a8d7b88bd96a85 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/EingangMapperTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/EingangMapperTest.java
@@ -1,6 +1,6 @@
 package de.itvsh.ozg.pluto.vorgang;
 
-import static de.itvsh.ozg.pluto.vorgang.GrpcSubFormTestFactory.*;
+import static de.itvsh.kop.pluto.common.grpc.GrpcSubFormTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
@@ -19,6 +19,8 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.springframework.test.util.ReflectionTestUtils;
 
+import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper;
+import de.itvsh.kop.pluto.common.grpc.GrpcSubFormTestFactory;
 import de.itvsh.ozg.pluto.files.FileIdMapper;
 
 class EingangMapperTest {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcEingangTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcEingangTestFactory.java
index a0de936abe27516f0b4513fd1ee543e259f7d840..c109aafa4b37e26d0294288657d819136e035787 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcEingangTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcEingangTestFactory.java
@@ -2,6 +2,8 @@ package de.itvsh.ozg.pluto.vorgang;
 
 import java.util.UUID;
 
+import de.itvsh.kop.pluto.common.grpc.GrpcSubFormTestFactory;
+
 public class GrpcEingangTestFactory {
 
 	public static final String ID = UUID.randomUUID().toString();
diff --git a/pluto-utils/pom.xml b/pluto-utils/pom.xml
index 5ec6276cb523a08c6fe0dddd8060abf095175c2b..93b26b685d88b346b0b8138dd24330c897564c3d 100644
--- a/pluto-utils/pom.xml
+++ b/pluto-utils/pom.xml
@@ -48,6 +48,16 @@
 			<artifactId>junit-jupiter-params</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-junit-jupiter</artifactId>
+			<scope>test</scope>
+		</dependency>
 		<dependency>
 			<groupId>org.assertj</groupId>
 			<artifactId>assertj-core</artifactId>
@@ -57,6 +67,17 @@
 
 	<build>
 		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>test-jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>
diff --git a/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapper.java b/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapper.java
index 33a8d6c26eced3c6fb035ae2f5e8a736d2194cf8..1dc41f7719ebdf60cddee1bc1287a0483a3a6f42 100644
--- a/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapper.java
+++ b/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapper.java
@@ -1,4 +1,4 @@
-package de.itvsh.ozg.pluto.vorgang;
+package de.itvsh.kop.pluto.common.grpc;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -7,7 +7,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.mapstruct.CollectionMappingStrategy;
@@ -16,12 +15,16 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.mapstruct.ReportingPolicy;
 
+import de.itvsh.ozg.pluto.vorgang.GrpcFormData;
+import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
+import de.itvsh.ozg.pluto.vorgang.GrpcSubForm;
+
 @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, //
 		unmappedSourcePolicy = ReportingPolicy.WARN, //
 		nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
 		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
-interface GrpcFormDataMapper {
+public interface GrpcFormDataMapper {
 
 	default GrpcFormData mapToFormData(Map<String, Object> formData) {
 		return GrpcFormData.newBuilder()
@@ -34,7 +37,7 @@ interface GrpcFormDataMapper {
 	default List<GrpcFormField> mapToAllFields(Map<String, Object> formData) {
 		return formData.entrySet().stream().filter(entry -> entry.getValue() instanceof String)//
 				.map(entry -> mapToField(entry.getKey(), entry.getValue().toString()))//
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	default List<GrpcFormField> mapStringListsToFields(Map<String, Object> formData) {
@@ -42,7 +45,7 @@ interface GrpcFormDataMapper {
 				.filter(entry -> entry.getValue() instanceof List)
 				.map(this::mapListStringElementsToFormFields)
 				.flatMap(List::stream)
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	@SuppressWarnings("unchecked")
@@ -51,7 +54,7 @@ interface GrpcFormDataMapper {
 				.filter(String.class::isInstance)
 				.map(String.class::cast)
 				.map(e -> mapToField(entry.getKey(), e))
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	default List<GrpcSubForm> mapObjectListsToFields(Map<String, Object> formData) {
@@ -59,7 +62,7 @@ interface GrpcFormDataMapper {
 				.filter(entry -> entry.getValue() instanceof List)
 				.map(this::mapListObjectElementsToFormFields)
 				.flatMap(List::stream)
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	@SuppressWarnings("unchecked")
@@ -68,7 +71,7 @@ interface GrpcFormDataMapper {
 				.filter(Map.class::isInstance)
 				.map(Map.class::cast)
 				.map(e -> buildSubForm(entry.getKey(), e))
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	@SuppressWarnings("unchecked")
@@ -76,7 +79,7 @@ interface GrpcFormDataMapper {
 		return formData.entrySet().stream()
 				.filter(entry -> entry.getValue() instanceof Map)
 				.map(entry -> buildSubForm(entry.getKey(), (Map<String, Object>) entry.getValue()))
-				.collect(Collectors.toList());
+				.toList();
 	}
 
 	default GrpcSubForm buildSubForm(String name, Map<String, Object> map) {
diff --git a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapperTest.java b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapperTest.java
index 562ddbf465a2582aecbfaccb7a4d46e11318e459..6ad0cd460a36640c2b21cd2e53b67c9c1e34a6e7 100644
--- a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapperTest.java
+++ b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormDataMapperTest.java
@@ -1,4 +1,4 @@
-package de.itvsh.ozg.pluto.vorgang;
+package de.itvsh.kop.pluto.common.grpc;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -17,6 +17,10 @@ import org.mapstruct.factory.Mappers;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 
+import de.itvsh.ozg.pluto.vorgang.GrpcFormData;
+import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
+import de.itvsh.ozg.pluto.vorgang.GrpcSubForm;
+
 class GrpcFormDataMapperTest {
 
 	@InjectMocks
@@ -27,7 +31,7 @@ class GrpcFormDataMapperTest {
 
 	@BeforeEach
 	void mockMapperReturnValues() {
-		lenient().when(grpcFormDataMapper.mapToFormData(any(Map.class)))
+		lenient().when(grpcFormDataMapper.mapToFormData(anyMap()))
 				.thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build());
 	}
 
diff --git a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormFieldTestFactory.java b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormFieldTestFactory.java
index 0abb2fbee7c6f27b16aacec00a311f2122a2aaab..8fe4feb11599c5bfba7dcdad27901c0ff4c7c71b 100644
--- a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormFieldTestFactory.java
+++ b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcFormFieldTestFactory.java
@@ -1,4 +1,6 @@
-package de.itvsh.ozg.pluto.vorgang;
+package de.itvsh.kop.pluto.common.grpc;
+
+import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
 
 public class GrpcFormFieldTestFactory {