From 23a79e622ff4c182df8163954060ccd4866f4252 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 28 Jun 2023 15:52:53 +0200
Subject: [PATCH] introduce pluto-common and move callcontext there

---
 .../ozg/pluto/command/CommandTestFactory.java |  2 +
 pluto-common/pom.xml                          | 61 +++++++++++++++++++
 .../ozg/pluto/PlutoServerApplication.java     | 10 +--
 .../common/callcontext}/CallContext.java      |  2 +-
 .../CallContextAuthenticationToken.java       |  0
 .../CallContextHandleInterceptor.java         |  0
 .../common/callcontext/CallContextUser.java   |  0
 .../callcontext/CurrentUserService.java       |  0
 .../ozg/pluto/common/callcontext}/User.java   |  3 +-
 ...ClientCallContextAttachingInterceptor.java |  0
 .../CallContextHandleInterceptorTest.java     |  1 -
 .../callcontext/CallContextTestFactory.java   |  7 +--
 .../CallContextUserTestFactory.java           |  2 -
 .../callcontext/CurrentUserServiceITCase.java |  0
 .../callcontext/CurrentUserServiceTest.java   |  0
 .../TestCallContextAttachingInterceptor.java  |  3 +-
 .../common/callcontext}/UserTestFactory.java  |  4 +-
 ...ntCallContextAttachingInterceptorTest.java |  0
 .../org.junit.jupiter.api.extension.Extension |  1 +
 .../test/resources/junit-platform.properties  |  1 +
 .../org.mockito.plugins.MockMaker             |  1 +
 pluto-server/pom.xml                          | 37 ++++++-----
 .../ozg/pluto/PlutoServerConfiguration.java   | 15 +++++
 .../ozg/pluto/command/CommandService.java     |  2 +
 .../pluto/command/CreateCommandRequest.java   |  1 +
 .../GrpcCreateCommandRequestMapper.java       |  2 +
 ...sistPostfachNachrichtByCommandService.java |  2 +
 .../common/converter/CustomConverters.java    |  2 +-
 .../ozg/pluto/command/CommandServiceTest.java |  1 +
 .../ozg/pluto/command/CommandTestFactory.java |  1 +
 .../CreateCommandRequestTestFactory.java      |  1 +
 .../GrpcCreateCommandRequestMapperTest.java   |  2 +
 .../pluto/command/GrpcUserTestFactory.java    |  1 +
 ...istPostfachMailByCommandServiceITCase.java |  1 +
 ...rsistPostfachMailByCommandServiceTest.java |  1 +
 .../search/IndexedVorgangMapperTest.java      |  2 +-
 .../search/IndexedVorgangTestFactory.java     |  2 +-
 ...SearchVorgangCustomRepositoryImplTest.java |  2 +-
 .../common/security/PolicyServiceTest.java    |  2 +-
 .../files/BinaryFileRepositoryITCase.java     |  2 +-
 .../pluto/files/BinaryFileRepositoryTest.java |  2 +-
 .../ozg/pluto/files/GridFsTestFactory.java    |  2 +-
 .../vorgang/FilterCriteriaTestFactory.java    |  2 +-
 .../vorgang/GrpcFilterByTestFactory.java      |  2 +-
 .../VorgangHeaderRepositoryITCase.java        |  2 +-
 .../ozg/pluto/vorgang/VorgangTestFactory.java |  2 +-
 pom.xml                                       |  1 +
 47 files changed, 140 insertions(+), 50 deletions(-)
 create mode 100644 pluto-common/pom.xml
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java (80%)
 rename {pluto-server/src/main/java/de/itvsh/ozg/pluto/command => pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext}/CallContext.java (96%)
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextAuthenticationToken.java (100%)
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptor.java (100%)
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUser.java (100%)
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserService.java (100%)
 rename {pluto-server/src/main/java/de/itvsh/ozg/pluto/command => pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext}/User.java (93%)
 rename {pluto-server => pluto-common}/src/main/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptor.java (100%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java (99%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java (90%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java (96%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceITCase.java (100%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceTest.java (100%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java (94%)
 rename {pluto-server/src/test/java/de/itvsh/ozg/pluto/command => pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext}/UserTestFactory.java (93%)
 rename {pluto-server => pluto-common}/src/test/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptorTest.java (100%)
 create mode 100644 pluto-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
 create mode 100644 pluto-common/src/test/resources/junit-platform.properties
 create mode 100644 pluto-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
 create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerConfiguration.java

diff --git a/pluto-command/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java b/pluto-command/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
index 08c9594a9..77fe730af 100644
--- a/pluto-command/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
+++ b/pluto-command/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
@@ -6,6 +6,7 @@ import java.util.UUID;
 public class CommandTestFactory {
 
 	public static final String ID = UUID.randomUUID().toString();
+	public static final String VORGANG_ID = UUID.randomUUID().toString();
 	public static final String ORDER = "DO_TEST";
 
 	public static final String CREATED_BY = UUID.randomUUID().toString();
@@ -17,6 +18,7 @@ public class CommandTestFactory {
 	public static TestCommand.TestCommandBuilder createBuilder() {
 		return TestCommand.builder()
 				.id(ID)
+				.vorgangId(VORGANG_ID)
 				.body(Map.of())
 				.bodyObject(Map.of())
 				.createdBy(CREATED_BY);
diff --git a/pluto-common/pom.xml b/pluto-common/pom.xml
new file mode 100644
index 000000000..e9ce3bfdb
--- /dev/null
+++ b/pluto-common/pom.xml
@@ -0,0 +1,61 @@
+<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.8.0-SNAPSHOT</version>
+		<relativePath />
+	</parent>
+
+	<groupId>de.itvsh.ozg.pluto</groupId>
+	<artifactId>pluto-common</artifactId>
+	<version>1.12.0-SNAPSHOT</version>
+
+	<name>OZG-Cloud Vorgang Manager Common</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-core</artifactId>
+		</dependency>
+		
+		<dependency>
+			<groupId>net.devh</groupId>
+			<artifactId>grpc-server-spring-boot-starter</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-validation</artifactId>
+		</dependency>
+		
+		<!-- TEST -->
+		<dependency>
+			<groupId>org.springframework.security</groupId>
+			<artifactId>spring-security-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	
+	<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>
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java
similarity index 80%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java
index cfd467fea..4036e2506 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java
+++ b/pluto-common/src/main/java/de/itvsh/ozg/pluto/PlutoServerApplication.java
@@ -32,24 +32,18 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
-import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.security.authentication.AuthenticationTrustResolver;
 import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
 import org.springframework.security.task.DelegatingSecurityContextAsyncTaskExecutor;
 
-import io.mongock.runner.springboot.EnableMongock;
-
 @SpringBootApplication(scanBasePackages = { "de.itvsh.*", "de.ozgcloud" })
 @EnableAsync
 @EnableScheduling
 @EnableAspectJAutoProxy(proxyTargetClass = true)
-@EnableMongock
+
 @ConfigurationPropertiesScan("de.itvsh.ozg.pluto.common.*")
-@EnableMongoRepositories(basePackages = { "de.itvsh.ozg.pluto.vorgang", "de.itvsh.ozg.pluto.attached_item", "de.itvsh.ozg.pluto.command" })
-@EnableElasticsearchRepositories(basePackages = "de.itvsh.ozg.pluto.common.search")
 public class PlutoServerApplication {
 
 	public static void main(String[] args) {
@@ -64,7 +58,7 @@ public class PlutoServerApplication {
 
 	@Primary
 	@Bean
-	public DelegatingSecurityContextAsyncTaskExecutor delegatingTaskExecutor(AsyncTaskExecutor applicationTaskExecutor) {
+	DelegatingSecurityContextAsyncTaskExecutor delegatingTaskExecutor(AsyncTaskExecutor applicationTaskExecutor) {
 		return new DelegatingSecurityContextAsyncTaskExecutor(applicationTaskExecutor);
 	}
 }
\ No newline at end of file
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CallContext.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContext.java
similarity index 96%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CallContext.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContext.java
index 629dc7b52..b210b49a4 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CallContext.java
+++ b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContext.java
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.ozg.pluto.command;
+package de.itvsh.ozg.pluto.common.callcontext;
 
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextAuthenticationToken.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextAuthenticationToken.java
similarity index 100%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextAuthenticationToken.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextAuthenticationToken.java
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptor.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptor.java
similarity index 100%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptor.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptor.java
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUser.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUser.java
similarity index 100%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUser.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUser.java
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserService.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserService.java
similarity index 100%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserService.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserService.java
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/User.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/User.java
similarity index 93%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/command/User.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/User.java
index 6806e0ece..f8e17c72b 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/User.java
+++ b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/User.java
@@ -21,11 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.ozg.pluto.command;
+package de.itvsh.ozg.pluto.common.callcontext;
 
 import javax.validation.constraints.NotNull;
 
-import de.itvsh.ozg.pluto.common.callcontext.CallContextUser;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptor.java b/pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptor.java
similarity index 100%
rename from pluto-server/src/main/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptor.java
rename to pluto-common/src/main/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptor.java
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java
similarity index 99%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java
index ed65754c5..18afc4772 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java
+++ b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextHandleInterceptorTest.java
@@ -37,7 +37,6 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.springframework.security.core.context.SecurityContextHolder;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextHandleInterceptor.LogContextSettingListener;
 import io.grpc.Metadata;
 import io.grpc.ServerCall;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java
similarity index 90%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java
index 0f8deb0a3..091c6db54 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java
+++ b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextTestFactory.java
@@ -23,17 +23,14 @@
  */
 package de.itvsh.ozg.pluto.common.callcontext;
 
-import static de.itvsh.ozg.pluto.command.UserTestFactory.*;
 import static de.itvsh.ozg.pluto.common.callcontext.CallContextHandleInterceptor.*;
+import static de.itvsh.ozg.pluto.common.callcontext.UserTestFactory.*;
 
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
 import de.itvsh.kop.common.grpc.GrpcUtil;
-import de.itvsh.ozg.pluto.command.CallContext;
-import de.itvsh.ozg.pluto.command.User;
-import de.itvsh.ozg.pluto.command.UserTestFactory;
 import io.grpc.Metadata;
 
 public class CallContextTestFactory {
@@ -66,7 +63,7 @@ public class CallContextTestFactory {
 
 	public static Metadata createMetadata() {
 		var result = new Metadata();
-		result.put(GrpcUtil.createKeyOf(KEY_USER_ID), ID.getBytes());
+		result.put(GrpcUtil.HEADER_KEY_USER_ID, ID.getBytes());
 		result.put(GrpcUtil.createKeyOf(KEY_USER_NAME), NAME.getBytes());
 		result.put(GrpcUtil.createKeyOf(KEY_CLIENT_NAME), CLIENT.getBytes());
 		result.put(GrpcUtil.createKeyOf(KEY_ACCESS_LIMITED_ORGAID), ORGANISATORISCHE_EINHEITEN_ID.getBytes());
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java
similarity index 96%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java
index 7ddefbed7..0d8c361ce 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java
+++ b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CallContextUserTestFactory.java
@@ -25,8 +25,6 @@ package de.itvsh.ozg.pluto.common.callcontext;
 
 import java.util.Optional;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
-
 public class CallContextUserTestFactory {
 
 	public static CallContextUser create() {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceITCase.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceITCase.java
similarity index 100%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceITCase.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceITCase.java
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceTest.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceTest.java
similarity index 100%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceTest.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/CurrentUserServiceTest.java
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java
similarity index 94%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java
index 38d6482fb..165904174 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java
+++ b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/TestCallContextAttachingInterceptor.java
@@ -24,7 +24,6 @@
 package de.itvsh.ozg.pluto.common.callcontext;
 
 import de.itvsh.kop.common.grpc.GrpcUtil;
-import de.itvsh.ozg.pluto.vorgang.ZustaendigeStelleTestFactory;
 import io.grpc.CallOptions;
 import io.grpc.Channel;
 import io.grpc.ClientCall;
@@ -38,7 +37,7 @@ import lombok.Setter;
 public class TestCallContextAttachingInterceptor implements ClientInterceptor {
 
 	private final String clientName = CallContextTestFactory.CLIENT;
-	private final String organisationEinheitId = ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID;
+	private final String organisationEinheitId = "abc123";
 	private final Boolean organisationEinheitIdCheckNecessary = Boolean.TRUE;
 
 	@Override
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/UserTestFactory.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/UserTestFactory.java
similarity index 93%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/command/UserTestFactory.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/UserTestFactory.java
index 2862afe1b..914f78a01 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/UserTestFactory.java
+++ b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/UserTestFactory.java
@@ -21,10 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.ozg.pluto.command;
+package de.itvsh.ozg.pluto.common.callcontext;
 
 import java.util.UUID;
 
+import de.itvsh.ozg.pluto.common.callcontext.User;
+
 public class UserTestFactory {
 
 	public static final String ID = UUID.randomUUID().toString();
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptorTest.java b/pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptorTest.java
similarity index 100%
rename from pluto-server/src/test/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptorTest.java
rename to pluto-common/src/test/java/de/itvsh/ozg/pluto/common/callcontext/VorgangManagerClientCallContextAttachingInterceptorTest.java
diff --git a/pluto-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/pluto-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
new file mode 100644
index 000000000..79b126e6c
--- /dev/null
+++ b/pluto-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
@@ -0,0 +1 @@
+org.mockito.junit.jupiter.MockitoExtension
\ No newline at end of file
diff --git a/pluto-common/src/test/resources/junit-platform.properties b/pluto-common/src/test/resources/junit-platform.properties
new file mode 100644
index 000000000..1cebb76d5
--- /dev/null
+++ b/pluto-common/src/test/resources/junit-platform.properties
@@ -0,0 +1 @@
+junit.jupiter.extensions.autodetection.enabled = true
\ No newline at end of file
diff --git a/pluto-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/pluto-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
new file mode 100644
index 000000000..ca6ee9cea
--- /dev/null
+++ b/pluto-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
@@ -0,0 +1 @@
+mock-maker-inline
\ No newline at end of file
diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml
index ac765c845..3cb6ce1db 100644
--- a/pluto-server/pom.xml
+++ b/pluto-server/pom.xml
@@ -64,11 +64,18 @@
 
 	<dependencies>
 		<!-- own Project -->
+		<dependency>
+			<groupId>de.itvsh.ozg.pluto</groupId>
+			<artifactId>pluto-common</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+		
 		<dependency>
 			<groupId>de.itvsh.ozg.mail</groupId>
 			<artifactId>mail-service</artifactId>
 			<version>${project.version}</version>
 		</dependency>
+		
 		<dependency>
 			<groupId>de.itvsh.ozg.pluto</groupId>
 			<artifactId>pluto-interface</artifactId>
@@ -122,10 +129,7 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-mongodb</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>net.devh</groupId>
-			<artifactId>grpc-server-spring-boot-starter</artifactId>
-		</dependency>
+		
 
 		<!--only required for NachrichtenManager -->
 		<dependency>
@@ -142,24 +146,15 @@
 			<artifactId>spring-webmvc</artifactId>
 		</dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
+		
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-actuator</artifactId>
 		</dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-validation</artifactId>
-		</dependency>
+		
 
-		<dependency>
-			<groupId>org.springframework.security</groupId>
-			<artifactId>spring-security-core</artifactId>
-		</dependency>
+		
 
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
@@ -243,6 +238,13 @@
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>de.itvsh.ozg.pluto</groupId>
+			<artifactId>pluto-common</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
 		<dependency>
 			<groupId>de.itvsh.ozg.pluto</groupId>
 			<artifactId>pluto-utils</artifactId>
@@ -262,10 +264,13 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
+		
 		<dependency>
 			<groupId>org.springframework.security</groupId>
 			<artifactId>spring-security-test</artifactId>
+			<scope>test</scope>
 		</dependency>
+		
 		<dependency>
 			<groupId>org.springframework.ws</groupId>
 			<artifactId>spring-ws-test</artifactId>
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerConfiguration.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerConfiguration.java
new file mode 100644
index 000000000..8cdd25b05
--- /dev/null
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/PlutoServerConfiguration.java
@@ -0,0 +1,15 @@
+package de.itvsh.ozg.pluto;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+import io.mongock.runner.springboot.EnableMongock;
+
+@Configuration
+@EnableMongock
+@EnableMongoRepositories(basePackages = { "de.itvsh.ozg.pluto.vorgang", "de.itvsh.ozg.pluto.attached_item", "de.itvsh.ozg.pluto.command" })
+@EnableElasticsearchRepositories(basePackages = "de.itvsh.ozg.pluto.common.search")
+public class PlutoServerConfiguration {
+
+}
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CommandService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CommandService.java
index 7fd65a282..036aeef80 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CommandService.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CommandService.java
@@ -38,8 +38,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import de.itvsh.kop.common.errorhandling.TechnicalException;
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextUser;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import de.itvsh.ozg.pluto.common.callcontext.User;
 import lombok.extern.log4j.Log4j2;
 
 @Service
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CreateCommandRequest.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CreateCommandRequest.java
index 33f698696..dc9303e18 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CreateCommandRequest.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/CreateCommandRequest.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
 import de.itvsh.ozg.pluto.vorgang.redirect.RedirectRequest;
 import lombok.Builder;
 import lombok.Getter;
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 223984220..eeadb56fb 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
@@ -36,7 +36,9 @@ import org.mapstruct.ValueMapping;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import de.itvsh.ozg.pluto.common.callcontext.User;
 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/command/PersistPostfachNachrichtByCommandService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/PersistPostfachNachrichtByCommandService.java
index a8b13be6b..ea4f3fcae 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/PersistPostfachNachrichtByCommandService.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/command/PersistPostfachNachrichtByCommandService.java
@@ -54,6 +54,8 @@ import de.itvsh.ozg.mail.postfach.StringBasedIdentifier;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItem;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemMapper;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemService;
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
+import de.itvsh.ozg.pluto.common.callcontext.User;
 import de.itvsh.ozg.pluto.files.FileService;
 import de.itvsh.ozg.pluto.files.OzgFile;
 import de.itvsh.ozg.pluto.files.UploadedFilesReference;
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/converter/CustomConverters.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/converter/CustomConverters.java
index 32935637c..08bf05f33 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/converter/CustomConverters.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/common/converter/CustomConverters.java
@@ -33,7 +33,7 @@ import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
 public class CustomConverters {
 
 	@Bean
-	public MongoCustomConversions mongoCustomConversions() {
+	MongoCustomConversions mongoCustomConversions() {
 
 		return new MongoCustomConversions(
 				Arrays.asList(
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandServiceTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandServiceTest.java
index a4b1a7022..fbe6e94b2 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandServiceTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandServiceTest.java
@@ -46,6 +46,7 @@ import de.itvsh.kop.common.errorhandling.TechnicalException;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextUserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
 class CommandServiceTest {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
index 134bb0c6a..dd98d1a26 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CommandTestFactory.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
 public class CommandTestFactory {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CreateCommandRequestTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CreateCommandRequestTestFactory.java
index ef097e9cf..6ccc87452 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CreateCommandRequestTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/CreateCommandRequestTestFactory.java
@@ -23,6 +23,7 @@
  */
 package de.itvsh.ozg.pluto.command;
 
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapperTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapperTest.java
index d6ab033eb..1dc2be34b 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapperTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcCreateCommandRequestMapperTest.java
@@ -32,7 +32,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.itvsh.ozg.pluto.common.callcontext.CallContext;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import de.itvsh.ozg.pluto.common.callcontext.User;
 import de.itvsh.ozg.pluto.files.FileIdMapper;
 import de.itvsh.ozg.pluto.grpc.command.GrpcCreateCommandRequest;
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcUserTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcUserTestFactory.java
index 3aec033e0..25ddffb0b 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcUserTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/GrpcUserTestFactory.java
@@ -25,6 +25,7 @@ package de.itvsh.ozg.pluto.command;
 
 import java.util.List;
 
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.grpc.command.GrpcUser;
 
 public class GrpcUserTestFactory {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceITCase.java
index b70be8c74..8326c5b81 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceITCase.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceITCase.java
@@ -37,6 +37,7 @@ import de.itvsh.kop.common.test.DataITCase;
 import de.itvsh.ozg.mail.postfach.PostfachNachrichtTestFactory;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItem;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.Vorgang;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceTest.java
index 73452780d..24226e21e 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/command/PersistPostfachMailByCommandServiceTest.java
@@ -50,6 +50,7 @@ import de.itvsh.ozg.mail.postfach.osi.MessageTestFactory;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemMapper;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemService;
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.files.FileId;
 import de.itvsh.ozg.pluto.files.FileService;
 import de.itvsh.ozg.pluto.files.OzgFile;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangMapperTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangMapperTest.java
index 6d97a823c..ead3f0cd5 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangMapperTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangMapperTest.java
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mapstruct.factory.Mappers;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.AntragstellerTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 import de.itvsh.ozg.pluto.vorgang.ZustaendigeStelleTestFactory;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangTestFactory.java
index 2655fa8ca..936f98a66 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/IndexedVorgangTestFactory.java
@@ -25,7 +25,7 @@ package de.itvsh.ozg.pluto.common.search;
 
 import java.time.ZonedDateTime;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.AntragstellerTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 import de.itvsh.ozg.pluto.vorgang.ZustaendigeStelleTestFactory;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java
index 8a560c2f5..6896c8053 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/search/SearchVorgangCustomRepositoryImplTest.java
@@ -39,7 +39,7 @@ import org.springframework.data.elasticsearch.core.SearchHit;
 import org.springframework.data.elasticsearch.core.SearchHits;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.FilterCriteriaTestFactory;
 import de.itvsh.ozg.pluto.vorgang.FindVorgangRequestTestFactory;
 import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/security/PolicyServiceTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/security/PolicyServiceTest.java
index 487aa2992..32fd829a3 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/security/PolicyServiceTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/security/PolicyServiceTest.java
@@ -46,10 +46,10 @@ import org.springframework.security.access.AccessDeniedException;
 
 import de.itvsh.ozg.pluto.attached_item.VorgangAttachedItemTestFactory;
 import de.itvsh.ozg.pluto.command.CommandTestFactory;
-import de.itvsh.ozg.pluto.command.UserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextUser;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextUserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CurrentUserService;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.files.GridFsTestFactory;
 import de.itvsh.ozg.pluto.files.OzgFileTestFactory;
 import de.itvsh.ozg.pluto.vorgang.Vorgang;
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryITCase.java
index b81dd7d70..94b70170c 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryITCase.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryITCase.java
@@ -41,7 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
 
 import de.itvsh.kop.common.test.DataITCase;
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.IncomingFileTestFactory;
 
 @DataITCase
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryTest.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryTest.java
index a6f90ddac..c4c2df7e4 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryTest.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/BinaryFileRepositoryTest.java
@@ -41,8 +41,8 @@ import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 
 import static org.assertj.core.api.Assertions.*;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.IncomingFileTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/GridFsTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/GridFsTestFactory.java
index 813880b01..4640b3a04 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/GridFsTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/files/GridFsTestFactory.java
@@ -33,8 +33,8 @@ import org.springframework.data.mongodb.util.BsonUtils;
 
 import com.mongodb.client.gridfs.model.GridFSFile;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
 import de.itvsh.ozg.pluto.common.callcontext.CallContextTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.VorgangTestFactory;
 
 public class GridFsTestFactory {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/FilterCriteriaTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/FilterCriteriaTestFactory.java
index 1d4babb7e..a1f52ec82 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/FilterCriteriaTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/FilterCriteriaTestFactory.java
@@ -23,7 +23,7 @@
  */
 package de.itvsh.ozg.pluto.vorgang;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
 
 public class FilterCriteriaTestFactory {
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcFilterByTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcFilterByTestFactory.java
index 015277b76..3b597282c 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcFilterByTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/GrpcFilterByTestFactory.java
@@ -25,7 +25,7 @@ package de.itvsh.ozg.pluto.vorgang;
 
 import static de.itvsh.ozg.pluto.vorgang.FilterCriteriaTestFactory.*;
 
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 
 public class GrpcFilterByTestFactory {
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java
index 9a1b8b91a..ae133a109 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java
@@ -53,7 +53,7 @@ import de.itvsh.ozg.pluto.clientattribute.ClientAttributeMap;
 import de.itvsh.ozg.pluto.clientattribute.ClientAttributeTestFactory;
 import de.itvsh.ozg.pluto.clientattribute.ClientAttributesMap;
 import de.itvsh.ozg.pluto.clientattribute.ClientAttributesMapTestFactory;
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.FindVorgangRequest.OrderCriteria;
 import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangTestFactory.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangTestFactory.java
index 5cfb09ebe..d8b8293f7 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangTestFactory.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangTestFactory.java
@@ -31,7 +31,7 @@ import com.thedeanda.lorem.LoremIpsum;
 
 import de.itvsh.ozg.pluto.clientattribute.ClientAttributesMap;
 import de.itvsh.ozg.pluto.clientattribute.ClientAttributesMapTestFactory;
-import de.itvsh.ozg.pluto.command.UserTestFactory;
+import de.itvsh.ozg.pluto.common.callcontext.UserTestFactory;
 import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
 
 public class VorgangTestFactory {
diff --git a/pom.xml b/pom.xml
index e529cbcac..d8c02e531 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
 		<module>notification-manager</module>
 		<module>pluto-command</module>
 		<module>bescheid-manager</module>
+		<module>pluto-common</module>
 	</modules>
 
 	<build>
-- 
GitLab