diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml
index 629bf0bece536022174a0218accaef7b90ce0a20..13b7b781af235f336c2fe725fcf39d1afad19e11 100644
--- a/pluto-server/pom.xml
+++ b/pluto-server/pom.xml
@@ -1,14 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
 		<groupId>de.itvsh.kop.common</groupId>
 		<artifactId>kop-common-parent</artifactId>
 		<version>1.1.0</version>
-		<relativePath/>
+		<relativePath />
 	</parent>
 
 	<groupId>de.itvsh.ozg.pluto</groupId>
@@ -28,7 +26,7 @@
 
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<mongock.version>5.0.35</mongock.version>
-		
+
 		<mongodb.testcontainer.version>1.15.3</mongodb.testcontainer.version>
 		<solr.testcontainer.version>1.16.2</solr.testcontainer.version>
 	</properties>
@@ -45,6 +43,11 @@
 			<artifactId>pluto-interface</artifactId>
 			<version>${project.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>de.itvsh.ozg.pluto</groupId>
+			<artifactId>pluto-utils</artifactId>
+			<version>${project.version}</version>
+		</dependency>
 
 
 		<!-- Spring -->
@@ -89,11 +92,11 @@
 			<groupId>org.aspectj</groupId>
 			<artifactId>aspectjrt</artifactId>
 		</dependency>
-		
+
 		<!-- solr -->
 		<dependency>
-		    <groupId>org.apache.solr</groupId>
-		    <artifactId>solr-solrj</artifactId>
+			<groupId>org.apache.solr</groupId>
+			<artifactId>solr-solrj</artifactId>
 		</dependency>
 
 		<!-- Tools -->
@@ -116,7 +119,7 @@
 			<artifactId>javafaker</artifactId>
 			<scope>test</scope>
 		</dependency>
-		
+
 		<dependency>
 			<groupId>org.mapstruct</groupId>
 			<artifactId>mapstruct</artifactId>
@@ -178,7 +181,7 @@
 			<groupId>org.springframework.security</groupId>
 			<artifactId>spring-security-test</artifactId>
 		</dependency>
-		
+
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-engine</artifactId>
@@ -197,23 +200,23 @@
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-		    <groupId>org.testcontainers</groupId>
-		    <artifactId>solr</artifactId>
-		    <version>${solr.testcontainer.version}</version>
-		    <scope>test</scope>
+			<groupId>org.testcontainers</groupId>
+			<artifactId>solr</artifactId>
+			<version>${solr.testcontainer.version}</version>
+			<scope>test</scope>
 		</dependency>
 
 		<!-- mongock -->
-		  <dependency>
-            <groupId>io.mongock</groupId>
-            <artifactId>mongock-springboot</artifactId>
-            <version>${mongock.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.mongock</groupId>
-            <artifactId>mongodb-springdata-v3-driver</artifactId>
-            <version>${mongock.version}</version>
-        </dependency>
+		<dependency>
+			<groupId>io.mongock</groupId>
+			<artifactId>mongock-springboot</artifactId>
+			<version>${mongock.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>io.mongock</groupId>
+			<artifactId>mongodb-springdata-v3-driver</artifactId>
+			<version>${mongock.version}</version>
+		</dependency>
 	</dependencies>
 
 	<build>
@@ -264,4 +267,4 @@
 		</snapshotRepository>
 	</distributionManagement>
 
-</project>
+</project>
\ No newline at end of file
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapper.java
index 939f620ad026d2ee2b115fb5e36679e4c7ea786d..151c6f7738ad5da3db1717c055770dc5059f5e4e 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapper.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapper.java
@@ -7,7 +7,7 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.mapstruct.ReportingPolicy;
 
-import de.itvsh.ozg.pluto.common.GrpcObjectMapper;
+import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
 import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItem;
 
 @Mapper(uses = GrpcObjectMapper.class, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapper.java
index 493c7e7a8556908f1035256c8d6d514d427562ec..c50fc53ef788254fd7889bb40308b589483e3567 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapper.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapper.java
@@ -11,7 +11,7 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.mapstruct.ValueMapping;
 
-import de.itvsh.ozg.pluto.common.GrpcObjectMapper;
+import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
 import de.itvsh.ozg.pluto.files.FileIdMapper;
 import de.itvsh.ozg.pluto.grpc.command.GrpcCallContext;
 import de.itvsh.ozg.pluto.grpc.command.GrpcCreateCommandRequest;
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/migration/M001_MigrateMailServiceAttachmentsToGridFs.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/migration/M001_MigrateMailServiceAttachmentsToGridFs.java
index a3a22e2ff4880a41f0ae5779a2f75ad249c8b72e..b5711cbfe19e8912517042fc70b032ce9f2d967b 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/migration/M001_MigrateMailServiceAttachmentsToGridFs.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/migration/M001_MigrateMailServiceAttachmentsToGridFs.java
@@ -76,8 +76,8 @@ public class M001_MigrateMailServiceAttachmentsToGridFs { // NOSONAR
 				try {
 					storeToGridFs(gridFs, file);
 				} catch (MongoServerException | IOException e) {
-					LOG.error("Error migrating Attachment id {}", attachment, e);
-					throw new RuntimeException(e.getMessage(), e);
+					LOG.error("Error migrating Attachment id " + attachment, e);
+					throw new MigrationException("Error migrating Attachment with id " + attachment, e);
 				}
 			}
 		}
@@ -113,7 +113,7 @@ public class M001_MigrateMailServiceAttachmentsToGridFs { // NOSONAR
 			try {
 				out.write(t);
 			} catch (IOException e) {
-				throw new RuntimeException("Error converting data", e);
+				throw new MigrationException("Error converting data", e);
 			}
 		});
 		return out.toByteArray();
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapperTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapperTest.java
index 13e42752fc6eda7d494d3b11b8a07eed31eced5a..a9dc3c0a3510b80c1cfb2d1a7e5365c8375fc4aa 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapperTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/attached_item/GrpcVorgangAttachedItemMapperTest.java
@@ -8,7 +8,7 @@ import org.mapstruct.factory.Mappers;
 import org.mockito.InjectMocks;
 import org.mockito.Spy;
 
-import de.itvsh.ozg.pluto.common.GrpcObjectMapper;
+import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItem;
 
diff --git a/pluto-utils/pom.xml b/pluto-utils/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ec6276cb523a08c6fe0dddd8060abf095175c2b
--- /dev/null
+++ b/pluto-utils/pom.xml
@@ -0,0 +1,97 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>de.itvsh.kop.common</groupId>
+		<artifactId>kop-common-dependencies</artifactId>
+		<version>1.1.1-SNAPSHOT</version>
+		<relativePath />
+	</parent>
+
+	<groupId>de.itvsh.ozg.pluto</groupId>
+	<artifactId>pluto-utils</artifactId>
+	<name>Pluto Util Project</name>
+	<version>0.25.0-SNAPSHOT</version>
+
+	<properties>
+		<pluto.version>0.25.0-SNAPSHOT</pluto.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>de.itvsh.kop.common</groupId>
+			<artifactId>kop-common-lib</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>de.itvsh.ozg.pluto</groupId>
+			<artifactId>pluto-interface</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mapstruct</groupId>
+			<artifactId>mapstruct</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.mapstruct</groupId>
+			<artifactId>mapstruct-processor</artifactId>
+			<version>${mapstruct.version}</version>
+		</dependency>
+
+		<!--TEST-->
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-engine</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-params</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.assertj</groupId>
+			<artifactId>assertj-core</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>${java.version}</source>
+					<target>${java.version}</target>
+					<fork>true</fork>
+					<annotationProcessorPaths>
+						<path>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok</artifactId>
+							<version>${lombok.version}</version>
+						</path>
+						<path>
+							<groupId>org.mapstruct</groupId>
+							<artifactId>mapstruct-processor</artifactId>
+							<version>${mapstruct.version}</version>
+						</path>
+					</annotationProcessorPaths>
+
+					<showWarnings>true</showWarnings>
+					<compilerArgs>
+						<compilerArg>
+							-Amapstruct.defaultComponentModel=spring
+						</compilerArg>
+						<compilerArg>
+							-Amapstruct.unmappedTargetPolicy=WARN
+						</compilerArg>
+						<compilerArg>
+							-Amapstruct.unmappedSourcePolicy=WARN
+						</compilerArg>
+					</compilerArgs>
+					<generatedSourcesDirectory>target/generated-sources</generatedSourcesDirectory>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapper.java b/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapper.java
index b721f2bea4bb64117d305331ed30103d6bff1f93..bf7b95d2ca70c1e07efd548c776a88b4c7c60861 100644
--- a/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapper.java
+++ b/pluto-utils/src/main/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapper.java
@@ -1,4 +1,4 @@
-package de.itvsh.ozg.pluto.common;
+package de.itvsh.kop.pluto.common.grpc;
 
 import java.time.LocalDate;
 import java.time.ZonedDateTime;
@@ -10,6 +10,9 @@ import java.util.Map.Entry;
 import org.mapstruct.Mapper;
 
 import de.itvsh.kop.common.datatype.StringBasedValue;
+import de.itvsh.ozg.pluto.common.GrpcObject;
+import de.itvsh.ozg.pluto.common.GrpcProperty;
+import de.itvsh.ozg.pluto.common.GrpcSubObject;
 
 @Mapper
 public interface GrpcObjectMapper {
diff --git a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapperTest.java b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapperTest.java
index 153a99a8fd8e5339a7f1792f071d015bb5417f1f..a88de9c1449efe501df78671a4ab6e5dfe5ce065 100644
--- a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapperTest.java
+++ b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectMapperTest.java
@@ -1,4 +1,4 @@
-package de.itvsh.ozg.pluto.common;
+package de.itvsh.kop.pluto.common.grpc;
 
 import static org.assertj.core.api.Assertions.*;
 
@@ -8,6 +8,8 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 
+import de.itvsh.ozg.pluto.common.GrpcObject;
+
 class GrpcObjectMapperTest {
 
 	private final GrpcObjectMapper mapper = Mappers.getMapper(GrpcObjectMapper.class);
@@ -43,13 +45,6 @@ class GrpcObjectMapperTest {
 		assertThat(getFirstValueOfFirstProperty(grpcObject)).isEqualTo(GrpcObjectTestFactory.PROPERTY_BOOLEAN_VALUE.toString());
 	}
 
-	@Test
-	void shouldMapDateMapToGrpc() {
-		var grpcObject = mapper.fromMap(GrpcObjectTestFactory.DATE_MAP);
-
-		assertThat(getFirstValueOfFirstProperty(grpcObject)).isEqualTo(GrpcObjectTestFactory.PROPERTY_DATE_VALUE.toString());
-	}
-
 	@Test
 	void shouldMapLocalDateMapToGrpc() {
 		var grpcObject = mapper.fromMap(GrpcObjectTestFactory.LOCAL_DATE_MAP);
@@ -136,6 +131,7 @@ class GrpcObjectMapperTest {
 				}
 			}
 
+			@SuppressWarnings("unchecked")
 			private Map<String, Object> getSubObjectMap(Map<String, Object> map, String key) {
 				return (Map<String, Object>) map.get(key);
 			}
diff --git a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectTestFactory.java b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectTestFactory.java
index 35714ccf31e23d2c2612d7512eb7413a2deffd44..2b9c4a90b7319ad0d7ed88a725158472390a4f31 100644
--- a/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectTestFactory.java
+++ b/pluto-utils/src/test/java/de/itvsh/kop/pluto/common/grpc/GrpcObjectTestFactory.java
@@ -1,4 +1,4 @@
-package de.itvsh.ozg.pluto.common;
+package de.itvsh.kop.pluto.common.grpc;
 
 import java.time.LocalDate;
 import java.time.ZonedDateTime;
@@ -9,6 +9,9 @@ import java.util.Map;
 import com.thedeanda.lorem.LoremIpsum;
 
 import de.itvsh.kop.common.binaryfile.FileId;
+import de.itvsh.ozg.pluto.common.GrpcObject;
+import de.itvsh.ozg.pluto.common.GrpcProperty;
+import de.itvsh.ozg.pluto.common.GrpcSubObject;
 
 public class GrpcObjectTestFactory {
 
diff --git a/pom.xml b/pom.xml
index 65a028fdf088c2fab8686287116f15c7fa1830f9..fad7e2089f2cb7f63c887b16baa86c12067c09fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,6 +14,7 @@
 		<module>pluto-interface</module>
 		<module>pluto-server</module>
 		<module>mail-service</module>
+		<module>pluto-utils</module>
 	</modules>
 </project>