diff --git a/Jenkinsfile.admin b/alfa-client/apps/admin/Jenkinsfile
similarity index 81%
rename from Jenkinsfile.admin
rename to alfa-client/apps/admin/Jenkinsfile
index 2cbdcf32b3715d48330732a6e116ac19626c1407..a181642a72d403e10c7a3d9146c54a487cc023f1 100644
--- a/Jenkinsfile.admin
+++ b/alfa-client/apps/admin/Jenkinsfile
@@ -50,14 +50,22 @@ pipeline {
             steps {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
-                     dir('alfa-client') {
-                    VERSION = getPackagejsonVersion()
-                     }
+                    VERSION = getAdminPackageJsonVersion()
+
+                    if(isReleaseBranch()){
+                        if ( !isReleaseVersion([VERSION]) ) {
+                            error("Keine Release Version für Branch ${env.BRANCH_NAME}.")
+                        }
+                    } else {
+                        if ( !isSnapshotVersion([VERSION]) ) {
+                            error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.")
+                        }
+                    }
                 }
             }
         }
 
-        stage('build admin client and its docker image') {
+        stage('Build admin client and its docker image') {
             steps {
                 script {
 	                FAILED_STAGE=env.STAGE_NAME
@@ -71,7 +79,7 @@ pipeline {
 	                        } else {
 	                        	sh 'pnpm run ci-build-admin'
 	                        }
-    	                    if (isMasterBranch()) {
+    	                    if (isMainBranch()) {
                                 withSonarQubeEnv('sonarqube-ozg-sh'){
                                     sh 'pnpm run ci-sonar'
                                 }
@@ -88,11 +96,11 @@ pipeline {
             steps {
                 script {
                     FAILED_STAGE=env.STAGE_NAME
-                    IMAGE_TAG = generateImageTag()
+                    IMAGE_TAG = buildVersionName()
 
                     tagAndPushDockerImage(IMAGE_TAG)
 
-                    if (isMasterBranch()) {
+                    if (isMainBranch()) {
                         tagAndPushDockerImage('snapshot-latest')
                     }
                     else if (isReleaseBranch()) {
@@ -106,7 +114,7 @@ pipeline {
             steps {
                 script {
                     FAILED_STAGE=env.STAGE_NAME
-                    HELM_CHART_VERSION = generateHelmChartVersion()
+                    HELM_CHART_VERSION = buildVersionName()
 
                    dir('alfa-client/apps/admin') {
                     sh "./run_helm_test.sh"
@@ -124,7 +132,7 @@ pipeline {
 
         stage('Trigger Dev rollout') {
             when {
-                branch 'master'
+                branch 'main'
             }
             steps {
                 script {
@@ -158,7 +166,7 @@ pipeline {
     post {
         failure {
             script {
-                if (isMasterBranch() || isReleaseBranch()) {
+                if (isMainBranch() || isReleaseBranch()) {
                     sendFailureMessage()
                 }
             }
@@ -171,14 +179,22 @@ Boolean isReleaseBranch() {
     return env.BRANCH_NAME == 'release-admin'
 }
 
-String generateImageTag() {
-    def imageTag = "${env.BRANCH_NAME}-${VERSION}"
-
-    if (isMasterBranch()) {
-        imageTag += "-${env.GIT_COMMIT.take(7)}"
+def validateBranchName(branchName) {
+    int maxLength = 30
+    if (branchName.length() > maxLength) {
+        String originalBranchName = branchName
+        branchName = branchName.substring(0, maxLength)
+        echo "WARNING: Branch name '${originalBranchName}' exceeded ${maxLength} characters. " +
+             "It has been truncated to '${branchName}' for deployment purposes."
     }
+    return branchName
+}
 
-    return imageTag
+String buildVersionName() {
+    if (isReleaseBranch()) {
+        return "${VERSION}"
+    }
+    return "${VERSION}-${validateBranchName(env.BRANCH_NAME)}-${env.GIT_COMMIT.take(7)}".replaceAll("_", "-")
 }
 
 Void cloneGitopsRepo() {
@@ -251,8 +267,8 @@ Void tagAndPushDockerImage(String newTag){
         sh "docker push docker.ozg-sh.de/admin-client:${newTag}"
     }
 }
-String getPackagejsonVersion() {
-    def packageJSON = readJSON file: 'package.json'
+String getAdminPackageJsonVersion() {
+    def packageJSON = readJSON file: 'alfa-client/apps/admin/package.json'
     def packageJSONVersion = packageJSON.version
     echo packageJSONVersion
     return packageJSONVersion
@@ -272,21 +288,9 @@ Void deployHelmChart(String helmChartVersion) {
         }
     }
 }
-String generateHelmChartVersion() {
-    def chartVersion = "${VERSION}"
-
-    if (isMasterBranch()) {
-        chartVersion += "-${env.GIT_COMMIT.take(7)}"
-    }
-    else if (!isReleaseBranch()) {
-        chartVersion += "-${env.BRANCH_NAME}"
-    }
-
-    return chartVersion.replaceAll("_", "-")
-}
 
-Boolean isMasterBranch() {
-    return env.BRANCH_NAME == 'master'
+Boolean isMainBranch() {
+    return env.BRANCH_NAME == 'main'
 }
 
 Void sendFailureMessage() {
@@ -296,7 +300,7 @@ Void sendFailureMessage() {
                     "format": "org.matrix.custom.html", \
                     "formatted_body":"Admin-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}"""
 
-    if (isMasterBranch()) {
+    if (isMainBranch()) {
         room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
     }
     else if (isReleaseBranch()) {
@@ -310,4 +314,23 @@ String getElementAccessToken() {
     withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) {
         return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token
     }
+}
+
+Boolean isReleaseVersion(List versions) {
+  return matchRegexVersion(versions, RELEASE_REGEX)
+}
+
+Boolean isSnapshotVersion(List versions) {
+  return matchRegexVersion(versions, SNAPSHOT_REGEX)
+}
+
+Boolean matchRegexVersion(List versions, String regex) {
+  for (version in versions) {
+    println version
+    if ( !(version ==~ regex) ) {
+      return false
+    }
+  }
+
+  return true
 }
\ No newline at end of file
diff --git a/alfa-client/apps/admin/package.json b/alfa-client/apps/admin/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d97c4e33949de64758f337c111d4fa31721303a
--- /dev/null
+++ b/alfa-client/apps/admin/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "admin",
+  "version": "1.4.0-SNAPSHOT"
+}
\ No newline at end of file
diff --git a/alfa-client/apps/alfa-e2e/docker-compose.yml b/alfa-client/apps/alfa-e2e/docker-compose.yml
index 8520757132d41b0af9b0452c8a8a192c230c95e9..f20faa66c523ca9272a2421f7dab7f7d08e9b68e 100644
--- a/alfa-client/apps/alfa-e2e/docker-compose.yml
+++ b/alfa-client/apps/alfa-e2e/docker-compose.yml
@@ -113,7 +113,7 @@ services:
       - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ENGINE_NAME=FormSolutions
       - OZGCLOUD_VORGANG_BESCHEID_0_FORM_ID=KFAS_STAGE_KI_10_Haltverbot_LANDESHACKATHON
       - OZGCLOUD_FEATURE_COLLABORATION_ENABLED=true
-      - OZGCLOUD_BARRIEREFREIHEIT_URL=https://static.dev.by.ozg-cloud.de/barrierefreiheit
+      - OZGCLOUD_BARRIEREFREIHEIT_URL=https://static.dev.sh.ozg-cloud.de/barrierefreiheit
     ports:
       - 8080:8080
       - 5000:5000
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts
index 10efef4c42cc6f09830481855be78f0ac068ab83..2888ff32d20a5f14a0448f1f33401d859dadac57 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts
@@ -32,6 +32,7 @@ export class VorgangListE2EComponent {
   private readonly noRoleMessage: string = 'user-no-role-message';
   private readonly emptyListText: string = 'empty-list-text';
   private readonly emptyList: string = 'empty-list';
+  private readonly archivedStatus: string = 'vorgang-list-item-archive-status';
 
   public getRoot() {
     return cy.getTestElement(this.root);
@@ -57,4 +58,8 @@ export class VorgangListE2EComponent {
   public getEmptySucheMessage() {
     return cy.getTestElement(this.emptyListText);
   }
+
+  public getArchivedStatus(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return cy.getTestElement(this.archivedStatus);
+  }
 }
diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts
index c32077d00937f2981d7f15a8f78ffe7d0cd717d5..fc9d58e57cd22a0057c706bca6f4e71010f3d0df 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts
@@ -25,10 +25,9 @@ export class VorgangMoreMenuE2EComponent {
   private readonly rootLocator: string = 'more-menu';
   private readonly buttonLocator: string = 'more-menu-button';
 
-  private readonly exportierenItem: VorgangMoreMenuExportierenItemE2EComponent =
-    new VorgangMoreMenuExportierenItemE2EComponent();
-  private readonly vorpruefenItem: VorgangMoreMenuVorpruefenItemE2EComponent =
-    new VorgangMoreMenuVorpruefenItemE2EComponent();
+  private readonly exportierenItem: VorgangMoreMenuExportierenItemE2EComponent = new VorgangMoreMenuExportierenItemE2EComponent();
+  private readonly vorpruefenItem: VorgangMoreMenuVorpruefenItemE2EComponent = new VorgangMoreMenuVorpruefenItemE2EComponent();
+  private readonly archivierenItem: VorgangMoreMenuArchivierenItemE2EComponent = new VorgangMoreMenuArchivierenItemE2EComponent();
 
   public getRoot() {
     return cy.getTestElementWithOid(this.rootLocator);
@@ -50,17 +49,21 @@ export class VorgangMoreMenuE2EComponent {
   public getVorpruefenItem(): VorgangMoreMenuVorpruefenItemE2EComponent {
     return this.vorpruefenItem;
   }
+
+  public getArchivierenItem(): VorgangMoreMenuArchivierenItemE2EComponent {
+    return this.archivierenItem;
+  }
 }
 
 export class VorgangMoreMenuExportierenItemE2EComponent {
   private readonly root: string = 'vorgang-exportieren-button';
   private readonly button: string = 'export-vorgang';
 
-  public getRoot() {
+  public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> {
     return cy.getTestElementWithOid(this.root);
   }
 
-  public getButton() {
+  public getButton(): Cypress.Chainable<JQuery<HTMLElement>> {
     return this.getRoot().getTestElementWithOid(this.button);
   }
 }
@@ -69,11 +72,46 @@ export class VorgangMoreMenuVorpruefenItemE2EComponent {
   private readonly root: string = 'vorgang-process-vorgang-button';
   private readonly button: string = 'process-vorgang';
 
-  public getRoot() {
+  public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> {
     return cy.getTestElementWithOid(this.root);
   }
 
-  public getButton() {
+  public getButton(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return this.getRoot().getTestElementWithOid(this.button);
+  }
+}
+
+export class VorgangMoreMenuArchivierenItemE2EComponent {
+  private readonly root: string = 'vorgang-archive-button';
+  private readonly button: string = 'archive-vorgang';
+  private readonly archivierenConfirm: string = 'archive-confirmation-button';
+  private readonly archivierenCancel: string = 'archive-cancel-button';
+
+  public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return cy.getTestElementWithOid(this.root);
+  }
+
+  public getButton(): Cypress.Chainable<JQuery<HTMLElement>> {
     return this.getRoot().getTestElementWithOid(this.button);
   }
+
+  public clickArchivieren(): void {
+    this.getButton().click({ force: true });
+  }
+
+  public getArchivierenConfirm(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return cy.getTestElement(this.archivierenConfirm);
+  }
+
+  public getArchivierenCancel(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return cy.getTestElement(this.archivierenCancel);
+  }
+
+  public confirmArchivieren(): void {
+    this.getArchivierenConfirm().click();
+  }
+
+  public cancelArchivieren(): void {
+    this.getArchivierenCancel().click();
+  }
 }
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
index 006a109efa1e7e47333e4708c1b9ff219ba2b9c1..785e9ad2b88261364b7cad17ecb402ad0d322910 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts
@@ -43,7 +43,7 @@ describe('VorgangList Page', () => {
   const navigation: NavigationE2EComponent = mainPage.getNavigation();
 
   const accTooltip: string = 'Barrierefreiheit';
-  const accLink: string = 'https://static.dev.by.ozg-cloud.de/barrierefreiheit';
+  const accLink: string = 'https://static.dev.sh.ozg-cloud.de/barrierefreiheit';
 
   before(() => {
     initUsermanagerUsers();
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..abc019ef91238fa47685a5c00e8920d10581a000
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts
@@ -0,0 +1,127 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { SnackBarE2EComponent } from 'apps/alfa-e2e/src/components/ui/snackbar.e2e.component';
+import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
+import {
+  VorgangMoreMenuArchivierenItemE2EComponent,
+  VorgangMoreMenuE2EComponent,
+} from 'apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components';
+import { VorgangSubnavigationE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-subnavigation';
+import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
+import { VorgangE2E, VorgangStatusE2E } from '../../../model/vorgang';
+import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
+import { VorgangPage } from '../../../page-objects/vorgang.po';
+import { dropCollections, wait } from '../../../support/cypress-helper';
+import { exist, notExist } from '../../../support/cypress.util';
+import { loginAsSabine } from '../../../support/user-util';
+import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang archivieren', () => {
+  const mainPage: MainPage = new MainPage();
+  const snackBar: SnackBarE2EComponent = mainPage.getSnackBar();
+
+  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
+
+  const vorgangPage: VorgangPage = new VorgangPage();
+  const subnavigation: VorgangSubnavigationE2EComponent = vorgangPage.getSubnavigation();
+  const vorgangMoreMenu: VorgangMoreMenuE2EComponent = vorgangPage.getMoreMenu();
+
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
+
+  const vorgangExportieren: VorgangE2E = {
+    ...createVorgang(),
+    status: VorgangStatusE2E.BESCHIEDEN,
+    name: 'DoArchivieren',
+  };
+
+  before(() => {
+    initVorgaenge([vorgangExportieren]);
+
+    loginAsSabine();
+
+    waitForSpinnerToDisappear();
+    exist(vorgangList.getRoot());
+  });
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('archive file', () => {
+    const archivierenItem: VorgangMoreMenuArchivierenItemE2EComponent = vorgangMoreMenu.getArchivierenItem();
+
+    it('should not show archived status on list page', () => {
+      notExist(vorgangList.getArchivedStatus());
+    });
+
+    it('Open Vorgang-Detail-Page', () => {
+      vorgangList.getListItem(vorgangExportieren.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      exist(vorgangPage.getVorgangDetailHeader().getRoot());
+    });
+
+    it('should not show "Archivieren" entry in Beschieden status', () => {
+      vorgangMoreMenu.getButton().click();
+
+      notExist(archivierenItem.getRoot());
+    });
+
+    it('should show "Archivieren" button in Abgeschlossen status', () => {
+      vorgangMoreMenu.getButton().click({ force: true });
+      vorgangFormularButtons.getAbschliessenButton().click();
+      waitForSpinnerToDisappear();
+
+      snackBar.getCloseButton().click();
+      vorgangMoreMenu.getButton().click();
+
+      exist(archivierenItem.getButton());
+    });
+
+    it('should open popup with confirm button on clicking "Vorgang archivieren"', () => {
+      archivierenItem.clickArchivieren();
+
+      exist(archivierenItem.getArchivierenConfirm());
+    });
+
+    it('should close popup on clicking Cancel, and still show more menu', () => {
+      archivierenItem.cancelArchivieren();
+
+      notExist(archivierenItem.getArchivierenConfirm());
+      exist(vorgangMoreMenu.getRoot());
+    });
+
+    it('should open popup again and archive Vorgang on confirmation', () => {
+      archivierenItem.clickArchivieren();
+      archivierenItem.confirmArchivieren();
+
+      //ersetzen, sobald tatsächliche Archivierung geklärt ist; aktuell nur Workaround
+      wait(2000);
+      archivierenItem.cancelArchivieren();
+      //
+    });
+
+    it('should show archived status on list page', () => {
+      subnavigation.getBackButton().click({ force: true });
+      waitForSpinnerToDisappear();
+
+      exist(vorgangList.getArchivedStatus());
+    });
+
+    it('should still show back button on details page', () => {
+      vorgangList.getListItem(vorgangExportieren.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      exist(subnavigation.getBackButton());
+    });
+
+    it('should not show subnavigation buttons on details page', () => {
+      notExist(subnavigation.getCreateWiedervorlageIconButton());
+      notExist(subnavigation.getAssignUserProfileIconButton());
+      notExist(subnavigation.getPostfachMailIconButton());
+    });
+  });
+});
diff --git a/Jenkinsfile b/alfa-client/apps/alfa/Jenkinsfile
similarity index 57%
rename from Jenkinsfile
rename to alfa-client/apps/alfa/Jenkinsfile
index bb9909e096228fb7cbbdfb8564f3365ac6f8474b..6da9d2afddb290c6686c991032ce52c2031aae19 100644
--- a/Jenkinsfile
+++ b/alfa-client/apps/alfa/Jenkinsfile
@@ -29,7 +29,7 @@ pipeline {
     }
 
     environment {
-        BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/alfa/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
+        BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_alfa-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
         RELEASE_REGEX = /\d+.\d+.\d+/
         SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
         FAILED_STAGE = ""
@@ -50,23 +50,17 @@ pipeline {
             steps {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
-                    VERSION = getRootPomVersion()
-                    def serverVersion = getParentPomVersion('alfa-server/pom.xml')
-                    def clientVersion = getParentPomVersion('alfa-client/pom.xml')
+                    VERSION = getAlfaPackageJsonVersion()
 
                     if(isReleaseBranch()){
-                        if ( !isReleaseVersion([VERSION, serverVersion, clientVersion]) ) {
+                        if ( !isReleaseVersion([VERSION]) ) {
                             error("Keine Release Version für Branch ${env.BRANCH_NAME}.")
                         }
                     } else {
-                        if ( !isSnapshotVersion([VERSION, serverVersion, clientVersion]) ) {
+                        if ( !isSnapshotVersion([VERSION]) ) {
                             error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.")
                         }
                     }
-
-                    if( !isSameVersion([serverVersion, clientVersion], VERSION) ){
-                        error("Versionen sind nicht identisch")
-                    }
                 }
             }
         }
@@ -86,7 +80,7 @@ pipeline {
                         dir('alfa-client') {
                             sh 'pnpm install  --frozen-lockfile --network-concurrency=8'
 
-                            if (isMasterBranch()) {
+                            if (isMainBranch()) {
                                 withSonarQubeEnv('sonarqube-ozg-sh'){
                                     sh 'pnpm run ci-sonar'
                             }
@@ -115,93 +109,23 @@ pipeline {
                 script {
                     catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                         dir('alfa-client') {
-                            IMAGE_TAG = generateImageTag()
+                            IMAGE_TAG = buildVersionName()
 
                             withNPM(npmrcConfig: 'npm-nexus-auth') {
                                 sh 'pnpm run ci-build-alfa-client-container'
                             }
 
-                            withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
-                                sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
-
-                                sh "docker tag docker.ozg-sh.de/alfa-client:build-latest docker.ozg-sh.de/alfa-client:${IMAGE_TAG}"
-                                sh "docker push docker.ozg-sh.de/alfa-client:${IMAGE_TAG}"
-                            }
+                            tagAndPushDockerImage('build-latest', IMAGE_TAG)
                         }
                     }
                 }
             }
         }
 
-        stage('Set Version') {
-          when {
-            not {
-                anyOf {
-                    branch 'master'
-                    branch 'release'
-                }
-            }
-          }
-          steps {
-                script {
-                    FAILED_STAGE=env.STAGE_NAME
-                    JAR_TAG = getRootPomVersion().replace("SNAPSHOT", "${env.BRANCH_NAME}-SNAPSHOT")
-                }
-                configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                    sh "mvn -s $MAVEN_SETTINGS versions:set -DnewVersion=${JAR_TAG} -DprocessAllModules=true"
-
-                }
-          }
-        }
-
-        stage('Build Server artefacts, build and push docker image') {
-            steps {
-                script {
-                    FAILED_STAGE=env.STAGE_NAME
-                    IMAGE_TAG = generateImageTag()
-
-                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                        sh 'mvn --version'
-                        sh "mvn -s $MAVEN_SETTINGS -pl -alfa-client clean install"
-                        sh "mvn --no-transfer-progress -s $MAVEN_SETTINGS -pl -alfa-client spring-boot:build-image -Dspring-boot.build-image.imageName=docker.ozg-sh.de/alfa:${IMAGE_TAG} -Dspring-boot.build-image.publish -Dmaven.wagon.http.retryHandler.count=3"
-
- 						if (isMasterBranch()) {
-	                   		try {
-	    	                    dir('alfa-service'){
-	                                withSonarQubeEnv('sonarqube-ozg-sh'){
-	                                    sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS sonar:sonar'
-	                                }
-	                            }
-	                        }
-	                        catch (Exception e) {
-	                            unstable("SonarQube failed")
-	                        }
-	                    }
-                    }
-                }
-            }
-            post {
-                always{
-                    junit testResults: '**/target/surefire-reports/*.xml', skipPublishingChecks: true
-                }
-            }
-        }
-        stage('Deploy Maven Artifacts to Nexus') {
-            steps {
-                script {
-                    FAILED_STAGE = env.STAGE_NAME
-                }
-
-                configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                    sh 'mvn --no-transfer-progress -s $MAVEN_SETTINGS -pl -alfa-client -DskipTests deploy'
-                    sh "mvn -s $MAVEN_SETTINGS versions:revert"
-                }
-            }
-        }
         stage('Tag and Push Docker Image') {
             when {
                 anyOf {
-                    branch 'master'
+                    branch 'main'
                     branch 'release'
                 }
             }
@@ -210,29 +134,11 @@ pipeline {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
 
-                    if (isMasterBranch()) {
-                        tagAndPushDockerImage('snapshot-latest')
+                    if (isMainBranch()) {
+                        tagAndPushDockerImage(IMAGE_TAG, 'snapshot-latest')
                     }
                     else if (isReleaseBranch()) {
-                        tagAndPushDockerImage('latest')
-                    }
-                }
-            }
-        }
-
-        stage('Test, build and deploy Alfa Helm Chart') {
-            steps {
-                script {
-                    FAILED_STAGE=env.STAGE_NAME
-                    HELM_CHART_VERSION = generateHelmChartVersion()
-
-                    sh "./run_helm_test.sh"
-
-                    dir('src/main/helm') {
-
-                        sh "helm package --version=${HELM_CHART_VERSION} ."
-
-                        deployHelmChart(HELM_CHART_VERSION, "alfa")
+                        tagAndPushDockerImage(IMAGE_TAG, 'latest')
                     }
                 }
             }
@@ -241,9 +147,9 @@ pipeline {
         stage('Test, build and deploy Alfa-Client Helm Chart') {
             steps {
                 script {
+                    FAILED_STAGE=env.STAGE_NAME
+                    HELM_CHART_VERSION = buildVersionName()
                     dir('alfa-client') {
-                        FAILED_STAGE=env.STAGE_NAME
-                        HELM_CHART_VERSION = generateHelmChartVersion()
 
                         sh "./run_helm_test.sh"
 
@@ -260,7 +166,7 @@ pipeline {
 
         stage('Trigger Dev rollout') {
             when {
-                branch 'master'
+                branch 'main'
             }
             steps {
                 script {
@@ -274,7 +180,6 @@ pipeline {
             }
         }
 
-
         stage('Trigger Test rollout') {
             when {
                 branch 'release'
@@ -291,25 +196,6 @@ pipeline {
             }
         }
 
-        stage ('Deploy SBOM to DependencyTrack') {
-            steps {
-                script {
-                    IMAGE_TAG = generateImageTag()
-
-                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                        withCredentials([string(credentialsId: 'dependency-track-api-key', variable: 'API_KEY')]) {
-
-                            dir('alfa-server') {
-                                catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
-                                    sh "mvn  --no-transfer-progress -s $MAVEN_SETTINGS io.github.pmckeown:dependency-track-maven-plugin:upload-bom -Ddependency-track.apiKey=$API_KEY -Ddependency-track.projectVersion=${IMAGE_TAG} -Ddependency-track.dependencyTrackBaseUrl=https://dependency-track.ozg-sh.de"
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
         stage ('Trigger Barrierefreiheit Rollout') {
             when {
                branch 'barrierefreiheit-dev'
@@ -332,7 +218,7 @@ pipeline {
     post {
         failure {
             script {
-                if (isMasterBranch() || isReleaseBranch()) {
+                if (isMainBranch() || isReleaseBranch()) {
                     sendFailureMessage()
                 }
             }
@@ -355,41 +241,38 @@ Void deployHelmChart(String helmChartVersion, String app ) {
     }
 }
 
-String generateHelmChartVersion() {
-    def chartVersion = "${VERSION}"
-
-    if (isMasterBranch()) {
-        chartVersion += getCommitHash()
+String validateBranchName(branchName) {
+    int maxLength = 30
+    if (branchName.length() > maxLength) {
+        String originalBranchName = branchName
+        branchName = branchName.substring(0, maxLength)
+        echo "WARNING: Branch name '${originalBranchName}' exceeded ${maxLength} characters. " +
+             "It has been truncated to '${branchName}' for deployment purposes."
     }
-    else if (isBarrierefreiheitBranch()) {
-        chartVersion += "-barrierefreiheit${getCommitHash()}"
+    return branchName
+}
+
+String buildVersionName() {
+
+    if (isReleaseBranch()) {
+        return VERSION
     }
-    else if (!isReleaseBranch()) {
-        chartVersion += "-${env.BRANCH_NAME}"
+    if (isBarrierefreiheitBranch()) {
+        return "${VERSION}-barrierefreiheit${validateBranchName(env.BRANCH_NAME)}${getCommitHash()}".replaceAll("_", "-")
     }
 
-    return chartVersion.replaceAll("_", "-")
+    return "${VERSION}-${validateBranchName(env.BRANCH_NAME)}${getCommitHash()}".replaceAll("_", "-")
 }
 
-Void tagAndPushDockerImage(String newTag){
+Void tagAndPushDockerImage(String currentTag, String newTag){
     withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
         sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
 
-        sh "docker tag docker.ozg-sh.de/alfa:${IMAGE_TAG} docker.ozg-sh.de/alfa:${newTag}"
-        sh "docker push docker.ozg-sh.de/alfa:${newTag}"
+        sh "docker tag docker.ozg-sh.de/alfa-client:${currentTag} docker.ozg-sh.de/alfa-client:${newTag}"
+        sh "docker push docker.ozg-sh.de/alfa-client:${newTag}"
     }
 }
 
-String generateImageTag() {
-    def imageTag = "${env.BRANCH_NAME}-${VERSION}"
-
-    if (isMasterBranch() || isBarrierefreiheitBranch()) {
-        imageTag += getCommitHash()
-    }
-
-    return imageTag
-}
-
 Void cloneGitopsRepo() {
     withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
         sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git'
@@ -424,11 +307,11 @@ Void configureGit() {
 Void sendFailureMessage() {
     def room = ''
     def data = """{"msgtype":"m.text", \
-                    "body":"Alfa: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \
+                    "body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \
                     "format": "org.matrix.custom.html", \
-                    "formatted_body":"Alfa: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}"""
+                    "formatted_body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}"""
 
-    if (isMasterBranch()) {
+    if (isMainBranch()) {
         room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
     }
     else if (isReleaseBranch()) {
@@ -454,10 +337,6 @@ Void setNewTestVersion() {
 }
 
 Void setNewGitopsVersion(String environment) {
-    def envFile = "${environment}/application/values/alfa-values.yaml"
-    def commitMessage = "jenkins rollout ${environment} alfa version ${IMAGE_TAG}";
-    setNewAlfaGitopsVersion(envFile, commitMessage);
-
     envFile = "${environment}/application/values/alfa-client-values.yaml"
     commitMessage = "jenkins rollout ${environment} alfa-client version ${IMAGE_TAG}";
     setNewAlfaClientGitopsVersion(envFile, commitMessage);
@@ -466,23 +345,7 @@ Void setNewGitopsVersion(String environment) {
 Void setNewBarrierefreiheitVersion() {
     def envFile = "dev/namespace/namespaces/by-barrierefreiheit-dev.yaml"
     def commitMessage = "jenkins rollout ${IMAGE_TAG} for Barrierefreiheit Dev"
-    setNewAlfaGitopsVersion(envFile, commitMessage);
-}
-
-Void setNewAlfaGitopsVersion(String envFile, String commitMessage) {
-    dir("gitops") {
-        def envVersions = readYaml file: envFile
-
-        envVersions.alfa.image.tag = IMAGE_TAG
-        envVersions.alfa.helm.version = HELM_CHART_VERSION
-
-        writeYaml file: envFile, data: envVersions, overwrite: true
-
-        if (hasValuesFileChanged(envFile)) {
-            sh "git add ${envFile}"
-            sh "git commit -m '${commitMessage}'"
-        }
-    }
+    setNewAlfaClientGitopsVersion(envFile, commitMessage);
 }
 
 Void setNewAlfaClientGitopsVersion(String envFile, String commitMessage) {
@@ -513,8 +376,8 @@ Boolean isReleaseBranch() {
     return env.BRANCH_NAME == 'release'
 }
 
-Boolean isMasterBranch() {
-    return env.BRANCH_NAME == 'master'
+Boolean isMainBranch() {
+    return env.BRANCH_NAME == 'main'
 }
 
 Boolean isBarrierefreiheitBranch() {
@@ -540,22 +403,9 @@ Boolean matchRegexVersion(List versions, String regex) {
     return true
 }
 
-Boolean isSameVersion(List versions, String expectedVersion) {
-    for (version in versions) {
-        if ( version != expectedVersion ) {
-            return false
-        }
-    }
-
-    return true
-}
-
-String getRootPomVersion() {
-    def rootPom = readMavenPom file: 'pom.xml'
-    return rootPom.version
-}
-
-String getParentPomVersion(String filePath) {
-    def pom = readMavenPom file: filePath
-    return pom.parent.version
-}
+String getAlfaPackageJsonVersion() {
+    def packageJSON = readJSON file: 'alfa-client/apps/alfa/package.json'
+    def packageJSONVersion = packageJSON.version
+    echo packageJSONVersion
+    return packageJSONVersion
+}
\ No newline at end of file
diff --git a/alfa-client/apps/alfa/package.json b/alfa-client/apps/alfa/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..da96f20ebd26cc723f78fbd9ad975686bcaa999c
--- /dev/null
+++ b/alfa-client/apps/alfa/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "alfa",
+  "version": "2.18.0-SNAPSHOT"
+}
\ No newline at end of file
diff --git a/alfa-client/apps/info/Jenkinsfile b/alfa-client/apps/info/Jenkinsfile
index 6bd520b84bd9b7d6d1a4526a45c42c5b05735593..497a200303b9cb7ebed748f59c2ccca3ca5645e1 100644
--- a/alfa-client/apps/info/Jenkinsfile
+++ b/alfa-client/apps/info/Jenkinsfile
@@ -5,7 +5,7 @@ pipeline {
     }
   }
   environment {
-    BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/info/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
+    BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_info-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
     RELEASE_REGEX = /\d+.\d+.\d+/
     SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
     FAILED_STAGE = ""
@@ -25,7 +25,17 @@ pipeline {
         script {
           FAILED_STAGE = env.STAGE_NAME
           dir('alfa-client') {
-            VERSION = getPackagejsonVersion()
+            VERSION = getInfoPackageJsonVersion()
+
+            if(isReleaseBranch()){
+              if ( !isReleaseVersion([VERSION]) ) {
+                error("Keine Release Version für Branch ${env.BRANCH_NAME}.")
+              }
+            } else {
+              if ( !isSnapshotVersion([VERSION]) ) {
+                error("Keine Snapshot Version für Branch ${env.BRANCH_NAME}.")
+              }
+            }
           }
         }
       }
@@ -234,11 +244,11 @@ Void loginToDockerRegistry(){
         sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
     }
 }
-String getPackagejsonVersion() {
-    def packageJSON = readJSON file: 'package.json'
-    def packageJSONVersion = packageJSON.version
-    echo packageJSONVersion
-    return packageJSONVersion
+String getInfoPackageJsonVersion() {
+  def packageJSON = readJSON file: 'alfa-client/apps/info/package.json'
+  def packageJSONVersion = packageJSON.version
+  echo packageJSONVersion
+  return packageJSONVersion
 }
 
 Void deployHelmChart(String helmChartVersion) {
@@ -293,4 +303,23 @@ String getElementAccessToken() {
     withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) {
         return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token
     }
+}
+
+Boolean isReleaseVersion(List versions) {
+  return matchRegexVersion(versions, RELEASE_REGEX)
+}
+
+Boolean isSnapshotVersion(List versions) {
+  return matchRegexVersion(versions, SNAPSHOT_REGEX)
+}
+
+Boolean matchRegexVersion(List versions, String regex) {
+  for (version in versions) {
+    println version
+    if ( !(version ==~ regex) ) {
+      return false
+    }
+  }
+
+  return true
 }
\ No newline at end of file
diff --git a/alfa-client/apps/info/package.json b/alfa-client/apps/info/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..65bd1b66465cc2d568814c69fb413466f5ce8c15
--- /dev/null
+++ b/alfa-client/apps/info/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "info",
+  "version": "1.4.0-SNAPSHOT"
+}
\ No newline at end of file
diff --git a/alfa-client/apps/info/src/main/helm/templates/_helpers.tpl b/alfa-client/apps/info/src/main/helm/templates/_helpers.tpl
index c18ade6ab9a8a331e10f4fdd1ea422bba776a564..003e0891e401969f4e35aa0e2a801ac6cc87c63b 100644
--- a/alfa-client/apps/info/src/main/helm/templates/_helpers.tpl
+++ b/alfa-client/apps/info/src/main/helm/templates/_helpers.tpl
@@ -72,4 +72,28 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 
 {{- define "app.getImageName" -}}
 {{- required "image.name muss angegeben sein" .Values.image.name }}
+{{- end -}}
+
+{{- define "app.getBarrierefreiheitUrl" -}}
+{{- if .Values.keycloakTheme.barrierefreiheitUrl -}}
+{{ .Values.keycloakTheme.barrierefreiheitUrl }}
+{{- else -}}
+{{ printf "https://%s/barrierefreiheit" .Values.baseDomain }}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.getDatenschutzUrl" -}}
+{{- if .Values.keycloakTheme.datenschutzUrl -}}
+{{ .Values.keycloakTheme.datenschutzUrl }}
+{{- else -}}
+{{ printf "https://%s/datenschutz" .Values.baseDomain }}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.getImpressumUrl" -}}
+{{- if .Values.keycloakTheme.impressumUrl -}}
+{{ .Values.keycloakTheme.impressumUrl }}
+{{- else -}}
+{{ printf "https://%s/impressum" .Values.baseDomain }}
+{{- end -}}
 {{- end -}}
\ No newline at end of file
diff --git a/alfa-client/apps/info/src/main/helm/templates/configmap_keycloak_theme_url.yaml b/alfa-client/apps/info/src/main/helm/templates/configmap_keycloak_theme_url.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..df1952cbd765b876f81658c41c6679bff244d538
--- /dev/null
+++ b/alfa-client/apps/info/src/main/helm/templates/configmap_keycloak_theme_url.yaml
@@ -0,0 +1,11 @@
+{{- if not .Values.keycloakTheme.disableUrlConfigMap -}}
+apiVersion: v1 
+kind: ConfigMap
+metadata:
+  name: {{ required "keycloakTheme.urlConfigMapName muss angegeben sein" .Values.keycloakTheme.urlConfigMapName }}
+  namespace: {{ required "keycloakTheme.urlConfigMapNamespace muss angegeben sein" .Values.keycloakTheme.urlConfigMapNamespace }}
+data:
+  staticUrlBarrierefreiheit: {{ include "app.getBarrierefreiheitUrl" . }}
+  staticUrlDatenschutz: {{ include "app.getDatenschutzUrl" . }}
+  staticUrlImpressum: {{ include "app.getImpressumUrl" . }}
+{{- end -}}
\ No newline at end of file
diff --git a/alfa-client/apps/info/src/main/helm/values.yaml b/alfa-client/apps/info/src/main/helm/values.yaml
index f62c7b061da7a5739e214890f76636992f8225c6..c98cb41cceafa3f48b7a28c26a57dd833da67ce8 100644
--- a/alfa-client/apps/info/src/main/helm/values.yaml
+++ b/alfa-client/apps/info/src/main/helm/values.yaml
@@ -19,4 +19,15 @@ disableMonitoring:
 
 serviceAccount:
   create:
-  name: info-client-service-account
\ No newline at end of file
+  name: info-client-service-account
+
+keycloakTheme:
+  disableUrlConfigMap: false
+  urlConfigMapName:
+  urlConfigMapNamespace:
+  # default: https://<baseDomain>/barrierefreiheit
+  # barrierefreiheitUrl:
+  # default: https://<baseDomain>/datenschutz
+  # datenschutzUrl:
+  # default: https://<baseDomain>/impressum
+  # impressumUrl:
\ No newline at end of file
diff --git a/alfa-client/apps/info/src/test/helm-linter-values.yaml b/alfa-client/apps/info/src/test/helm-linter-values.yaml
index a4b081509be5d987f15d48438fe1e0e101c627af..f10e9c6c0c9907799ce8cce72e40535a87b9fef3 100644
--- a/alfa-client/apps/info/src/test/helm-linter-values.yaml
+++ b/alfa-client/apps/info/src/test/helm-linter-values.yaml
@@ -1,4 +1,8 @@
 image:
   name: info-client-test
 
-baseDomain: static.dev.by.ozg-cloud.de
\ No newline at end of file
+baseDomain: static.dev.by.ozg-cloud.de
+
+keycloakTheme:
+  urlConfigMapName: keycloak-theme-test
+  urlConfigMapNamespace: keycloak-namespace
\ No newline at end of file
diff --git a/alfa-client/apps/info/src/test/helm/configmap_keycloak_theme_url_test.yaml b/alfa-client/apps/info/src/test/helm/configmap_keycloak_theme_url_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e3364a1e238ea77fe046c7aff2053f294a338dcd
--- /dev/null
+++ b/alfa-client/apps/info/src/test/helm/configmap_keycloak_theme_url_test.yaml
@@ -0,0 +1,91 @@
+suite: test ConfigMap Keycloak Theme Url
+release:
+  name: info-client
+  namespace: by-helm-test
+templates:
+  - templates/configmap_keycloak_theme_url.yaml
+set:
+  baseDomain: test.ozgcloud.de
+tests:
+  - it: validate configMap values
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+        urlConfigMapNamespace: keycloak-namespace
+    asserts:
+      - isKind:
+          of: ConfigMap
+      - isAPIVersion:
+          of: v1
+      - equal:
+          path: metadata.name
+          value: keycloak-theme-test
+      - equal:
+          path: metadata.namespace
+          value: keycloak-namespace
+  - it: disable configMap
+    set:
+      keycloakTheme:
+        disableUrlConfigMap: true
+    asserts:
+      - hasDocuments:
+          count: 0
+  - it: should fail if keycloakTheme.urlConfigMapName is not set
+    set:
+      keycloakTheme:
+        urlConfigMapNamespace: keycloak-namespace
+    asserts:
+      - failedTemplate:
+          errorMessage: "keycloakTheme.urlConfigMapName muss angegeben sein"
+  - it: should fail if keycloakTheme.urlConfigMapNamespace is not set
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+    asserts:
+      - failedTemplate:
+          errorMessage: "keycloakTheme.urlConfigMapNamespace muss angegeben sein"
+  - it: validate default URLs
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+        urlConfigMapNamespace: keycloak-namespace
+    asserts:
+      - equal:
+          path: data.staticUrlBarrierefreiheit
+          value: https://test.ozgcloud.de/barrierefreiheit
+      - equal:
+          path: data.staticUrlDatenschutz
+          value: https://test.ozgcloud.de/datenschutz
+      - equal:
+          path: data.staticUrlImpressum
+          value: https://test.ozgcloud.de/impressum
+  - it: set barrierefreiheit url
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+        urlConfigMapNamespace: keycloak-namespace
+        barrierefreiheitUrl: "https://ozgcloud.de/barrierefreiheit"
+    asserts:
+      - equal:
+          path: data.staticUrlBarrierefreiheit
+          value: "https://ozgcloud.de/barrierefreiheit"
+  - it: set datenschutz url
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+        urlConfigMapNamespace: keycloak-namespace
+        datenschutzUrl: https://ozgcloud.de/datenschutz
+    asserts:
+      - equal:
+          path: data.staticUrlDatenschutz
+          value: https://ozgcloud.de/datenschutz
+  - it: set impressum url
+    set:
+      keycloakTheme:
+        urlConfigMapName: keycloak-theme-test
+        urlConfigMapNamespace: keycloak-namespace
+        impressumUrl: https://ozgcloud.de/impressum
+    asserts:
+      - equal:
+          path: data.staticUrlImpressum
+          value: https://ozgcloud.de/impressum
\ No newline at end of file
diff --git a/alfa-client/nx.json b/alfa-client/nx.json
index d4a997871fa8e52b66b2003fbd860e6249437ecb..76ac8f7e72cddb4c6fe2f0e5e2a0df08073818c4 100644
--- a/alfa-client/nx.json
+++ b/alfa-client/nx.json
@@ -103,5 +103,13 @@
     }
   },
   "useInferencePlugins": false,
-  "defaultBase": "master"
-}
+  "defaultBase": "master",
+  "release": {
+    "projects": [
+      "admin",
+      "alfa",
+      "info"
+    ],
+    "projectsRelationship": "independent"
+  }
+}
\ No newline at end of file
diff --git a/alfa-client/package.json b/alfa-client/package.json
index 2b6783cb2f01950762bc76e0c5fa2851155596a1..56791618d048e514e34de89a49233389e0a988c4 100644
--- a/alfa-client/package.json
+++ b/alfa-client/package.json
@@ -1,6 +1,6 @@
 {
   "name": "alfa",
-  "version": "1.4.0-SNAPSHOT",
+  "version": "0.0.0",
   "license": "MIT",
   "scripts": {
     "start": "nx run alfa:serve --port 4300 --disable-host-check",
diff --git a/alfa-server/Dockerfile b/alfa-server/Dockerfile
deleted file mode 100644
index 2109e8a7a05c40cbde08aca33d01409b8fc333a7..0000000000000000000000000000000000000000
--- a/alfa-server/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-FROM openjdk:16-alpine
-
-COPY /target/alfa-server.jar /opt/alfa.jar
-
-WORKDIR /opt
-CMD ["java", "-jar", "alfa.jar"]
\ No newline at end of file
diff --git a/alfa-server/pom.xml b/alfa-server/pom.xml
deleted file mode 100644
index 0bbc29ac4075e6f1ded3d89f9f4b3ff36d71bc13..0000000000000000000000000000000000000000
--- a/alfa-server/pom.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0"?>
-<!--
-
-    Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-    Ministerpräsidenten des Landes Schleswig-Holstein
-    Staatskanzlei
-    Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-
-    Lizenziert unter der EUPL, Version 1.2 oder - sobald
-    diese von der Europäischen Kommission genehmigt wurden -
-    Folgeversionen der EUPL ("Lizenz");
-    Sie dürfen dieses Werk ausschließlich gemäß
-    dieser Lizenz nutzen.
-    Eine Kopie der Lizenz finden Sie hier:
-
-    https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-
-    Sofern nicht durch anwendbare Rechtsvorschriften
-    gefordert oder in schriftlicher Form vereinbart, wird
-    die unter der Lizenz verbreitete Software "so wie sie
-    ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-    ausdrücklich oder stillschweigend - verbreitet.
-    Die sprachspezifischen Genehmigungen und Beschränkungen
-    unter der Lizenz sind dem Lizenztext zu entnehmen.
-
--->
-<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>de.ozgcloud.alfa</groupId>
-		<artifactId>alfa</artifactId>
-		<version>2.18.0-SNAPSHOT</version>
-	</parent>
-
-	<artifactId>alfa-server</artifactId>
-	<name>Alfa Server</name>
-	<inceptionYear>2020</inceptionYear>
-
-	<properties>
-		<maven.compiler.source>${java.version}</maven.compiler.source>
-		<maven.compiler.target>${java.version}</maven.compiler.target>
-
-		<spring-boot.build-image.imageName>docker.ozg-sh.de/alfa:build-latest</spring-boot.build-image.imageName>
-	</properties>
-
-	<dependencies>
-		<dependency>
-			<groupId>de.ozgcloud.alfa</groupId>
-			<artifactId>alfa-service</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-config</artifactId>
-		</dependency>
-		<!-- aspectJ -->
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjweaver</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.aspectj</groupId>
-			<artifactId>aspectjrt</artifactId>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<finalName>${project.artifactId}</finalName>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-				<configuration>
-					<profiles>
-						<profile>local</profile>
-						<profile>remotekc</profile>
-					</profiles>
-					<docker>
-						<publishRegistry>
-							<username>${docker-username}</username>
-							<password>${docker-password}</password>
-							<url>${docker-url}</url>
-						</publishRegistry>
-					</docker>
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-failsafe-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>io.github.git-commit-id</groupId>
-				<artifactId>git-commit-id-maven-plugin</artifactId>
-			</plugin>
-
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-resources-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>copy-client</id>
-						<phase>compile</phase>
-						<goals>
-							<goal>copy-resources</goal>
-						</goals>
-						<configuration>
-							<outputDirectory>
-								${project.build.directory}/classes/META-INF/resources
-							</outputDirectory>
-							<resources>
-								<resource>
-									<directory>
-										../${project.parent.artifactId}-client/dist/apps/alfa/
-									</directory>
-								</resource>
-							</resources>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>Jar Tests Package</id>
-						<phase>package</phase>
-						<goals>
-							<goal>test-jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/alfa-server/run_local.sh b/alfa-server/run_local.sh
deleted file mode 100755
index 6e875266272d77cc080c2887d19965a55d97aa64..0000000000000000000000000000000000000000
--- a/alfa-server/run_local.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-mvn spring-boot:run -Dspring-boot.run.profiles=local,remotekc
diff --git a/alfa-server/set-JAVA_HOME-template.sh b/alfa-server/set-JAVA_HOME-template.sh
deleted file mode 100755
index 1928dadc88bc0220c7a4bded75b76f088c47ef0a..0000000000000000000000000000000000000000
--- a/alfa-server/set-JAVA_HOME-template.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-
-# execute with: source set_JAVA_HOME.sh
-
-export JAVA_HOME=/opt/openjdk-11.0.2
diff --git a/alfa-server/set-JAVA_HOME-template.sh.example b/alfa-server/set-JAVA_HOME-template.sh.example
deleted file mode 100755
index fc9ed2e724f8302eecaf5de3a81841a6bf60f5f4..0000000000000000000000000000000000000000
--- a/alfa-server/set-JAVA_HOME-template.sh.example
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# execute with: source set_JAVA_HOME.sh
-
-export JAVA_HOME=/opt/openjdk-11.0.2
diff --git a/alfa-server/src/main/java/de/ozgcloud/alfa/AlfaServerApplication.java b/alfa-server/src/main/java/de/ozgcloud/alfa/AlfaServerApplication.java
deleted file mode 100644
index a47711f6ba8039fdf0315c26d519056b883df55e..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/java/de/ozgcloud/alfa/AlfaServerApplication.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.TimeZone;
-
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.security.concurrent.DelegatingSecurityContextRunnable;
-import org.springframework.web.filter.ForwardedHeaderFilter;
-
-@SpringBootApplication
-@EnableAsync
-@EnableAspectJAutoProxy(proxyTargetClass = true)
-@ComponentScan({ "de.ozgcloud.*" })
-public class AlfaServerApplication {
-
-	public static void main(String[] args) {
-		TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
-		SpringApplication.run(AlfaServerApplication.class, args);
-	}
-
-	@Bean
-	FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
-		FilterRegistrationBean<ForwardedHeaderFilter> bean = new FilterRegistrationBean<>();
-		bean.setFilter(new ForwardedHeaderFilter());
-		return bean;
-	}
-
-	@Bean
-	ThreadPoolTaskExecutor threadPoolTaskExecutor() {
-		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-
-		executor.setThreadNamePrefix("async-");
-		executor.setTaskDecorator(DelegatingSecurityContextRunnable::new);
-		return executor;
-	}
-
-	@Bean
-	CallScope callScope() {
-		return new CallScope();
-	}
-
-	@Bean
-	BeanFactoryPostProcessor beanFactoryPostProcessor(CallScope callScope) {
-		return new CallBeanFactoryPostProcessor(callScope);
-	}
-}
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application-dev.yml b/alfa-server/src/main/resources/application-dev.yml
deleted file mode 100644
index ec9f40e322dac00e4bc6dd3f274cfb6d481610da..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-dev.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-keycloak:
-  auth-server-url: https://sso.dev.by.ozg-cloud.de
-  realm: by-kiel-dev
-  resource: alfa
-
-server:
-  error:
-    include-stacktrace: always
-
-ozgcloud:
-  feature:
-    reply-always-allowed: true
-    collaboration-enabled: true
-  production: false
-  stage:
-    production: false
diff --git a/alfa-server/src/main/resources/application-e2e.yml b/alfa-server/src/main/resources/application-e2e.yml
deleted file mode 100644
index d56ddccb468a1ec933afa67796cc933a031851a8..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-e2e.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-keycloak:
-  realm: by-e2e-local-dev
-
-ozgcloud:
-  feature:
-    reply-always-allowed: true
-    collaboration-enabled: true
-  forwarding:
-    lninfo:
-      url: classpath:files/LandesnetzInfo.html
-  user-assistance:
-    documentation:
-      url: /assets/benutzerleitfaden/benutzerleitfaden.pdf
-  user-manager:
-    url: http://localhost:9092
-  dms:
-    enabled: true
diff --git a/alfa-server/src/main/resources/application-ea.yml b/alfa-server/src/main/resources/application-ea.yml
deleted file mode 100644
index eb8d789be456ec1c1a29b1cd0ecc263f5040a833..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-ea.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-ozgcloud:
-  forwarding:
-    lninfo:
-      url: http://lninfo.ozg-tools.svc.cluster.local/
-      
----
-spring:
-  config:
-    activate:
-      on-profile:
-      - dev
-      
-ozgcloud:
-  forwarding:
-    lninfo:
-      url: classpath:files/mailertable.txt
-      
----
-spring:
-  config:
-    activate:
-      on-profile:
-      - test
-      
-ozgcloud:
-  forwarding:
-    lninfo:
-      url: classpath:files/mailertable.txt
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application-local.yml b/alfa-server/src/main/resources/application-local.yml
deleted file mode 100644
index 76f4ccb48052de1ee266058c1f7377dafdac11b0..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-local.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-logging:
-  level:
-    '[de.ozgcloud]': INFO
-  config: classpath:log4j2-local.xml
-
-server:
-  error:
-    include-stacktrace: always
-
-grpc:
-  client:
-    user-manager:
-      negotiationType: PLAINTEXT
-    vorgang-manager:
-      negotiationType: PLAINTEXT
-    zufi-manager:
-      negotiationType: PLAINTEXT
-    collaboration-manager:
-      negotiationType: PLAINTEXT
-    archive-manager:
-      negotiationType: PLAINTEXT
-
-ozgcloud:
-  feature:
-    reply-always-allowed: true
-    collaboration-enabled: true
-  production: false
-  user-assistance:
-    documentation:
-      url: /assets/benutzerleitfaden/benutzerleitfaden.pdf
-  user-manager:
-    url: http://localhost:9092
-    profile-template: /api/userProfiles/%s
-    search-template: /api/userProfiles/?searchBy={searchBy}
-  dms:
-    enabled: true
-
-keycloak:
-  auth-server-url: http://localhost:8088
-  realm: by-kiel-dev
-  resource: by-kiel-dev-alfa
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application-nf.yaml b/alfa-server/src/main/resources/application-nf.yaml
deleted file mode 100644
index 821736e4635590a7844b15993bf38772f1b1ff3e..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-nf.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-ozgcloud:
-  vorgang:
-    processorNames:
-      - ticketCheck
-    processor:
-      - formId: mob_dtickerst/mob_dtickerst
-        formEngineName: AFM
-  
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application-oc.yml b/alfa-server/src/main/resources/application-oc.yml
deleted file mode 100644
index ed155e15aaf8a583d74cb6a4fde849536f34caa2..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-oc.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-spring:
-  boot:
-    admin:
-      client:
-        instance:
-          prefer-ip: true
-          
-grpc:
-  client:
-    vorgang-manager:
-      address: static://172.30.125.177:9090
-      
-logging:
-  config: classpath:log4j2.xml
-  
----
-spring:
-  config:
-    activate:
-      on-profile:
-      - test
-      
-ozgcloud:
-  stage:
-    production: false
-    
----
-spring:
-  config:
-    activate:
-      on-profile:
-      - stage
-      
-ozgcloud:
-  stage:
-    production: false
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application-remotekc.yml b/alfa-server/src/main/resources/application-remotekc.yml
deleted file mode 100644
index 60e21682a25f6e8445fcc8d21dea502e5de6f890..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application-remotekc.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-keycloak:
-  auth-server-url: https://sso.dev.by.ozg-cloud.de
-  realm: by-kiel-dev
-  resource: alfa
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application.yml b/alfa-server/src/main/resources/application.yml
deleted file mode 100644
index 521222a6f86965335ce7a54b6387c1d76902649a..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/application.yml
+++ /dev/null
@@ -1,107 +0,0 @@
-logging:
-  level:
-    ROOT: WARN
-    '[de.ozgcloud]': INFO,
-    '[org.springframework.security]': WARN
-
-spring:
-  mvc:
-    pathmatch:
-      matching-strategy: ant-path-matcher
-  application:
-    name: Alfa
-  jackson:
-    deserialization:
-      'ADJUST_DATES_TO_CONTEXT_TIME_ZONE': false
-  servlet:
-    multipart:
-      max-file-size: 2GB
-      max-request-size: 2GB
-  security:
-    oauth2:
-      resourceserver:
-        jwt:
-          issuer-uri: ${ozgcloud.oauth2.issuer-uri}
-          jwk-set-uri: ${spring.security.oauth2.resourceserver.jwt.issuer-uri}/protocol/openid-connect/certs
-  config:
-    import: optional:configserver:${ozgcloud_administration_address:http://localhost:8888}/configserver/
-
-server:
-  http2:
-    enabled: true
-  error:
-    include-stacktrace: never
-
-management:
-  server:
-    port: 8081
-  health:
-    livenessState:
-      enabled: true
-    readinessState:
-      enabled: true
-  endpoint:
-    health:
-      group:
-        exploratory:
-          include: livenessState,readinessState,ping
-          show-details: always
-      probes:
-        enabled: true
-    prometheus:
-      enabled: true
-  endpoints:
-    web:
-      exposure:
-        include: health,prometheus,refresh
-
-grpc:
-  client:
-    vorgang-manager:
-      address: static://127.0.0.1:9090
-      negotiationType: TLS
-    user-manager:
-      address: static://127.0.0.1:9000
-      negotiationType: TLS
-    zufi-manager:
-      address: static://127.0.0.1:9190
-      negotiationType: TLS
-    collaboration-manager:
-      address: static://127.0.0.1:9090
-      negotiationType: TLS
-    archive-manager:
-      address: static://127.0.0.1:9090
-      negotiationType: TLS
-
-ozgcloud:
-  auth:
-    token:
-      secret: XPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6Ywoir
-      validity: 60000
-  oauth2:
-    auth-server-url: ${keycloak.auth-server-url}
-    realm: ${keycloak.realm}
-    resource: ${keycloak.resource}
-    principle-attribute: preferred_username
-    issuer-uri: ${ozgcloud.oauth2.auth-server-url}/realms/${ozgcloud.oauth2.realm}
-  production: true
-  upload:
-    maxFileSize:
-      postfachNachrichtAttachment: 3MB
-      wiedervorlageAttachment: 40MB
-      bescheidFile: 3MB
-      bescheidAttachment: 3MB
-    content-types:
-      bescheidFile:
-        - application/pdf
-        - image/png
-        - image/jpeg
-      bescheidAttachment:
-        - application/pdf
-        - image/png
-        - image/jpeg
-  user-manager:
-    profile-template: /api/userProfiles/%s
-    search-template: /api/userProfiles/?searchBy={searchBy}
-  dms:
-    enabled: false
diff --git a/alfa-server/src/main/resources/banner.txt b/alfa-server/src/main/resources/banner.txt
deleted file mode 100644
index e95c531227e0ec959fd83f59e7031a9bb2b1b8d3..0000000000000000000000000000000000000000
--- a/alfa-server/src/main/resources/banner.txt
+++ /dev/null
@@ -1,7 +0,0 @@
- ______     __         ______   ______    
-/\  __ \   /\ \       /\  ___\ /\  __ \   
-\ \  __ \  \ \ \____  \ \  __\ \ \  __ \  
- \ \_\ \_\  \ \_____\  \ \_\    \ \_\ \_\ 
-  \/_/\/_/   \/_____/   \/_/     \/_/\/_/                
-=================================================
-${spring-boot.version}		${application.version}
diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml
deleted file mode 100644
index 22eab80d592ab5d23b5911b71264931dfc103880..0000000000000000000000000000000000000000
--- a/alfa-service/pom.xml
+++ /dev/null
@@ -1,254 +0,0 @@
-<?xml version="1.0"?>
-<!--
-
-    Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-    Ministerpräsidenten des Landes Schleswig-Holstein
-    Staatskanzlei
-    Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-
-    Lizenziert unter der EUPL, Version 1.2 oder - sobald
-    diese von der Europäischen Kommission genehmigt wurden -
-    Folgeversionen der EUPL ("Lizenz");
-    Sie dürfen dieses Werk ausschließlich gemäß
-    dieser Lizenz nutzen.
-    Eine Kopie der Lizenz finden Sie hier:
-
-    https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-
-    Sofern nicht durch anwendbare Rechtsvorschriften
-    gefordert oder in schriftlicher Form vereinbart, wird
-    die unter der Lizenz verbreitete Software "so wie sie
-    ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-    ausdrücklich oder stillschweigend - verbreitet.
-    Die sprachspezifischen Genehmigungen und Beschränkungen
-    unter der Lizenz sind dem Lizenztext zu entnehmen.
-
--->
-<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>de.ozgcloud.alfa</groupId>
-		<artifactId>alfa</artifactId>
-		<version>2.18.0-SNAPSHOT</version>
-	</parent>
-
-	<artifactId>alfa-service</artifactId>
-	<name>Alfa Service</name>
-	<description>Alfa Service implementation</description>
-	<packaging>jar</packaging>
-	<inceptionYear>2020</inceptionYear>
-
-	<properties>
-		<maven.compiler.source>${java.version}</maven.compiler.source>
-		<maven.compiler.target>${java.version}</maven.compiler.target>
-	</properties>
-
-	<dependencies>
-		<!-- Spring -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-log4j2</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-hateoas</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-validation</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>net.devh</groupId>
-			<artifactId>grpc-client-spring-boot-starter</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.grpc</groupId>
-			<artifactId>grpc-inprocess</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-security</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.cloud</groupId>
-			<artifactId>spring-cloud-starter-config</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.jayway.jsonpath</groupId>
-			<artifactId>json-path</artifactId>
-		</dependency>
-
-		<!-- jwt -->
-		<dependency>
-			<groupId>com.auth0</groupId>
-			<artifactId>java-jwt</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.jsonwebtoken</groupId>
-			<artifactId>jjwt-api</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.jsonwebtoken</groupId>
-			<artifactId>jjwt-impl</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>io.jsonwebtoken</groupId>
-			<artifactId>jjwt-jackson</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-
-		<!-- own projects -->
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>nachrichten-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-utils</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.common</groupId>
-			<artifactId>ozgcloud-common-pdf</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.user</groupId>
-			<artifactId>user-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.zufi</groupId>
-			<artifactId>zufi-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.collaboration</groupId>
-			<artifactId>collaboration-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.archive</groupId>
-			<artifactId>archive-manager-interface</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.document</groupId>
-			<artifactId>document-manager-interface</artifactId>
-		</dependency>
-
-		<!-- tools -->
-		<dependency>
-			<groupId>org.mapstruct</groupId>
-			<artifactId>mapstruct</artifactId>
-		</dependency>
-
-		<!-- Dev -->
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-devtools</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-
-		<!-- commons -->
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-lang3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-io</groupId>
-			<artifactId>commons-io</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-beanutils</groupId>
-			<artifactId>commons-beanutils</artifactId>
-		</dependency>
-
-		<!-- Test -->
-		<dependency>
-			<groupId>org.springframework.security</groupId>
-			<artifactId>spring-security-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-utils</artifactId>
-			<type>test-jar</type>
-			<scope>test</scope>
-			<version>${vorgang-manager.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-configuration-processor</artifactId>
-			<optional>true</optional>
-		</dependency>
-
-		<dependency>
-			<groupId>com.thedeanda</groupId>
-			<artifactId>lorem</artifactId>
-		</dependency>
-
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-failsafe-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>io.github.git-commit-id</groupId>
-				<artifactId>git-commit-id-maven-plugin</artifactId>
-			</plugin>
-
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<version>3.3.0</version>
-				<executions>
-					<execution>
-						<id>Jar Tests Package</id>
-						<phase>package</phase>
-						<goals>
-							<goal>test-jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-				<configuration>
-					<skip>true</skip>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/alfa-service/sonar-project.properties b/alfa-service/sonar-project.properties
deleted file mode 100644
index be85f65c5343d76c0b0c05aea17aa40ffb5ff510..0000000000000000000000000000000000000000
--- a/alfa-service/sonar-project.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-sonar.java.coveragePlugin=jacoco
-sonar.jacoco.reportPath=target/jacoco.exec
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaProperties.java
deleted file mode 100644
index bd4ebfc6d34bd417027d842247d7c14b7ad7d248..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaProperties.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-
-@Configuration
-public class AlfaProperties {
-
-	@Getter
-	@Value("${spring.application.name}")
-	private String applicationName;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/CallBeanFactoryPostProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/CallBeanFactoryPostProcessor.java
deleted file mode 100644
index ffb705dd1d4136a7d8e0696bccbfcddfe7ad6184..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/CallBeanFactoryPostProcessor.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-public class CallBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
-
-	private final CallScope callScope;
-
-	@Override
-	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
-		beanFactory.registerScope(CallScope.SCOPE_NAME, callScope);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/CallScope.java b/alfa-service/src/main/java/de/ozgcloud/alfa/CallScope.java
deleted file mode 100644
index f182f4cc942040dd6d96d650cb80464b5357558d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/CallScope.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.springframework.beans.factory.ObjectFactory;
-import org.springframework.beans.factory.config.Scope;
-import org.springframework.core.NamedInheritableThreadLocal;
-
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-public class CallScope implements Scope {
-
-	public static final String SCOPE_NAME = "call";
-
-	private static final ThreadLocal<Map<String, Object>> scopedObjectsHolder = new NamedInheritableThreadLocal<>("Call Context");
-	private static final ThreadLocal<Map<String, Runnable>> destructionCallbacksHolder = new NamedInheritableThreadLocal<>(
-			"Call Context Desctruction Callbacks");
-
-	public void startScope() {
-		LOG.info("START Call-Scope");
-		scopedObjectsHolder.set(new ConcurrentHashMap<>());
-		destructionCallbacksHolder.set(new ConcurrentHashMap<>());
-	}
-
-	public void endScope() {
-		scopedObjectsHolder.remove();
-		callAllDestructionCallbacks();
-		destructionCallbacksHolder.remove();
-	}
-
-	private void callAllDestructionCallbacks() {
-		destructionCallbacksHolder.get().values().forEach(Runnable::run);
-	}
-
-	@Override
-	public Object get(String name, ObjectFactory<?> objectFactory) {
-		// This is a workaround for a problematic CallScope implementation. This should only happen during e2e tests execution.
-		if (Objects.isNull(scopedObjectsHolder.get())) {
-			LOG.warn("ThreadLocal value for {} not found.", name);
-			return objectFactory.getObject();
-		}
-
-		if (!scopedObjectsHolder.get().containsKey(name)) {
-			scopedObjectsHolder.get().put(name, objectFactory.getObject());
-		}
-
-		return scopedObjectsHolder.get().get(name);
-	}
-
-	@Override
-	public Object remove(String name) {
-		destructionCallbacksHolder.get().remove(name);
-		return scopedObjectsHolder.get().remove(name);
-	}
-
-	@Override
-	public void registerDestructionCallback(String name, Runnable callback) {
-		destructionCallbacksHolder.get().put(name, callback);
-
-	}
-
-	@Override
-	public Object resolveContextualObject(String key) {
-		return scopedObjectsHolder.get().get(key);
-	}
-
-	@Override
-	public String getConversationId() {
-		return Thread.currentThread().getName();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/Environment.java b/alfa-service/src/main/java/de/ozgcloud/alfa/Environment.java
deleted file mode 100644
index e7186f9284fdb365d37dfbed78bb95b1588288f7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/Environment.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.List;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class Environment {
-
-	private boolean production;
-	private String remoteHost;
-	private String authServer;
-	private String realm;
-	private String clientId;
-	private List<String> processorNames;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java
deleted file mode 100644
index c640ef7b16b119848780e3c0db31e652a421551e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties;
-
-@RestController
-@RequestMapping(EnvironmentController.BASE_PATH)
-public class EnvironmentController {
-
-	static final String BASE_PATH = "/api/environment"; // NOSONAR
-
-	@Autowired
-	private OAuth2Properties oAuth2Properties;
-
-	@Autowired
-	private ProductionProperties productionProperties;
-
-	@Autowired
-	private VorgangProcessorProperties vorgangProcessorProperties;
-
-	@GetMapping
-	public Environment getEnvironment() {
-		return Environment.builder()
-				.production(productionProperties.isProduction())
-				.remoteHost(linkTo(RootController.class).toUri().toString())
-				.authServer(oAuth2Properties.getAuthServerUrl())
-				.clientId(oAuth2Properties.getResource())
-				.realm(oAuth2Properties.getRealm())
-				.processorNames(vorgangProcessorProperties.getProcessorNames())
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/GrpcConfiguration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/GrpcConfiguration.java
deleted file mode 100644
index b7af79d02ee972884a9f89bbb3f8711b9df4635d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/GrpcConfiguration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * A workaround for @GrpcClient to work i.e. inject dependency until full Spring 3 support is available.
- * https://github.com/yidongnan/grpc-spring-boot-starter/pull/775
- */
-@Configuration
-@ImportAutoConfiguration({
-		net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration.class,
-		net.devh.boot.grpc.client.autoconfigure.GrpcClientMetricAutoConfiguration.class,
-		net.devh.boot.grpc.client.autoconfigure.GrpcClientHealthAutoConfiguration.class,
-		net.devh.boot.grpc.client.autoconfigure.GrpcClientSecurityAutoConfiguration.class,
-		net.devh.boot.grpc.client.autoconfigure.GrpcDiscoveryClientAutoConfiguration.class,
-
-		net.devh.boot.grpc.common.autoconfigure.GrpcCommonCodecAutoConfiguration.class,
-})
-public class GrpcConfiguration {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/JwtAuthConverter.java b/alfa-service/src/main/java/de/ozgcloud/alfa/JwtAuthConverter.java
deleted file mode 100644
index d29f8073982a26245ee88539778e14021881859b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/JwtAuthConverter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.MapUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.lang.NonNull;
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.oauth2.jwt.Jwt;
-import org.springframework.security.oauth2.jwt.JwtClaimNames;
-import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
-import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
-import org.springframework.stereotype.Component;
-
-@Component
-public class JwtAuthConverter implements Converter<Jwt, AbstractAuthenticationToken> {
-
-	private final JwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
-
-	private static final String SIMPLE_GRANT_AUTHORITY_PREFIX = "ROLE_";
-	static final String RESOURCE_ACCESS_KEY = "resource_access";
-	static final String ROLES_KEY = "roles";
-
-	@Autowired
-	private OAuth2Properties oAuth2Properties;
-
-	@Override
-	public AbstractAuthenticationToken convert(@NonNull Jwt jwt) {
-		return new JwtAuthenticationToken(jwt, getAuthorities(jwt), getPrincipleClaimName(jwt));
-	}
-
-	String getPrincipleClaimName(Jwt jwt) {
-		return MapUtils.getString(jwt.getClaims(), getClaimName());
-	}
-
-	private String getClaimName() {
-		return Optional.ofNullable(oAuth2Properties.getPrincipleAttribute()).orElse(JwtClaimNames.SUB);
-	}
-
-	Set<GrantedAuthority> getAuthorities(Jwt jwt) {
-		return Stream.concat(jwtGrantedAuthoritiesConverter.convert(jwt).stream(), extractResourceRoles(jwt).stream()).collect(Collectors.toSet());
-	}
-
-	Collection<SimpleGrantedAuthority> extractResourceRoles(Jwt jwt) {
-		var resourceAccess = getResourceAccess(jwt);
-		if (resourceAccess.isEmpty()) {
-			return Collections.emptySet();
-		}
-		if (Objects.isNull(resourceAccess.get(oAuth2Properties.getResource()))) {
-			return Collections.emptySet();
-		}
-		return extractRoles(getClaimMapFromMap(resourceAccess, oAuth2Properties.getResource()));
-	}
-
-	private Map<String, Object> getResourceAccess(Jwt jwt) {
-		return jwt.getClaimAsMap(RESOURCE_ACCESS_KEY);
-	}
-
-	@SuppressWarnings("unchecked")
-	private Map<String, Object> getClaimMapFromMap(Map<String, Object> claimMap, String claimName) {
-		return MapUtils.getMap(claimMap, claimName);
-	}
-
-	Set<SimpleGrantedAuthority> extractRoles(Map<String, Object> resource) {
-		if (!resource.containsKey(ROLES_KEY)) {
-			return Collections.emptySet();
-		}
-		return getRoles(resource).stream().map(role -> new SimpleGrantedAuthority(SIMPLE_GRANT_AUTHORITY_PREFIX + role)).collect(Collectors.toSet());
-	}
-
-	@SuppressWarnings("unchecked")
-	private Collection<String> getRoles(Map<String, Object> resource) {
-		return (Collection<String>) resource.get(ROLES_KEY);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/JwtTokenUtil.java b/alfa-service/src/main/java/de/ozgcloud/alfa/JwtTokenUtil.java
deleted file mode 100644
index 2371bae407239f9377d1d1474c72598218d60b8d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/JwtTokenUtil.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.stereotype.Component;
-
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.algorithms.Algorithm;
-import com.auth0.jwt.exceptions.JWTVerificationException;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenProperties;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-
-@Component
-public class JwtTokenUtil {
-
-	public static final String TOKEN_TYP_KEY = "typ";
-	public static final String TOKEN_TYPE = "JWT";
-	public static final String TOKEN_ISSUER = "secure-api";
-	public static final String TOKEN_AUDIENCE = "secure-app";
-	public static final String ROLE_CLAIM = "roles";
-	public static final String USERID_CLAIM = "userId";
-	public static final String FIRSTNAME_CLAIM = "firstName";
-	public static final String LASTNAME_CLAIM = "lastName";
-	public static final String FILEID_CLAIM = "fileId";
-	public static final String ORGANSIATIONSEINHEIT_IDS_CLAIM = "organisationseinheitIds";
-
-	@Autowired
-	private DownloadTokenProperties downloadTokenProperties;
-
-	@SuppressWarnings("unchecked")
-	private List<Map<String, String>> getRoleClaims(String token) {
-		List<Map<String, String>> roleClaims = new ArrayList<>();
-
-		getAllClaimsFromToken(token).ifPresent(claims -> roleClaims.addAll((List<Map<String, String>>) claims.get(ROLE_CLAIM)));
-
-		return roleClaims;
-	}
-
-	public Optional<Claims> getAllClaimsFromToken(String token) {
-		return Optional.of(Jwts.parser().setSigningKey(downloadTokenProperties.getSecret().getBytes()).build().parseSignedClaims(token).getPayload());
-	}
-
-	public List<SimpleGrantedAuthority> getRolesFromToken(String token) {
-		List<Map<String, String>> claimsList = getRoleClaims(token);
-		return claimsList.stream()
-				.flatMap(rolesMap -> rolesMap.entrySet().stream())
-				.map(roleEntry -> new SimpleGrantedAuthority(roleEntry.getValue()))
-				.toList();
-	}
-
-	@SuppressWarnings({ "unchecked" })
-	public Collection<String> getOrganisationseinheitIdsFromToken(String token) {
-		List<String> organisationseinheitIds = new ArrayList<>();
-		getAllClaimsFromToken(token)
-				.ifPresent(claims -> {
-					if (claims.get(ORGANSIATIONSEINHEIT_IDS_CLAIM) != null) {
-						organisationseinheitIds.addAll((Collection<String>) claims.get(ORGANSIATIONSEINHEIT_IDS_CLAIM));
-					}
-				});
-		return organisationseinheitIds;
-	}
-
-	public String generateToken(FileId fileId, UserProfile user) {
-		var claims = new HashMap<String, Object>();
-		claims.put(USERID_CLAIM, user.getId().toString());
-		claims.put(FIRSTNAME_CLAIM, user.getFirstName());
-		claims.put(LASTNAME_CLAIM, user.getLastName());
-		claims.put(ROLE_CLAIM, user.getAuthorities());
-		claims.put(FILEID_CLAIM, fileId.toString());
-		claims.put(ORGANSIATIONSEINHEIT_IDS_CLAIM, user.getOrganisationseinheitIds());
-
-		return doGenerateToken(claims, user.getId().toString());
-	}
-
-	private String doGenerateToken(Map<String, Object> claims, String subject) {
-		return Jwts.builder()
-				.setClaims(claims)
-				.setSubject(subject)
-				.setHeaderParam(TOKEN_TYP_KEY, TOKEN_TYPE)
-				.setIssuer(TOKEN_ISSUER).setIssuedAt(new Date(System.currentTimeMillis()))
-				.setExpiration(new Date(System.currentTimeMillis() + downloadTokenProperties.getValidity()))
-				.setAudience(TOKEN_AUDIENCE)
-				.signWith(SignatureAlgorithm.HS512, downloadTokenProperties.getSecret().getBytes())
-				.compact();
-	}
-
-	public void verifyToken(String token) throws JWTVerificationException {
-		var algorithm = Algorithm.HMAC512(downloadTokenProperties.getSecret());
-		var verifier = JWT.require(algorithm).build();
-
-		verifier.verify(token);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/OAuth2Properties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/OAuth2Properties.java
deleted file mode 100644
index 7d5b8131581ae3d1b331a95d5f05ffe28f05a463..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/OAuth2Properties.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = OAuth2Properties.PREFIX)
-public class OAuth2Properties {
-
-	static final String PREFIX = "ozgcloud.oauth2";
-
-	/**
-	 * OAuth2 auth server url
-	 */
-	private String authServerUrl;
-
-	/**
-	 * OAuth2 realm
-	 */
-	private String realm;
-
-	/**
-	 * OAuth2 resource
-	 */
-	private String resource;
-
-	/**
-	 * OAuth2 principle attribute
-	 */
-	private String principleAttribute;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/ProductionProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/ProductionProperties.java
deleted file mode 100644
index 9cb77910d005b407263dab108b29b132282f04bf..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/ProductionProperties.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties("ozgcloud")
-class ProductionProperties {
-
-	/**
-	 * Production mode.
-	 */
-	private boolean production = true;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RequestAttributes.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RequestAttributes.java
deleted file mode 100644
index f39976971e44c8508e889e22263f35e0b8bad14e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RequestAttributes.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.UUID;
-
-import org.springframework.context.annotation.Scope;
-import org.springframework.context.annotation.ScopedProxyMode;
-import org.springframework.stereotype.Component;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Component
-@Scope(scopeName = "call", proxyMode = ScopedProxyMode.TARGET_CLASS)
-@Getter
-@Builder
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@NoArgsConstructor
-public class RequestAttributes {
-
-	@Builder.Default
-	private String requestId = UUID.randomUUID().toString();
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RequestIdFilter.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RequestIdFilter.java
deleted file mode 100644
index 9e299ce0dfd991d45829fa35361ff2db6676ed5f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RequestIdFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.io.IOException;
-
-import jakarta.servlet.FilterChain;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import org.apache.logging.log4j.CloseableThreadContext;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.filter.OncePerRequestFilter;
-
-import lombok.extern.log4j.Log4j2;
-
-@Component
-@Log4j2
-class RequestIdFilter extends OncePerRequestFilter {
-
-	private static final String REQUEST_ID_KEY = "requestId";
-
-	@Autowired
-	private RequestAttributes reqAttributes;
-	@Autowired
-	private CallScope callScope;
-
-	@Override
-	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
-			throws ServletException, IOException {
-
-		callScope.startScope();
-		try (CloseableThreadContext.Instance ctc = CloseableThreadContext.put(REQUEST_ID_KEY, reqAttributes.getRequestId())) {
-			LOG.info("START of Request with ID '{}'.", reqAttributes.getRequestId());
-			filterChain.doFilter(request, response);
-		} finally {
-			LOG.info("END of Request with ID '{}'", reqAttributes.getRequestId());
-			callScope.endScope();
-		}
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/Root.java b/alfa-service/src/main/java/de/ozgcloud/alfa/Root.java
deleted file mode 100644
index 297a9b071ea87d278e7d1070d0d3485351d11180..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/Root.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.time.Instant;
-import java.util.Objects;
-
-import org.springframework.boot.info.BuildProperties;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@AllArgsConstructor
-public class Root {
-
-	private BuildProperties buildProperties;
-	private boolean production;
-	@Getter
-	private String barrierefreiheitUrl;
-
-	public String getVersion() {
-		return Objects.isNull(buildProperties) ? "--" : buildProperties.getVersion();
-	}
-
-	public Instant getBuildTime() {
-		return Objects.isNull(buildProperties) ? null : buildProperties.getTime();
-	}
-
-	public String getJavaVersion() {
-		return System.getProperty("java.version");
-	}
-
-	public boolean getProduction() {
-		return production;
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RootController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RootController.java
deleted file mode 100644
index a748d74394fca5db9c12005a0736d1df44ca0113..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RootController.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.info.BuildProperties;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping(RootController.PATH)
-public class RootController {
-
-	static final String PATH = "/api"; // NOSONAR
-
-	@Autowired
-	private RootModelAssembler modelAssembler;
-
-	@Autowired(required = false)
-	private BuildProperties buildProperties;
-	@Value("${ozgcloud.stage.production:#{true}}")
-	private boolean production = true;
-	@Autowired
-	private RootProperties rootProperties;
-
-	@GetMapping
-	public EntityModel<Root> getRoot() {
-		return modelAssembler.toModel(buildRoot());
-	}
-
-	private Root buildRoot() {
-		return Root.builder()
-				.buildProperties(buildProperties)
-				.production(production)
-				.barrierefreiheitUrl(rootProperties.getBarrierefreiheitUrl())
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RootModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RootModelAssembler.java
deleted file mode 100644
index e62dd86b34e92a1292fe3ace76e4d9b2f3bcef20..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RootModelAssembler.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserRole;
-
-@Component
-public class RootModelAssembler implements RepresentationModelAssembler<Root, EntityModel<Root>> {
-
-	static final String REL_DOWNLOAD_TOKEN = "downloadToken";
-	static final String REL_CURRENT_USER = "currentUser";
-	static final String REL_DOCUMENTATIONS = "documentations";
-
-	@Autowired
-	private RootViewLinkHandler viewLinkHandler;
-	@Autowired
-	private CurrentUserService currentUserService;
-	@Autowired
-	private UserManagerUrlProvider userManagerUrlProvider;
-
-	@Value("${ozgcloud.user-assistance.documentation.url:#{null}}")
-	private String documentationUrl;
-
-	@Override
-	public EntityModel<Root> toModel(Root root) {
-		var modelBuilder = ModelBuilder.fromEntity(root)
-				.ifMatch(this::hasAnyRole).addLinks(
-						linkTo(RootController.class).withSelfRel(),
-						linkTo(DownloadTokenController.class).withRel(REL_DOWNLOAD_TOKEN))
-				.ifMatch(userManagerUrlProvider::isConfiguredForUserProfile)
-				.addLinkIfPresent(this::buildCurrentUserLink)
-				.addLink(buildUserAssistanceDocumentationUrl());
-
-		if (hasAnyRole()) {
-			viewLinkHandler.addViewLinks(modelBuilder, currentUserService.findUserId());
-		}
-
-		return modelBuilder.buildModel();
-	}
-
-	boolean hasAnyRole() {
-		return hasVerwaltungRole() || currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-	}
-
-	boolean hasVerwaltungRole() {
-		return currentUserService.hasRole(UserRole.VERWALTUNG_USER) || currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE);
-	}
-
-	private Optional<Link> buildCurrentUserLink() {
-		return currentUserService.findUserId().map(userId -> Link.of(String.format(userManagerUrlProvider.getUserProfileTemplate(), userId))
-				.withRel(REL_CURRENT_USER));
-	}
-
-	private Optional<Link> buildUserAssistanceDocumentationUrl() {
-		return Optional.ofNullable(documentationUrl).filter(StringUtils::isNotBlank).map(href -> Link.of(href, REL_DOCUMENTATIONS));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RootProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RootProperties.java
deleted file mode 100644
index f7ee39c56bf930751ee50c5dbce7244f6c00da03..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RootProperties.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package de.ozgcloud.alfa;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = "ozgcloud")
-class RootProperties {
-
-	/**
-	 * URL pointing to the site with information about accessibility (Barrierefreiheit).
-	 */
-	private String barrierefreiheitUrl;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/RootViewLinkHandler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/RootViewLinkHandler.java
deleted file mode 100644
index 80f77f5181edd904055c5b2c704d5d44bed5ffa2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/RootViewLinkHandler.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.LinkBuilder;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.system.SystemStatusService;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.NonNull;
-
-@Component
-class RootViewLinkHandler {
-
-	static final String VORGAENGE_ALL_REL_TEMPLATE = "vorgaenge_%s_all";
-	static final String VORGAENGE_MY_REL_TEMPLATE = "vorgaenge_%s_my";
-	static final String VORGAENGE_UNASSIGNED_REL_TEMPLATE = "vorgaenge_%s_unassigned";
-
-	static final String ALL_VORGAENGE_REL = "vorgaenge_all";
-	static final String MY_VORGEANGE_REL = "vorgaenge_my";
-	static final String UNASSIGNED_VORGEANGE_REL = "vorgaenge_unassigned";
-
-	static final String ALL_WIEDERVORLAGEN_REL = "vorgaenge_wiedervorlagen_all";
-	static final String MY_WIEDERVORLAGEN_REL = "vorgaenge_wiedervorlagen_my";
-	static final String UNASSIGNED_WIEDERVORLAGEN_REL = "vorgaenge_wiedervorlagen_unassigned";
-
-	static final String SEARCH_ALL_REL = "search_all";
-	static final String SEARCH_MY_VORGEANGE_REL = "search_my";
-	static final String SEARCH_UNASSIGNED_VORGEANGE_REL = "search_unassigned";
-
-	static final String ALL_UNGELESENE_NACHRICHTEN_REL = "vorgaenge_ungelesene_nachrichten_all";
-	static final String MY_UNGELESENE_NACHRICHTEN_REL = "vorgaenge_ungelesene_nachrichten_my";
-	static final String UNASSIGNED_UNGELESENE_NACHRICHTEN_REL = "vorgaenge_ungelesene_nachrichten_unassigned";
-
-	static final int PAGE_SIZE = 100;
-
-	@Autowired
-	private CurrentUserService currentUserService;
-	@Autowired
-	private SystemStatusService systemStatusService;
-
-	private final List<VorgangStatus> statusList = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG,
-			VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN);
-
-	public void addViewLinks(ModelBuilder<Root> modelBuilder, Optional<UserId> userId) {
-		modelBuilder.addLink(buildGetAllVorgaengeLink());
-		addSearchAllVorgaengeLink(modelBuilder);
-
-		if (currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			addViewLinksForVerwaltungPoststelle(modelBuilder, userId);
-		}
-		if (currentUserService.hasRole(UserRole.VERWALTUNG_USER)) {
-			addViewLinksForVerwaltungUser(modelBuilder, userId);
-		}
-	}
-
-	private Link buildGetAllVorgaengeLink() {
-		return linkTo(methodOn(VorgangController.class).getAll(0, PAGE_SIZE)).withRel(ALL_VORGAENGE_REL);
-	}
-
-	void addSearchAllVorgaengeLink(ModelBuilder<Root> modelBuilder) {
-		if (systemStatusService.isSearchServerAvailable()) {
-			modelBuilder.addLink(buildGetAllVorgaengeBySearchByLink());
-		}
-	}
-
-	Link buildGetAllVorgaengeBySearchByLink() {
-		return linkTo(methodOn(VorgangController.class).getAllBySearchBy(0, PAGE_SIZE, null)).withRel(SEARCH_ALL_REL);
-	}
-
-	void addViewLinksForVerwaltungPoststelle(ModelBuilder<Root> modelBuilder, Optional<UserId> userId) {
-		userId.map(this::buildMyVorgaengeLink).ifPresent(modelBuilder::addLink);
-
-		if (systemStatusService.isSearchServerAvailable()) {
-			userId.map(this::buildSearchMyVorgaengeLink).ifPresent(modelBuilder::addLink);
-		}
-	}
-
-	void addViewLinksForVerwaltungUser(ModelBuilder<Root> modelBuilder, Optional<UserId> userId) {
-		addAllVorgangStatusLinks(modelBuilder);
-
-		modelBuilder.addLink(buildGetAllUnassignedVorgaengeLink());
-		modelBuilder.addLinks(buildUnassignedVorgaengeStatusLinks());
-
-		userId.map(this::buildMyVorgaengeLink).ifPresent(modelBuilder::addLink);
-		userId.map(this::buildMyVorgaengeStatusLinks).ifPresent(modelBuilder::addLinks);
-
-		if (systemStatusService.isSearchServerAvailable()) {
-			userId.map(this::buildSearchMyVorgaengeLink).ifPresent(modelBuilder::addLink);
-			modelBuilder.addLink(buildSearchUnassignedVorgaengeLink());
-		}
-
-		modelBuilder.addLink(buildGetAllByHasNextWiedervorlageFristLink().withRel(ALL_WIEDERVORLAGEN_REL));
-		modelBuilder
-				.addLink(buildGetAllByAssignedToAndHasNextWiedervorlageFristLink(UserId.empty(), UNASSIGNED_WIEDERVORLAGEN_REL));
-		userId.map(id -> buildGetAllByAssignedToAndHasNextWiedervorlageFristLink(id, MY_WIEDERVORLAGEN_REL)).ifPresent(modelBuilder::addLink);
-
-		addGetByUngeleseneNachrichtenLinks(modelBuilder, userId);
-	}
-
-	Link buildGetAllUnassignedVorgaengeLink() {
-		return buildGetAllVorgaengeByAssignedToLink(UserId.empty()).withRel(UNASSIGNED_VORGEANGE_REL);
-	}
-
-	Link buildMyVorgaengeLink(@NonNull UserId userId) {
-		return buildGetAllVorgaengeByAssignedToLink(userId).withRel(MY_VORGEANGE_REL);
-	}
-
-	LinkBuilder buildGetAllVorgaengeByAssignedToLink(UserId userId) {
-		return linkTo(methodOn(VorgangController.class).getAllByAssignedTo(0, PAGE_SIZE, userId));
-	}
-
-	Link buildSearchMyVorgaengeLink(@NonNull UserId userId) {
-		return buildGetAllVorgaengeByAssignedToAndSearchByLink(userId).withRel(SEARCH_MY_VORGEANGE_REL);
-	}
-
-	Link buildSearchUnassignedVorgaengeLink() {
-		return buildGetAllVorgaengeByAssignedToAndSearchByLink(UserId.empty()).withRel(SEARCH_UNASSIGNED_VORGEANGE_REL);
-	}
-
-	LinkBuilder buildGetAllVorgaengeByAssignedToAndSearchByLink(UserId userId) {
-		return linkTo(methodOn(VorgangController.class).getAllByAssignedToAndSearchBy(0, PAGE_SIZE, userId, null));
-	}
-
-	void addAllVorgangStatusLinks(ModelBuilder<Root> modelBuilder) {
-		addVorgangStatusLinks(modelBuilder, VORGAENGE_ALL_REL_TEMPLATE);
-	}
-
-	void addVorgangStatusLinks(ModelBuilder<Root> modelBuilder, String linkRelTemplate) {
-		statusList.forEach(status -> modelBuilder.addLink(buildGetAllVorgaengeByStatus(status, linkRelTemplate)));
-	}
-
-	Link buildGetAllVorgaengeByStatus(VorgangStatus status, String linkRelTemplate) {
-		var linkRel = formatLinkRelTemplate(linkRelTemplate, status);
-		return linkTo(methodOn(VorgangController.class).getAllByStatus(0, PAGE_SIZE, status)).withRel(linkRel);
-	}
-
-	List<Link> buildMyVorgaengeStatusLinks(@NonNull UserId userId) {
-		return buildVorgangStatusLinks(VORGAENGE_MY_REL_TEMPLATE, userId);
-	}
-
-	List<Link> buildUnassignedVorgaengeStatusLinks() {
-		return buildVorgangStatusLinks(VORGAENGE_UNASSIGNED_REL_TEMPLATE, UserId.empty());
-	}
-
-	List<Link> buildVorgangStatusLinks(String linkRelTemplate, UserId userId) {
-		return statusList.stream().map(status -> buildGetAllVorgaengeByAssignedToAndStatus(status, linkRelTemplate, userId)).toList();
-	}
-
-	Link buildGetAllVorgaengeByAssignedToAndStatus(VorgangStatus status, String linkRelTemplate, UserId userId) {
-		var linkRel = formatLinkRelTemplate(linkRelTemplate, status);
-		return linkTo(methodOn(VorgangController.class).getAllByAssignedToAndStatus(0, PAGE_SIZE, userId, status)).withRel(linkRel);
-	}
-
-	String formatLinkRelTemplate(String linkRelTempalte, VorgangStatus status) {
-		return String.format(linkRelTempalte, status.toString().toLowerCase());
-	}
-
-	Link buildGetAllByHasNextWiedervorlageFristLink() {
-		return linkTo(methodOn(VorgangController.class).getAllByHasNextWiedervorlageFrist(0, PAGE_SIZE,
-				VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS)).withRel(ALL_WIEDERVORLAGEN_REL);
-	}
-
-	Link buildGetAllByAssignedToAndHasNextWiedervorlageFristLink(@NonNull UserId userId, String linkRel) {
-		return linkTo(methodOn(VorgangController.class).getAllByAssignedToAndHasNextWiedervorlageFrist(0, PAGE_SIZE, userId,
-				VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS)).withRel(linkRel);
-	}
-
-	void addGetByUngeleseneNachrichtenLinks(ModelBuilder<Root> modelBuilder, Optional<UserId> userId) {
-		modelBuilder.addLink(buildGelAllByUngeleseneNachrichtenLink());
-		modelBuilder.addLink(buildGetAllByAssignedToAndUngeleseneNachrichten(UserId.empty(), UNASSIGNED_UNGELESENE_NACHRICHTEN_REL));
-		userId.map(id -> buildGetAllByAssignedToAndUngeleseneNachrichten(id, MY_UNGELESENE_NACHRICHTEN_REL)).ifPresent(modelBuilder::addLink);
-	}
-
-	Link buildGelAllByUngeleseneNachrichtenLink() {
-		return linkTo(methodOn(VorgangController.class)
-				.getAllByUngeleseneNachrichten(0, PAGE_SIZE, VorgangController.PARAM_NACHRICHTEN_UNGELESENE))
-				.withRel(ALL_UNGELESENE_NACHRICHTEN_REL);
-	}
-
-	Link buildGetAllByAssignedToAndUngeleseneNachrichten(@NonNull UserId userId, String linkRel) {
-		return linkTo(methodOn(VorgangController.class)
-				.getAllByAssignedToAndUngeleseneNachrichten(0, PAGE_SIZE, userId, VorgangController.PARAM_NACHRICHTEN_UNGELESENE))
-				.withRel(linkRel);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/SecurityConfiguration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/SecurityConfiguration.java
deleted file mode 100644
index 6b087870a02467be4075bd09bfcb38dae0689c3e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/SecurityConfiguration.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
-import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
-import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter.XFrameOptionsMode;
-
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenAuthenticationFilter;
-
-@Configuration
-@EnableWebSecurity
-@EnableMethodSecurity(securedEnabled = true)
-public class SecurityConfiguration {
-
-	@Autowired
-	private JwtAuthConverter jwtAuthConverter;
-
-	@Autowired
-	private SpringJwtProperties springJwtProperties;
-
-	@Bean
-	SecurityFilterChain securityFilterChain(HttpSecurity http, DownloadTokenAuthenticationFilter downloadTokenFilter) throws Exception {
-		http.csrf(csrf -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()));
-
-		http.sessionManagement(management -> management.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
-
-		http.authorizeHttpRequests(authorize -> authorize
-				.requestMatchers(HttpMethod.GET, "/api/environment").permitAll()
-				.requestMatchers(HttpMethod.GET, "/assets/**").permitAll()
-				.requestMatchers(HttpMethod.GET, "/vorgang/**").permitAll()
-				.requestMatchers(HttpMethod.GET, "/meine/**").permitAll()
-				.requestMatchers(HttpMethod.GET, "/alle/**").permitAll()
-				.requestMatchers(HttpMethod.GET, "/unassigned/**").permitAll()
-				.requestMatchers("/api").authenticated()
-				.requestMatchers("/api/**").authenticated()
-				.requestMatchers("/actuator").permitAll()
-				.requestMatchers("/actuator/**").permitAll()
-				.requestMatchers("/").permitAll()
-				.requestMatchers("/*").permitAll()
-				.anyRequest().denyAll());
-
-		http.oauth2ResourceServer(this::setOAuth2ResourceServer);
-		http.headers(headers -> headers.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN)));
-		http.addFilterBefore(downloadTokenFilter, UsernamePasswordAuthenticationFilter.class);
-
-		return http.build();
-	}
-
-	private void setOAuth2ResourceServer(OAuth2ResourceServerConfigurer<HttpSecurity> configurer) {
-		configurer.jwt().jwtAuthenticationConverter(jwtAuthConverter);
-		Optional.ofNullable(springJwtProperties.getJwkSetUri()).ifPresent(jwkSetUri -> configurer.jwt().jwkSetUri(jwkSetUri));
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/SpringJwtProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/SpringJwtProperties.java
deleted file mode 100644
index 7a6ce226cce37666ed2718761f76e24259bb475f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/SpringJwtProperties.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = SpringJwtProperties.PREFIX)
-public class SpringJwtProperties {
-
-	static final String PREFIX = "spring.security.oauth2.resourceserver.jwt";
-
-	/**
-	 * Jwt jwk set uri
-	 */
-	private String jwkSetUri = null;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/WebConfig.java b/alfa-service/src/main/java/de/ozgcloud/alfa/WebConfig.java
deleted file mode 100644
index 5fa7f8ea001aadaebe957770e4c35e11855509eb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/WebConfig.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.http.CacheControl;
-import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.resource.PathResourceResolver;
-
-import lombok.NoArgsConstructor;
-
-@Configuration
-public class WebConfig implements WebMvcConfigurer {
-
-	private static final String RESOURCE_LOCATION = "classpath:/META-INF/resources/";
-
-	@Autowired
-	private AsyncTaskExecutor threadPoolTaskExecutor;
-
-	@Override
-	public void addResourceHandlers(ResourceHandlerRegistry registry) {
-		registry.addResourceHandler("/*.js", "/*.css", "/*.ttf", "/*.woff", "/*.woff2", "/*.eot",
-				"/**/*.svg", "/*.svf", "/*.otf", "/*.ico", "/**/*.png")
-				.addResourceLocations(RESOURCE_LOCATION)
-				.setCacheControl(CacheControl.maxAge(30, TimeUnit.DAYS).cachePublic())
-				.resourceChain(true)
-				.addResolver(new PathResourceResolver());
-
-		registry.addResourceHandler("/**/*")
-				.addResourceLocations(RESOURCE_LOCATION)
-				.setCacheControl(CacheControl.noStore())
-				.setUseLastModified(false)
-				.resourceChain(true)
-				.addResolver(new OzgCloudPathResourceResolver());
-	}
-
-	@Override
-	public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
-		configurer.setTaskExecutor(threadPoolTaskExecutor);
-	}
-
-	@NoArgsConstructor
-	static class OzgCloudPathResourceResolver extends PathResourceResolver {
-
-		@Override
-		protected Resource getResource(String resourcePath, Resource location) throws IOException {
-			var requestedResource = location.createRelative(resourcePath);
-
-			if (requestedResource.exists() && requestedResource.isReadable()) {
-				return requestedResource;
-			}
-			return super.getResource("index.html", location);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenCommandBody.java
deleted file mode 100644
index a04bd1b384b9f49150f3aa4dd44df8eaa7b8dc68..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenCommandBody.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.aktenzeichen;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import de.ozgcloud.alfa.common.command.CommandBody;
-import jakarta.validation.constraints.Size;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Getter
-@Builder(toBuilder = true)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@ToString
-public class AktenzeichenCommandBody implements CommandBody {
-
-	@Size(max = 256, message = FIELD_MAX_SIZE)
-	String aktenzeichen;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessor.java
deleted file mode 100644
index aa7ce0231ef73c01e37dc2886be868cd38962b56..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.aktenzeichen;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.List;
-import java.util.function.Predicate;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-
-@Component
-public class AktenzeichenModelProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	static final LinkRelation REL_SET_AKTENZEICHEN = LinkRelation.of("set_aktenzeichen");
-
-	static final List<Vorgang.VorgangStatus> SET_AKTENZEICHEN_STATUSES = List.of(Vorgang.VorgangStatus.ANGENOMMEN, Vorgang.VorgangStatus.IN_BEARBEITUNG);
-
-	private static final Predicate<VorgangWithEingang> IS_SET_AKTENZEICHEN_ALLOWED = vorgang -> SET_AKTENZEICHEN_STATUSES.contains(vorgang.getStatus());
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-
-		if (vorgang == null) {
-			return model;
-		}
-
-		return ModelBuilder.fromModel(model)
-				.ifMatch(IS_SET_AKTENZEICHEN_ALLOWED)
-				.addLink(linkTo(methodOn(CommandController.CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
-						null)).withRel(REL_SET_AKTENZEICHEN))
-				.buildModel();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangController.java
deleted file mode 100644
index 1967cc22962e7b5756116eff85dd19dd93649229..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangController.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.attachment;
-
-import java.io.OutputStream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileModelAssembler;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileService;
-import de.ozgcloud.alfa.common.zipdownload.ZipDownloadService;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(AttachmentByVorgangController.PATH)
-@RequiredArgsConstructor
-public class AttachmentByVorgangController {
-	static final String PATH = "/api/vorgang/{vorgangId}/attachments"; // NOSONAR
-	static final String APPLICATION_ZIP_VALUE = "application/zip";
-
-	private final OzgFileService fileService;
-	private final ZipDownloadService zipDownloadService;
-	private final VorgangController vorgangController;
-	private final BinaryFileModelAssembler modelAssembler;
-
-	@GetMapping
-	public CollectionModel<EntityModel<OzgFile>> getAllByVorgang(@PathVariable String vorgangId) {
-		return modelAssembler.toCollectionModel(fileService.getAttachments(vorgangId));
-	}
-
-	@GetMapping(produces = APPLICATION_ZIP_VALUE)
-	public ResponseEntity<StreamingResponseBody> download(@PathVariable String vorgangId) {
-		return ResponseEntity.ok()
-				.header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s", buildZipName(vorgangId)))
-				.contentType(MediaType.valueOf(APPLICATION_ZIP_VALUE))
-				.body(out -> createZipFile(out, vorgangId));
-	}
-
-	String buildZipName(String vorgangId) {
-		return vorgangController.getVorgang(vorgangId).getNummer() + "_Anhaenge.zip";
-	}
-
-	void createZipFile(OutputStream out, String vorgangId) {
-		var ozgFiles = fileService.getAttachments(vorgangId);
-		zipDownloadService.write(ozgFiles.toList(), out);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentMapper.java
deleted file mode 100644
index 404591b8dac7704dda92ff6910db5d5ba06f2003..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/attachment/AttachmentMapper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.attachment;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-
-public class AttachmentMapper {
-
-	public static List<FileId> mapAttachments(Object attachments) {
-		if (Objects.isNull(attachments)) {
-			return Collections.emptyList();
-		}
-
-		if (attachments instanceof Collection<?> attachmentList) {
-			return attachmentList.stream().map(String::valueOf).map(FileId::from).toList();
-		}
-		return Collections.singletonList(FileId.from((String) attachments));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Bescheid.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Bescheid.java
deleted file mode 100644
index 715020a4ddd13ad8fd51cde090130912aabdd5b4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Bescheid.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import java.util.List;
-
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Builder(toBuilder = true)
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@ToString
-public class Bescheid implements CommandBody {
-
-	static final String ID_FIELD = "id";
-	static final String VERSION_FIELD = "version";
-	static final String VORGANG_ID_FIELD = "vorgangId";
-	static final String BESCHIEDEN_AM_FIELD = "beschiedenAm";
-	static final String BEWILLIGT_FIELD = "bewilligt";
-	static final String BESCHEID_DOCUMENT_FIELD = "bescheidDocument";
-	static final String ATTACHMENTS_FIELD = "attachments";
-	static final String NACHRICHT_TEXT_FIELD = "nachrichtText";
-	static final String NARCHRICHT_SUBJECT_FIELD = "nachrichtSubject";
-	static final String SEND_BY_FIELD = "sendBy";
-	static final String STATUS_FIELD = "status";
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private long version;
-	@JsonIgnore
-	private String vorgangId;
-
-	@NotNull(message = ValidationMessageCodes.FIELD_DATE_FORMAT_INVALID)
-	private String beschiedenAm;
-	private Boolean bewilligt;
-
-	@LinkedResource(controllerClass = DocumentController.class)
-	private String bescheidDocument;
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	private List<FileId> attachments;
-	@NotEmpty(message = FIELD_IS_EMPTY, groups = BescheidNachrichtValidation.class)
-	private String nachrichtText;
-	@NotEmpty(message = FIELD_IS_EMPTY, groups = BescheidNachrichtValidation.class)
-	private String nachrichtSubject;
-	private SendBy sendBy;
-	private BescheidStatus status;
-
-	private SentInfo sentInfo;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparator.java
deleted file mode 100644
index ed0f37621b133eccbcadc4b790dfce942ab6f7c7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Comparator;
-
-import org.springframework.stereotype.Component;
-
-@Component
-class BescheidByBeschiedenAmComparator implements Comparator<Bescheid> {
-
-	private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-	@Override
-	public int compare(Bescheid bescheid1, Bescheid bescheid2) {
-		var statusCompareResult = compareByStatus(bescheid1, bescheid2);
-		if (statusCompareResult != 0) {
-			return statusCompareResult;
-		}
-
-		var dateCompareResult = compareByBeschiedenAm(bescheid1, bescheid2);
-		if (dateCompareResult != 0) {
-			return dateCompareResult;
-		}
-
-		return compareBySentAt(bescheid1, bescheid2);
-	}
-
-	int compareByStatus(Bescheid bescheid1, Bescheid bescheid2) {
-		if (BescheidStatus.DRAFT == bescheid1.getStatus()) {
-			return 1;
-		}
-		if (BescheidStatus.DRAFT == bescheid2.getStatus()) {
-			return -1;
-		}
-		return 0;
-	}
-
-	int compareByBeschiedenAm(Bescheid bescheid1, Bescheid bescheid2) {
-		var date1 = LocalDate.parse(bescheid1.getBeschiedenAm(), dateTimeFormatter);
-		var date2 = LocalDate.parse(bescheid2.getBeschiedenAm(), dateTimeFormatter);
-
-		return date1.compareTo(date2);
-	}
-
-	int compareBySentAt(Bescheid bescheid1, Bescheid bescheid2) {
-		return bescheid1.getSentInfo().getSentAt()
-				.compareTo(bescheid2.getSentInfo().getSentAt());
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidCommandController.java
deleted file mode 100644
index e617e270095035db40fe1e026366edafdf1f64db..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidCommandController.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(BescheidCommandController.PATH)
-@RequiredArgsConstructor
-class BescheidCommandController {
-
-	static final String PATH = "/api/vorgangs/{vorgangId}/bescheids/{bescheidId}/{bescheidVersion}/commands"; // NOSONAR
-
-	private final BescheidService bescheidService;
-	private final CommandService commandService;
-	private final BescheidSendenCommandValidator bescheidSendenCommandValidator;
-
-	@PostMapping
-	public ResponseEntity<EntityModel<Command>> createCommand(@PathVariable String vorgangId, @PathVariable String bescheidId,
-			@PathVariable long bescheidVersion, @RequestBody CreateCommand command) {
-		command = command.toBuilder().vorgangId(vorgangId).relationId(bescheidId).build();
-
-		validate(vorgangId, command);
-
-		var created = commandService.createCommand(command, bescheidVersion);
-		return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
-	}
-
-	void validate(String vorgangId, CreateCommand command) {
-		var bescheid = bescheidService.getBescheidDraft(vorgangId)
-				.orElseThrow(() -> new TechnicalException("BescheidDraft not found"));
-		bescheidSendenCommandValidator.validate(command.toBuilder().body(bescheid).build());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidController.java
deleted file mode 100644
index b1a5f192ba800117d29f3c76047b127e499915d0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidController.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(BescheidController.PATH)
-@RequiredArgsConstructor
-public class BescheidController {
-
-	static final String PATH = "/api/bescheids"; // NOSONAR
-
-	private final BescheidModelAssembler assembler;
-	private final BescheidService bescheidService;
-	private final BinaryFileController binaryFileController;
-
-	@GetMapping
-	public ResponseEntity<EntityModel<Bescheid>> getDraft(@RequestParam String vorgangId) {
-		return ResponseEntity.of(bescheidService.getBescheidDraft(vorgangId).map(assembler::toModel));
-	}
-
-	// TODO Sobald Grpc Schnittstelle zum Laden eines einzelnen Bescheids existiert,
-	// den Endpoint auf bescheidId beschraenken und ueber den Service ->
-	// den Bescheid laden
-	@GetMapping("/{bescheidId}/attachments")
-	public CollectionModel<EntityModel<OzgFile>> getAttachments(@PathVariable String bescheidId, @RequestParam String vorgangId) {
-		var bescheid = getBescheid(bescheidId, vorgangId);
-		return binaryFileController.getFiles(bescheid.getAttachments());
-	}
-
-	Bescheid getBescheid(String bescheidId, String vorgangId) {
-		var bescheid = bescheidService.findByVorgangId(vorgangId)
-				.filter(oneBescheid -> StringUtils.equals(oneBescheid.getId(), bescheidId))
-				.findFirst();
-		return bescheid.orElseThrow(() -> new TechnicalException(String.format("No Bescheid exists for id %s.", bescheidId)));
-	}
-	//
-
-	@RestController
-	@RequestMapping(BescheidByVorgangController.BESCHEID_BY_VORGANG_PATH)
-	@RequiredArgsConstructor
-	public static class BescheidByVorgangController {
-
-		static final String BESCHEID_BY_VORGANG_PATH = "/api/vorgangs"; // NOSONAR
-
-		private final BescheidService service;
-		private final BescheidModelAssembler modelAssembler;
-
-		@GetMapping("/{vorgangId}/bescheids")
-		public CollectionModel<EntityModel<Bescheid>> getAll(@PathVariable String vorgangId) {
-			var bescheids = service.findByVorgangIdSorted(vorgangId);
-			return modelAssembler.toCollectionModel(bescheids.toList());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidDocumentFromFileBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidDocumentFromFileBody.java
deleted file mode 100644
index 840abcfe7ed5625bbc6ac7bbd681cf02e68fc793..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidDocumentFromFileBody.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.Getter;
-
-@Getter
-public class BescheidDocumentFromFileBody implements CommandBody {
-
-	@LinkedResource(controllerClass = DocumentController.class)
-	private String documentFile;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessor.java
deleted file mode 100644
index 06f71be59ea10d9874401bf59c538229ca3d18f7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessor.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.historie.HistorieProcessor;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Component
-class BescheidHistorieProcessor implements HistorieProcessor {
-
-	static final String BESCHEID_ITEM_NAME = "Bescheid";
-
-	private final VorgangAttachedItemService vorgangAttachedItemService;
-
-	private static final Predicate<Command> IS_NOT_CREATE_BESCHEID_COMMAND = Predicate
-			.not(command -> command.getCommandOrder() == CommandOrder.CREATE_BESCHEID);
-	private static final Predicate<Command> IS_NOT_DELETE_BESCHEID_COMMAND = Predicate
-			.not(command -> command.getCommandOrder() == CommandOrder.DELETE_BESCHEID);
-	private static final Predicate<Command> IS_UPDATE_BESCHEID_COMMAND = command -> command.getCommandOrder() == CommandOrder.UPDATE_BESCHEID;
-
-	private static final Predicate<Command> IS_BESCHEID_ATTACHED_ITEM = command -> BESCHEID_ITEM_NAME
-			.equals(MapUtils.getString(command.getBody(), VorgangAttachedItem.FIELD_ITEM_NAME, StringUtils.EMPTY));
-	private static final Predicate<Command> IS_NOT_CREATE_ATTACHED_ITEM = Predicate
-			.not(command -> command.getCommandOrder() == CommandOrder.CREATE_ATTACHED_ITEM
-					&& IS_BESCHEID_ATTACHED_ITEM.test(command));
-	private static final Predicate<Command> IS_NOT_UPDATE_ATTACHED_ITEM = Predicate
-			.not(command -> command.getCommandOrder() == CommandOrder.UPDATE_ATTACHED_ITEM
-					&& IS_BESCHEID_ATTACHED_ITEM.test(command));
-	private static final Predicate<Command> IS_NOT_PATCH_ATTACHED_ITEM = Predicate
-			.not(command -> command.getCommandOrder() == CommandOrder.PATCH_ATTACHED_ITEM
-					&& IS_BESCHEID_ATTACHED_ITEM.test(command));
-
-	@Override
-	public List<Command> process(List<Command> commands) {
-		var relevantCommands = filterByOrder(commands);
-		return filterBescheidRelatedCommands(relevantCommands);
-	}
-
-	List<Command> filterByOrder(List<Command> commands) {
-		return commands.stream()
-				.filter(IS_NOT_CREATE_BESCHEID_COMMAND)
-				.filter(IS_NOT_DELETE_BESCHEID_COMMAND)
-				.filter(IS_NOT_CREATE_ATTACHED_ITEM)
-				.filter(IS_NOT_UPDATE_ATTACHED_ITEM)
-				.filter(IS_NOT_PATCH_ATTACHED_ITEM)
-				.toList();
-	}
-
-	List<Command> filterBescheidRelatedCommands(List<Command> commands) {
-		var excludeCommandIds = getExcludedBescheidRelatedCommandIds(commands);
-		return commands.stream().filter(command -> !excludeCommandIds.contains(command.getId())).toList();
-	}
-
-	List<String> getExcludedBescheidRelatedCommandIds(List<Command> commands) {
-		var sendBescheidCommands = commands.stream().filter(this::isSendBescheidCommand).toList();
-		var sendBescheidCommandsRelationIds = sendBescheidCommands.stream().map(Command::getRelationId).toList();
-		var orphanedUpdateBescheidCommands = commands.stream().filter(IS_UPDATE_BESCHEID_COMMAND)
-				.filter(command -> !sendBescheidCommandsRelationIds.contains(command.getRelationId())).map(Command::getId);
-		return Stream.concat(sendBescheidCommands.stream()
-				.map(sendBescheidCommand -> getCommandIdsToFilter(sendBescheidCommand, commands))
-				.flatMap(List::stream), orphanedUpdateBescheidCommands).toList();
-
-	}
-
-	private boolean isSendBescheidCommand(Command command) {
-		return command.getCommandOrder() == CommandOrder.SEND_BESCHEID;
-	}
-
-	List<String> getCommandIdsToFilter(Command sendBescheidCommand, List<Command> commands) {
-		var relatedUpdateBescheidCommands = getRelatedUpdateBescheidCommands(sendBescheidCommand, commands);
-		if (isManualSent(getVorgangAttachedItem(sendBescheidCommand.getRelationId()).getItem())) {
-			return Stream.concat(Stream.of(sendBescheidCommand.getId()), filterLatestByCreatedAt(relatedUpdateBescheidCommands)).toList();
-		} else {
-			return filterLatestByCreatedAt(relatedUpdateBescheidCommands).toList();
-		}
-	}
-
-	List<Command> getRelatedUpdateBescheidCommands(Command command, List<Command> commands) {
-		return commands.stream()
-				.filter(filteredCommand -> StringUtils.equals(filteredCommand.getRelationId(), command.getRelationId()))
-				.filter(IS_UPDATE_BESCHEID_COMMAND)
-				.toList();
-	}
-
-	VorgangAttachedItem getVorgangAttachedItem(String id) {
-		return vorgangAttachedItemService.getById(id);
-	}
-
-	boolean isManualSent(Map<String, ?> bescheid) {
-		return getSendBy(bescheid) == SendBy.MANUAL;
-	}
-
-	private SendBy getSendBy(Map<String, ?> bescheid) {
-		return SendBy.valueOf(MapUtils.getString(bescheid, Bescheid.SEND_BY_FIELD));
-	}
-
-	Stream<String> filterLatestByCreatedAt(List<Command> relatedUpdateBescheidCommands) {
-		return relatedUpdateBescheidCommands.stream()
-				.sorted(Comparator.comparing(Command::getCreatedAt, Comparator.naturalOrder()).reversed())
-				.skip(1)
-				.map(Command::getId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidMapper.java
deleted file mode 100644
index a28cc6972ff033c9c265e041c716b01ed300f28d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidMapper.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.List;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-
-import com.google.protobuf.ProtocolStringList;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.bescheid.GrpcSentInfo;
-
-@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = { FileIdMapper.class,
-		UserIdMapper.class })
-interface BescheidMapper {
-
-	@Mapping(target = "attachments", source = "grpcBescheid.attachmentsList")
-	Bescheid fromGrpc(GrpcBescheid grpcBescheid, String vorgangId);
-
-	List<FileId> fromProtocolStringList(ProtocolStringList value);
-
-	SentInfo fromGrpcSentInfo(GrpcSentInfo grpcSentInfo);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java
deleted file mode 100644
index f320773cd9955240468b3273446d15b44f1e502b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidModelAssembler.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static java.util.Optional.*;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.Eingang;
-import de.ozgcloud.alfa.vorgang.EingangHeader;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHead;
-import de.ozgcloud.alfa.vorgang.VorgangProperties;
-import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-public class BescheidModelAssembler implements RepresentationModelAssembler<Bescheid, EntityModel<Bescheid>> {
-
-	static final String REL_DELETE = "delete";
-	static final String REL_UPLOAD_BESCHEID_FILE = "uploadBescheidFile";
-	static final String REL_UPLOAD_ATTACHMENT = "uploadAttachment";
-	static final String REL_ATTACHMENTS = "attachments";
-	static final String REL_UPDATE = "update";
-	static final String REL_CREATE_DOCUMENT = "createDocument";
-	static final String REL_CREATE_DOCUMENT_FROM_FILE = "createDocumentFromFile";
-	static final String REL_BESCHEID_DOCUMENT = "bescheidDocument";
-	static final String REL_BESCHEIDEN_UND_SENDEN = "bescheidenUndSenden";
-	static final String REL_BESCHEIDEN = "bescheiden";
-
-	private static final Predicate<Bescheid> HAS_ATTACHMENTS = bescheid -> CollectionUtils.isNotEmpty(bescheid.getAttachments());
-
-	private final VorgangController vorgangController;
-	private final PostfachMailController postfachMailController;
-
-	private final BescheidService bescheidService;
-	private final VorgangProperties vorgangProperties;
-
-	@Override
-	public EntityModel<Bescheid> toModel(Bescheid bescheid) {
-		var selfLink = linkTo(methodOn(BescheidController.class).getDraft(bescheid.getVorgangId()));
-		var deleteLink = linkTo(
-				methodOn(CommandByRelationController.class).createCommand(bescheid.getVorgangId(), bescheid.getId(), bescheid.getVersion(), null));
-		var uploadBescheidFileLink = linkTo(methodOn(BinaryFileController.class).uploadFile(bescheid.getVorgangId(), "bescheidFile", null));
-		var uploadAttachmentLink = linkTo(methodOn(BinaryFileController.class).uploadFile(bescheid.getVorgangId(), "bescheidAttachment", null));
-		var attachmentsLink = linkTo(methodOn(BescheidController.class).getAttachments(bescheid.getId(), bescheid.getVorgangId()));
-		var createCommandLink = buildCreateCommandLink(bescheid);
-		var vorgangWithEingang = vorgangController.getVorgang(bescheid.getVorgangId());
-		var bescheidenUndSendenLink = linkTo(
-				methodOn(BescheidCommandController.class).createCommand(vorgangWithEingang.getId(), bescheid.getId(), bescheid.getVersion(),
-						null));
-
-		return ModelBuilder.fromEntity(bescheid)
-				.addLink(selfLink.withSelfRel())
-				.addLink(deleteLink.withRel(REL_DELETE))
-				.addLink(selfLink.withSelfRel())
-				.addLink(uploadBescheidFileLink.withRel(REL_UPLOAD_BESCHEID_FILE))
-				.addLink(uploadAttachmentLink.withRel(REL_UPLOAD_ATTACHMENT))
-				.ifMatch(HAS_ATTACHMENTS)
-				.addLink(attachmentsLink.withRel(REL_ATTACHMENTS))
-				.addLink(createCommandLink.withRel(REL_UPDATE))
-				.ifMatch(() -> canCreateBescheidDocumentAutomatically(vorgangWithEingang))
-				.addLink(createCommandLink.withRel(REL_CREATE_DOCUMENT))
-				.addLink(createCommandLink.withRel(REL_CREATE_DOCUMENT_FROM_FILE))
-				.ifMatch(() -> canSendMessageToAntragsteller(vorgangWithEingang))
-				.addLink(bescheidenUndSendenLink.withRel(REL_BESCHEIDEN_UND_SENDEN))
-				.addLink(createCommandLink.withRel(REL_BESCHEIDEN))
-				.buildModel();
-	}
-
-	@Override
-	public CollectionModel<EntityModel<Bescheid>> toCollectionModel(Iterable<? extends Bescheid> entities) {
-		return RepresentationModelAssembler.super.toCollectionModel(entities)
-				.add(linkTo(BescheidByVorgangController.class).withSelfRel());
-	}
-
-	private WebMvcLinkBuilder buildCreateCommandLink(Bescheid bescheid) {
-		return linkTo(methodOn(CommandController.CommandByRelationController.class).createCommand(bescheid.getVorgangId(), bescheid.getId(),
-				bescheid.getVersion(), null));
-	}
-
-	boolean canCreateBescheidDocumentAutomatically(VorgangWithEingang vorgang) {
-		return bescheidService.canCreateBescheidDocumentAutomatically() && hasVorgangCreateBescheidDocumentEnabled(vorgang);
-	}
-
-	boolean hasVorgangCreateBescheidDocumentEnabled(VorgangWithEingang vorgang) {
-		return ofNullable(vorgang.getEingang())
-				.map(Eingang::getHeader)
-				.map(this::isCreateBescheidDocumentEnabled)
-				.orElse(false);
-	}
-
-	private boolean isCreateBescheidDocumentEnabled(EingangHeader eingangHeader) {
-		return vorgangProperties.getBescheid().stream().anyMatch(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop));
-	}
-
-	private boolean isFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, VorgangProperty property) {
-		return property.getFormId().equals(eingangHeader.getFormId()) && property.getFormEngineName().equals(eingangHeader.getFormEngineName());
-	}
-
-	private boolean canSendMessageToAntragsteller(VorgangWithEingang vorgangWithEingang) {
-		return postfachMailController.isPostfachConfigured() && hasServiceKonto(vorgangWithEingang);
-	}
-
-	private boolean hasServiceKonto(VorgangWithEingang vorgang) {
-		return Optional.ofNullable(vorgang.getHeader()).map(VorgangHead::getServiceKonto).isPresent();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidNachrichtValidation.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidNachrichtValidation.java
deleted file mode 100644
index 3f6f24c705e8af75d979ead08cec82ac964447a9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidNachrichtValidation.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-interface BescheidNachrichtValidation {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java
deleted file mode 100644
index f3c5443186be698d154bb7ed2f1097a2153b308a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidRemoteService.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub;
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest;
-import de.ozgcloud.bescheid.GrpcGetAllBescheidRequest;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class BescheidRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private BescheidServiceBlockingStub bescheidServiceStub;
-	@Autowired
-	private BescheidMapper bescheidMapper;
-
-	public Optional<Bescheid> getBescheidDraft(String vorgangId) {
-		var request = buildGetBescheidDraftRequest(vorgangId);
-		var response = bescheidServiceStub.getBescheidDraft(request);
-		return getBescheidFromResponse(response).map(bescheid -> bescheidMapper.fromGrpc(bescheid, vorgangId));
-	}
-
-	GrpcGetBescheidDraftRequest buildGetBescheidDraftRequest(String vorgangId) {
-		return GrpcGetBescheidDraftRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.build();
-	}
-
-	Optional<GrpcBescheid> getBescheidFromResponse(GrpcGetBescheidDraftResponse response) {
-		return response.hasBescheid() ? Optional.of(response.getBescheid()) : Optional.empty();
-	}
-
-	public Stream<Bescheid> findByVorgangId(String vorgangId) {
-		var request = buildGetAllBescheidRequest(vorgangId);
-
-		var response = bescheidServiceStub.getAll(request);
-
-		return response.getBescheidList().stream().map(grpcBescheid -> bescheidMapper.fromGrpc(grpcBescheid, vorgangId));
-	}
-
-	GrpcGetAllBescheidRequest buildGetAllBescheidRequest(String vorgangId) {
-		return GrpcGetAllBescheidRequest.newBuilder().setVorgangId(vorgangId).build();
-	}
-
-	// TODO Logik in den Service verschieben
-	public boolean canCreateBescheidDocument() {
-		var response = bescheidServiceStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build());
-		return response.hasFeatures() && response.getFeatures().getCanCreateBescheidDocument();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandValidator.java
deleted file mode 100644
index 93ce35fcea2eec38bf031f209e38a5172f8fa3ce..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandValidator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import jakarta.validation.Valid;
-
-import org.springframework.stereotype.Component;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.common.command.CreateCommand;
-
-@Validated(BescheidNachrichtValidation.class)
-@Component
-class BescheidSendenCommandValidator {
-
-	public void validate(@Valid CreateCommand command) {
-		// noop
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidService.java
deleted file mode 100644
index d08895f986fe673b8de45be743078b4b4b99e19d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidService.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-public class BescheidService {
-
-	private final BescheidRemoteService remoteService;
-	private final BescheidByBeschiedenAmComparator comparator;
-
-	public Optional<Bescheid> getBescheidDraft(String vorgangId) {
-		return remoteService.getBescheidDraft(vorgangId);
-	}
-
-	public Stream<Bescheid> findByVorgangId(String vorgangId) {
-		return remoteService.findByVorgangId(vorgangId);
-	}
-
-	public Stream<Bescheid> findByVorgangIdSorted(String vorgangId) {
-		return sortBescheids(remoteService.findByVorgangId(vorgangId));
-	}
-
-	Stream<Bescheid> sortBescheids(Stream<Bescheid> bescheids) {
-		return bescheids.sorted(comparator.reversed());
-	}
-
-	public boolean canCreateBescheidDocumentAutomatically() {
-		return remoteService.canCreateBescheidDocument();
-	}
-
-	public boolean existsBescheid(String vorgangId) {
-		var bescheide = remoteService.findByVorgangId(vorgangId).toList();
-
-		return CollectionUtils.isNotEmpty(bescheide);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidStatus.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidStatus.java
deleted file mode 100644
index 8babe9f0ec7e880a44145fc4a0c8e289b866bfea..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidStatus.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-enum BescheidStatus {
-	DRAFT, SENT
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
deleted file mode 100644
index d9cab224faea3d45e4bf2d63a2e25a6dc33853af..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-import java.util.function.BooleanSupplier;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	static final LinkRelation REL_DRAFT = LinkRelation.of("bescheidDraft");
-	static final LinkRelation REL_CREATE_DRAFT = LinkRelation.of("createBescheidDraft");
-	static final LinkRelation REL_BESCHEIDE = LinkRelation.of("bescheide");
-
-	private final BescheidService bescheidService;
-	private final CurrentUserService currentUserService;
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-		if (Objects.isNull(vorgang) || currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
-			return model;
-		}
-		return ModelBuilder.fromModel(model)
-				.ifMatch(isRetrievingDraftAllowed(vorgang))
-				.addLink(getDraftLink(vorgang.getId()).withRel(REL_DRAFT))
-				.ifMatch(isCreatingDraftAllowed(vorgang))
-				.addLink(getCreateBescheidDraftLink(vorgang.getId(), vorgang.getVersion()).withRel(REL_CREATE_DRAFT))
-				.ifMatch(() -> existsBescheid(vorgang.getId()))
-				.addLink(getBescheideLink(vorgang.getId()).withRel(REL_BESCHEIDE))
-				.buildModel();
-	}
-
-	private WebMvcLinkBuilder getDraftLink(String vorgangId) {
-		return linkTo(methodOn(BescheidController.class).getDraft(vorgangId));
-	}
-
-	private WebMvcLinkBuilder getCreateBescheidDraftLink(String vorgangId, long vorgangVersion) {
-		return linkTo(methodOn(CommandByRelationController.class).createCommand(vorgangId, vorgangId, vorgangVersion, null));
-	}
-
-	boolean existsBescheid(String vorgangId) {
-		return bescheidService.existsBescheid(vorgangId);
-	}
-
-	private WebMvcLinkBuilder getBescheideLink(String vorgangId) {
-		return linkTo(methodOn(BescheidByVorgangController.class).getAll(vorgangId));
-	}
-
-	BooleanSupplier isRetrievingDraftAllowed(Vorgang vorgang) {
-		return () -> isVorgangInBearbeitung(vorgang) && draftExists(vorgang);
-	}
-
-	BooleanSupplier isCreatingDraftAllowed(Vorgang vorgang) {
-		return () -> isVorgangInBearbeitung(vorgang) && !draftExists(vorgang);
-	}
-
-	boolean isVorgangInBearbeitung(Vorgang vorgang) {
-		return Vorgang.VorgangStatus.IN_BEARBEITUNG.equals(vorgang.getStatus());
-	}
-
-	boolean draftExists(Vorgang vorgang) {
-		return bescheidService.getBescheidDraft(vorgang.getId()).isPresent();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Document.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Document.java
deleted file mode 100644
index c1154a21cfdeb2b583125a7c21a870972f0ef972..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/Document.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Builder(toBuilder = true)
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@ToString
-class Document {
-
-	@JsonIgnore
-	private String id;
-
-	private String type;
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	private FileId fileId;
-
-	private String nachrichtSubject;
-	private String nachrichtText;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentController.java
deleted file mode 100644
index fbe8ca3b8d1fef1622177cd84fc9c709d8686c95..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentController.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(DocumentController.PATH)
-@RequiredArgsConstructor
-public class DocumentController {
-
-	static final String PATH = BescheidController.PATH + "/documents";
-
-	private final DocumentService documentService;
-	private final DocumentModelAssembler assembler;
-
-	@GetMapping("/{documentId}")
-	public EntityModel<Document> getDocument(@PathVariable String documentId) {
-		return assembler.toModel(documentService.getDocument(documentId));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessor.java
deleted file mode 100644
index 028aa66f2141bf2084692ef4ca20904a5edc709d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessor.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.List;
-import java.util.function.Predicate;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.historie.HistorieProcessor;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Component
-class DocumentHistorieProcessor implements HistorieProcessor {
-
-	static final String DOCUMENT_ITEM_NAME = "Document";
-
-	private static final Predicate<Command> IS_NOT_DOCUMENT_COMMAND = command -> command.getCommandOrder() != CommandOrder.CREATE_BESCHEID_DOCUMENT
-			&& command.getCommandOrder() != CommandOrder.CREATE_BESCHEID_DOCUMENT_FROM_FILE;
-
-	private static final Predicate<Command> IS_DOCUMENT_ATTACHED_ITEM = command -> DOCUMENT_ITEM_NAME
-			.equals(MapUtils.getString(command.getBody(), VorgangAttachedItem.FIELD_ITEM_NAME, StringUtils.EMPTY));
-	private static final Predicate<Command> IS_NOT_CREATE_ATTACHED_ITEM = command -> !(command.getCommandOrder() == CommandOrder.CREATE_ATTACHED_ITEM
-			&& IS_DOCUMENT_ATTACHED_ITEM.test(command));
-
-	@Override
-	public List<Command> process(List<Command> commands) {
-		return filterIrrelevantCommands(commands);
-	}
-
-	List<Command> filterIrrelevantCommands(List<Command> commands) {
-		return commands.stream().filter(IS_NOT_DOCUMENT_COMMAND).filter(IS_NOT_CREATE_ATTACHED_ITEM).toList();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentMapper.java
deleted file mode 100644
index 98ab92b44bb87300a2752377b9c0550dd9d25ad2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentMapper.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-import de.ozgcloud.document.GrpcDocument;
-
-@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, uses = FileIdMapper.class)
-interface DocumentMapper {
-
-	Document fromGrpc(GrpcDocument grpcDocument);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentModelAssembler.java
deleted file mode 100644
index cef3f165bce2d94123fdaef19b81ae670e38f30e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentModelAssembler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class DocumentModelAssembler implements RepresentationModelAssembler<Document, EntityModel<Document>> {
-
-	static final String REL_FILE = "file";
-
-	@Override
-	public EntityModel<Document> toModel(Document document) {
-		var selfLink = linkTo(methodOn(DocumentController.class).getDocument(document.getId()));
-
-		return ModelBuilder.fromEntity(document)
-				.addLink(selfLink.withSelfRel())
-				.buildModel();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java
deleted file mode 100644
index d75cfeec49121c6e4f4031d2c224af19aab522be..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentRemoteService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.document.DocumentServiceGrpc.DocumentServiceBlockingStub;
-import de.ozgcloud.document.GrpcGetDocumentRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class DocumentRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private DocumentServiceBlockingStub documentServiceStub;
-	@Autowired
-	private DocumentMapper documentMapper;
-
-	public Document getDocument(String documentId) {
-		var response = documentServiceStub.getDocument(GrpcGetDocumentRequest.newBuilder().setId(documentId).build());
-		return documentMapper.fromGrpc(response.getDocument());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentService.java
deleted file mode 100644
index f08eb10b05cd0f8e1cecfb6b54cca3b074b1908d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/DocumentService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-class DocumentService {
-
-	private final DocumentRemoteService remoteService;
-
-	public Document getDocument(String documentId) {
-		return remoteService.getDocument(documentId);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SendBy.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SendBy.java
deleted file mode 100644
index 85ebab23e324409b33f8ade602ead3c3f79dad56..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SendBy.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-enum SendBy {
-	MANUAL,
-	NACHRICHT
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SentInfo.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SentInfo.java
deleted file mode 100644
index 3de7762a30f13f955d8751e65c3bd6277607222b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/SentInfo.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.time.ZonedDateTime;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-public class SentInfo {
-
-	private ZonedDateTime sentAt;
-	private UserId sentBy;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Anschrift.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Anschrift.java
deleted file mode 100644
index 231090b96c06be539ba68fe68213163869d49202..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Anschrift.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-class Anschrift {
-
-	private String strasse;
-	private String hausnummer;
-	private String plz;
-	private String ort;
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Collaboration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Collaboration.java
deleted file mode 100644
index 417cff2b24573f78c9904739b4f9c8d1fe0a9049..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Collaboration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-public interface Collaboration {
-
-	String getId();
-
-	String getVorgangId();
-
-	String getCollaborationVorgangId();
-
-	String getTitel();
-
-	String getBeschreibung();
-
-	long getCollaborationLevel();
-
-	String getZustaendigeStelle();
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationCommandBody.java
deleted file mode 100644
index 9f6eefeda3a136662c1d70ea65a37e91324b9732..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationCommandBody.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-
-import de.ozgcloud.alfa.common.LinkedResourceDeserializer;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class CollaborationCommandBody implements CommandBody {
-
-	private String titel;
-	private String beschreibung;
-	private long collaborationLevel;
-
-	@JsonDeserialize(using = LinkedResourceDeserializer.class)
-	private String zustaendigeStelle;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationController.java
deleted file mode 100644
index b4150cb36a6b7bbbe3432d7c0e168823c75f5cfa..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationController.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.Optional;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(CollaborationController.PATH)
-@RequiredArgsConstructor
-public class CollaborationController {
-
-	private final CollaborationModelAssembler assembler;
-	private final CollaborationService service;
-
-	static final String PATH = "/api/collaborations"; // NOSONAR
-
-	@GetMapping("/{collaborationId}")
-	public ResponseEntity<EntityModel<Collaboration>> getById(@PathVariable String collaborationId) {
-		return ResponseEntity.of(Optional.of(service.getById(collaborationId)).map(assembler::toModel));
-	}
-
-	@RestController
-	@RequestMapping(CollaborationByVorgangController.PATH)
-	@RequiredArgsConstructor
-	public static class CollaborationByVorgangController {
-
-		static final String PATH = "/api/vorgangs";
-
-		private final CollaborationModelAssembler assembler;
-		private final CollaborationService service;
-
-		@GetMapping("/{vorgangId}/collaborations")
-		public CollectionModel<EntityModel<Collaboration>> getAllByVorgangId(@PathVariable String vorgangId) {
-			return assembler.toCollectionModel(service.getCollaborations(vorgangId), vorgangId);
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationMapper.java
deleted file mode 100644
index 655d81551119e0b61f947001bf1e5593e7d6e4de..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationMapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-
-@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
-interface CollaborationMapper {
-
-	default Collaboration fromCollaborationRequest(GrpcCollaborationRequest request) {
-		return isFachstelle(request) ? fromFachstelleRequest(request) : fromOrganisationsEinheitRequest(request);
-	}
-
-	default boolean isFachstelle(GrpcCollaborationRequest request) {
-		return Long.valueOf(4).equals(request.getCollaborationLevel());
-	}
-
-	@Mapping(target = "vorgangId", ignore = true)
-	OrganisationsEinheitCollaboration fromOrganisationsEinheitRequest(GrpcCollaborationRequest request);
-
-	@Mapping(target = "vorgangId", ignore = true)
-	FachstelleCollaboration fromFachstelleRequest(GrpcCollaborationRequest request);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssembler.java
deleted file mode 100644
index cdcc60be022212764463013dd956efa906508806..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssembler.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.common.CollectionModelBuilder;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class CollaborationModelAssembler implements RepresentationModelAssembler<Collaboration, EntityModel<Collaboration>> {
-
-	static final LinkRelation REL_CREATE_COLLABORATION_REQUEST = LinkRelation.of("createCollaborationRequest");
-
-	private final VorgangController vorgangController;
-
-	@Override
-	public EntityModel<Collaboration> toModel(Collaboration collaboration) {
-		var selfLink = linkTo(methodOn(CollaborationController.class).getById(collaboration.getId())).withSelfRel();
-
-		return ModelBuilder.fromEntity(collaboration)
-				.addLink(selfLink)
-				.buildModel();
-	}
-
-	public CollectionModel<EntityModel<Collaboration>> toCollectionModel(Stream<? extends Collaboration> entities, String vorgangId) {
-		var vorgang = vorgangController.getVorgang(vorgangId);
-		var entityModels = entities.map(this::toModel).toList();
-
-		var selfLink = linkTo(methodOn(CollaborationByVorgangController.class).getAllByVorgangId(vorgangId)).withSelfRel();
-
-		return CollectionModelBuilder.fromEntities(entityModels)
-				.addLink(selfLink)
-				.ifMatch(() -> entityModels.isEmpty() && vorgangController.isEditable(vorgang))
-				.addLink(() -> buildCreateCollaborationRequestLink(vorgang))
-				.buildModel();
-	}
-
-	Link buildCreateCollaborationRequestLink(VorgangWithEingang vorgang) {
-		return linkTo(methodOn(CommandController.CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(),
-				vorgang.getVersion(), null)).withRel(REL_CREATE_COLLABORATION_REQUEST);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteService.java
deleted file mode 100644
index df0b35e64199dd6105e76b919668deaeeff9f8e4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteService.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.collaboration.request.CollaborationRequestServiceGrpc.CollaborationRequestServiceBlockingStub;
-import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
-import de.ozgcloud.collaboration.request.GrpcGetRequestRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-public class CollaborationRemoteService {
-
-	@GrpcClient(GrpcUtil.COLLABORATION_MANAGER_GRPC_CLIENT)
-	private CollaborationRequestServiceBlockingStub serviceStub;
-
-	@Autowired
-	private CollaborationMapper mapper;
-
-	public Collaboration getById(String collaborationId) {
-		return mapper.fromCollaborationRequest(serviceStub.getRequest(buildGetRequest(collaborationId)).getRequest());
-	}
-
-	public Stream<Collaboration> getCollaborations(String vorgangId) {
-		return serviceStub.findRequests(buildSearchRequest(vorgangId))
-				.getRequestsList().stream()
-				.map(mapper::fromCollaborationRequest);
-	}
-
-	GrpcGetRequestRequest buildGetRequest(String collaborationId) {
-		return GrpcGetRequestRequest.newBuilder().setId(collaborationId).build();
-	}
-
-	GrpcFindRequestsRequest buildSearchRequest(String vorgangId) {
-		return GrpcFindRequestsRequest.newBuilder().setVorgangId(vorgangId).build();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationService.java
deleted file mode 100644
index 45301ae9ab855929ef42aed95daf28c2db9d978b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationService.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-class CollaborationService {
-
-	private final CollaborationRemoteService remoteService;
-
-	public Collaboration getById(String collaborationId) {
-		return remoteService.getById(collaborationId);
-	}
-
-	public Stream<Collaboration> getCollaborations(String vorgangId) {
-		return remoteService.getCollaborations(vorgangId);
-	}
-
-	public boolean hasCollaboration(String vorgangId) {
-		return remoteService.getCollaborations(vorgangId).findAny().isPresent();
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java
deleted file mode 100644
index b1c4dd3da3b2f4846590bd6afb9f94ae0d9e3220..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Component
-@ConditionalOnProperty("ozgcloud.feature.collaboration-enabled")
-class CollaborationVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	static final LinkRelation REL_COLLABORATIONS = LinkRelation.of("collaborations");
-	static final LinkRelation REL_SEARCH_ORGANISATIONS_EINHEIT = LinkRelation.of("searchOrganisationsEinheit");
-	static final LinkRelation REL_SEARCH_FACHSTELLE = LinkRelation.of("searchFachstelle");
-
-	private final CurrentUserService currentUserService;
-	private final CollaborationService collaborationService;
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-
-		if (Objects.isNull(vorgang) || !currentUserService.hasRole(UserRole.VERWALTUNG_USER)) {
-			return model;
-		}
-
-		return ModelBuilder.fromModel(model)
-				.ifMatch(() -> !collaborationService.hasCollaboration(vorgang.getId()))
-				.addLinks(buildSearchOrganisationsEinheitLink(), buildSearchFachstelleLink())
-				.addLink(linkTo(methodOn(CollaborationByVorgangController.class).getAllByVorgangId(vorgang.getId())).withRel(REL_COLLABORATIONS))
-				.buildModel();
-	}
-
-	private Link buildSearchOrganisationsEinheitLink() {
-		return linkTo(methodOn(OrganisationsEinheitController.class).search(null)).withRel(
-				REL_SEARCH_ORGANISATIONS_EINHEIT);
-	}
-
-	private Link buildSearchFachstelleLink() {
-		return linkTo(methodOn(FachstelleController.class).search(null)).withRel(REL_SEARCH_FACHSTELLE);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java
deleted file mode 100644
index 2bee97cf52f26200611587c1bfdc2d1c94cc70d0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-class Fachstelle {
-
-	@JsonIgnore
-	private String id;
-	private String name;
-	private String anschrift;
-	private String email;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleCollaboration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleCollaboration.java
deleted file mode 100644
index f1c8c6022050df4b0f7ecd4a28f093490cbda780..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleCollaboration.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.springframework.hateoas.server.core.Relation;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@Relation(itemRelation = "collaboration", collectionRelation = "collaborationList")
-public class FachstelleCollaboration implements Collaboration {
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private String vorgangId;
-	@JsonIgnore
-	private String collaborationVorgangId;
-
-	private String titel;
-	private String beschreibung;
-	private long collaborationLevel;
-
-	@LinkedResource(controllerClass = FachstelleController.class)
-	private String zustaendigeStelle;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java
deleted file mode 100644
index 16f0729ad241477e6f1fda7d33ea54ab61f2cef5..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.Optional;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(FachstelleController.PATH)
-@RequiredArgsConstructor
-class FachstelleController {
-
-	static final String PATH = "/api/fachstelles"; // NOSONAR
-	static final String SEARCH_BY_PARAM = "searchBy";
-
-	private final FachstelleService service;
-	private final FachstelleModelAssembler modelAssembler;
-
-	@GetMapping(params = { SEARCH_BY_PARAM })
-	public CollectionModel<EntityModel<Fachstelle>> search(@RequestParam String searchBy) {
-		return modelAssembler.toCollectionModel(service.searchFachstellen(searchBy).toList());
-	}
-
-	@GetMapping("/{id}")
-	public ResponseEntity<EntityModel<Fachstelle>> getById(@PathVariable String id) {
-		return ResponseEntity.of(Optional.of(service.getById(id)).map(modelAssembler::toModel));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleMapper.java
deleted file mode 100644
index 22cb13c95441d45ed5baca3e437312ac22c97f27..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleMapper.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle;
-
-@Mapper
-interface FachstelleMapper {
-
-	@Mapping(target = "name", source = "firmenName")
-	@Mapping(target = "email", source = "emailAdresse")
-	Fachstelle fromGrpc(GrpcFachstelle fachstelle);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssembler.java
deleted file mode 100644
index 0b3a22989fd57212f3e4b93c3654d199174ed15f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssembler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import jakarta.annotation.Nonnull;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class FachstelleModelAssembler
-		implements RepresentationModelAssembler<Fachstelle, EntityModel<Fachstelle>> {
-
-	@Override
-	public EntityModel<Fachstelle> toModel(@Nonnull Fachstelle entity) {
-		return ModelBuilder.fromEntity(entity)
-				.addLink(linkTo(FachstelleController.class).slash(entity.getId()).withSelfRel())
-				.buildModel();
-	}
-
-	@Override
-	public CollectionModel<EntityModel<Fachstelle>> toCollectionModel(Iterable<? extends Fachstelle> entities) {
-		return RepresentationModelAssembler.super.toCollectionModel(entities)
-				.add(linkTo(FachstelleController.class).withSelfRel());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteService.java
deleted file mode 100644
index 788ad97d2a300638f1b54f7d3b64d5dfdb33a10b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteService.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.zufi.grpc.fachstelle.FachstelleServiceGrpc.FachstelleServiceBlockingStub;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class FachstelleRemoteService {
-
-	@GrpcClient(GrpcUtil.ZUFI_MANAGER_GRPC_CLIENT)
-	private FachstelleServiceBlockingStub serviceStub;
-
-	@Autowired
-	private FachstelleMapper fachstelleMapper;
-
-	public Stream<Fachstelle> search(String searchBy) {
-		var response = serviceStub.search(buildSearchRequest(searchBy));
-		return response.getFachstellenList().stream().map(fachstelleMapper::fromGrpc);
-	}
-
-	private GrpcFachstelleSearchRequest buildSearchRequest(String searchBy) {
-		return GrpcFachstelleSearchRequest.newBuilder().setSearchBy(searchBy).build();
-	}
-
-	public Fachstelle getById(String id) {
-		var request = buildGetByIdRequest(id);
-		var response = serviceStub.getById(request);
-		return getFachstelleFromGetByIdResponse(response);
-	}
-
-	GrpcFachstelleGetRequest buildGetByIdRequest(String id) {
-		return GrpcFachstelleGetRequest.newBuilder().setId(id).build();
-	}
-
-	Fachstelle getFachstelleFromGetByIdResponse(GrpcFachstelleGetResponse response) {
-		return fachstelleMapper.fromGrpc(response.getFachstelle());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleService.java
deleted file mode 100644
index 83e450427b2d6e48c69cc7dbf61544db1e5db74f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Service
-class FachstelleService {
-
-	private final FachstelleRemoteService remoteService;
-
-	public Fachstelle getById(String id) {
-		return remoteService.getById(id);
-	}
-
-	public Stream<Fachstelle> searchFachstellen(String searchBy) {
-		return remoteService.search(searchBy);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheit.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheit.java
deleted file mode 100644
index aeccb1786c7795171c5a65a07674a5cb36484512..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheit.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.extern.jackson.Jacksonized;
-
-@Builder
-@Getter
-@Jacksonized
-class OrganisationsEinheit {
-
-	private String id;
-	private XzufiId xzufiId;
-	private String name;
-	private Anschrift anschrift;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaboration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaboration.java
deleted file mode 100644
index 4da30da7f4c71aa3ddaec5c1169f6585c29412e2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaboration.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.springframework.hateoas.server.core.Relation;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@Relation(itemRelation = "collaboration", collectionRelation = "collaborationList")
-public class OrganisationsEinheitCollaboration implements Collaboration {
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private String vorgangId;
-	@JsonIgnore
-	private String collaborationVorgangId;
-
-	private String titel;
-	private String beschreibung;
-	private long collaborationLevel;
-
-	@LinkedResource(controllerClass = OrganisationsEinheitController.class)
-	private String zustaendigeStelle;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java
deleted file mode 100644
index 388dbd757bc6091527ad6c54a1c77c1358dfbe2a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.Optional;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(OrganisationsEinheitController.PATH)
-@RequiredArgsConstructor
-class OrganisationsEinheitController {
-
-	static final String PATH = "/api/organisationseinheits"; // NOSONAR
-	static final String SEARCH_BY_PARAM = "searchBy";
-
-	private final OrganisationsEinheitService service;
-	private final OrganisationsEinheitModelAssembler assembler;
-	private final OrganisationsEinheitHeaderModelAssembler headerModelAssembler;
-
-	@GetMapping("/{organisationsEinheitId}")
-	public ResponseEntity<EntityModel<OrganisationsEinheit>> getById(@PathVariable String organisationsEinheitId) {
-		return ResponseEntity.of(Optional.of(service.getById(organisationsEinheitId)).map(assembler::toModel));
-	}
-
-	@GetMapping(params = { SEARCH_BY_PARAM })
-	public CollectionModel<EntityModel<OrganisationsEinheitHeader>> search(@RequestParam String searchBy) {
-		return headerModelAssembler.toCollectionModel(service.searchOrganisationsEinheiten(searchBy).toList());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeader.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeader.java
deleted file mode 100644
index f29a5d8b3e9ac4e7e27671631c86cfb931e1633f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-class OrganisationsEinheitHeader {
-
-	@JsonIgnore
-	private String id;
-	private String name;
-	private Anschrift anschrift;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapper.java
deleted file mode 100644
index 073b6a098e87bdc89b2d6ba0e8dc0c58838cc39a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit;
-
-@Mapper
-interface OrganisationsEinheitHeaderMapper {
-
-	OrganisationsEinheitHeader fromGrpc(GrpcOrganisationsEinheit organisationsEinheit);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssembler.java
deleted file mode 100644
index 35bc52e64167f4ce8de05e37bf30502947c4b43d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssembler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import jakarta.annotation.Nonnull;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class OrganisationsEinheitHeaderModelAssembler
-		implements RepresentationModelAssembler<OrganisationsEinheitHeader, EntityModel<OrganisationsEinheitHeader>> {
-
-	@Override
-	public EntityModel<OrganisationsEinheitHeader> toModel(@Nonnull OrganisationsEinheitHeader entity) {
-		return ModelBuilder.fromEntity(entity)
-				.addLink(linkTo(OrganisationsEinheitController.class).slash(entity.getId()).withSelfRel())
-				.buildModel();
-	}
-
-	@Override
-	public CollectionModel<EntityModel<OrganisationsEinheitHeader>> toCollectionModel(Iterable<? extends OrganisationsEinheitHeader> entities) {
-		return RepresentationModelAssembler.super.toCollectionModel(entities)
-				.add(linkTo(OrganisationsEinheitController.class).withSelfRel());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapper.java
deleted file mode 100644
index a9f32bfd0d75fc995c3cfee64df9aa8f35689664..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit;
-
-@Mapper
-interface OrganisationsEinheitMapper {
-
-	OrganisationsEinheit fromGrpc(GrpcOrganisationsEinheit organisationsEinheit);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssembler.java
deleted file mode 100644
index ad3ee72f30874e2fee0f3ed5475b64c68b083029..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssembler.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class OrganisationsEinheitModelAssembler implements RepresentationModelAssembler<OrganisationsEinheit, EntityModel<OrganisationsEinheit>> {
-
-	@Override
-	public EntityModel<OrganisationsEinheit> toModel(OrganisationsEinheit entity) {
-		return ModelBuilder.fromEntity(entity)
-				.addLink(linkTo(OrganisationsEinheitController.class).slash(entity.getId()).withSelfRel())
-				.buildModel();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteService.java
deleted file mode 100644
index 98eb98c67d0db5889a179ee757b19e92f7d5ce2c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchRequest;
-import de.ozgcloud.zufi.grpc.organisationseinheit.OrganisationsEinheitServiceGrpc.OrganisationsEinheitServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class OrganisationsEinheitRemoteService {
-
-	@GrpcClient(GrpcUtil.ZUFI_MANAGER_GRPC_CLIENT)
-	private OrganisationsEinheitServiceBlockingStub serviceStub;
-
-	@Autowired
-	private OrganisationsEinheitHeaderMapper organisationsEinheitHeaderMapper;
-	@Autowired
-	private OrganisationsEinheitMapper organisationsEinheitMapper;
-
-	public Stream<OrganisationsEinheitHeader> search(String searchBy) {
-		var response = serviceStub.search(buildSearchRequest(searchBy));
-		return response.getOrganisationsEinheitenList().stream().map(organisationsEinheitHeaderMapper::fromGrpc);
-	}
-
-	private GrpcOrganisationsEinheitSearchRequest buildSearchRequest(String searchBy) {
-		return GrpcOrganisationsEinheitSearchRequest.newBuilder().setSearchBy(searchBy).build();
-	}
-
-	public OrganisationsEinheit getById(String id) {
-		var request = buildGetByIdRequest(id);
-		var response = serviceStub.getById(request);
-		return getOrganisationsEinheitFromGetByIdResponse(response);
-	}
-
-	GrpcOrganisationsEinheitGetRequest buildGetByIdRequest(String organisationsEinheitId) {
-		return GrpcOrganisationsEinheitGetRequest.newBuilder().setId(organisationsEinheitId).build();
-	}
-
-	OrganisationsEinheit getOrganisationsEinheitFromGetByIdResponse(GrpcOrganisationsEinheitGetResponse response) {
-		return organisationsEinheitMapper.fromGrpc(response.getOrganisationsEinheit());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitService.java
deleted file mode 100644
index 4435f120538056d42e4293347b6bf984f0cba8c7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-class OrganisationsEinheitService {
-
-	private final OrganisationsEinheitRemoteService remoteService;
-
-	public OrganisationsEinheit getById(String id) {
-		return remoteService.getById(id);
-	}
-
-	public Stream<OrganisationsEinheitHeader> searchOrganisationsEinheiten(String searchBy) {
-		return remoteService.search(searchBy);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/XzufiId.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/XzufiId.java
deleted file mode 100644
index b923e5bbc4aa896d5d650e5e4e10bb24399a2352..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/XzufiId.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-public class XzufiId {
-	private String id;
-	private String schemeAgencyId;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceDeserializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceDeserializer.java
deleted file mode 100644
index 9e5de8c7c95b93c24280a0ffdb9c47d149efb490..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceDeserializer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
-import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-
-import de.ozgcloud.common.datatype.StringBasedValue;
-import lombok.Getter;
-
-abstract class AbstractLinkedResourceDeserializer extends StdDeserializer<Object> implements ContextualDeserializer {
-
-	private static final long serialVersionUID = 1L;
-
-	@Getter
-	private BeanProperty beanProperty;
-
-	@Getter
-	private final JavaType targetType;
-
-	protected AbstractLinkedResourceDeserializer() {
-		super(Object.class);
-		targetType = null;
-	}
-
-	protected AbstractLinkedResourceDeserializer(BeanProperty beanProperty) {
-		super(Object.class);
-		this.beanProperty = beanProperty;
-		this.targetType = beanProperty.getType();
-	}
-
-	@Override
-	public Object deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
-		if (jsonParser.isExpectedStartArrayToken()) {
-			Collection<Object> idList = targetType.getRawClass().isAssignableFrom(Set.class) ? new HashSet<>() : new ArrayList<>();
-
-			while (!jsonParser.nextToken().isStructEnd()) {
-				idList.add(extractId(jsonParser.getText()));
-			}
-			return idList;
-		} else {
-			return extractId(jsonParser.getText());
-		}
-	}
-
-	Object extractId(String url) {
-		Class<?> type;
-		if (targetType.isCollectionLikeType()) {
-			type = targetType.getContentType().getRawClass();
-		} else {
-			type = targetType.getRawClass();
-		}
-
-		if (String.class.isAssignableFrom(type)) {
-			return extractStringId(url);
-		}
-		if (Long.class.isAssignableFrom(type) || Long.TYPE.isAssignableFrom(type)) {
-			return extractLongId(url);
-		}
-		if (StringBasedValue.class.isAssignableFrom(type)) {
-			return extractStringBasedValue(type, url);
-		}
-		return buildByBuilder(url);
-	}
-
-	abstract Object buildByBuilder(String url);
-
-	public static Long extractLongId(String uri) {
-		var trimedUri = StringUtils.trimToNull(uri);
-		if (Objects.isNull(trimedUri)) {
-			return null;
-		}
-		return Long.parseLong(URLDecoder.decode(trimedUri.substring(trimedUri.lastIndexOf('/') + 1), StandardCharsets.UTF_8));
-	}
-
-	private StringBasedValue extractStringBasedValue(Class<?> type, String url) {
-		String value = extractStringId(url);
-		Method fromMethod;
-		try {
-			fromMethod = type.getMethod("from", String.class);
-		} catch (NoSuchMethodException e) {
-			throw new IllegalStateException(
-					String.format("Cannot generate Id from type '%s'. Missing 'from' Method.", targetType.getRawClass().getSimpleName()));
-		}
-		try {
-			return (StringBasedValue) fromMethod.invoke(null, value);
-		} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-			throw new IllegalStateException(
-					String.format("Cannot generate Id from type '%s'. Error calling 'from' Method.", targetType.getRawClass().getSimpleName()),
-					e);
-		}
-	}
-
-	public static String extractStringId(String url) {
-		return URLDecoder.decode(url.substring(url.lastIndexOf('/') + 1), StandardCharsets.UTF_8);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceSerializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceSerializer.java
deleted file mode 100644
index b257cda8bc51579022e31c8d2ff37c865166528e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/AbstractLinkedResourceSerializer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-abstract class AbstractLinkedResourceSerializer extends JsonSerializer<Object> implements ContextualSerializer {
-	@Override
-	public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
-
-		if (value instanceof Collection) {
-			gen.writeStartArray();
-			((Collection<?>) value).forEach(val -> writeObject(gen, buildLink(val)));
-			gen.writeEndArray();
-		} else {
-			writeObject(gen, buildLink(value));
-		}
-	}
-
-	abstract String buildLink(Object id);
-
-	abstract IdExtractor<Object> getExtractor();
-
-	void writeObject(JsonGenerator gen, Object value) {
-		try {
-			gen.writeObject(value);
-		} catch (IOException e) {
-			throw new TechnicalException("Error writing String to json", e);
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/BaseTypesMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/BaseTypesMapper.java
deleted file mode 100644
index 0e5c15deea1b32b4ff94945487f89b98ed2a098a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/BaseTypesMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.time.ZonedDateTime;
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-
-@Mapper
-public interface BaseTypesMapper {
-
-	default String fromString(String in) {
-		return StringUtils.trimToNull(in);
-	}
-
-	default ZonedDateTime mapDateTime(String inStr) {
-		return Optional.ofNullable(fromString(inStr)).map(ZonedDateTime::parse).orElse(null);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/CollectionModelBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/CollectionModelBuilder.java
deleted file mode 100644
index 01ceb2d404037d97e024e9ff33baa69b6cc88607..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/CollectionModelBuilder.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.BooleanSupplier;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.Link;
-
-import lombok.RequiredArgsConstructor;
-
-public class CollectionModelBuilder<T> {
-
-	private final Iterable<T> entities;
-
-	private final List<Link> links = new LinkedList<>();
-
-	private CollectionModelBuilder(Iterable<T> entities) {
-		this.entities = entities;
-	}
-
-	public static <T> CollectionModelBuilder<T> fromEntities(Iterable<T> entities) {
-		return new CollectionModelBuilder<>(entities);
-	}
-
-	public static <T> CollectionModelBuilder<T> fromEntities(Stream<T> entities) {
-		return new CollectionModelBuilder<>(entities.toList());
-	}
-
-	public CollectionModelBuilder<T> addLink(Link link) {
-		links.add(link);
-		return this;
-	}
-
-	public ConditionalLinkAdder ifMatch(BooleanSupplier guard) {
-		return new ConditionalLinkAdder(guard.getAsBoolean());
-	}
-
-	public ConditionalLinkAdder ifMatch(Predicate<? super Iterable<T>> predicate) {
-		return new ConditionalLinkAdder(predicate.test(entities));
-	}
-
-	public CollectionModel<T> buildModel() {
-		var builtModel = CollectionModel.of(entities);
-		builtModel.add(links);
-		return builtModel;
-	}
-
-	@RequiredArgsConstructor
-	public class ConditionalLinkAdder {
-
-		public final boolean conditionFulfilled;
-
-		public CollectionModelBuilder<T> addLink(Link link) {
-			if (conditionFulfilled) {
-				links.add(link);
-			}
-			return CollectionModelBuilder.this;
-		}
-
-		public CollectionModelBuilder<T> addLink(Supplier<Link> linkSupplier) {
-			if (conditionFulfilled) {
-				links.add(linkSupplier.get());
-			}
-			return CollectionModelBuilder.this;
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java
deleted file mode 100644
index 9fe15e7d929b643995dc46717453e60be8f58304..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/FeatureToggleProperties.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = "ozgcloud.feature")
-public class FeatureToggleProperties {
-
-	/**
-	 * Enable mail reply option regardless of other configuration.
-	 */
-	private boolean replyAlwaysAllowed = false;
-
-	/**
-	 * Enable collaboration-feature in Vorgang
-	 */
-	private boolean collaborationEnabled = false;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/GermanDateTimeFormatter.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/GermanDateTimeFormatter.java
deleted file mode 100644
index 13959350e7bcd8c947c180b02f03053f73dc2490..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/GermanDateTimeFormatter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Locale;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import lombok.NonNull;
-
-@Component
-public class GermanDateTimeFormatter {
-
-	private static final DateTimeFormatter DATE_TIME_ZONE = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss z").withLocale(Locale.GERMANY);
-
-	@Autowired
-	private SystemProperties systemProperties;
-
-	public String formatZonedDateTime(@NonNull ZonedDateTime zonedDateTime) {
-		return DATE_TIME_ZONE.format(zonedDateTime.withZoneSameInstant(systemProperties.getTimeZone()));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/GrpcUtil.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/GrpcUtil.java
deleted file mode 100644
index 51e90eb4504bcdbed9c7087038f5d997c0856813..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/GrpcUtil.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Collection;
-import java.util.Optional;
-import java.util.stream.StreamSupport;
-
-import io.grpc.Metadata;
-import io.grpc.Metadata.Key;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class GrpcUtil {
-
-	public static final String VORGANG_MANAGER_GRPC_CLIENT = "vorgang-manager";
-	public static final String ZUFI_MANAGER_GRPC_CLIENT = "zufi-manager";
-	public static final String COLLABORATION_MANAGER_GRPC_CLIENT = "collaboration-manager";
-
-	public static final String ARCHIVE_MANAGER_GRPC_CLIENT = "archive-manager";
-
-	public static final String SERVICE_KEY = "GRPC_SERVICE";
-
-	public static Key<String> keyOfString(String key) {
-		return Key.of(key, Metadata.ASCII_STRING_MARSHALLER);
-	}
-
-	public static Key<byte[]> createKeyOf(String key) {
-		return Key.of(key, Metadata.BINARY_BYTE_MARSHALLER);
-	}
-
-	public static String getFromHeaders(String key, Metadata headers) {
-		return Optional.ofNullable(headers.get(createKeyOf(key)))
-				.map(GrpcUtil::byteToString)
-				.orElse(null);
-	}
-
-	public static Collection<String> getCollection(String key, Metadata headers) {
-		return StreamSupport.stream(headers.getAll(createKeyOf(key)).spliterator(), false)
-				.map(GrpcUtil::byteToString)
-				.toList();
-	}
-
-	private static String byteToString(byte[] bytes) {
-		return new String(bytes, StandardCharsets.UTF_8);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdBuilder.java
deleted file mode 100644
index c710121a83d15919f295efeac7a5a0d49b888e97..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdBuilder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-class IdBuilder implements ObjectBuilder<Object> {
-
-	@Override
-	public Object build(Object id) {
-		return id;
-	}
-
-	@Override
-	public ObjectBuilder<Object> constructContextAware(BeanProperty property) {
-		return new IdBuilder();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdExtractor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdExtractor.java
deleted file mode 100644
index 8d4e4a7f5ef625fee5ba97d67bb36b1ff5f38256..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IdExtractor.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-@FunctionalInterface
-public interface IdExtractor<T> {
-	String extractId(T object);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IgnoreGrpcFields.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/IgnoreGrpcFields.java
deleted file mode 100644
index a631f71f8f17e246659fc1198233d549d9f6ce02..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/IgnoreGrpcFields.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import org.mapstruct.Mapping;
-
-@Mapping(target = "mergeFrom", ignore = true)
-@Mapping(target = "clearField", ignore = true)
-@Mapping(target = "clearOneof", ignore = true)
-@Mapping(target = "mergeUnknownFields", ignore = true)
-@Mapping(target = "unknownFields", ignore = true)
-@Mapping(target = "allFields", ignore = true)
-@Mapping(target = "createdAtBytes", ignore = true)
-@Mapping(target = "createdByBytes", ignore = true)
-@Mapping(target = "createdByNameBytes", ignore = true)
-@Mapping(target = "idBytes", ignore = true)
-public @interface IgnoreGrpcFields {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResource.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResource.java
deleted file mode 100644
index d860e535dfc2a09da7b389024e2152ca2b35e6e6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.springframework.core.annotation.AliasFor;
-
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@Inherited
-
-@JacksonAnnotationsInside
-@JsonSerialize(using = LinkedResourceSerializer.class)
-@JsonDeserialize(using = LinkedResourceDeserializer.class)
-public @interface LinkedResource {
-
-	Class<?> controllerClass();
-
-	Class<? extends IdExtractor<Object>> extractor() default ToStringExtractor.class;
-
-	@AliasFor(annotation = JsonDeserialize.class, attribute = "builder")
-	Class<? extends ObjectBuilder<Object>> builder() default IdBuilder.class;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceDeserializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceDeserializer.java
deleted file mode 100644
index 29d5063eda4522a966a88bad6626e82d5b2b7301..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceDeserializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-public class LinkedResourceDeserializer extends AbstractLinkedResourceDeserializer {
-
-	private static final long serialVersionUID = 1L;
-
-	private LinkedResource annotation;
-
-	protected LinkedResourceDeserializer() {
-		super();
-	}
-
-	protected LinkedResourceDeserializer(BeanProperty beanProperty) {
-		super(beanProperty);
-		this.annotation = beanProperty.getAnnotation(LinkedResource.class);
-	}
-
-	@Override
-	Object buildByBuilder(String url) {
-		ObjectBuilder<?> builder;
-		try {
-			builder = ConstructorUtils.invokeConstructor(annotation.builder()).constructContextAware(getBeanProperty());
-		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | InstantiationException e) {
-			throw new TechnicalException("Error instanciating Builder.", e);
-		}
-		return builder.build(extractStringId(url));
-	}
-
-	@Override
-	public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) {
-		return new LinkedResourceDeserializer(property);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceSerializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceSerializer.java
deleted file mode 100644
index 0dda5f54061f71b9354dfef7e23340b8f13e5a47..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedResourceSerializer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-public class LinkedResourceSerializer extends AbstractLinkedResourceSerializer {
-
-	private LinkedResource annotation;
-
-	private LinkedResourceSerializer(LinkedResource annotation) {
-		this.annotation = annotation;
-	}
-
-	@Override
-	public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
-		return new LinkedResourceSerializer(property.getAnnotation(LinkedResource.class));
-	}
-
-	@Override
-	String buildLink(Object id) {
-		return linkTo(annotation.controllerClass()).slash(getExtractor().extractId(id)).toString();
-	}
-
-	@Override
-	IdExtractor<Object> getExtractor() {
-		try {
-			return ConstructorUtils.invokeConstructor(annotation.extractor());
-		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | InstantiationException e) {
-			throw new TechnicalException("Error instanciating IdExtractor", e);
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResource.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResource.java
deleted file mode 100644
index b5ab0b0398d3aaa6cc2038fe19332161580965c9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResource.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.springframework.core.annotation.AliasFor;
-
-import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@Inherited
-
-@JacksonAnnotationsInside
-@JsonSerialize(using = LinkedUserProfileResourceSerializer.class)
-@JsonDeserialize(using = LinkedUserProfileResourceDeserializer.class)
-public @interface LinkedUserProfileResource {
-
-	Class<? extends IdExtractor<Object>> extractor() default ToStringExtractor.class;
-
-	@AliasFor(annotation = JsonDeserialize.class, attribute = "builder")
-	Class<? extends ObjectBuilder<Object>> builder() default IdBuilder.class;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializer.java
deleted file mode 100644
index 6b4cd50fb3b73912cae168ef08c530036bf0c095..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.lang3.reflect.ConstructorUtils;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-public class LinkedUserProfileResourceDeserializer extends AbstractLinkedResourceDeserializer {
-
-	private static final long serialVersionUID = 1L;
-
-	private LinkedUserProfileResource annotation;
-
-	protected LinkedUserProfileResourceDeserializer() {
-		super();
-	}
-
-	protected LinkedUserProfileResourceDeserializer(BeanProperty beanProperty) {
-		super(beanProperty);
-		this.annotation = beanProperty.getAnnotation(LinkedUserProfileResource.class);
-	}
-
-	@Override
-	Object buildByBuilder(String url) {
-		ObjectBuilder<?> builder;
-		try {
-			builder = ConstructorUtils.invokeConstructor(annotation.builder()).constructContextAware(getBeanProperty());
-		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | InstantiationException e) {
-			throw new TechnicalException("Error instanciating Builder.", e);
-		}
-		return builder.build(extractStringId(url));
-	}
-
-	@Override
-	public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) {
-		return new LinkedUserProfileResourceDeserializer(property);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializer.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializer.java
deleted file mode 100644
index ed0f0ee2936cd65ee0e34587616ae67c2af65183..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializer.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-
-import org.apache.commons.lang3.reflect.ConstructorUtils;
-import org.springframework.hateoas.Link;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.BeanProperty;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-public class LinkedUserProfileResourceSerializer extends JsonSerializer<Object> implements ContextualSerializer {
-
-	private LinkedUserProfileResource annotation;
-
-	private LinkedUserProfileResourceSerializer(LinkedUserProfileResource annotation) {
-		this.annotation = annotation;
-	}
-
-	@Override
-	public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
-		return new LinkedUserProfileResourceSerializer(property.getAnnotation(LinkedUserProfileResource.class));
-	}
-
-	String buildLink(Object id) {
-		if (UserProfileUrlProvider.isConfigured()) {
-			return Link.of(UserProfileUrlProvider.getUrl(getExtractor().extractId(id))).getHref();
-		} else {
-			return id.toString();
-		}
-	}
-
-	IdExtractor<Object> getExtractor() {
-		try {
-			return ConstructorUtils.invokeConstructor(annotation.extractor());
-		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | InstantiationException e) {
-			throw new TechnicalException("Error instanciating IdExtractor", e);
-		}
-	}
-
-	@Override
-	public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
-		if (value instanceof Collection) {
-			gen.writeStartArray();
-			((Collection<?>) value).forEach(val -> writeObject(gen, buildLink(val)));
-			gen.writeEndArray();
-		} else {
-			writeObject(gen, buildLink(value));
-		}
-	}
-
-	void writeObject(JsonGenerator gen, Object value) {
-		try {
-			gen.writeObject(value);
-		} catch (IOException e) {
-			throw new TechnicalException("Error writing String to json", e);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ModelBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/ModelBuilder.java
deleted file mode 100644
index 79ec76f5f087866bf96bd896d377b25482b0547c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ModelBuilder.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.BooleanSupplier;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
-import java.util.stream.Collectors;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.reflect.FieldUtils;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-public class ModelBuilder<T> {
-
-	private static final Map<Class<?>, Map<Object, List<Field>>> ANNOTATED_FIELDS_BY_ANNOTATION = new ConcurrentHashMap<>();
-
-	private final T entity;
-	private final EntityModel<T> model;
-
-	private final List<Link> links = new LinkedList<>();
-	private final List<Function<EntityModel<T>, EntityModel<T>>> mapper = new LinkedList<>();
-
-	private ModelBuilder(T entity) {
-		this.entity = entity;
-		this.model = null;
-	}
-
-	private ModelBuilder(EntityModel<T> model) {
-		this.entity = null;
-		this.model = model;
-	}
-
-	public static <T> ModelBuilder<T> fromEntity(T entity) {
-		return new ModelBuilder<>(entity);
-	}
-
-	public static <T> ModelBuilder<T> fromModel(EntityModel<T> model) {
-		return new ModelBuilder<>(model);
-	}
-
-	public ModelBuilder<T> addLink(Link link) {
-		links.add(link);
-		return this;
-	}
-
-	public ModelBuilder<T> addLink(Optional<Link> link) {
-		link.ifPresent(links::add);
-		return this;
-	}
-
-	public ModelBuilder<T> addLinks(Link... links) {
-		this.links.addAll(Arrays.asList(links));
-		return this;
-	}
-
-	public ModelBuilder<T> addLinks(Collection<Link> links) {
-		this.links.addAll(links);
-		return this;
-	}
-
-	public ConditionalLinkAdder ifMatch(Predicate<T> predicate) {
-		return new ConditionalLinkAdder(predicate.test(Objects.isNull(entity) ? model.getContent() : entity));
-	}
-
-	public ConditionalLinkAdder ifMatch(BooleanSupplier guard) {
-		return new ConditionalLinkAdder(guard.getAsBoolean());
-	}
-
-	public ModelBuilder<T> map(UnaryOperator<EntityModel<T>> mapper) {
-		this.mapper.add(mapper);
-		return this;
-	}
-
-	public EntityModel<T> buildModel() {
-		var filteredLinks = links.stream().filter(Objects::nonNull).collect(Collectors.toSet());
-
-		EntityModel<T> buildedModel = Objects.isNull(model) ? EntityModel.of(entity) : model;
-		buildedModel = buildedModel.add(filteredLinks);
-
-		addLinkByLinkedResourceAnnotationIfMissing(buildedModel);
-		addLinkByLinkedUserProfileResourceAnnotationIfMissing(buildedModel);
-
-		return applyMapper(buildedModel);
-	}
-
-	private EntityModel<T> applyMapper(EntityModel<T> resource) {
-		Iterator<Function<EntityModel<T>, EntityModel<T>>> i = mapper.iterator();
-		EntityModel<T> result = resource;
-		while (i.hasNext()) {
-			result = i.next().apply(result);
-		}
-		return result;
-	}
-
-	private void addLinkByLinkedResourceAnnotationIfMissing(EntityModel<T> resource) {
-		getFields(LinkedResource.class).stream()
-				.filter(field -> shouldAddLink(resource, field))
-				.forEach(field -> handleLinkedResourceField(resource, field));
-	}
-
-	private void handleLinkedResourceField(EntityModel<T> resource, Field field) {
-		getEntityFieldValue(field).map(Object::toString).filter(StringUtils::isNotBlank).ifPresent(val -> resource
-				.add(WebMvcLinkBuilder.linkTo(field.getAnnotation(LinkedResource.class).controllerClass()).slash(val)
-						.withRel(sanitizeName(field.getName()))));
-	}
-
-	private void addLinkByLinkedUserProfileResourceAnnotationIfMissing(EntityModel<T> resource) {
-		getFields(LinkedUserProfileResource.class).stream()
-				.filter(field -> shouldAddLink(resource, field))
-				.forEach(field -> handleLinkedUserProfileResourceField(resource, field));
-	}
-
-	private void handleLinkedUserProfileResourceField(EntityModel<T> resource, Field field) {
-		getEntityFieldValue(field).ifPresent(val -> {
-			if (UserProfileUrlProvider.isConfigured()) {
-				resource.add(Link.of(UserProfileUrlProvider.getUrl(val)).withRel(sanitizeName(field.getName())));
-			}
-		});
-	}
-
-	private boolean shouldAddLink(EntityModel<T> resource, Field field) {
-		return !(field.getType().isArray() || Collection.class.isAssignableFrom(field.getType()) || resource.hasLink(sanitizeName(field.getName())));
-	}
-
-	private List<Field> getFields(Class<? extends Annotation> annotationClass) {
-		var fields = Optional.ofNullable(ANNOTATED_FIELDS_BY_ANNOTATION.get(getEntity().getClass()))
-				.map(fieldsByAnnotation -> fieldsByAnnotation.get(annotationClass))
-				.orElseGet(Collections::emptyList);
-
-		if (CollectionUtils.isEmpty(fields)) {
-			fields = FieldUtils.getFieldsListWithAnnotation(getEntity().getClass(), annotationClass);
-
-			updateFields(annotationClass, fields);
-		}
-		return fields;
-	}
-
-	private void updateFields(Class<? extends Annotation> annotationClass, List<Field> fields) {
-		var annotationMap = Optional.ofNullable(ANNOTATED_FIELDS_BY_ANNOTATION.get(getEntity().getClass())).orElseGet(HashMap::new);
-		annotationMap.put(annotationClass, fields);
-
-		ANNOTATED_FIELDS_BY_ANNOTATION.put(annotationClass, annotationMap);
-	}
-
-	private String sanitizeName(String fieldName) {
-		if (fieldName.endsWith("Id")) {
-			return fieldName.substring(0, fieldName.indexOf("Id"));
-		}
-		return fieldName;
-	}
-
-	private Optional<Object> getEntityFieldValue(Field field) {
-		try {
-			field.setAccessible(true);
-			Optional<Object> value = Optional.ofNullable(field.get(getEntity()));
-			field.setAccessible(false);
-			return value;
-		} catch (IllegalArgumentException | IllegalAccessException e) {
-			LOG.warn("Cannot access field value of LinkedResource field.", e);
-		}
-		return Optional.empty();
-	}
-
-	private T getEntity() {
-		return Optional.ofNullable(entity == null ? model.getContent() : entity)
-				.orElseThrow(() -> new IllegalStateException("Entity must not null for ModelBuilding"));
-	}
-
-	@RequiredArgsConstructor
-	public class ConditionalLinkAdder {
-
-		public final boolean conditionFulfilled;
-
-		public ModelBuilder<T> addLink(Supplier<Link> linkSupplier) {
-			if (conditionFulfilled) {
-				addLink(linkSupplier.get());
-			}
-			return ModelBuilder.this;
-		}
-
-		public ModelBuilder<T> addLinkIfPresent(Supplier<Optional<Link>> linkSupplier) {
-			if (conditionFulfilled) {
-				addLink(linkSupplier.get());
-			}
-			return ModelBuilder.this;
-		}
-
-		public ModelBuilder<T> addLink(Function<T, Link> linkBuilder) {
-			if (conditionFulfilled) {
-				addLink(linkBuilder.apply(getEntity()));
-			}
-			return ModelBuilder.this;
-		}
-
-		public ModelBuilder<T> addLink(Link link) {
-			if (conditionFulfilled) {
-				links.add(link);
-			}
-			return ModelBuilder.this;
-		}
-
-		public ModelBuilder<T> addLink(Optional<Link> link) {
-			if (conditionFulfilled) {
-				link.ifPresent(links::add);
-			}
-			return ModelBuilder.this;
-		}
-
-		public ModelBuilder<T> addLinks(Link... links) {
-			if (conditionFulfilled) {
-				ModelBuilder.this.links.addAll(Arrays.asList(links));
-			}
-			return ModelBuilder.this;
-		}
-
-		@SafeVarargs
-		public final ModelBuilder<T> addLinks(Supplier<Link>... linkSuppliers) {
-			if (conditionFulfilled) {
-				for (int i = 0; i < linkSuppliers.length; i++) {
-					ModelBuilder.this.links.add(linkSuppliers[i].get());
-				}
-			}
-			return ModelBuilder.this;
-		}
-
-		public final ModelBuilder<T> addLinks(Supplier<Collection<Link>> linksSupplier) {
-			if (conditionFulfilled) {
-				linksSupplier.get().forEach(ModelBuilder.this.links::add);
-			}
-
-			return ModelBuilder.this;
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ObjectBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/ObjectBuilder.java
deleted file mode 100644
index ba1628bddebdcde2781d349a1df2f8a43b92d99f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ObjectBuilder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-
-public interface ObjectBuilder<T> {
-
-	T build(Object id);
-
-	ObjectBuilder<T> constructContextAware(BeanProperty property);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/RegexUtil.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/RegexUtil.java
deleted file mode 100644
index 5e26bd363a87db566994441622c18a65c2d2fa03..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/RegexUtil.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class RegexUtil {
-
-	public static final String VALIDATION_EMAIL = "[a-zA-Z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?";
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/StringToNullMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/StringToNullMapper.java
deleted file mode 100644
index d46a4dab5b56ea35dd62d2a9bbb03149020dcaeb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/StringToNullMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-
-@Mapper
-public interface StringToNullMapper {
-
-	default String fromString(String value) {
-		return StringUtils.trimToNull(value);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/SystemProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/SystemProperties.java
deleted file mode 100644
index b64eb0b7fd865763fcfa942e500ff955a5f2219d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/SystemProperties.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.time.ZoneId;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Configuration
-@ConfigurationProperties(prefix = SystemProperties.PREFIX)
-public class SystemProperties {
-
-	static final String PREFIX = "ozgcloud.system";
-
-	/**
-	 * Timezone to be used in application.
-	 */
-	private ZoneId timeZone = ZoneId.of("Europe/Berlin");
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/TimeMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/TimeMapper.java
deleted file mode 100644
index c9806fdcae9d1333bd579af8d44491f1a1785985..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/TimeMapper.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.time.ZonedDateTime;
-
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-
-@Mapper
-public interface TimeMapper {
-
-	default ZonedDateTime parseString(String dateTimeStr) {
-		return StringUtils.isBlank(dateTimeStr) ? null : ZonedDateTime.parse(dateTimeStr);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ToStringExtractor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/ToStringExtractor.java
deleted file mode 100644
index 1452b843685c6515dd10f899059d09b6fa035fae..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ToStringExtractor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor
-class ToStringExtractor implements IdExtractor<Object> {
-
-	@Override
-	public String extractId(Object object) {
-		return object.toString();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java
deleted file mode 100644
index 100dd420eb21777a28dae8e70688493017a73756..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/UserProfileUrlProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import java.util.Objects;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Component;
-
-import com.google.common.base.Preconditions;
-
-@Component
-public class UserProfileUrlProvider implements ApplicationContextAware {
-	// TODO auf javax.validation umstellen
-	private static final String ERROR_MESSAGE = "Key %s missing, please add it to the application.yml";
-	// TODO applicationContext darf nicht static abgelegt werden - es sollte möglich
-	// sein, dass eine andere Konfiguration in der jvm läuft.
-	private static ApplicationContext applicationContext;
-	static final String URL_ROOT_KEY = "ozgcloud.user-manager.url";
-	static final String USER_PROFILES_TEMPLATE_KEY = "ozgcloud.user-manager.profile-template";
-
-	@Override
-	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-		UserProfileUrlProvider.setSpringContext(applicationContext);
-	}
-
-	private static void setSpringContext(ApplicationContext context) {
-		applicationContext = context;
-	}
-
-	public static boolean isConfigured() {
-		return Objects.nonNull(applicationContext.getEnvironment().getProperty(URL_ROOT_KEY))
-				&& Objects.nonNull(applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY));
-	}
-
-	public static String getUrl(Object val) {
-		// TODO Abhängingkeit zu com.google.common ausbauen
-		Preconditions.checkNotNull(applicationContext, "ApplicationContext not initialized");
-
-		// TODO parameter lieber injezieren und validation verwenden
-		var rootUrl = applicationContext.getEnvironment().getProperty(URL_ROOT_KEY);
-		Preconditions.checkNotNull(rootUrl, ERROR_MESSAGE, URL_ROOT_KEY);
-
-		var template = applicationContext.getEnvironment().getProperty(USER_PROFILES_TEMPLATE_KEY);
-		Preconditions.checkNotNull(template, ERROR_MESSAGE, USER_PROFILES_TEMPLATE_KEY);
-
-		// TODO UriComponent Builder verwenden
-		var profilesUrl = rootUrl + template;
-		return String.format(profilesUrl, val);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ValidationMessageCodes.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/ValidationMessageCodes.java
deleted file mode 100644
index cfb9bac7054ee8406c85b1b64f5c81130b8c25c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/ValidationMessageCodes.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class ValidationMessageCodes {
-
-	private static final String FIELD_PREFIX = "validation_field_";
-	public static final String FIELD_IS_EMPTY = FIELD_PREFIX + "empty";
-	public static final String FIELD_MIN_SIZE = FIELD_PREFIX + "min_size";
-	public static final String FIELD_MAX_SIZE = FIELD_PREFIX + "max_size";
-	public static final String FIELD_SIZE = FIELD_PREFIX + "size";
-	public static final String FIELD_DATE_PAST = FIELD_PREFIX + "date_past";
-	public static final String FIELD_INVALID = FIELD_PREFIX + "invalid";
-	public static final String FIELD_FILE_SIZE_EXCEEDED = FIELD_PREFIX + "file_size_exceeded";
-	public static final String FIELD_DATE_FORMAT_INVALID = FIELD_PREFIX + "date_format_invalid";
-	public static final String FIELD_FILE_CONTENT_TYPE_INVALID = FIELD_PREFIX + "file_content_type_invalid";
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItem.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItem.java
deleted file mode 100644
index deae9c796b92b43b3245f749782def611c83c812..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItem.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import java.util.Map;
-
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class VorgangAttachedItem implements CommandBody {
-
-	public static final String FIELD_ITEM_NAME = "itemName";
-	public static final String ITEM_FIELD = "item";
-
-	private String id;
-	private long version;
-
-	@Builder.Default
-	private String client = "Alfa";
-	private String vorgangId;
-	private String itemName;
-
-	private Map<String, ?> item;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapper.java
deleted file mode 100644
index e0cda998be3f389b3693dbbc68837d77bdc56df9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-
-@Mapper(uses = GrpcObjectMapper.class)
-interface VorgangAttachedItemMapper {
-
-	VorgangAttachedItem fromGrpc(GrpcVorgangAttachedItem grpcVorgangAttachedItem);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteService.java
deleted file mode 100644
index 8d4265a306ad0dc0c9ba16567ffa5e8941ec50e5..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-import io.grpc.Status.Code;
-import io.grpc.StatusRuntimeException;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class VorgangAttachedItemRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
-
-	@Autowired
-	private VorgangAttachedItemMapper mapper;
-
-	public Stream<VorgangAttachedItem> findVorgangAttachedItem(String vorgangId, String itemName) {
-		var response = vorgangAttachedItemServiceStub.find(buildFindRequest(vorgangId, itemName));
-
-		return response.getVorgangAttachedItemsList().stream().map(mapper::fromGrpc);
-	}
-
-	GrpcFindVorgangAttachedItemRequest buildFindRequest(String vorgangId, String itemName) {
-		return GrpcFindVorgangAttachedItemRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setItemName(itemName)
-				.build();
-	}
-
-	public VorgangAttachedItem getById(String id) {
-		var response = doGetById(id);
-
-		return mapper.fromGrpc(response.getVorgangAttachedItem());
-	}
-
-	GrpcVorgangAttachedItemResponse doGetById(String id) {
-		try {
-			return vorgangAttachedItemServiceStub.getById(buildGetByIdRequest(id));
-		} catch (StatusRuntimeException e) {
-			if (e.getStatus().getCode() == Code.NOT_FOUND) {
-				throw new ResourceNotFoundException(VorgangAttachedItem.class, id);
-			}
-			throw e;
-		}
-	}
-
-	GrpcVorgangAttachedItemRequest buildGetByIdRequest(String id) {
-		return GrpcVorgangAttachedItemRequest.newBuilder().setId(id).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemService.java
deleted file mode 100644
index d705a00b9f1deb5588e6975c7e664e13d31de0fb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemService.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import java.util.Map;
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import de.ozgcloud.alfa.common.command.CommandBodyMapper;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.kommentar.Kommentar;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-public class VorgangAttachedItemService {
-
-	private final CommandBodyMapper commandBodyMapper;
-	private final CommandService commandService;
-	private final ContextService contextService;
-
-	private final VorgangAttachedItemRemoteService vorgangAttachedItemRemoteService;
-
-	static final String WIEDERVORLAGE_ITEM_NAME = "Wiedervorlage";
-	static final String KOMMENTAR_ITEM_NAME = "Kommentar";
-	static final String LOESCH_ANFORDERUNG_ITEM_NAME = "LoeschAnforderung";
-
-	public Command createNewWiedervorlage(Wiedervorlage wiedervorlage, String vorgangId) {
-		return createNewVorgangAttachedItem(wiedervorlage, WIEDERVORLAGE_ITEM_NAME, vorgangId);
-	}
-
-	public Command createNewKommentar(Kommentar kommentar, String vorgangId) {
-		return createNewVorgangAttachedItem(kommentar, KOMMENTAR_ITEM_NAME, vorgangId);
-	}
-
-	public Command createNewLoeschAnforderung(LoeschAnforderung loeschAnforderung, String vorgangId) {
-		return createNewVorgangAttachedItem(loeschAnforderung, LOESCH_ANFORDERUNG_ITEM_NAME, vorgangId);
-	}
-
-	private Command createNewVorgangAttachedItem(CommandBody item, String itemName, String vorgangId) {
-		var vorgangAttachedItem = buildVorgangAttachedItem(item, vorgangId, itemName);
-
-		return commandService.createCommandDeprecated(buildCreateCommand(vorgangId, vorgangAttachedItem));
-	}
-
-	public boolean isLoeschAnforderung(String itemName) {
-		return itemName.equals(LOESCH_ANFORDERUNG_ITEM_NAME);
-	}
-
-	CreateCommand buildCreateCommand(String vorgangId, CommandBody body) {
-		return CreateCommand.builder()
-				.vorgangId(vorgangId)
-				.relationId(vorgangId)
-				.order(CommandOrder.CREATE_ATTACHED_ITEM.name())
-				.body(body)
-				.build();
-	}
-
-	public Command editKommentar(Kommentar kommentar, String kommentarId, long kommentarVersion) {
-		var vorgangAttachedItem = buildVorgangAttachedItem(kommentar, kommentar.getVorgangId(), KOMMENTAR_ITEM_NAME);
-
-		return commandService.createCommand(
-				buildUpdateCommand(kommentar.getVorgangId(), kommentarId, vorgangAttachedItem), kommentarVersion);
-	}
-
-	public Command editWiedervorlage(Wiedervorlage wiedervorlage, String wiedervorlageId, long version) {
-		var vorgangAttachedItem = buildVorgangAttachedItem(wiedervorlage, wiedervorlage.getVorgangId(), WIEDERVORLAGE_ITEM_NAME);
-
-		return commandService.createCommand(
-				buildUpdateCommand(wiedervorlage.getVorgangId(), wiedervorlageId, vorgangAttachedItem), version);
-	}
-
-	VorgangAttachedItem buildVorgangAttachedItem(CommandBody body, String vorgangId, String itemName) {
-		return VorgangAttachedItem.builder()
-				.client(contextService.getClientName())
-				.vorgangId(vorgangId)
-				.itemName(itemName)
-				.item(commandBodyMapper.fromObjectToMap(body))
-				.build();
-	}
-
-	CreateCommand buildUpdateCommand(String vorgangId, String relationId, CommandBody body) {
-		return CreateCommand.builder()
-				.vorgangId(vorgangId)
-				.relationId(relationId)
-				.order(CommandOrder.UPDATE_ATTACHED_ITEM.name())
-				.body(body)
-				.build();
-	}
-
-	public Command setWiedervorlageDone(Wiedervorlage wiedervorlage, boolean done) {
-		return commandService.createCommand(createPatchCommand(wiedervorlage, done), wiedervorlage.getVersion());
-	}
-
-	CreateCommand createPatchCommand(Wiedervorlage wiedervorlage, boolean done) {
-		return getPatchCommandBuilder(wiedervorlage).body(createSetDoneBody(done)).relationVersion(wiedervorlage.getVersion()).build();
-	}
-
-	CreateCommand.CreateCommandBuilder getPatchCommandBuilder(Wiedervorlage wiedervorlage) {
-		return CreateCommand.builder()
-				.relationId(wiedervorlage.getId())
-				.vorgangId(wiedervorlage.getVorgangId())
-				.order(CommandOrder.PATCH_ATTACHED_ITEM.name());
-	}
-
-	private VorgangAttachedItem createSetDoneBody(boolean value) {
-		return VorgangAttachedItem.builder().itemName(Wiedervorlage.class.getSimpleName()).item(Map.of(Wiedervorlage.DONE_FIELD, value)).build();
-	}
-
-	public Stream<VorgangAttachedItem> findLoeschAnforderung(String vorgangId) {
-		return vorgangAttachedItemRemoteService.findVorgangAttachedItem(vorgangId, LOESCH_ANFORDERUNG_ITEM_NAME);
-	}
-
-	public VorgangAttachedItem getById(String id) {
-		return vorgangAttachedItemRemoteService.getById(id);
-	}
-
-	public Command deleteAttachedItem(VorgangAttachedItem vorgangAttachedItem) {
-		var createCommand = buildDeleteCommand(vorgangAttachedItem);
-
-		return commandService.createCommand(createCommand, vorgangAttachedItem.getVersion());
-	}
-
-	CreateCommand buildDeleteCommand(VorgangAttachedItem vorgangAttachedItem) {
-		return CreateCommand.builder()
-				.vorgangId(vorgangAttachedItem.getVorgangId())
-				.relationId(vorgangAttachedItem.getId())
-				.relationVersion(vorgangAttachedItem.getVersion())
-				.order(CommandOrder.DELETE_ATTACHED_ITEM.name())
-				.body(vorgangAttachedItem)
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/AlfaUserWithFileId.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/AlfaUserWithFileId.java
deleted file mode 100644
index 018c7e0151a4994f97cc89c5206a201d14409ef2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/AlfaUserWithFileId.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-
-import org.springframework.security.core.GrantedAuthority;
-
-import de.ozgcloud.alfa.common.user.UserProfile;
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-public class AlfaUserWithFileId {
-	private UserProfile user;
-
-	private FileId fileId;
-
-	public Collection<GrantedAuthority> getAuthorities() {
-		return Objects.nonNull(user) ? user.getAuthorities() : List.of();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileContentTypeConstraint.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileContentTypeConstraint.java
deleted file mode 100644
index e71623d5568b0322ff4d4b9d50a0e074fb300079..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileContentTypeConstraint.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import jakarta.validation.Constraint;
-import jakarta.validation.Payload;
-
-@Constraint(validatedBy = { UploadBinaryFileContentTypeValidator.class })
-@Target({ TYPE })
-@Retention(RUNTIME)
-@Documented
-public @interface BinaryFileContentTypeConstraint {
-
-	String message() default ValidationMessageCodes.FIELD_FILE_CONTENT_TYPE_INVALID;
-
-	Class<?>[] groups() default {};
-
-	Class<? extends Payload>[] payload() default {};
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileController.java
deleted file mode 100644
index 6c5328cf8edd25cfdf367b0c77dac539af9ab31f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileController.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.concurrent.Future;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestPart;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-@RestController
-@RequestMapping(BinaryFileController.PATH)
-public class BinaryFileController {
-
-	static final String PATH = "/api/binaryFiles"; // NOSONAR
-
-	@Autowired
-	private BinaryFileService service;
-	@Autowired
-	private BinaryFileModelAssembler modelAssembler;
-	@Autowired
-	private FileIdMapper fileIdMapper;
-
-	@GetMapping("/{fileId}")
-	public EntityModel<OzgFile> getFile(@PathVariable FileId fileId) {
-		return modelAssembler.toModel(service.getFile(fileId));
-	}
-
-	@PostMapping("/{vorgangId}/{field}/file")
-	public Future<ResponseEntity<Void>> uploadFile(@PathVariable String vorgangId, @PathVariable String field, @RequestPart MultipartFile file) {
-		var fileIdFuture = service.uploadFile(buildBinaryFileUploadRequest(vorgangId, field, file));
-
-		return fileIdFuture.thenApply(fileId -> ResponseEntity.created(linkTo(BinaryFileController.class).slash(fileId).toUri()).build());
-	}
-
-	UploadBinaryFileRequest buildBinaryFileUploadRequest(String vorgangId, String field, MultipartFile file) {
-		return UploadBinaryFileRequest.builder()
-				.vorgangId(vorgangId)
-				.field(field)
-				.uploadStream(getInputStream(file))
-				.name(file.getOriginalFilename())
-				.contentType(file.getContentType())
-				.size(file.getSize())
-				.build();
-	}
-
-	InputStream getInputStream(MultipartFile file) {
-		try {
-			return file.getInputStream();
-		} catch (IOException e) {
-			throw new TechnicalException("Error reading File data as stream.", e);
-		}
-	}
-
-	public CollectionModel<EntityModel<OzgFile>> getFiles(List<FileId> fileIds) {
-		var files = service.getFiles(mapToFileId(fileIds)).toList();
-
-		return modelAssembler.toCollectionModel(files);
-	}
-
-	private List<FileId> mapToFileId(List<FileId> fileIds) {
-		return fileIds.stream()
-				.map(fileIdMapper::toString)
-				.map(FileId::from)
-				.toList();
-	}
-
-	@PreAuthorize("@downloadAuthenticationHandler.canDownloadFile(#fileId)")
-	@GetMapping(value = "/{fileId}", produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE,
-			"images/*" }, consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE)
-	public ResponseEntity<StreamingResponseBody> getFileData(@PathVariable FileId fileId) {
-		var ozgFile = service.getFile(fileId);
-
-		return buildResponseEntity(ozgFile, createDownloadStreamingBody(fileId));
-	}
-
-	StreamingResponseBody createDownloadStreamingBody(FileId fileId) {
-		return out -> service.writeFileContent(fileId, out);
-	}
-
-	ResponseEntity<StreamingResponseBody> buildResponseEntity(OzgFile ozgFile, StreamingResponseBody responseBody) {
-		return ResponseEntity.ok()
-				.header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s", ozgFile.getName()))
-				.contentLength(ozgFile.getSize())
-				.contentType(MediaType.valueOf(ozgFile.getContentType()))
-				.body(responseBody);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserver.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserver.java
deleted file mode 100644
index 1361e587ea37993a3c78251cf3c4fab5ac39e6a2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserver.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.concurrent.CompletableFuture;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcGetBinaryFileDataResponse;
-import io.grpc.stub.StreamObserver;
-import lombok.AccessLevel;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
-class BinaryFileDownloadStreamObserver implements StreamObserver<GrpcGetBinaryFileDataResponse> {
-
-	private final CompletableFuture<Boolean> streamFuture;
-	private final OutputStream out;
-
-	@Override
-	public void onNext(GrpcGetBinaryFileDataResponse response) {
-		writeToStream(response.getFileContent().toByteArray());
-	}
-
-	void writeToStream(byte[] contentPart) {
-		try {
-			out.write(contentPart);
-		} catch (IOException e) {
-			throw new TechnicalException("Download file error writing on outputstream", e);
-		}
-	}
-
-	@Override
-	public void onError(Throwable t) {
-		streamFuture.completeExceptionally(t);
-	}
-
-	@Override
-	public void onCompleted() {
-		streamFuture.complete(true);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileMaxSizeConstraint.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileMaxSizeConstraint.java
deleted file mode 100644
index d4750254af87d459414342030a8bac97f3abddf9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileMaxSizeConstraint.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import jakarta.validation.Constraint;
-import jakarta.validation.Payload;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-
-@Constraint(validatedBy = { UploadBinaryFileSizeValidator.class })
-@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE })
-@Retention(RUNTIME)
-@Documented
-public @interface BinaryFileMaxSizeConstraint {
-	String message() default ValidationMessageCodes.FIELD_FILE_SIZE_EXCEEDED;
-
-	Class<?>[] groups() default {};
-
-	Class<? extends Payload>[] payload() default {};
-
-	int max() default UploadBinaryFileSizeValidator.DEFAULT_MAX_SIZE;
-
-	String unit() default UploadBinaryFileSizeValidator.DEFAULT_UNIT_STRING;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssembler.java
deleted file mode 100644
index 1f9e5345231f8f619b0951c4480d12f9cc5d2b78..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssembler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.file.OzgFile;
-
-@Component
-public class BinaryFileModelAssembler implements RepresentationModelAssembler<OzgFile, EntityModel<OzgFile>> {
-
-	static final String REL_DOWNLOAD = "download";
-
-	@Override
-	public EntityModel<OzgFile> toModel(OzgFile file) {
-		var selfLink = linkTo(BinaryFileController.class).slash(file.getId());
-
-		return ModelBuilder.fromEntity(file).addLink(selfLink.withSelfRel())
-				.addLink(linkTo(BinaryFileController.class).slash(file.getId()).withRel(REL_DOWNLOAD))
-				.buildModel();
-	}
-
-	public CollectionModel<EntityModel<OzgFile>> toCollectionModel(Stream<OzgFile> entities) {
-		return CollectionModel.of(entities.map(this::toModel).toList(), linkTo(BinaryFileController.class).withSelfRel());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileProperties.java
deleted file mode 100644
index 5a7985935083a6d2565baa40231df49086c7a517..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileProperties.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.unit.DataSize;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties("ozgcloud.upload")
-class BinaryFileProperties {
-
-	/**
-	 * Max file data size to upload
-	 */
-	private Map<String, DataSize> maxFileSize = Collections.emptyMap();
-
-	/**
-	 * Supported file content types to upload
-	 */
-	private Map<String, List<String>> contentTypes = Collections.emptyMap();
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteService.java
deleted file mode 100644
index df2ae12de90416fb801fbda5ed8ccb05120d5311..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteService.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.OutputStream;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.google.protobuf.ByteString;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileMapper;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcBinaryFilesRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcFindFilesResponse;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcGetBinaryFileDataRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class BinaryFileRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private BinaryFileServiceBlockingStub serviceStub;
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private BinaryFileServiceStub asyncServiceStub;
-	@Autowired
-	private OzgFileMapper mapper;
-	@Autowired
-	private FileIdMapper fileIdMapper;
-
-	@Autowired
-	private ContextService contextService;
-
-	static final int CHUNK_SIZE = 255 * 1024;
-
-	public OzgFile getFile(FileId fileId) {
-		var response = serviceStub.findBinaryFilesMetaData(buildGrpcBinaryFileRequest(fileId));
-
-		return mapOzgFile(response.getFile(0));
-	}
-
-	private OzgFile mapOzgFile(GrpcOzgFile file) {
-		return mapper.toFile(file);
-	}
-
-	GrpcBinaryFilesRequest buildGrpcBinaryFileRequest(FileId fileId) {
-		return GrpcBinaryFilesRequest.newBuilder()
-				.addFileId(fileId.toString())
-				.setContext(contextService.createCallContext())
-				.build();
-	}
-
-	public CompletableFuture<FileId> uploadFile(UploadBinaryFileRequest uploadBinaryFileRequest) {
-		var fileIdFuture = new CompletableFuture<FileId>();
-		var responseObserver = createUploadBinaryFileObserver(fileIdFuture, uploadBinaryFileRequest);
-
-		asyncServiceStub.uploadBinaryFileAsStream(responseObserver);
-
-		return fileIdFuture;
-	}
-
-	BinaryFileUploadStreamObserver createUploadBinaryFileObserver(CompletableFuture<FileId> fileIdFuture,
-			UploadBinaryFileRequest uploadBinaryFileRequest) {
-		var metadataRequest = buildMetaDataRequest(uploadBinaryFileRequest);
-		var streamer = new ChunkedFileSender<>(uploadBinaryFileRequest.getUploadStream(), CHUNK_SIZE, this::buildChunkRequest, metadataRequest);
-		return new BinaryFileUploadStreamObserver(fileIdFuture, streamer);
-	}
-
-	GrpcUploadBinaryFileRequest buildMetaDataRequest(UploadBinaryFileRequest uploadBinaryFileRequest) {
-		return GrpcUploadBinaryFileRequest.newBuilder()
-				.setMetadata(GrpcUploadBinaryFileMetaData.newBuilder()
-						.setContext(contextService.createCallContext())
-						.setVorgangId(uploadBinaryFileRequest.getVorgangId())
-						.setField(uploadBinaryFileRequest.getField())
-						.setContentType(uploadBinaryFileRequest.getContentType())
-						.setSize(uploadBinaryFileRequest.getSize())
-						.setFileName(uploadBinaryFileRequest.getName()))
-				.build();
-	}
-
-	GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes) {
-		return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes))).build();
-	}
-
-	public Stream<OzgFile> getFiles(List<FileId> fileIds) {
-		var response = serviceStub.findBinaryFilesMetaData(buildBinaryFilesRequest(fileIds));
-
-		return mapGrpcFindFilesRespones(response);
-	}
-
-	private Stream<OzgFile> mapGrpcFindFilesRespones(GrpcFindFilesResponse response) {
-		return response.getFileList().stream().map(mapper::toFile);
-	}
-
-	GrpcBinaryFilesRequest buildBinaryFilesRequest(List<FileId> fileIds) {
-		return GrpcBinaryFilesRequest.newBuilder()
-				.addAllFileId(mapFileIds(fileIds))
-				.setContext(contextService.createCallContext())
-				.build();
-	}
-
-	private List<String> mapFileIds(List<FileId> fileIds) {
-		return fileIds.stream().map(fileIdMapper::toString).toList();
-	}
-
-	public void writeFileContent(FileId fileId, OutputStream out) {
-		var streamFuture = new CompletableFuture<Boolean>();
-		var responseObserver = createDownloadBinaryFileObserver(streamFuture, out);
-
-		asyncServiceStub.getBinaryFileContent(buildGrpcGetBinaryFileDataRequest(fileId), responseObserver);
-
-		waitUntilFutureToComplete(streamFuture);
-	}
-
-	void waitUntilFutureToComplete(CompletableFuture<Boolean> streamFuture) {
-		try {
-			streamFuture.get(10, TimeUnit.MINUTES);
-		} catch (InterruptedException e) {
-			Thread.currentThread().interrupt();
-			throw new TechnicalException(e.getMessage(), e);
-		} catch (ExecutionException | TimeoutException e) {
-			throw new TechnicalException(e.getMessage(), e);
-		}
-	}
-
-	BinaryFileDownloadStreamObserver createDownloadBinaryFileObserver(CompletableFuture<Boolean> streamFuture, OutputStream out) {
-		return new BinaryFileDownloadStreamObserver(streamFuture, out);
-	}
-
-	private GrpcGetBinaryFileDataRequest buildGrpcGetBinaryFileDataRequest(FileId fileId) {
-		return GrpcGetBinaryFileDataRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setFileId(fileIdMapper.toString(fileId)).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileService.java
deleted file mode 100644
index ceb1a44974b4ace1b988201fc7eecf26e0375c96..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.OutputStream;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Stream;
-
-import jakarta.validation.Valid;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.common.file.OzgFile;
-
-@Service
-@Validated
-public class BinaryFileService {
-
-	@Autowired
-	private BinaryFileRemoteService remoteService;
-
-	public CompletableFuture<FileId> uploadFile(@Valid UploadBinaryFileRequest uploadBinaryFileRequest) {
-		return remoteService.uploadFile(uploadBinaryFileRequest);
-	}
-
-	public Stream<OzgFile> getFiles(List<FileId> fileIds) {
-		return remoteService.getFiles(fileIds);
-	}
-
-	public void writeFileContent(FileId fileId, OutputStream out) {
-		remoteService.writeFileContent(fileId, out);
-	}
-
-	public OzgFile getFile(FileId fileId) {
-		return remoteService.getFile(fileId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserver.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserver.java
deleted file mode 100644
index 04dce33e8855c1e34a5c1024b9c3bf1790e0a97b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserver.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.concurrent.CompletableFuture;
-
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse;
-import io.grpc.stub.ClientCallStreamObserver;
-import io.grpc.stub.ClientResponseObserver;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
-class BinaryFileUploadStreamObserver implements ClientResponseObserver<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> {
-
-	private final CompletableFuture<FileId> fileIdFuture;
-	private final ChunkedFileSender<GrpcUploadBinaryFileRequest> fileStreamer;
-
-	@Getter
-	private String fileId;
-
-	private ClientCallStreamObserver<GrpcUploadBinaryFileRequest> requestObserver;
-
-	@Override
-	public void beforeStart(ClientCallStreamObserver<GrpcUploadBinaryFileRequest> requestStream) {
-		this.requestObserver = requestStream;
-		requestObserver.setOnReadyHandler(() -> fileStreamer.sendChunkTo(requestObserver));
-	}
-
-	@Override
-	public void onNext(GrpcUploadBinaryFileResponse response) {
-		fileId = response.getFileId();
-	}
-
-	@Override
-	public void onError(Throwable t) {
-		fileIdFuture.completeExceptionally(t);
-	}
-
-	@Override
-	public void onCompleted() {
-		fileIdFuture.complete(FileId.from(fileId));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSender.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSender.java
deleted file mode 100644
index b2269c0f6e104321106faf5427e191fc328144c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSender.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.Function;
-
-import org.apache.commons.io.IOUtils;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import io.grpc.stub.CallStreamObserver;
-import lombok.AllArgsConstructor;
-
-@AllArgsConstructor
-class ChunkedFileSender<T> {
-
-	private final AtomicBoolean hasUploadFile = new AtomicBoolean(true);
-	private final InputStream uploadStream;
-	private final int chunkSize;
-	private final Function<byte[], T> buildChunkRequest;
-	private T requestMetadata;
-
-	public void sendChunkTo(CallStreamObserver<T> streamObserver) {
-		if (hasUploadFile.get()) {
-			sendMetadata(streamObserver);
-			int size = sendNextChunk(streamObserver);
-			if (size < chunkSize) {
-				handleFileEndReached(streamObserver);
-			}
-		}
-	}
-
-	private void sendMetadata(CallStreamObserver<T> streamObserver) {
-		if (requestMetadata != null) {
-			streamObserver.onNext(requestMetadata);
-			requestMetadata = null;
-		}
-	}
-
-	private int sendNextChunk(CallStreamObserver<T> streamObserver) {
-		byte[] content = readFromStream();
-		var size = content.length;
-		if (size > 0) {
-			streamObserver.onNext(buildChunkRequest.apply(content));
-		}
-		return size;
-	}
-
-	private byte[] readFromStream() {
-		try {
-			return uploadStream.readNBytes(chunkSize);
-		} catch (IOException e) {
-			throw new TechnicalException("Error on sending a single chunk", e);
-		}
-	}
-
-	private void handleFileEndReached(CallStreamObserver<T> streamObserver) {
-		IOUtils.closeQuietly(uploadStream);
-		streamObserver.onCompleted();
-		hasUploadFile.getAndSet(false);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandler.java
deleted file mode 100644
index 04785d469a9e5b45ff4c5536b83d6141a3110b35..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.Objects;
-
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Component;
-
-@Component
-public class DownloadAuthenticationHandler {
-
-	public boolean canDownloadFile(FileId fileId) {
-		return check(fileId, SecurityContextHolder.getContext().getAuthentication());
-	}
-
-	boolean check(FileId fileId, Authentication auth) {
-		if (auth instanceof UsernamePasswordAuthenticationToken userPasswordToken) {
-			var user = (AlfaUserWithFileId) userPasswordToken.getPrincipal();
-			return Objects.nonNull(fileId) && fileId.equals(user.getFileId()) && auth.isAuthenticated();
-		}
-
-		return auth.isAuthenticated();
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DynamicViolationParameter.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DynamicViolationParameter.java
deleted file mode 100644
index 6d0bbe8393feba029712abb2527fd665ab7f2baa..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/DynamicViolationParameter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-public class DynamicViolationParameter {
-
-	@Builder.Default
-	private Map<String, Object> map = new HashMap<>();
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileId.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileId.java
deleted file mode 100644
index 8a98a3054af3d1481f44e3964eae34d800e91d37..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileId.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.UUID;
-
-import de.ozgcloud.common.datatype.StringBasedValue;
-import lombok.EqualsAndHashCode;
-
-@EqualsAndHashCode(callSuper = true)
-public class FileId extends StringBasedValue {
-
-	private static final long serialVersionUID = 1L;
-
-	FileId(String fileId) {
-		super(fileId);
-	}
-
-	public static FileId createNew() {
-		return from(UUID.randomUUID().toString());
-	}
-
-	public static FileId from(String fileId) {
-		return new FileId(fileId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileIdMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileIdMapper.java
deleted file mode 100644
index d3fc71d7698f2b78da97f0a0b39f2cbe41e19546..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/FileIdMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import org.mapstruct.Mapper;
-
-@Mapper
-public interface FileIdMapper {
-
-	default FileId toFileId(String fileId) {
-		return FileId.from(fileId);
-	}
-
-	default String toString(FileId fileId) {
-		return fileId.toString();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidator.java
deleted file mode 100644
index d1fc3a35eea483a6590889a0a194ce21b0248646..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
-import jakarta.validation.ConstraintValidator;
-import jakarta.validation.ConstraintValidatorContext;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-public class UploadBinaryFileContentTypeValidator implements ConstraintValidator<BinaryFileContentTypeConstraint, UploadBinaryFileRequest> {
-
-	private final BinaryFileProperties properties;
-
-	@Override
-	public boolean isValid(UploadBinaryFileRequest uploadRequest, ConstraintValidatorContext context) {
-		var contentTypes = getConfiguredContentTypes(uploadRequest.getField());
-		return contentTypes.isEmpty() || contentTypes.contains(uploadRequest.getContentType());
-	}
-
-	Collection<String> getConfiguredContentTypes(String field) {
-		return Optional.ofNullable(properties.getContentTypes().get(field)).orElse(Collections.emptyList());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileRequest.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileRequest.java
deleted file mode 100644
index 83dcd721d537d96afac700704ae5a4e0905eb2b6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileRequest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.InputStream;
-
-import org.springframework.validation.annotation.Validated;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-@Validated
-@BinaryFileMaxSizeConstraint
-@BinaryFileContentTypeConstraint
-class UploadBinaryFileRequest {
-
-	private String vorgangId;
-	private String field;
-
-	private String name;
-	private String contentType;
-	private long size;
-	private InputStream uploadStream;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidator.java
deleted file mode 100644
index 791c7889e63cb8b45d480896fa6f2384cca29f7c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidator.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.util.Map;
-import java.util.Optional;
-
-import jakarta.validation.ConstraintValidator;
-import jakarta.validation.ConstraintValidatorContext;
-
-import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorContext;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.unit.DataSize;
-import org.springframework.util.unit.DataUnit;
-
-class UploadBinaryFileSizeValidator implements ConstraintValidator<BinaryFileMaxSizeConstraint, UploadBinaryFileRequest> {
-
-	static final String DEFAULT_UNIT_STRING = "MB";
-	static final DataUnit DEFAULT_UNIT = DataUnit.fromSuffix(DEFAULT_UNIT_STRING);
-
-	static final int DEFAULT_MAX_SIZE = 40;
-
-	private final DataSize defaultDataSize = DataSize.of(DEFAULT_MAX_SIZE, DEFAULT_UNIT);
-
-	@Autowired
-	private BinaryFileProperties binaryFileProperties;
-
-	@Override
-	public boolean isValid(UploadBinaryFileRequest uploadRequest, ConstraintValidatorContext context) {
-		var maxValidSize = getMaxValidSize(uploadRequest.getField());
-
-		setDynamicPayload(buildDynamicPayload(maxValidSize), context);
-
-		return isFileSizeValid(DataSize.ofBytes(uploadRequest.getSize()), maxValidSize);
-	}
-
-	private boolean isFileSizeValid(DataSize uploadFileSize, DataSize maxFileSize) {
-		return uploadFileSize.toBytes() <= maxFileSize.toBytes();
-	}
-
-	DataSize getMaxValidSize(String field) {
-		return Optional.ofNullable(binaryFileProperties.getMaxFileSize().get(field)).orElseGet(() -> defaultDataSize);
-	}
-
-	private void setDynamicPayload(DynamicViolationParameter dynamicViolationParameter, ConstraintValidatorContext context) {
-		var unwrappedContext = getUnwrappedContext(HibernateConstraintValidatorContext.class, context);
-		unwrappedContext.withDynamicPayload(dynamicViolationParameter);
-	}
-
-	<T> T getUnwrappedContext(Class<T> unwrapTo, ConstraintValidatorContext context) {
-		return context.unwrap(unwrapTo);
-	}
-
-	private DynamicViolationParameter buildDynamicPayload(DataSize maxFileSize) {
-		return DynamicViolationParameter.builder().map(Map.of("max", maxFileSize.toMegabytes())).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptor.java
deleted file mode 100644
index a0cc5e0d9b6ddd39b706e4df5805cb3a7ab44f39..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptor.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-import io.grpc.CallOptions;
-import io.grpc.Channel;
-import io.grpc.ClientCall;
-import io.grpc.ClientInterceptor;
-import io.grpc.ForwardingClientCall.SimpleForwardingClientCall;
-import io.grpc.Metadata;
-import io.grpc.MethodDescriptor;
-import net.devh.boot.grpc.client.interceptor.GrpcGlobalClientInterceptor;
-
-@GrpcGlobalClientInterceptor
-public class CallContextAttachingInterceptor implements ClientInterceptor {
-
-	@Autowired
-	private ContextService contextService;
-
-	@Override
-	public <A, B> ClientCall<A, B> interceptCall(MethodDescriptor<A, B> method, CallOptions callOptions, Channel next) {
-		return new CallContextAttachingClientCall<>(next.newCall(method, callOptions));
-	}
-
-	final class CallContextAttachingClientCall<A, B> extends SimpleForwardingClientCall<A, B> {
-
-		protected CallContextAttachingClientCall(ClientCall<A, B> delegate) {
-			super(delegate);
-		}
-
-		@Override
-		public void start(Listener<B> responseListener, Metadata headers) {
-			headers.merge(contextService.buildCallContextMetadata());
-			super.start(responseListener, headers);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextMapper.java
deleted file mode 100644
index 857a54e3577573fcc8f6940188a99b1de7060ece..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/CallContextMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import org.mapstruct.Mapper;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-
-@Mapper
-public abstract class CallContextMapper {
-
-	@Autowired
-	private ContextService contextService;
-
-	public GrpcCallContext createCallContext() {
-		return contextService.createCallContext();
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/ContextService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/ContextService.java
deleted file mode 100644
index 360fa859ddff35b0e6cd773f04406b6516fe62c7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/callcontext/ContextService.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import static de.ozgcloud.alfa.common.GrpcUtil.*;
-
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.RequestAttributes;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-import de.ozgcloud.vorgang.grpc.command.GrpcUser;
-import io.grpc.Metadata;
-import lombok.extern.log4j.Log4j2;
-
-@Service
-@Log4j2
-public class ContextService {
-
-	static final String KEY_USER_ID = "USER_ID-bin";
-	static final String KEY_USER_NAME = "USER_NAME-bin";
-	public static final String KEY_CLIENT_NAME = "CLIENT_NAME-bin";
-	public static final String KEY_REQUEST_ID = "REQUEST_ID-bin";
-	static final String KEY_ACCESS_LIMITED_ORGAID = "ACCESS_LIMITED_TO_ORGANISATORISCHEEINHEITENID-bin";
-	static final String KEY_ACCESS_LIMITED = "ACCESS_LIMITED-bin";
-
-	@Autowired
-	private ApplicationContext context;
-
-	@Autowired
-	private CurrentUserService userService;
-	@Autowired(required = false)
-	private RequestAttributes reqAttributes;
-
-	public GrpcCallContext createCallContext() {
-		return GrpcCallContext.newBuilder()
-				.setClient(context.getId())
-				.setUser(createUser())
-				.setRequestId(getRequestId())
-				.build();
-	}
-
-	public String getClientName() {
-		return context.getId();
-	}
-
-	private GrpcUser createUser() {
-		var user = userService.getUser();
-
-		return GrpcUser.newBuilder()
-				.setId(user.getId().toString())
-				.setName(user.getFullName())
-				.build();
-	}
-
-	public Metadata buildCallContextMetadata() {
-		var user = userService.getUser();
-		var metadata = buildCallContextWithoutUser();
-
-		Optional.ofNullable(user.getId()).map(id -> id.toString().getBytes())
-				.ifPresentOrElse(bytes -> metadata.put(createKeyOf(KEY_USER_ID), bytes), () -> LOG.warn("Missing value 'userid'"));
-		Optional.ofNullable(user.getFullName()).map(String::getBytes)
-				.ifPresentOrElse(bytes -> metadata.put(createKeyOf(KEY_USER_NAME), bytes), () -> LOG.warn("Missing value 'fullname'"));
-
-		user.getOrganisationseinheitIds().stream().map(String::getBytes)
-				.forEach(bytes -> metadata.put(createKeyOf(KEY_ACCESS_LIMITED_ORGAID), bytes));
-
-		return metadata;
-	}
-
-	public Metadata buildCallContextWithoutUser() {
-		var metadata = new Metadata();
-
-		Optional.ofNullable(context.getId()).map(String::getBytes)
-				.ifPresentOrElse(bytes -> metadata.put(createKeyOf(KEY_CLIENT_NAME), bytes), () -> LOG.warn("Missing value 'client name'"));
-
-		metadata.put(createKeyOf(KEY_REQUEST_ID), getRequestId().getBytes());
-		metadata.put(createKeyOf(KEY_ACCESS_LIMITED), isOrganisationEinheitenIdCheckNecessary());
-
-		return metadata;
-	}
-
-	private byte[] isOrganisationEinheitenIdCheckNecessary() {
-		var hasRoleWithNoCheckNecessary = userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)
-				|| userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-
-		return Boolean.toString(!hasRoleWithNoCheckNecessary).getBytes();
-	}
-
-	String getRequestId() {
-		return Objects.isNull(reqAttributes) ? "- no request scope -" : reqAttributes.getRequestId();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttribute.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttribute.java
deleted file mode 100644
index b8dc1197c5fea34b92e6cc46c5dcfbe271657d65..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttribute.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Getter
-public enum ClientAttribute {
-
-	WIEDERVORLAGE_NEXT_FRIST("nextWiedervorlageFrist", ClientName.ALFA),
-	HAS_POSTFACH_NACHRICHT("hasPostfachNachricht", ClientName.NACHRICHTEN_MANAGER),
-	HAS_NEW_POSTFACH_NACHRICHT("hasNewPostfachNachricht", ClientName.NACHRICHTEN_MANAGER),
-	ANTRAG_BEWILLIGT("antragBewilligt", ClientName.BESCHEID_MANAGER),
-	ARCHIVING("ARCHIVING", ClientName.ARCHIVE_MANAGER);
-
-	private final String attributeName;
-	private final ClientName clientName;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteService.java
deleted file mode 100644
index 46a5b3dff181958fbda8a6444c8e9a6f37e7eedd..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcUpdateClientAttributeRequest;
-import lombok.extern.log4j.Log4j2;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-@Log4j2
-class ClientAttributeRemoteService {
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private ClientAttributeServiceBlockingStub service;
-
-	void setBooleanReadOnlyClientAttribute(String vorgangId, ClientAttribute clientAttribute, boolean value) {
-		try {
-			service.update(buildRequest(vorgangId, clientAttribute, value));
-		} catch (RuntimeException e) {
-			LOG.error("Error on resetting new Postfachnachrichten.", e);
-		}
-	}
-
-	GrpcUpdateClientAttributeRequest buildRequest(String vorgangId, ClientAttribute clientAttribute, boolean value) {
-		return GrpcUpdateClientAttributeRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setAttribute(
-						GrpcClientAttribute.newBuilder().setValue(
-								GrpcClientAttributeValue.newBuilder().setBoolValue(value).build())
-								.setClientName(clientAttribute.getClientName().toString())
-								.setAttributeName(clientAttribute.getAttributeName())
-								.build())
-				.build();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeService.java
deleted file mode 100644
index 3920a077b01adce74965354f6bac185112d3fc3c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import org.springframework.stereotype.Service;
-
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-public class ClientAttributeService {
-
-	private final ClientAttributeRemoteService remoteService;
-
-	public void resetPostfachNachricht(String vorgangId) {
-		remoteService.setBooleanReadOnlyClientAttribute(vorgangId, ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, false);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtils.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtils.java
deleted file mode 100644
index 94cd6608537625656443ecb2b33d8a9c1a18da02..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtils.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import java.util.List;
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ClientAttributeUtils {
-
-	public static Optional<GrpcClientAttributeValue> findGrpcValue(ClientAttribute attribute,
-			List<GrpcClientAttribute> clientAttributes) {
-		return clientAttributes.stream()
-				.filter(grpcAttribute -> StringUtils.equals(grpcAttribute.getAttributeName(), attribute.getAttributeName())
-						&& StringUtils.equals(grpcAttribute.getClientName(), attribute.getClientName().toString()))
-				.map(GrpcClientAttribute::getValue)
-				.findFirst();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientName.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientName.java
deleted file mode 100644
index 0feaa9190f9d25dceaa01a525c059bf6077ab140..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/clientattribute/ClientName.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-public enum ClientName {
-	ALFA("Alfa"),
-	NACHRICHTEN_MANAGER("OzgCloud_NachrichtenManager"),
-	BESCHEID_MANAGER("OzgCloud_BescheidManager"),
-	ARCHIVE_MANAGER("OzgCloud_ArchiveManager");
-
-	private final String text;
-
-	@Override
-	public String toString() {
-		return text;
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java
deleted file mode 100644
index 21bb1c9bde7590193d9f78598e95181070685b10..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.time.ZonedDateTime;
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Builder(toBuilder = true)
-@Getter
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class Command {
-
-	@JsonIgnore
-	private String id;
-	private ZonedDateTime createdAt;
-	private ZonedDateTime finishedAt;
-
-	@JsonIgnore
-	@LinkedUserProfileResource
-	private UserId createdBy;
-	private String createdByName;
-
-	@JsonIgnore
-	private CommandStatus status;
-	private String errorMessage;
-
-	@JsonIgnore
-	private String vorgangId;
-	@JsonIgnore
-	private String relationId;
-
-	private String order;
-
-	private RedirectRequest redirectRequest;
-
-	private Map<String, ?> body;
-
-	private String createdResource;
-
-	@JsonIgnore
-	public CommandOrder getCommandOrder() {
-		return CommandOrder.fromOrder(order);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
deleted file mode 100644
index eff4c6d7cdb8e907412b0f9a98ac9c793cfdbc59..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
-
-import de.ozgcloud.alfa.aktenzeichen.AktenzeichenCommandBody;
-import de.ozgcloud.alfa.bescheid.Bescheid;
-import de.ozgcloud.alfa.bescheid.BescheidDocumentFromFileBody;
-import de.ozgcloud.alfa.collaboration.CollaborationCommandBody;
-import de.ozgcloud.alfa.kommentar.Kommentar;
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
-import de.ozgcloud.alfa.postfach.PostfachMail;
-import de.ozgcloud.alfa.vorgang.AssignUserCommandBody;
-import de.ozgcloud.alfa.vorgang.ProcessVorgangBody;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-
-@JsonSubTypes({
-		@Type(value = PostfachMail.class, name = "SEND_POSTFACH_MAIL"),
-		@Type(value = PostfachMail.class, name = "SEND_POSTFACH_NACHRICHT"),
-		@Type(value = PostfachMail.class, name = "RESEND_POSTFACH_MAIL"),
-		@Type(value = AssignUserCommandBody.class, name = "ASSIGN_USER"),
-		@Type(value = RedirectRequest.class, name = "REDIRECT_VORGANG"),
-		@Type(value = Wiedervorlage.class, name = "CREATE_WIEDERVORLAGE"),
-		@Type(value = Wiedervorlage.class, name = "EDIT_WIEDERVORLAGE"),
-		@Type(value = Kommentar.class, name = "CREATE_KOMMENTAR"),
-		@Type(value = Kommentar.class, name = "EDIT_KOMMENTAR"),
-		@Type(value = LoeschAnforderung.class, name = "LOESCH_ANFORDERUNG"),
-		@Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"),
-		@Type(value = Bescheid.class, name = "CREATE_BESCHEID"),
-		@Type(value = Bescheid.class, name = "UPDATE_BESCHEID"),
-		@Type(value = ProcessVorgangBody.class, name = "PROCESS_VORGANG"),
-		@Type(value = AktenzeichenCommandBody.class, name = "SET_AKTENZEICHEN"),
-		@Type(value = BescheidDocumentFromFileBody.class, name = "CREATE_BESCHEID_DOCUMENT_FROM_FILE"),
-		@Type(value = CollaborationCommandBody.class, name = "CREATE_COLLABORATION_REQUEST"),
-		@Type(value = EmptyCommandBody.class, name="ARCHIVE_VORGANG")
-})
-public interface CommandBody {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBodyMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBodyMapper.java
deleted file mode 100644
index 8080f4938b2dc3794bbc88bc75b9b9740531e460..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBodyMapper.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-import org.apache.commons.beanutils.BeanMap;
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandBody;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandBodyField;
-
-@Mapper
-public interface CommandBodyMapper {
-
-	final Predicate<Entry<Object, Object>> IS_NOT_CLASS_VALUE = entry -> !StringUtils.equals("class", entry.getKey().toString());
-	final Predicate<Entry<Object, Object>> IS_NOT_VERSION_VALUE = entry -> !StringUtils.equals("version", entry.getKey().toString());
-
-	static final String VORGANG_ID_PROPERTY = "vorgangId";
-	static final String ITEM_NAME_PROPERTY = "itemName";
-	static final String ITEM_PROPERTY = "item";
-
-	default GrpcCommandBody mapToBody(Map<String, String> bodyMap) {
-		if (Objects.isNull(bodyMap)) {
-			return GrpcCommandBody.getDefaultInstance();
-		}
-
-		var builder = GrpcCommandBody.newBuilder();
-
-		bodyMap.entrySet().stream()
-				.filter(entry -> Objects.nonNull(entry.getValue()))
-				.map(entry -> GrpcCommandBodyField.newBuilder().setName(entry.getKey()).setValue(entry.getValue()).build())
-				.forEach(builder::addField);
-
-		return builder.build();
-	}
-
-	default List<GrpcCommandBodyField> mapToBodyFields(CommandBody body) {
-		if (Objects.isNull(body)) {
-			return Collections.emptyList();
-		}
-
-		return mapToBodyFields(new BeanMap(body));
-	}
-
-	default List<GrpcCommandBodyField> mapToBodyFields(Map<Object, Object> bodyMap) {
-		if (Objects.isNull(bodyMap)) {
-			return Collections.emptyList();
-		}
-
-		return bodyMap.entrySet().stream()
-				.filter(IS_NOT_CLASS_VALUE)
-				.map(this::buildBodyField)
-				.toList();
-	}
-
-	default GrpcCommandBodyField buildBodyField(Entry<Object, Object> entry) {
-		var bodyFieldMapper = GrpcCommandBodyField.newBuilder().setName(entry.getKey().toString());
-
-		if (Objects.nonNull(entry.getValue())) {
-			bodyFieldMapper.setValue(getNullableStringValue(entry.getValue()));
-		}
-		return bodyFieldMapper.build();
-	}
-
-	default String getNullableStringValue(Object entryValue) {
-		return Optional.ofNullable(entryValue).map(Object::toString).orElse(null);
-	}
-
-	default Map<String, String> map(GrpcCommandBody body) {
-		return body.getFieldList().stream().collect(Collectors.toMap(GrpcCommandBodyField::getName, GrpcCommandBodyField::getValue));
-	}
-
-	default Map<String, Object> mapToBodyMap(CreateCommand command, String itemName) {
-		return Map.of(
-				VORGANG_ID_PROPERTY, command.getVorgangId(),
-				ITEM_NAME_PROPERTY, itemName,
-				ITEM_PROPERTY, fromObjectToMap(command.getBody()));
-	}
-
-	@SuppressWarnings("unchecked")
-	public default Map<String, Object> fromObjectToMap(Object object) {
-		if (object instanceof Map<?, ?> objMap) {
-			return (Map<String, Object>) objMap;
-		}
-
-		return new BeanMap(object).entrySet().stream()
-				.filter(IS_NOT_CLASS_VALUE)
-				.filter(IS_NOT_VERSION_VALUE)
-				.collect(HashMap::new, this::addToMap, Map::putAll);
-	}
-
-	default void addToMap(Map<String, Object> map, Entry<Object, Object> entry) {
-		map.put(entry.getKey().toString(), getValue(entry.getValue()));
-	}
-
-	default Object getValue(Object entryValue) {
-		return checkEnumValue(entryValue);
-	}
-
-	private Object checkEnumValue(Object entryValue) {
-		if (entryValue instanceof Enum<?> enumValue) {
-			return enumValue.name();
-		}
-		return entryValue;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java
deleted file mode 100644
index 3313049164d450fc8e54746aaaa9c38426966b31..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandController.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PatchMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(CommandController.COMMANDS_PATH)
-@RequiredArgsConstructor
-public class CommandController {
-
-	public static final String COMMANDS_PATH = "/api/commands"; // NOSONAR
-
-	static final String PARAM_PENDING = "pending";
-	static final String PARAM_VORGANG_ID = "vorgangId";
-
-	private final CommandService service;
-	private final CommandModelAssembler modelAssembler;
-
-	@GetMapping("{commandId}")
-	public EntityModel<Command> getById(@PathVariable String commandId) {
-		return modelAssembler.toModel(service.getById(commandId));
-	}
-
-	@PatchMapping("{commandId}")
-	public ResponseEntity<EntityModel<Command>> revoke(@PathVariable String commandId, @RequestBody StatusPatch patch) {
-		if (patch.getStatus() == CommandStatus.REVOKED) {
-			return ResponseEntity.ok(modelAssembler.toModel(service.revoke(commandId)));
-		}
-		return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
-	}
-
-	@GetMapping(params = { PARAM_PENDING, PARAM_VORGANG_ID })
-	public CollectionModel<EntityModel<Command>> getPendingCommands(@RequestParam boolean pending, @RequestParam String vorgangId) {
-		return modelAssembler.toCollectionModel(service.getPendingCommands(vorgangId));
-	}
-
-	public boolean existsPendingCommands(String relationId) {
-		return service.existsPendingCommands(relationId);
-	}
-
-	@RestController
-	@RequestMapping(CommandByRelationController.COMMAND_BY_RELATION_PATH)
-	@RequiredArgsConstructor
-	public static class CommandByRelationController {
-
-		public static final String COMMAND_BY_RELATION_PATH = "/api/vorgangs/{vorgangId}/relations/{relationId}/{relationVersion}/commands"; // NOSONAR
-
-		private final CommandService service;
-
-		@PostMapping
-		public ResponseEntity<Void> createCommand(@PathVariable String vorgangId, @PathVariable String relationId,
-				@PathVariable long relationVersion, @RequestBody CreateCommand command) {
-			command = command.toBuilder().vorgangId(vorgangId).relationId(relationId).build();
-
-			var created = service.createCommand(command, relationVersion);
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
-		}
-
-		public Command createCommand(CreateCommand command) {
-			return service.createCommand(command);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandHelper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandHelper.java
deleted file mode 100644
index d455f0428da9183934a771e6a662c0e322951205..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandHelper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.function.Predicate;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class CommandHelper {
-
-	static final Predicate<Command> IS_DONE = command -> command.getStatus() == CommandStatus.FINISHED
-			|| command.getStatus() == CommandStatus.REVOKED || command.getStatus() == CommandStatus.ERROR;
-
-	static final Predicate<Command> IS_PENDING = command -> command.getStatus() == CommandStatus.PENDING
-			|| command.getStatus() == CommandStatus.REVOKE_PENDING;
-
-	public static final Predicate<Command> IS_REVOKEABLE = command -> command.getCommandOrder().isRevokeable()
-			&& command.getStatus() == CommandStatus.FINISHED;
-
-	public static final Predicate<Command> IS_LOESCHANFORDERUNG = command -> command.getCommandOrder() == CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN
-			|| command.getCommandOrder() == CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java
deleted file mode 100644
index 7c81d4cb175a320df2fdb4fb9c7e49160b0d66de..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandMapper.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.MappingConstants;
-import org.mapstruct.ValueMapping;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ozgcloud.alfa.common.TimeMapper;
-import de.ozgcloud.alfa.common.callcontext.CallContextMapper;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
-import de.ozgcloud.vorgang.grpc.command.GrpcRedirectRequest;
-
-@Mapper(uses = { CallContextMapper.class, TimeMapper.class, CommandBodyMapper.class, GrpcObjectMapper.class, UserIdMapper.class })
-public abstract class CommandMapper {
-
-	@Autowired
-	private GrpcObjectMapper objectMapper;
-	@Autowired
-	private CommandBodyMapper bodyMapper;
-
-	@ValueMapping(source = "UNRECOGNIZED", target = MappingConstants.NULL)
-	@ValueMapping(source = "UNDEFINED", target = MappingConstants.NULL)
-	@Mapping(source = "orderString", target = "order")
-	@Mapping(target = "body", expression = "java(mapBody(grpcCommand))")
-	abstract Command toCommand(GrpcCommand grpcCommand);
-
-	RedirectRequest mapRedirectRequest(GrpcRedirectRequest request) {
-		var builder = RedirectRequest.builder().email(request.getEmail());
-		if (StringUtils.isNotEmpty(request.getPassword())) {
-			builder.password(request.getPassword().toCharArray());
-		}
-		return builder.build();
-	}
-
-	Map<String, ?> mapBody(GrpcCommand command) {
-		var bodyObject = objectMapper.mapFromGrpc(command.getBodyObj());
-
-		if (MapUtils.isNotEmpty(bodyObject)) {
-			return bodyObject;
-		} else {
-			return bodyMapper.map(command.getBody());
-		}
-	}
-
-	String mapStringtoNull(String in) {
-		return StringUtils.trimToNull(in);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java
deleted file mode 100644
index cd92b52eef33d5fdaf1d13075e77488304a370c4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandModelAssembler.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.bescheid.BescheidController;
-import de.ozgcloud.alfa.bescheid.DocumentController;
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.kommentar.KommentarController;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController;
-
-@Component
-class CommandModelAssembler implements RepresentationModelAssembler<Command, EntityModel<Command>> {
-
-	static final LinkRelation REL_EFFECTED_RESOURCE = LinkRelation.of("effected_resource");
-	static final LinkRelation REL_REVOKE = LinkRelation.of("revoke");
-	static final LinkRelation REL_UPDATE = LinkRelation.of("update");
-
-	static final Predicate<Command> IS_NOT_LOESCH_ANFORDERUNG_AND_REVOKEABLE = command -> !CommandHelper.IS_LOESCHANFORDERUNG.test(command)
-			&& CommandHelper.IS_REVOKEABLE.test(command);
-
-	static final Predicate<Command> HAS_KNOWN_COMMAND_ORDER = command -> command.getCommandOrder() != CommandOrder.UNBEKANNT;
-
-	@Override
-	public EntityModel<Command> toModel(Command command) {
-		return ModelBuilder.fromEntity(command)
-				.addLink(linkTo(CommandController.class).slash(command.getId()).withSelfRel())
-				.ifMatch(CommandHelper.IS_DONE.and(HAS_KNOWN_COMMAND_ORDER))
-				.addLink(() -> effectedResourceLinkByOrderType(command))
-				.ifMatch(CommandHelper.IS_PENDING)
-				.addLink(() -> linkTo(CommandController.class).slash(command.getId()).withRel(REL_UPDATE))
-				.ifMatch(IS_NOT_LOESCH_ANFORDERUNG_AND_REVOKEABLE)
-				.addLink(() -> linkTo(methodOn(CommandController.class).revoke(command.getId(), null)).withRel(REL_REVOKE))
-				.buildModel();
-	}
-
-	Link effectedResourceLinkByOrderType(Command entity) {
-		var type = entity.getCommandOrder().getType();
-
-		WebMvcLinkBuilder linkBuilder = switch (type) {
-			case FORWARDING -> linkTo(methodOn(ForwardingController.class).findByVorgangId(entity.getVorgangId()));
-			case KOMMENTAR -> linkTo(KommentarController.class).slash(entity.getRelationId());
-			case POSTFACH -> linkTo(methodOn(PostfachMailController.class).getAll(entity.getVorgangId()));
-			case VORGANG -> linkTo(VorgangController.class).slash(entity.getRelationId());
-			case VORGANG_LIST -> linkTo(VorgangController.class);
-			case WIEDERVORLAGE -> linkTo(WiedervorlageController.class).slash(entity.getRelationId());
-			case BESCHEID -> linkTo(methodOn(BescheidController.class).getDraft(entity.getVorgangId()));
-			case DOCUMENT -> linkTo(DocumentController.class).slash(entity.getCreatedResource());
-			case COLLABORATION -> linkTo(methodOn(CollaborationByVorgangController.class).getAllByVorgangId(entity.getVorgangId()));
-			case NONE -> throw new IllegalArgumentException("Unknown CommandOrder: " + entity.getOrder());
-		};
-
-		return linkBuilder.withRel(REL_EFFECTED_RESOURCE);
-	}
-
-	public CollectionModel<EntityModel<Command>> toCollectionModel(Stream<Command> entities) {
-		return CollectionModel.of(entities.map(this::toModel).toList(), linkTo(CommandController.class).withSelfRel());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java
deleted file mode 100644
index 5e97b02673c16a2ada39fd7c79ee931507668d46..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandOrder.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-@Getter
-public enum CommandOrder {
-
-	VORGANG_ANNEHMEN(true, Type.VORGANG),
-	VORGANG_VERWERFEN(true, Type.VORGANG),
-	VORGANG_ZURUECKHOLEN(true, Type.VORGANG),
-	VORGANG_BEARBEITEN(true, Type.VORGANG),
-	VORGANG_BESCHEIDEN(true, Type.VORGANG),
-	VORGANG_ZURUECKSTELLEN(true, Type.VORGANG),
-	VORGANG_ABSCHLIESSEN(true, Type.VORGANG),
-	VORGANG_WIEDEREROEFFNEN(true, Type.VORGANG),
-
-	VORGANG_ZUM_LOESCHEN_MARKIEREN(true, Type.VORGANG),
-	VORGANG_LOESCHEN(false, Type.VORGANG_LIST),
-	LOESCH_ANFORDERUNG_ZURUECKNEHMEN(true, Type.VORGANG),
-
-	ASSIGN_USER(false, Type.VORGANG),
-
-	SET_AKTENZEICHEN(false, Type.VORGANG),
-
-	REDIRECT_VORGANG(false, Type.FORWARDING),
-	FORWARD_SUCCESSFULL(false, Type.FORWARDING),
-	FORWARD_FAILED(false, Type.FORWARDING),
-
-	@Deprecated
-	SEND_POSTFACH_MAIL(false, Type.POSTFACH),
-	SEND_POSTFACH_NACHRICHT(false, Type.POSTFACH),
-	RESEND_POSTFACH_MAIL(false, Type.POSTFACH),
-	RECEIVE_POSTFACH_NACHRICHT(false, Type.POSTFACH),
-
-	CREATE_ATTACHED_ITEM(false, Type.VORGANG),
-	UPDATE_ATTACHED_ITEM(false, Type.VORGANG),
-	PATCH_ATTACHED_ITEM(false, Type.VORGANG),
-	DELETE_ATTACHED_ITEM(false, Type.VORGANG),
-
-	CREATE_BESCHEID(false, Type.BESCHEID),
-	DELETE_BESCHEID(false, Type.VORGANG),
-	UPDATE_BESCHEID(false, Type.BESCHEID),
-
-	CREATE_BESCHEID_DOCUMENT(false, Type.DOCUMENT),
-	CREATE_BESCHEID_DOCUMENT_FROM_FILE(false, Type.DOCUMENT),
-	SEND_BESCHEID(false, Type.BESCHEID),
-
-	PROCESS_VORGANG(false, Type.VORGANG),
-
-	CREATE_COLLABORATION_REQUEST(false, Type.COLLABORATION),
-
-	UNBEKANNT(false, Type.NONE);
-
-	enum Type {
-		VORGANG, VORGANG_LIST, WIEDERVORLAGE, KOMMENTAR, FORWARDING, POSTFACH, BESCHEID, DOCUMENT, COLLABORATION, NONE
-	}
-
-	private final boolean revokeable;
-	@Getter(value = AccessLevel.PROTECTED)
-	private final Type type;
-
-	public static CommandOrder fromOrder(String order) {
-		try {
-			return valueOf(order);
-		} catch (IllegalArgumentException e) {
-			return UNBEKANNT;
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java
deleted file mode 100644
index 90a7dbe82cd63d41f3ef77e9143bfadf920c0ca9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandRemoteService.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcExistsPendingCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcFindCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcGetCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcGetPendingCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcRedirectRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcRevokeCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcSetCommandExecutedRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-public class CommandRemoteService {
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private CommandServiceBlockingStub commandServiceStub;
-	@Autowired
-	private CommandMapper mapper;
-	@Autowired
-	private CommandBodyMapper bodyMapper;
-
-	@Autowired
-	private ContextService contextService;
-
-	@Autowired
-	private GrpcObjectMapper objectMapper;
-
-	public Command createCommand(CreateCommand command) {
-		var response = commandServiceStub.createCommand(buildCreateCommandRequest(command));
-
-		return mapper.toCommand(response.getCommand());
-	}
-
-	GrpcCreateCommandRequest buildCreateCommandRequest(CreateCommand command) {
-		var requestBuilder = GrpcCreateCommandRequest.newBuilder()
-				.setCallContext(contextService.createCallContext())
-				.setVorgangId(command.getVorgangId())
-				.setRelationId(command.getRelationId())
-				.setRelationVersion(command.getRelationVersion())
-				.setOrderString(command.getOrder())
-				.addAllBody(bodyMapper.mapToBodyFields(command.getBody()))
-				.setBodyObj(objectMapper.fromMap(bodyMapper.fromObjectToMap(command.getBody())));
-
-		Optional.ofNullable(command.getRedirectRequest()).map(this::buildForwardRequest).ifPresent(requestBuilder::setRedirectRequest);
-
-		return requestBuilder.build();
-	}
-
-	GrpcRedirectRequest buildForwardRequest(RedirectRequest forwardRequest) {
-		var builder = GrpcRedirectRequest.newBuilder().setEmail(forwardRequest.getEmail());
-		if (ArrayUtils.isNotEmpty(forwardRequest.getPassword())) {
-			builder.setPassword(String.valueOf(forwardRequest.getPassword()));
-		}
-		return builder.build();
-	}
-
-	public Command revokeCommand(String commandId) {
-		var response = commandServiceStub.revokeCommand(createRevokeRequest(commandId));
-
-		return mapper.toCommand(response.getCommand());
-	}
-
-	GrpcRevokeCommandRequest createRevokeRequest(String commandId) {
-		return GrpcRevokeCommandRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setId(commandId)
-				.build();
-	}
-
-	public Command getCommand(String commandId) {
-		var response = commandServiceStub.getCommand(createGetCommandRequest(commandId));
-
-		return mapper.toCommand(response);
-	}
-
-	GrpcGetCommandRequest createGetCommandRequest(String commandId) {
-		return GrpcGetCommandRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setId(commandId)
-				.build();
-	}
-
-	public boolean existsPendingCommands(String relationId) {
-		var response = commandServiceStub.existsPendingCommands(buildGrpcExistsPendingCommandsRequest(relationId));
-
-		return response.getExistsPendingCommands();
-	}
-
-	private GrpcExistsPendingCommandsRequest buildGrpcExistsPendingCommandsRequest(String relationId) {
-		return GrpcExistsPendingCommandsRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setVorgangId(relationId)
-				.build();
-	}
-
-	public Stream<Command> getPendingCommands(String vorgangId) {
-		var response = commandServiceStub.getPendingCommands(buildGrpcGetPendingCommandsRequest(vorgangId));
-
-		return response.getCommandList().stream().map(mapper::toCommand);
-	}
-
-	private GrpcGetPendingCommandsRequest buildGrpcGetPendingCommandsRequest(String vorgangId) {
-		return GrpcGetPendingCommandsRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setVorgangId(vorgangId)
-				.build();
-	}
-
-	public Stream<Command> findCommands(String vorgangId, Optional<CommandStatus> status, Optional<String> order) {
-		var response = commandServiceStub.findCommands(buildFindCommandsRequest(vorgangId, status, order));
-
-		return response.getCommandList().stream().map(mapper::toCommand);
-	}
-
-	private GrpcFindCommandsRequest buildFindCommandsRequest(String vorgangId, Optional<CommandStatus> status, Optional<String> order) {
-		var builder = GrpcFindCommandsRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setVorgangId(vorgangId);
-
-		status.map(CommandStatus::name).ifPresent(builder::addStatus);
-		order.ifPresent(builder::setOrderString);
-
-		return builder.build();
-	}
-
-	public void finishCommand(String commandId) {
-		commandServiceStub.setCommandExecuted(buildGrpcSetCommandExecutedRequest(commandId));
-	}
-
-	private GrpcSetCommandExecutedRequest buildGrpcSetCommandExecutedRequest(String commandId) {
-		return GrpcSetCommandExecutedRequest.newBuilder().setCommandId(commandId).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java
deleted file mode 100644
index d69ce0cab4116df915c76bbba5fd6a9122c0d4f1..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandService.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import jakarta.validation.Valid;
-
-import org.apache.commons.collections.MapUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Validated
-@Service
-public class CommandService {
-
-	static final long NO_RELATION_VERSION = -1;
-
-	private final CommandRemoteService remoteService;
-
-	/**
-	 * @deprecated use {@link #createCommand(CreateCommand)} instead
-	 */
-	@Deprecated(since = "1.14.0", forRemoval = true)
-	public Command createCommandDeprecated(CreateCommand command) {
-		command = command.toBuilder().relationVersion(NO_RELATION_VERSION).build();
-
-		return remoteService.createCommand(command);
-	}
-
-	public Command createCommand(@Valid CreateCommand command) {
-		return remoteService.createCommand(command);
-	}
-
-	public Command createCommand(@Valid CreateCommand command, long relationVersion) {
-		command = command.toBuilder().relationVersion(relationVersion).build();
-
-		return remoteService.createCommand(command);
-	}
-
-	public Command getById(String commandId) {
-		var command = remoteService.getCommand(commandId);
-		if (isDeleteLoeschAnforderung(command)) {
-			handleDeleteLoeschAnforderung(command);
-		}
-		return command;
-	}
-
-	private boolean isDeleteLoeschAnforderung(Command command) {
-		return command.getCommandOrder() == CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN;
-	}
-
-	void handleDeleteLoeschAnforderung(Command command) {
-		if (isDeleteAttachedItemCommandFinished(command) && isChangeStatusCommandFinished(command)) {
-			remoteService.finishCommand(command.getId());
-		}
-	}
-
-	boolean isDeleteAttachedItemCommandFinished(Command command) {
-		return isCommandFinished(MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD));
-	}
-
-	boolean isChangeStatusCommandFinished(Command command) {
-		return isCommandFinished(MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD));
-	}
-
-	private boolean isCommandFinished(String commandId) {
-		return remoteService.getCommand(commandId).getStatus() == CommandStatus.FINISHED;
-	}
-
-	public Command revoke(String commandId) {
-		return remoteService.revokeCommand(commandId);
-	}
-
-	public boolean existsPendingCommands(String relationId) {
-		return remoteService.existsPendingCommands(relationId);
-	}
-
-	public Stream<Command> getPendingCommands(String vorgangId) {
-		return remoteService.getPendingCommands(vorgangId);
-	}
-
-	public Stream<Command> findFinishedCommands(@NonNull String vorgangId) {
-		return remoteService.findCommands(vorgangId, Optional.of(CommandStatus.FINISHED), Optional.empty());
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java
deleted file mode 100644
index 1bc5744c87e09dbb4727d3613f8a9de267ef7cc6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandStatus.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-public enum CommandStatus {
-	PENDING, FINISHED, ERROR, REVOKE_PENDING, REVOKED;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java
deleted file mode 100644
index 634746ff1f2f7bae267d4811b72d47860c540ba3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CreateCommand.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import jakarta.validation.Valid;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
-import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@Builder(toBuilder = true)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class CreateCommand {
-
-	@JsonIgnore
-	private UserId createdBy;
-	@JsonIgnore
-	private CommandStatus status;
-
-	private String vorgangId;
-	private String relationId;
-	private long relationVersion;
-
-	private String order;
-
-	@Valid
-	private RedirectRequest redirectRequest;
-
-	@Valid
-	@JsonTypeInfo(use = Id.NAME, include = As.EXTERNAL_PROPERTY, property = "order")
-	private CommandBody body;
-
-	@JsonIgnore
-	public CommandOrder getCommandOrder() {
-		return CommandOrder.fromOrder(order);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/EmptyCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/EmptyCommandBody.java
deleted file mode 100644
index 3095c1084dc8e64355c1622e0db528fdac472657..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/EmptyCommandBody.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package de.ozgcloud.alfa.common.command;
-
-class EmptyCommandBody implements CommandBody {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/GenericCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/GenericCommandBody.java
deleted file mode 100644
index 7556d145a3a831a936febb12e739a0d4377ce3d7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/GenericCommandBody.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.HashMap;
-
-class GenericCommandBody extends HashMap<String, Object> implements CommandBody {
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/LegacyOrder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/LegacyOrder.java
deleted file mode 100644
index 0154e48c5b541bd898b81f417b12fb2858f4dc94..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/LegacyOrder.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class LegacyOrder {
-	public static final String CREATE_WIEDERVORLAGE = "CREATE_WIEDERVORLAGE";
-	public static final String EDIT_WIEDERVORLAGE = "EDIT_WIEDERVORLAGE";
-	public static final String WIEDERVORLAGE_ERLEDIGEN = "WIEDERVORLAGE_ERLEDIGEN";
-	public static final String WIEDERVORLAGE_WIEDEREROEFFNEN = "WIEDERVORLAGE_WIEDEREROEFFNEN";
-	public static final String CREATE_KOMMENTAR = "CREATE_KOMMENTAR";
-	public static final String EDIT_KOMMENTAR = "EDIT_KOMMENTAR";
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrder.java
deleted file mode 100644
index 3dff456bb5948a0fbbd42d9aaca8d2fdc65f6238..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import jakarta.validation.Constraint;
-import jakarta.validation.Payload;
-
-@Constraint(validatedBy = { RequiredOrderValidator.class })
-@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE })
-@Retention(RUNTIME)
-@Documented
-public @interface RequiredOrder {
-
-	String message() default "invalid command order";
-
-	Class<?>[] groups() default {};
-
-	Class<? extends Payload>[] payload() default {};
-
-	CommandOrder value();
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrderValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrderValidator.java
deleted file mode 100644
index b074f0923dc5713c1ac61a0bdd0bc94c807dc4c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/RequiredOrderValidator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import jakarta.validation.ConstraintValidator;
-import jakarta.validation.ConstraintValidatorContext;
-
-public class RequiredOrderValidator implements ConstraintValidator<RequiredOrder, CreateCommand> {
-
-	private CommandOrder order;
-
-	@Override
-	public void initialize(RequiredOrder constraintAnnotation) {
-		this.order = constraintAnnotation.value();
-	}
-
-	@Override
-	public boolean isValid(CreateCommand command, ConstraintValidatorContext constraintValidatorContext) {
-		return command.getCommandOrder() == order;
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/StatusPatch.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/StatusPatch.java
deleted file mode 100644
index f9094b5ee42c35a87083ec34944010e1afcbc5fb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/StatusPatch.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PUBLIC)
-@ToString
-@Builder
-@Getter
-public class StatusPatch {
-
-	private CommandStatus status;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilter.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilter.java
deleted file mode 100644
index f407dfaa5d9b6fd55491e313133b31c48bfbc212..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilter.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import java.io.IOException;
-
-import jakarta.servlet.FilterChain;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.filter.OncePerRequestFilter;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-@Component
-@Order(0)
-public class DownloadTokenAuthenticationFilter extends OncePerRequestFilter {
-	@Autowired
-	private DownloadTokenService downloadTokenService;
-
-	@Override
-	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
-			throws ServletException, IOException {
-
-		try {
-			downloadTokenService.handleToken(request, getDownloadToken(request));
-		} catch (TechnicalException e) {
-			response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-			return;
-		}
-
-		filterChain.doFilter(request, response);
-	}
-
-	@Override
-	protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
-		return StringUtils.isEmpty(getDownloadToken(request));
-	}
-
-	private String getDownloadToken(HttpServletRequest request) {
-		return request.getParameter(DownloadTokenController.PARAM_TOKEN);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenController.java
deleted file mode 100644
index bc81eb7a59e655db789d47370c1ca48c5ef5335f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenController.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.net.URI;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-
-@RestController
-@RequestMapping(DownloadTokenController.DOWNLOAD_TOKEN_PATH)
-public class DownloadTokenController {
-
-	public static final String DOWNLOAD_TOKEN_PATH = "/api/downloadtoken"; // NOSONAR
-
-	public static final String PARAM_TOKEN = "token";
-
-	@Autowired
-	private DownloadTokenService tokenService;
-
-	@PostMapping
-	public ResponseEntity<Void> downloadToken(@RequestBody DownloadTokenRequest request) {
-		return ResponseEntity.created(buildUri(request.getFileId())).build();
-	}
-
-	private URI buildUri(FileId fileId) {
-		return linkTo(DownloadTokenController.class).toUriComponentsBuilder().queryParam(PARAM_TOKEN, tokenService.createToken(fileId))
-				.build()
-				.toUri();
-	}
-
-	@GetMapping
-	public ResponseEntity<DownloadTokenResponse> getToken(@RequestParam String token) {
-		return ResponseEntity.ok(DownloadTokenResponse.builder().token(token).build());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenProperties.java
deleted file mode 100644
index 1f2e0b6833010bcff85a2c89daa7b23266664db4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenProperties.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.validation.annotation.Validated;
-
-import jakarta.validation.constraints.NotNull;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Validated
-@Configuration
-@ConfigurationProperties("ozgcloud.auth.token")
-public class DownloadTokenProperties {
-
-	@NotNull
-	private String secret;
-	@NotNull
-	private int validity;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenRequest.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenRequest.java
deleted file mode 100644
index 720c091e63c8c897574785c49a7945de88cf1256..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenRequest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import lombok.Getter;
-
-@Getter
-class DownloadTokenRequest {
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	private FileId fileId;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenResponse.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenResponse.java
deleted file mode 100644
index 39a04ad288a1276fab51c53ffb8d2e99060c3388..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenResponse.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-class DownloadTokenResponse {
-
-	private String token;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenService.java
deleted file mode 100644
index e3a43569afdd7dfcd0cec1d64ba45dbe4d9118e0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static de.ozgcloud.alfa.JwtTokenUtil.*;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
-import org.springframework.stereotype.Service;
-
-import com.auth0.jwt.exceptions.JWTVerificationException;
-
-import de.ozgcloud.alfa.JwtTokenUtil;
-import de.ozgcloud.alfa.common.binaryfile.AlfaUserWithFileId;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import io.jsonwebtoken.Claims;
-import jakarta.servlet.http.HttpServletRequest;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Service
-class DownloadTokenService {
-
-	@Autowired
-	private CurrentUserService userService;
-
-	@Autowired
-	private JwtTokenUtil jwtTokenUtil;
-
-	public String createToken(FileId fileId) {
-		var user = userService.getUser();
-		return jwtTokenUtil.generateToken(fileId, user);
-	}
-
-	public void handleToken(HttpServletRequest request, String token) {
-		if (StringUtils.isNotBlank(token)) {
-			try {
-				jwtTokenUtil.verifyToken(token);
-
-				SecurityContextHolder.getContext().setAuthentication(buildAuthentication(request, token));
-			} catch (JWTVerificationException e) {
-				LOG.error("JwtVerficationException in DownloadTokenService", e);
-				throw new TechnicalException("download token not valid", e);
-			}
-		}
-	}
-
-	private Authentication buildAuthentication(HttpServletRequest request, String token) {
-		var user = getUserFromToken(token);
-
-		var authenticationToken = new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
-		authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
-
-		return authenticationToken;
-	}
-
-	AlfaUserWithFileId getUserFromToken(String token) {
-		Optional<Claims> claimsOptional = jwtTokenUtil.getAllClaimsFromToken(token);
-		var downloadUserBuilder = AlfaUserWithFileId.builder();
-		claimsOptional.ifPresent(claims -> downloadUserBuilder.user(
-						UserProfile.builder()
-								.id(UserId.from(claims.get(USERID_CLAIM, String.class)))
-								.firstName(claims.get(FIRSTNAME_CLAIM, String.class))
-								.lastName(claims.get(LASTNAME_CLAIM, String.class))
-								.authorities(jwtTokenUtil.getRolesFromToken(token))
-								.organisationseinheitIds(jwtTokenUtil.getOrganisationseinheitIdsFromToken(token)).build())
-				.fileId(FileId.from(claims.get(FILEID_CLAIM, String.class))));
-
-		return downloadUserBuilder.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ApiError.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ApiError.java
deleted file mode 100644
index e863df60eec8e2d9498e11e54001d7806fbd8c35..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ApiError.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.List;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Singular;
-
-@Getter
-@Builder
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-class ApiError {
-
-	@Singular
-	private List<Issue> issues;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ExceptionController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ExceptionController.java
deleted file mode 100644
index 4de36cf73523e005eeee3258235138bb55f256bc..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ExceptionController.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.UUID;
-
-import jakarta.validation.ConstraintViolationException;
-
-import org.springframework.core.annotation.Order;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ProblemDetail;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.ResponseStatus;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
-
-import de.ozgcloud.common.errorhandling.ExceptionUtil;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-
-@RestControllerAdvice
-@RequiredArgsConstructor
-@Log4j2
-@Order(98)
-public class ExceptionController extends ResponseEntityExceptionHandler {
-
-	static final String RUNTIME_MESSAGE_CODE = "generale.server_error";
-	static final String RESOURCE_NOT_FOUNT_MESSAGE_CODE = "resource.not_found";
-	static final String ACCESS_DENIED_MESSAGE_CODE = "generale.access_denied";
-
-	private final ProblemDetailMapper problemDetailMapper;
-
-	@ExceptionHandler(FunctionalException.class)
-	@ResponseStatus(HttpStatus.BAD_REQUEST)
-	public ApiError handleFunctionalException(FunctionalException e) {
-		LOG.error("BadRequest", e);
-		return ApiError.builder().issue(buildIssueForFunctionalException(e)).build();
-	}
-
-	private Issue buildIssueForFunctionalException(FunctionalException e) {
-		return Issue.builder().message(e.getMessage()).messageCode(e.getErrorCode()).exceptionId(e.getExceptionId()).build();
-	}
-
-	@ExceptionHandler(AccessDeniedException.class)
-	@ResponseStatus(HttpStatus.FORBIDDEN)
-	public ApiError handleAccessDeniedException(AccessDeniedException e) {
-		var exceptionId = createExceptionId();
-		var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(e.getMessage(), exceptionId);
-		LOG.error("Access Denied Exception: {}", messageWithExceptionId);
-
-		return ApiError.builder().issue(buildIssueForAccessDeniedException(messageWithExceptionId, exceptionId)).build();
-	}
-
-	private Issue buildIssueForAccessDeniedException(String message, String exceptionId) {
-		return Issue.builder().messageCode(ACCESS_DENIED_MESSAGE_CODE).message(message).exceptionId(exceptionId).build();
-	}
-
-	@ExceptionHandler(ResourceNotFoundException.class)
-	@ResponseStatus(HttpStatus.NOT_FOUND)
-	public ApiError handleResourceNotFoundException(ResourceNotFoundException e) {
-		LOG.warn("Resource not found: {}", e.getMessage());
-		return ApiError.builder().issue(buildIssueForResourceNotFoundException(e)).build();
-	}
-
-	private Issue buildIssueForResourceNotFoundException(ResourceNotFoundException e) {
-		return Issue.builder().message(e.getMessage()).messageCode(RESOURCE_NOT_FOUNT_MESSAGE_CODE).exceptionId(e.getExceptionId()).build();
-	}
-
-	@ExceptionHandler(ConstraintViolationException.class)
-	public ProblemDetail handleConstraintViolationException(ConstraintViolationException e) {
-		LOG.warn("Validation Exception: {}", problemDetailMapper.buildMessageWithExceptionId(e));
-
-		return problemDetailMapper.fromConstraintViolationException(e);
-	}
-
-	@ExceptionHandler(TechnicalException.class)
-	@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
-	public ApiError handleTechnicalException(TechnicalException e) {
-		LOG.error("TechnicalException on Request", e);
-		return buildRuntimeApiError(e.getMessage(), e.getExceptionId());
-	}
-
-	@ExceptionHandler(RuntimeException.class)
-	@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
-	public ApiError handleRuntimeException(RuntimeException e) {
-		var exceptionId = createExceptionId();
-		var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(e.getMessage(), exceptionId);
-		LOG.error("RuntimeException on Request: " + messageWithExceptionId, e);
-		return buildRuntimeApiError(messageWithExceptionId, exceptionId);
-	}
-
-	String createExceptionId() {
-		return UUID.randomUUID().toString();
-	}
-
-	private ApiError buildRuntimeApiError(String message, String exceptionId) {
-		return ApiError.builder().issue(createIssueForRuntimeException(message, exceptionId)).build();
-	}
-
-	private Issue createIssueForRuntimeException(String message, String exceptionId) {
-		return Issue.builder().messageCode(RUNTIME_MESSAGE_CODE).message(message).exceptionId(exceptionId).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/FunctionalException.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/FunctionalException.java
deleted file mode 100644
index 7765bda33648e679997afe631b8d58050119e543..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/FunctionalException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.UUID;
-
-import de.ozgcloud.common.errorhandling.ExceptionUtil;
-import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
-import de.ozgcloud.common.errorhandling.IdentifiableException;
-
-public class FunctionalException extends RuntimeException implements IdentifiableException {
-
-	private static final long serialVersionUID = 1L;
-
-	private final FunctionalErrorCode errorCode;
-	private final String exceptionId;
-
-	public FunctionalException(FunctionalErrorCode errorCode) {
-		super("Functional error: " + errorCode.getErrorCode());
-
-		this.errorCode = errorCode;
-		this.exceptionId = UUID.randomUUID().toString();
-	}
-
-	public String getErrorCode() {
-		return errorCode.getErrorCode();
-	}
-
-	@Override
-	public String getMessage() {
-		return ExceptionUtil.formatMessageWithExceptionId(super.getMessage(), exceptionId);
-	}
-
-	@Override
-	public String getExceptionId() {
-		return exceptionId;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionController.java
deleted file mode 100644
index 5ad57e05fe564b258da2151efd583dbd41b156ae..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionController.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.function.Predicate;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.core.annotation.Order;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.common.errorhandling.ExceptionUtil;
-import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
-import io.grpc.Metadata;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-import lombok.extern.log4j.Log4j2;
-
-@ControllerAdvice
-@Log4j2
-@Order(97)
-public class GrpcExceptionController {
-
-	static final FunctionalErrorCode GRPC_NOT_FOUND_ERROR_CODE_KEY = () -> ExceptionController.RESOURCE_NOT_FOUNT_MESSAGE_CODE;
-	static final FunctionalErrorCode GRPC_INTERNAL_ERROR_CODE_KEY = () -> ExceptionController.RUNTIME_MESSAGE_CODE;
-	static final FunctionalErrorCode GRPC_PERMISSION_DENIED_CODE_KEY = () -> ExceptionController.ACCESS_DENIED_MESSAGE_CODE;
-
-	static final String KEY_ERROR_CODE = "ERROR_CODE";
-	static final String KEY_EXCEPTION_ID = "EXCEPTION_ID";
-
-	private final Predicate<String> ignoreKey = key -> !isErrorCode(key) && !isExceptionId(key);
-
-	private boolean isErrorCode(String metadataKey) {
-		return isParamKeyEquals(metadataKey, KEY_ERROR_CODE);
-	}
-
-	private boolean isExceptionId(String metadataKey) {
-		return isParamKeyEquals(metadataKey, KEY_EXCEPTION_ID);
-	}
-
-	private boolean isParamKeyEquals(String metaDataKey, String key) {
-		return GrpcUtil.keyOfString(metaDataKey).equals(GrpcUtil.keyOfString(key));
-	}
-
-	@ExceptionHandler(StatusRuntimeException.class)
-	public ResponseEntity<ApiError> handleStatusRuntimeException(StatusRuntimeException e) {
-		if (isNotFoundStatusCode(e)) {
-			return buildNotFoundErrorResponse(e);
-		} else if (isInternalStatusCode(e)) {
-			return buildInternalErrorResponse(e);
-		} else if (isPermissionDeniedCode(e)) {
-			return buildAccessDeniedErrorResponse(e);
-		}
-
-		return buildInternalUnavailableErrorResponse(e);
-	}
-
-	private boolean isNotFoundStatusCode(StatusRuntimeException e) {
-		return e.getStatus().getCode() == Status.NOT_FOUND.getCode();
-	}
-
-	private ResponseEntity<ApiError> buildNotFoundErrorResponse(StatusRuntimeException e) {
-		LOG.error("Grpc not found exception: {}", e.getMessage());
-
-		Issue.IssueBuilder issueBuilder = Issue.builder().message(e.getMessage()).messageCode(GRPC_NOT_FOUND_ERROR_CODE_KEY.getErrorCode());
-		addExceptionId(issueBuilder, e);
-
-		return new ResponseEntity<>(buildApiErrorWithIssue(issueBuilder.build()), HttpStatus.NOT_FOUND);
-	}
-
-	private ResponseEntity<ApiError> buildInternalUnavailableErrorResponse(StatusRuntimeException e) {
-		if (hasExceptionId(e)) {
-			return new ResponseEntity<>(buildInternalUnavailableApiError(e, getExceptionId(e)), HttpStatus.SERVICE_UNAVAILABLE);
-		}
-
-		var exceptionId = createExceptionId();
-		var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(e.getMessage(), exceptionId);
-		LOG.error("Grpc service unavailable: {}", messageWithExceptionId);
-
-		return new ResponseEntity<>(buildInternalUnavailableApiError(e, exceptionId), HttpStatus.SERVICE_UNAVAILABLE);
-	}
-
-	String createExceptionId() {
-		return UUID.randomUUID().toString();
-	}
-
-	private ApiError buildInternalUnavailableApiError(StatusRuntimeException e, String exceptionId) {
-		return ApiError.builder().issue(Issue.builder().message(e.getMessage()).messageCode(getMessageCode(e)).exceptionId(exceptionId).build())
-				.build();
-	}
-
-	private ResponseEntity<ApiError> buildInternalErrorResponse(StatusRuntimeException e) {
-		LOG.error("Grpc internal server error: " + e.getMessage(), e);
-
-		return new ResponseEntity<>(buildInternalApiError(e), HttpStatus.INTERNAL_SERVER_ERROR);
-	}
-
-	private boolean isInternalStatusCode(StatusRuntimeException e) {
-		return e.getStatus().getCode() == Status.INTERNAL.getCode();
-	}
-
-	private ApiError buildInternalApiError(StatusRuntimeException e) {
-		var issueBuilder = Issue.builder().message(e.getMessage()).messageCode(getMessageCode(e));
-
-		addParameter(issueBuilder, e);
-		addExceptionId(issueBuilder, e);
-
-		return buildApiErrorWithIssue(issueBuilder.build());
-	}
-
-	String getMessageCode(StatusRuntimeException e) {
-		if (hasErrorCode(e)) {
-			return getErrorCode(e);
-		}
-		if (hasServiceCode(e)) {
-			return getServiceCode(e);
-		}
-		return GRPC_INTERNAL_ERROR_CODE_KEY.getErrorCode();
-	}
-
-	private boolean hasServiceCode(StatusRuntimeException e) {
-		return Optional.ofNullable(e.getTrailers()).map(metadata -> metadata.get(GrpcUtil.keyOfString(GrpcUtil.SERVICE_KEY))).isPresent();
-	}
-
-	private String getServiceCode(StatusRuntimeException e) {
-		return getParameter(e, GrpcUtil.SERVICE_KEY);
-	}
-
-	private boolean hasErrorCode(StatusRuntimeException e) {
-		return hasParameter(e) && StringUtils.isNotEmpty(getErrorCode(e));
-	}
-
-	private ApiError buildApiErrorWithIssue(Issue issue) {
-		return ApiError.builder().issue(issue).build();
-	}
-
-	private boolean isPermissionDeniedCode(StatusRuntimeException e) {
-		return e.getStatus().getCode() == Status.PERMISSION_DENIED.getCode();
-	}
-
-	private ResponseEntity<ApiError> buildAccessDeniedErrorResponse(StatusRuntimeException e) {
-		var exceptionId = createExceptionId();
-		var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(e.getMessage(), exceptionId);
-		LOG.error("Grpc permission denied error: " + messageWithExceptionId);
-
-		return new ResponseEntity<>(buildAccessDeniedApiError(e, exceptionId), HttpStatus.FORBIDDEN);
-	}
-
-	private ApiError buildAccessDeniedApiError(StatusRuntimeException e, String exceptionId) {
-		return ApiError.builder()
-				.issue(Issue.builder().message(e.getMessage()).messageCode(GRPC_PERMISSION_DENIED_CODE_KEY.getErrorCode()).exceptionId(exceptionId)
-						.build())
-				.build();
-	}
-
-	void addParameter(Issue.IssueBuilder builder, StatusRuntimeException e) {
-		if (hasParameter(e)) {
-			builder.parameters(mapToIssueParams(e.getTrailers()));
-		}
-	}
-
-	List<IssueParam> mapToIssueParams(Metadata metaData) {
-		return metaData.keys().stream()
-				.filter(ignoreKey)
-				.map(key -> buildIssueParam(metaData, key))
-				.toList();
-	}
-
-	private IssueParam buildIssueParam(Metadata metaData, String key) {
-		return IssueParam.builder().name(key).value(metaData.get(GrpcUtil.keyOfString(key))).build();
-	}
-
-	void addExceptionId(Issue.IssueBuilder builder, StatusRuntimeException e) {
-		if (hasExceptionId(e)) {
-			builder.exceptionId(getExceptionId(e));
-		}
-	}
-
-	private boolean hasExceptionId(StatusRuntimeException e) {
-		return hasParameter(e) && StringUtils.isNotEmpty(getExceptionId(e));
-	}
-
-	private boolean hasParameter(StatusRuntimeException e) {
-		return Objects.nonNull(e.getTrailers());
-	}
-
-	private String getExceptionId(StatusRuntimeException e) {
-		return getParameter(e, KEY_EXCEPTION_ID);
-	}
-
-	private String getErrorCode(StatusRuntimeException e) {
-		return getParameter(e, KEY_ERROR_CODE);
-	}
-
-	private String getParameter(StatusRuntimeException e, String metadataKey) {
-		return e.getTrailers().get(GrpcUtil.keyOfString(metadataKey));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/Issue.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/Issue.java
deleted file mode 100644
index 0308da5c60b0ccf194cf108a054827dfe038c28c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/Issue.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.List;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Singular;
-
-@Getter
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class Issue {
-
-	private String field;
-	private String messageCode;
-	private String message;
-	private String exceptionId;
-
-	@Singular
-	private List<IssueParam> parameters;
-
-}
-
-@Builder
-@Getter
-class IssueParam {
-	private String name;
-	private String value;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/OrderNotAllowedException.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/OrderNotAllowedException.java
deleted file mode 100644
index 1d3c00bc0b0eb1729f64a2b19ef650c5ed71b07c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/OrderNotAllowedException.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
-
-public class OrderNotAllowedException extends FunctionalException {
-
-	private static final long serialVersionUID = 1L;
-
-	private static final FunctionalErrorCode MESSAGE_CODE = () -> "loeschanforderung.order_not_allowed";
-	private static final String MESSAGE_TEMPLATE = "Order '%s' is not allowed. Expected 'VORGANG_LOESCHEN or LOESCH_ANFORDERUNG_ZURUECKNEHMEN'.";
-
-	private final String order;
-
-	public OrderNotAllowedException(String order) {
-		super(MESSAGE_CODE);
-
-		this.order = order;
-	}
-
-	@Override
-	public String getMessage() {
-		return super.getMessage() + String.format(MESSAGE_TEMPLATE, order);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapper.java
deleted file mode 100644
index e90daa1f191c9a218f843803ce263b1d918f79c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapper.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.ConstraintViolationException;
-import jakarta.validation.metadata.ConstraintDescriptor;
-
-import org.hibernate.validator.engine.HibernateConstraintViolation;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ProblemDetail;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.binaryfile.DynamicViolationParameter;
-import de.ozgcloud.common.errorhandling.ExceptionUtil;
-
-@Component
-public class ProblemDetailMapper {
-
-	static final String INVALID_PARAMS_KEY_CONSTRAINT_PARAMETERS = "constraintParameters";
-	static final String INVALID_PARAMS_KEY_REASON = "reason";
-	static final String INVALID_PARAMS_KEY_VALUE = "value";
-	static final String INVALID_PARAMS_KEY_NAME = "name";
-	static final String INVALID_PARAMS = "invalidParams";
-	static final String PROVIDED_VALUE_WAS_NULL = "Provided value was null!";
-	private static final Set<String> IGNORABLE_CONSTRAINT_VIOLATION_ATTRIBUTES = Set.of("groups", "payload", "message");
-
-	public ProblemDetail fromConstraintViolationException(ConstraintViolationException e) {
-		var problemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.UNPROCESSABLE_ENTITY, buildMessageWithExceptionId(e));
-		problemDetail.setProperty(INVALID_PARAMS, buildInvalidParams(e.getConstraintViolations()).toList());
-		return problemDetail;
-	}
-
-	public String buildMessageWithExceptionId(ConstraintViolationException e) {
-		var exceptionId = createExceptionId();
-		return ExceptionUtil.formatMessageWithExceptionId(e.getLocalizedMessage(),
-				exceptionId);
-	}
-
-	String createExceptionId() {
-		return UUID.randomUUID().toString();
-	}
-
-	Stream<Map<String, Object>> buildInvalidParams(Set<ConstraintViolation<?>> violations) {
-		return Objects.requireNonNullElse(violations, Collections.<ConstraintViolation<?>>emptySet()).stream().map(this::buildDetailedViolation);
-	}
-
-	Map<String, Object> buildDetailedViolation(ConstraintViolation<?> violation) {
-		return Map.of(
-				INVALID_PARAMS_KEY_NAME, violation.getPropertyPath().toString(),
-				INVALID_PARAMS_KEY_VALUE, Objects.requireNonNullElse(violation.getInvalidValue(), PROVIDED_VALUE_WAS_NULL).toString(),
-				INVALID_PARAMS_KEY_REASON, violation.getMessage(),
-				INVALID_PARAMS_KEY_CONSTRAINT_PARAMETERS, buildParameters(violation).toList());
-	}
-
-	Stream<IssueParam> buildParameters(ConstraintViolation<?> violation) {
-		var dynamicPayload = getDynamicPayload(violation);
-		return Optional.ofNullable(violation.getConstraintDescriptor())
-				.map(ConstraintDescriptor::getAttributes)
-				.map(descr -> descr.entrySet().stream()
-						.filter(entry -> !IGNORABLE_CONSTRAINT_VIOLATION_ATTRIBUTES.contains(entry.getKey()))
-						.map(entryMap -> buildIssueParam(entryMap, dynamicPayload)))
-				.orElse(Stream.empty());
-	}
-
-	private IssueParam buildIssueParam(Entry<String, Object> entry, Optional<DynamicViolationParameter> dynamicValues) {
-		return IssueParam.builder().name(entry.getKey()).value(getValue(entry, dynamicValues)).build();
-	}
-
-	private String getValue(Entry<String, Object> entry, Optional<DynamicViolationParameter> dynamicValues) {
-		return dynamicValues
-				.map(DynamicViolationParameter::getMap)
-				.map(map -> map.get(entry.getKey()))
-				.filter(Objects::nonNull)
-				.map(String::valueOf)
-				.orElse(String.valueOf(entry.getValue()));
-	}
-
-	private Optional<DynamicViolationParameter> getDynamicPayload(ConstraintViolation<?> violation) {
-		HibernateConstraintViolation<?> hibernateViolation = violation.unwrap(HibernateConstraintViolation.class);
-		return Optional.ofNullable(hibernateViolation.getDynamicPayload(DynamicViolationParameter.class));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ResourceNotFoundException.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ResourceNotFoundException.java
deleted file mode 100644
index 6a7c08960bcc9896f865e59876aec92a5eba09d9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/errorhandling/ResourceNotFoundException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
-import lombok.Getter;
-
-@Getter
-public class ResourceNotFoundException extends FunctionalException {
-
-	private static final long serialVersionUID = 1L;
-	private static final String MESSAGE_TEMPLATE = "Resource '%s' with id '%s' not found.";
-
-	public ResourceNotFoundException(Class<?> resource, Object id) {
-		super(buildErrorCode(resource, id));
-	}
-
-	private static FunctionalErrorCode buildErrorCode(Class<?> resource, Object id) {
-		return () -> String.format(MESSAGE_TEMPLATE, resource.getSimpleName(), id.toString());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFile.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFile.java
deleted file mode 100644
index 0ed45079511e2e3b1e415b496e817f6deb059276..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFile.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Builder
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@Getter
-@EqualsAndHashCode(onlyExplicitlyIncluded = true)
-public class OzgFile {
-
-	@JsonIgnore
-	@EqualsAndHashCode.Include
-	private FileId id;
-	@EqualsAndHashCode.Include
-	private String name;
-	private long size;
-
-	private String contentType;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileMapper.java
deleted file mode 100644
index 87f7411d607a0a02e6e9b2369c60b1cfd88b8ea9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-
-@Mapper
-public interface OzgFileMapper {
-
-	OzgFile toFile(GrpcOzgFile file);
-
-	default FileId toFileId(String id) {
-		return FileId.from(id);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileRemoteService.java
deleted file mode 100644
index 0badd5a7c055e5505013a9122e70f356eebec1ce..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileRemoteService.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.grpc.file.FileServiceGrpc.FileServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetAttachmentsRequest;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetRepresentationsRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-public class OzgFileRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private FileServiceBlockingStub fileServiceStub;
-	@Autowired
-	private OzgFileMapper fileMapper;
-
-	public Stream<OzgFile> getAttachments(String vorgangId) {
-		var response = fileServiceStub.getAttachments(buildGrpcGetAttachmentsRequest(vorgangId));
-
-		return response.getFileList().stream().map(fileMapper::toFile);
-	}
-
-	private GrpcGetAttachmentsRequest buildGrpcGetAttachmentsRequest(String vorgangId) {
-		return GrpcGetAttachmentsRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.build();
-	}
-
-	public Stream<OzgFile> getRepresentations(String vorgangId) {
-		var response = fileServiceStub.getRepresentations(buildGrpcGetRepresentationsRequest(vorgangId));
-
-		return response.getFileList().stream().map(fileMapper::toFile);
-	}
-
-	private GrpcGetRepresentationsRequest buildGrpcGetRepresentationsRequest(String vorgangId) {
-		return GrpcGetRepresentationsRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileService.java
deleted file mode 100644
index 1ffc0b5ff51e5b40a70e970ebde76b37d2ade980..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/file/OzgFileService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class OzgFileService {
-
-	@Autowired
-	private OzgFileRemoteService remoteService;
-
-	public Stream<OzgFile> getAttachments(String vorgangId) {
-		return remoteService.getAttachments(vorgangId);
-	}
-
-	public Stream<OzgFile> getRepresentations(String vorgangId) {
-		return remoteService.getRepresentations(vorgangId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserHelper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserHelper.java
deleted file mode 100644
index cbabea0188c4242f7f74d6b74b1fcab236b72e06..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserHelper.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.security.authentication.AuthenticationTrustResolver;
-import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.oauth2.jwt.Jwt;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class CurrentUserHelper {
-
-	static final String ROLE_PREFIX = "ROLE_";
-	private static final String SUB_CLAIM_KEY = "sub";
-
-	private static final AuthenticationTrustResolver TRUST_RESOLVER = new AuthenticationTrustResolverImpl();
-	private static final Predicate<Authentication> IS_TRUSTED = auth -> !TRUST_RESOLVER.isAnonymous(auth);
-	private static final Predicate<String> IS_ROLE_PREFIX_MISSING = role -> !role.startsWith(ROLE_PREFIX);
-
-	public static boolean hasRole(String role) {
-		var auth = getAuthentication();
-
-		if ((Objects.isNull(auth)) || (Objects.isNull(auth.getPrincipal()))) {
-			return false;
-		}
-		return containsRole(auth.getAuthorities(), role);
-	}
-
-	public static boolean containsRole(Collection<? extends GrantedAuthority> authorities, String role) {
-		if (Objects.isNull(authorities)) {
-			return false;
-		}
-		return containsRole(prepareRoleForCheck(role), authorities);
-	}
-
-	static boolean containsRole(String role, Collection<? extends GrantedAuthority> authorities) {
-		return authorities.stream().anyMatch(a -> isAuthorityEquals(role, a.getAuthority()));
-	}
-
-	private static boolean isAuthorityEquals(String role, String authority) {
-		return StringUtils.equalsIgnoreCase(role, authority) || StringUtils.equalsIgnoreCase(prepareRoleForCheck(role), authority);
-	}
-
-	static String prepareRoleForCheck(String roleToCheck) {
-		return Optional.ofNullable(roleToCheck)
-				.filter(IS_ROLE_PREFIX_MISSING)
-				.map(role -> String.format("%s%s", ROLE_PREFIX, role))
-				.orElse(roleToCheck);
-	}
-
-	public static UserId getCurrentUserId() {
-		return UserId.from(getSubClaim());
-	}
-
-	private static String getSubClaim() {
-		return ((Jwt) getAuthentication().getPrincipal()).getClaim(SUB_CLAIM_KEY);
-	}
-
-	public static Authentication getAuthentication() {
-		return findAuthentication().orElseThrow(() -> new IllegalStateException("No authenticated User found"));
-	}
-
-	private static Optional<Authentication> findAuthentication() {
-		return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication()).filter(IS_TRUSTED);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java
deleted file mode 100644
index dfc3a6d14f456420070eede9c6833e1d82eab4d9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.oauth2.jwt.Jwt;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.binaryfile.AlfaUserWithFileId;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Service
-public class CurrentUserService {
-
-	public static final String VERIFY_HAS_ROLE_VERWALTUNG_USER = "@currentUserService.hasRole(\"" + UserRole.VERWALTUNG_USER + "\")";
-	public static final String VERIFY_HAS_ROLE_VERWALTUNG_LOESCHEN = "@currentUserService.hasRole(\"" + UserRole.VERWALTUNG_LOESCHEN + "\")";
-	public static final String ATTRIBUTE_NAME_USER_ID = "ozgCloudUserId";
-
-	static final String USER_ATTRIBUTE_ORGANISATIONSEINHEIT_ID = "organisationseinheitId";
-
-	static final String KEYCLOAK_USER_PREFERRED_USERNAME = "preferred_username";
-	static final String KEYCLOAK_USER_GIVEN_NAME = "given_name";
-	static final String KEYCLOAK_USER_FAMILY_NAME = "family_name";
-
-	private final UserService userService;
-
-	private final RoleHierarchy roleHierarchy;
-
-	public boolean hasRole(String role) {
-		return CurrentUserHelper.hasRole(role) || hasRoleReachable(role);
-	}
-
-	private boolean hasRoleReachable(String role) {
-		var reachableRoles = roleHierarchy.getReachableGrantedAuthorities(getAuthorities());
-
-		return CurrentUserHelper.containsRole(reachableRoles, role);
-	}
-
-	public UserProfile getUser() {
-		return getDownloadUser().orElseGet(this::buildUserProfile);
-	}
-
-	private UserProfile buildUserProfile() {
-		var userBuilder = UserProfile.builder()
-				.id(getUserId())
-				.authorities(getAuthorities());
-
-		getCurrentSecurityToken().ifPresent(token -> userBuilder
-				.userName(token.getClaimAsString(KEYCLOAK_USER_PREFERRED_USERNAME))
-				.firstName(token.getClaimAsString(KEYCLOAK_USER_GIVEN_NAME))
-				.lastName(token.getClaimAsString(KEYCLOAK_USER_FAMILY_NAME))
-				.organisationseinheitIds(getOrganisationsEinheitIds(token)));
-
-		return userBuilder.build();
-	}
-
-	public Collection<GrantedAuthority> getAuthorities() {
-		return Collections.unmodifiableCollection(CurrentUserHelper.getAuthentication().getAuthorities());
-	}
-
-	public UserId getUserId() {
-		return findUserId()
-				.orElseThrow(() -> new TechnicalException("Cannot find internal UserId. Check sync with UserManager or Token Mapper in keycloak."));
-	}
-
-	public Optional<UserId> findUserId() {
-		return Optional.ofNullable(getSingleClaimValue(ATTRIBUTE_NAME_USER_ID)
-						.map(UserId::from)
-						.orElseGet(this::getInternalId))
-				.filter(Objects::nonNull);
-	}
-
-	private UserId getInternalId() {
-		return userService.getInternalId(CurrentUserHelper.getCurrentUserId()).orElse(null);
-	}
-
-	List<String> getOrganisationsEinheitIds(Jwt jwt) {
-		return Optional.ofNullable(jwt)
-				.map(token -> token.getClaim(USER_ATTRIBUTE_ORGANISATIONSEINHEIT_ID))
-				.map(col -> (Collection<?>) col).orElse(Collections.emptyList()) // NOSONAR - Collection.class::cast has type-safty issue
-				.stream().map(Object::toString).toList();
-	}
-
-	private Optional<UserProfile> getDownloadUser() {
-		return Optional.of(CurrentUserHelper.getAuthentication().getPrincipal())
-				.filter(AlfaUserWithFileId.class::isInstance)
-				.map(AlfaUserWithFileId.class::cast)
-				.map(AlfaUserWithFileId::getUser);
-	}
-
-	Optional<String> getSingleClaimValue(String attributeName) {
-		return getCurrentSecurityToken()
-				.map(token -> token.getClaim(attributeName))
-				.map(String.class::cast);
-	}
-
-	Optional<Jwt> getCurrentSecurityToken() {
-		var principal = CurrentUserHelper.getAuthentication().getPrincipal();
-
-		if (principal instanceof Jwt kcPrincipal) {
-			return Optional.of(kcPrincipal);
-		}
-
-		return Optional.empty();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserCallContextAttachingInterceptor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserCallContextAttachingInterceptor.java
deleted file mode 100644
index b5caec9b4c02590b3e7fdf8b3f33ba1c09a3843e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserCallContextAttachingInterceptor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static de.ozgcloud.alfa.common.GrpcUtil.*;
-import static de.ozgcloud.alfa.common.callcontext.ContextService.*;
-
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-
-import de.ozgcloud.alfa.RequestAttributes;
-import io.grpc.CallOptions;
-import io.grpc.Channel;
-import io.grpc.ClientCall;
-import io.grpc.ClientInterceptor;
-import io.grpc.ForwardingClientCall.SimpleForwardingClientCall;
-import io.grpc.Metadata;
-import io.grpc.MethodDescriptor;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-class UserCallContextAttachingInterceptor implements ClientInterceptor {
-
-	@Autowired
-	private ApplicationContext context;
-	@Autowired(required = false)
-	private RequestAttributes reqAttributes;
-
-	@Override
-	public <A, B> ClientCall<A, B> interceptCall(MethodDescriptor<A, B> method, CallOptions callOptions, Channel next) {
-		return new CallContextAttachingClientCall<>(next.newCall(method, callOptions));
-	}
-
-	final class CallContextAttachingClientCall<A, B> extends SimpleForwardingClientCall<A, B> {
-
-		protected CallContextAttachingClientCall(ClientCall<A, B> delegate) {
-			super(delegate);
-		}
-
-		@Override
-		public void start(Listener<B> responseListener, Metadata headers) {
-			headers.merge(buildCallContextWithoutUser());
-			super.start(responseListener, headers);
-		}
-
-		private Metadata buildCallContextWithoutUser() {
-			var metadata = new Metadata();
-
-			Optional.ofNullable(context.getId()).map(String::getBytes)
-					.ifPresentOrElse(bytes -> metadata.put(createKeyOf(KEY_CLIENT_NAME), bytes), () -> LOG.warn("Missing value 'client name'"));
-
-			metadata.put(createKeyOf(KEY_REQUEST_ID), getRequestId().getBytes());
-
-			return metadata;
-		}
-
-		private String getRequestId() {
-			return Objects.isNull(reqAttributes) ? "- no request scope -" : reqAttributes.getRequestId();
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserConfiguration.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserConfiguration.java
deleted file mode 100644
index b512ed63caf33170b7e7be2b1ac0cc1e5131ecc4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserConfiguration.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static de.ozgcloud.alfa.common.user.UserRole.*;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
-import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
-import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
-import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl;
-
-import io.grpc.Channel;
-import io.grpc.ManagedChannelBuilder;
-
-@Configuration
-class UserConfiguration {
-
-	@ConditionalOnProperty(name = "grpc.client.user-manager.address")
-	@Bean
-	Channel userManagerChannel(UserManagerClientProperties properties) {
-		var builder = ManagedChannelBuilder.forTarget(properties.getAddress())
-				.intercept(userCallContextAttachingInterceptor());
-		if (StringUtils.equalsIgnoreCase(properties.getNegotiationType(), "PLAINTEXT")) {
-			builder.usePlaintext();
-		}
-		return builder.build();
-	}
-
-	@Bean
-	UserCallContextAttachingInterceptor userCallContextAttachingInterceptor() {
-		return new UserCallContextAttachingInterceptor();
-	}
-
-	@Bean
-	static RoleHierarchy roleHierarchy() {
-		var hierarchy = new RoleHierarchyImpl();
-		hierarchy.setHierarchy(addRolePrefix(VERWALTUNG_LOESCHEN) + " > " + addRolePrefix(VERWALTUNG_USER));
-		return hierarchy;
-	}
-
-	private static String addRolePrefix(String roleName) {
-		return CurrentUserHelper.ROLE_PREFIX + roleName;
-	}
-
-	@Bean
-	static MethodSecurityExpressionHandler methodSecurityExpressionHandler(RoleHierarchy roleHierarchy) {
-		DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
-		expressionHandler.setRoleHierarchy(roleHierarchy);
-		return expressionHandler;
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserId.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserId.java
deleted file mode 100644
index 83f96ffad874c2998c9f05bff974fe8c4af712c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserId.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.UUID;
-
-import org.apache.commons.lang3.StringUtils;
-
-import de.ozgcloud.common.datatype.StringBasedValue;
-import lombok.AccessLevel;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PACKAGE)
-@EqualsAndHashCode(callSuper = true)
-public class UserId extends StringBasedValue {
-
-	private static final long serialVersionUID = 1L;
-
-	UserId(String userId) {
-		super(userId);
-	}
-
-	public static UserId from(UUID userId) {
-		return UserId.from(userId.toString());
-	}
-
-	public static UserId from(String userId) {
-		return new UserId(userId);
-	}
-
-	public static UserId empty() {
-		return new UserId(StringUtils.EMPTY);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserIdMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserIdMapper.java
deleted file mode 100644
index 361f7e5b9b89143a5be159879a3c91ecdcba5938..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserIdMapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-
-@Mapper
-public interface UserIdMapper {
-
-	default UserId fromString(String userId) {
-		return Optional.ofNullable(StringUtils.trimToNull(userId)).map(UserId::from).orElse(null);
-	}
-
-	default String toString(UserId userId) {
-		return userId == null ? null : userId.toString();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java
deleted file mode 100644
index 65aba9f052e5e1da5d8b20160a04b30d72fb2ceb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerClientProperties.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties(prefix = "grpc.client.user-manager")
-public class UserManagerClientProperties {
-	
-	/**
-	 * UserManager grpc adress.
-	 */
-	private String address;
-	
-	/**
-	 * UserManager grpc negotiationType.
-	 */
-	private String negotiationType;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerProperties.java
deleted file mode 100644
index 696818e32307e3f4172afd78f119df0737f51757..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerProperties.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties("ozgcloud.user-manager")
-public class UserManagerProperties {
-
-	private String url;
-	private String profileTemplate;
-	private String searchTemplate;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUnavailableException.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUnavailableException.java
deleted file mode 100644
index 9b5be14c627fc6372c4ad68903853aa261db3400..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUnavailableException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import de.ozgcloud.alfa.common.errorhandling.FunctionalException;
-import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
-
-public class UserManagerUnavailableException extends FunctionalException {
-
-	private static final long serialVersionUID = 1L;
-	static final FunctionalErrorCode USER_MANAGER_UNAVAILABLE = () -> "general.service_unavailable.usermanager";
-
-	public UserManagerUnavailableException() {
-		super(USER_MANAGER_UNAVAILABLE);
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUrlProvider.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUrlProvider.java
deleted file mode 100644
index 8777af4d2960ce65c5d956b663ab844da6ae8453..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserManagerUrlProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import de.ozgcloud.alfa.postfach.PostfachMail;
-
-@Service
-public class UserManagerUrlProvider {
-
-	public static final String SYSTEM_USER_IDENTIFIER = "system";
-	public static final Predicate<PostfachMail> SENT_BY_CLIENT_USER = postfachNachricht -> Optional.ofNullable(postfachNachricht.getCreatedBy())
-			.map(createdBy -> !createdBy.toString().startsWith(SYSTEM_USER_IDENTIFIER)).orElse(false);
-
-	@Autowired
-	private UserManagerProperties userManagerProperties;
-
-	/** only for building links */
-	public String getUserProfileTemplate() {
-		return userManagerProperties.getUrl() + userManagerProperties.getProfileTemplate();
-	}
-
-	public UriComponentsBuilder getSearchUserProfilesTemplate() {
-		return UriComponentsBuilder.fromUriString(userManagerProperties.getUrl() + userManagerProperties.getSearchTemplate());
-	}
-
-	public boolean isConfiguredForUserProfile() {
-		return StringUtils.isNotBlank(userManagerProperties.getUrl()) && StringUtils.isNotBlank(userManagerProperties.getProfileTemplate());
-	}
-
-	public boolean isConfiguredForSearchUserProfile() {
-		return StringUtils.isNotBlank(userManagerProperties.getUrl()) && StringUtils.isNotBlank(userManagerProperties.getSearchTemplate());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfile.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfile.java
deleted file mode 100644
index 4a8a00fedf69892452a71f1a2c93927f8a514d1d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfile.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Collection;
-import java.util.Date;
-
-import org.springframework.security.core.GrantedAuthority;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Singular;
-
-@Builder
-@Getter
-@AllArgsConstructor
-public class UserProfile {
-
-	@JsonIgnore
-	private UserId id;
-	private String userName;
-	private String firstName;
-	private String lastName;
-	private Date createdAt;
-
-	@Singular
-	private Collection<GrantedAuthority> authorities;
-	@Singular
-	private Collection<String> organisationseinheitIds;
-
-	public String getFullName() {
-		return String.format("%s %s", firstName, lastName);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfileMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfileMapper.java
deleted file mode 100644
index 7fe8161df72f321617101c26afa3135be7d2ac12..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserProfileMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.user.userprofile.GrpcUserProfile;
-
-@Mapper
-interface UserProfileMapper {
-
-	UserProfile mapFrom(GrpcUserProfile userProfile);
-
-	default UserId toUserId(String userId) {
-		return UserId.from(userId);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRemoteService.java
deleted file mode 100644
index 8af36fa806b2c17780e4ad58436e91a247515676..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRemoteService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc;
-import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
-import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
-import io.grpc.Channel;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-import lombok.extern.log4j.Log4j2;
-
-@ConditionalOnProperty(name = "grpc.client.user-manager.address")
-@Log4j2
-@Service
-class UserRemoteService {
-
-	@Autowired
-	private Channel userManagerChannel;
-
-	@Autowired
-	private UserProfileMapper mapper;
-
-	public UserProfile getById(UserId id) {
-		var response = getUserProfileServiceStub().getById(buildRequest(id));
-		return mapper.mapFrom(response.getUserProfile());
-	}
-
-	public Optional<UserProfile> getByExternalId(UserId externalUserId) {
-		try {
-			var response = getUserProfileServiceStub().getByExternalId(buildRequest(externalUserId));
-			return Optional.of(mapper.mapFrom(response.getUserProfile()));
-		} catch (StatusRuntimeException e) {
-			if (isNotFound(e)) {
-				return Optional.empty();
-			}
-			LOG.error("Error loading internal Userid.", e);
-			throw new UserManagerUnavailableException();
-		}
-	}
-
-	private GrpcGetUserProfileRequest buildRequest(UserId externalUserId) {
-		return GrpcGetUserProfileRequest.newBuilder().setUserId(externalUserId.toString()).build();
-	}
-
-	private boolean isNotFound(StatusRuntimeException e) {
-		return e.getStatus().getCode().value() == Status.NOT_FOUND.getCode().value();
-	}
-
-	UserProfileServiceBlockingStub getUserProfileServiceStub() {
-		return UserProfileServiceGrpc.newBlockingStub(userManagerChannel);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRole.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRole.java
deleted file mode 100644
index eaf662a1662680ba29bffd73406511bdc4ccf961..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserRole.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class UserRole {
-
-	public static final String EINHEITLICHER_ANSPRECHPARTNER = "EINHEITLICHER_ANSPRECHPARTNER";
-	public static final String VERWALTUNG_LOESCHEN = "VERWALTUNG_LOESCHEN";
-	public static final String VERWALTUNG_POSTSTELLE = "VERWALTUNG_POSTSTELLE";
-	public static final String VERWALTUNG_USER = "VERWALTUNG_USER";
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserService.java
deleted file mode 100644
index adbd01edfb8feb837dfd90bc18ea8fd73c784c86..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/UserService.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Service
-public class UserService {
-
-	@Autowired(required = false)
-	private UserRemoteService remoteService;
-
-	public UserProfile getById(UserId userId) {
-		try {
-			return getUserRemoteService().getById(userId);
-		} catch (StatusRuntimeException e) {
-			if (isNotFound(e)) {
-				// TODO use optional, rename function to 'find...', move errorhandling to
-				// remoteService
-				return null;
-			}
-			LOG.error("Error on loading UserProfile from UserManager.");
-			throw new UserManagerUnavailableException();
-		}
-	}
-
-	private boolean isNotFound(StatusRuntimeException e) {
-		return e.getStatus().getCode().value() == Status.NOT_FOUND.getCode().value();
-	}
-
-	/** For package-internal use only */
-	public Optional<UserId> getInternalId(UserId externalId) {
-		try {
-			return getUserRemoteService().getByExternalId(externalId).map(UserProfile::getId);
-		} catch (UserManagerUnavailableException e) {
-			return Optional.empty();
-		}
-	}
-
-	private UserRemoteService getUserRemoteService() {
-		if (Objects.nonNull(remoteService)) {
-			return remoteService;
-		}
-		LOG.warn("UserManager is not configured.");
-		throw new UserManagerUnavailableException();
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadService.java
deleted file mode 100644
index 11cc784f97b2dc4937fe06b3172fd865fb154466..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadService.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.zipdownload;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.common.binaryfile.TempFileUtils;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-public class ZipDownloadService {
-
-	private final BinaryFileService binaryFileService;
-
-	public void write(List<OzgFile> ozgFiles, OutputStream out) {
-		writeZipFileContent(createZipFile(ozgFiles), out);
-	}
-
-	File createZipFile(List<OzgFile> ozgFiles) {
-		var file = TempFileUtils.createTmpFile().toFile();
-		try (var zipOutputStream = new ZipOutputStream(new FileOutputStream(file))) {
-			ozgFiles.forEach(ozgFile -> addOzgFileToZip(ozgFile, zipOutputStream));
-			return file;
-		} catch (Exception e) {
-			throw new TechnicalException("Error creating zip file", e);
-		}
-	}
-
-	void addOzgFileToZip(OzgFile ozgFile, ZipOutputStream zipOutputStream) {
-		try {
-			zipOutputStream.putNextEntry(new ZipEntry(ozgFile.getName()));
-			binaryFileService.writeFileContent(ozgFile.getId(), zipOutputStream);
-			zipOutputStream.closeEntry();
-		} catch (IOException e) {
-			throw new TechnicalException("Cannot add file to ZIP.", e);
-		}
-	}
-
-	void writeZipFileContent(File zipFile, OutputStream outputStream) {
-		try (var fileInputStream = new FileInputStream(zipFile)) {
-			fileInputStream.transferTo(outputStream);
-		} catch (Exception e) {
-			throw new TechnicalException("Error writing zip file to output stream", e);
-		}
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/DmsProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/DmsProperties.java
deleted file mode 100644
index 9ec65379fa46462a9e3c9eab9fd84deeb2ce419a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/DmsProperties.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package de.ozgcloud.alfa.export;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties("ozgcloud.dms")
-class DmsProperties {
-
-	private boolean enabled;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportRemoteService.java
deleted file mode 100644
index db442c3709b5b298c2c483c461abc2172a811313..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportRemoteService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.archive.grpc.export.ExportServiceGrpc.ExportServiceBlockingStub;
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class ExportRemoteService {
-
-	@GrpcClient(GrpcUtil.ARCHIVE_MANAGER_GRPC_CLIENT)
-	private ExportServiceBlockingStub exportServiceStub;
-
-	public ExportedVorgangFile exportVorgang(String vorgangId) {
-		var responseIterator = exportServiceStub.exportVorgang(GrpcExportVorgangRequest.newBuilder().setVorgangId(vorgangId).build());
-		return new StreamedExportedVorgangFile(responseIterator);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangController.java
deleted file mode 100644
index 8bf7bc9126858a8caef16cd33d47f3802c5248a0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangController.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(ExportVorgangController.PATH)
-@RequiredArgsConstructor
-public class ExportVorgangController {
-
-	static final String PATH = "/api/vorgangs"; // NOSONAR
-
-	private final ExportRemoteService exportRemoteService;
-
-	@GetMapping(value = "{vorgangId}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
-	public ResponseEntity<StreamingResponseBody> exportVorgang(@PathVariable String vorgangId) {
-		var exportedVorgangFile = exportRemoteService.exportVorgang(vorgangId);
-		return ResponseEntity.ok()
-				.header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s", exportedVorgangFile.getFileName()))
-				.contentType(MediaType.APPLICATION_OCTET_STREAM)
-				.body(exportedVorgangFile::writeToOutputStream);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java
deleted file mode 100644
index 33e5c38b351cb727281233dd7b9e9a26d88acc55..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-import java.util.function.Predicate;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Component
-class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	private static final Predicate<VorgangWithEingang> IS_VORGANG_ABGESCHLOSSEN = vorgang -> vorgang.getStatus() == VorgangStatus.ABGESCHLOSSEN;
-
-	static final LinkRelation REL_EXPORT = LinkRelation.of("export");
-	static final LinkRelation REL_ARCHIVE = LinkRelation.of("archive");
-
-	private final DmsProperties dmsProperties;
-	private final VorgangController vorgangController;
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-
-		if (Objects.isNull(vorgang)) {
-			return model;
-		}
-
-		return ModelBuilder.fromModel(model)
-				.ifMatch(IS_VORGANG_ABGESCHLOSSEN.and(vorgangController::isEditable))
-				.addLink(linkTo(methodOn(ExportVorgangController.class).exportVorgang(vorgang.getId())).withRel(REL_EXPORT))
-				.ifMatch(IS_VORGANG_ABGESCHLOSSEN.and(isDmsEnabled()).and(vorgangController::isEditable))
-				.addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
-						null)).withRel(REL_ARCHIVE))
-				.buildModel();
-	}
-
-	private Predicate<VorgangWithEingang> isDmsEnabled() {
-		return vorgang -> dmsProperties.isEnabled();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportedVorgangFile.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportedVorgangFile.java
deleted file mode 100644
index be6c0d7c18f2e6c54787308264e8a2dd23481d68..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/ExportedVorgangFile.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-interface ExportedVorgangFile {
-
-	String getFileName();
-
-	void writeToOutputStream(OutputStream outputStream) throws IOException;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java b/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java
deleted file mode 100644
index 255b971d7f6744b2a417ebb33d24539aceeecee1..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFile.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Iterator;
-
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.Getter;
-
-class StreamedExportedVorgangFile implements ExportedVorgangFile {
-
-	@Getter
-	private final String fileName;
-	private final Iterator<GrpcExportVorgangResponse> responseIterator;
-
-	public StreamedExportedVorgangFile(Iterator<GrpcExportVorgangResponse> responseIterator) {
-		this.fileName = getFileNameFrom(responseIterator);
-		this.responseIterator = responseIterator;
-	}
-
-	static String getFileNameFrom(Iterator<GrpcExportVorgangResponse> responseIterator) {
-		if (!responseIterator.hasNext()) {
-			throw new TechnicalException("Response is empty");
-		}
-		return responseIterator.next().getVorgangFile().getFileName();
-	}
-
-	@Override
-	public void writeToOutputStream(OutputStream outputStream) throws IOException {
-		while (responseIterator.hasNext()) {
-			outputStream.write(responseIterator.next().getVorgangFile().getFileContent().toByteArray());
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/Hint.java b/alfa-service/src/main/java/de/ozgcloud/alfa/hint/Hint.java
deleted file mode 100644
index f9b4ec41c69501f0f415b758fea5abb6e86a24c3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/Hint.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-class Hint {
-
-	private String code;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintController.java
deleted file mode 100644
index 36a4ff7339d41ad2aca4414295adb7ef87423b9f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintController.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping(HintController.PATH)
-public class HintController {
-
-	static final String PATH = "/api/hints"; // NOSONAR
-
-	@Autowired
-	private HintService service;
-	@Autowired
-	private HintModelAssembler modelAssembler;
-
-	@GetMapping
-	public CollectionModel<EntityModel<Hint>> getAll() {
-		return modelAssembler.toCollectionModel(service.findHints());
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintModelAssembler.java
deleted file mode 100644
index f7639f549bba1143a6542cc19d3bcb46d98bb0af..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintModelAssembler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.List;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class HintModelAssembler implements RepresentationModelAssembler<Hint, EntityModel<Hint>> {
-
-	public CollectionModel<EntityModel<Hint>> toCollectionModel(List<Hint> entities) {
-		return CollectionModel.of(entities.stream().map(this::toModel).toList(), linkTo(HintController.class).withSelfRel());
-	}
-
-	@Override
-	public EntityModel<Hint> toModel(Hint hint) {
-		return ModelBuilder.fromEntity(hint).addLink(buildSelfLink(hint)).buildModel();
-	}
-
-	private Link buildSelfLink(Hint hint) {
-		return linkTo(HintController.class).slash(String.format("/%s", hint.getCode())).withSelfRel();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintRootResourceProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintRootResourceProcessor.java
deleted file mode 100644
index 651e14ef63583ef1e8b89d61bfa0cb4de7f22ba9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintRootResourceProcessor.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.Root;
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class HintRootResourceProcessor implements RepresentationModelProcessor<EntityModel<? extends Root>> {
-
-	static final String HINTS_RELATION = "hints";
-
-	@Autowired
-	private HintService service;
-
-	@Override
-	public EntityModel<? extends Root> process(EntityModel<? extends Root> model) {
-		return ModelBuilder.fromModel(model)
-				.ifMatch(service::hasHints)
-				.addLink(linkTo(HintController.class).withRel(HINTS_RELATION))
-				.buildModel();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintService.java
deleted file mode 100644
index e4e7dfa5020f63bdfecd3168f837772b8a09777b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/hint/HintService.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-
-@Service
-class HintService {
-
-	static final String USER_NO_ORGANISATIONS_EINHEIT_ID_CODE = "user.no.organisationsEinheitId";
-
-	@Autowired
-	private CurrentUserService currentUserService;
-
-	public boolean hasHints() {
-		return !findHints().isEmpty();
-	}
-
-	public List<Hint> findHints() {
-		var hints = new ArrayList<Hint>();
-
-		getHasUserNoOrganisationsEinheitIdHint().ifPresent(hints::add);
-
-		return hints;
-	}
-
-	Optional<Hint> getHasUserNoOrganisationsEinheitIdHint() {
-		if (getOrganisationsEinheitIds().isEmpty() && hasOrganisationsEinheitIdRequiredRole()) {
-			return Optional.of(buildUserNoOrganisationsEinheitIdHint());
-		}
-		return Optional.empty();
-	}
-
-	private Hint buildUserNoOrganisationsEinheitIdHint() {
-		return Hint.builder().code(USER_NO_ORGANISATIONS_EINHEIT_ID_CODE).build();
-	}
-
-	Collection<String> getOrganisationsEinheitIds() {
-		return currentUserService.getUser().getOrganisationseinheitIds();
-	}
-
-	boolean hasOrganisationsEinheitIdRequiredRole() {
-		return !currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER) && !currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java
deleted file mode 100644
index 92c5615c58bde1ddf6c73456bd21d283e3515b65..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilder.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-class AktenzeichenChangeHistoryBuilder extends ChangeHistoryBuilder<AktenzeichenChangeHistoryBuilder> {
-
-	static final String BODY_PROPERTY_AKTENZEICHEN = "aktenzeichen";
-
-	public static AktenzeichenChangeHistoryBuilder builder() {
-		return new AktenzeichenChangeHistoryBuilder();
-	}
-
-	@Override
-	boolean isRelevant(Command command) {
-		return command.getCommandOrder().equals(CommandOrder.SET_AKTENZEICHEN);
-	}
-
-	@Override
-	CommandWithChangeValues toCommandWithChangeValues(CommandWithPrevious commandWithPrevious) {
-		return new CommandWithChangeValues(
-				commandWithPrevious.getCommand(),
-				getAktenzeichenBeforeChange(commandWithPrevious),
-				getAktenzeichenAfterChange(commandWithPrevious));
-	}
-
-	String getAktenzeichenBeforeChange(CommandWithPrevious commandWithPrevious) {
-		return Optional.ofNullable(commandWithPrevious.getPrevious())
-				.map(this::getAktenzeichen)
-				.orElse(StringUtils.EMPTY);
-	}
-
-	String getAktenzeichenAfterChange(CommandWithPrevious commandWithPrevious) {
-		return getAktenzeichen(commandWithPrevious.getCommand());
-	}
-
-	String getAktenzeichen(Command command) {
-		return getValueFromCommandBody(BODY_PROPERTY_AKTENZEICHEN, command);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java
deleted file mode 100644
index 89ede1f3abfeb489b5dbac97d84367db1effbd5f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilder.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-class AssignedUserChangeHistoryBuilder extends ChangeHistoryBuilder<AssignedUserChangeHistoryBuilder> {
-
-	static final String BODY_PROPERTY_ASSIGNED_USER = "assignedTo";
-
-	private UserProfileCache userProfileCache;
-
-	public static AssignedUserChangeHistoryBuilder builder() {
-		return new AssignedUserChangeHistoryBuilder();
-	}
-
-	public AssignedUserChangeHistoryBuilder withUserProfileCache(UserProfileCache userProfileCache) {
-		this.userProfileCache = userProfileCache;
-		return this;
-	}
-
-	@Override
-	boolean isRelevant(Command command) {
-		return command.getCommandOrder().equals(CommandOrder.ASSIGN_USER);
-	}
-
-	@Override
-	CommandWithChangeValues toCommandWithChangeValues(CommandWithPrevious commandWithPrevious) {
-		return new CommandWithChangeValues(
-				commandWithPrevious.getCommand(),
-				getAssignedUserBeforeChange(commandWithPrevious),
-				getAssignedUserAfterChange(commandWithPrevious));
-	}
-
-	String getAssignedUserBeforeChange(CommandWithPrevious commandWithPrevious) {
-		return Optional.ofNullable(commandWithPrevious.getPrevious())
-				.map(this::getAssignedUserFullNameFromCommand)
-				.orElse(StringUtils.EMPTY);
-	}
-
-	String getAssignedUserAfterChange(CommandWithPrevious commandWithPrevious) {
-		return getAssignedUserFullNameFromCommand(commandWithPrevious.getCommand());
-	}
-
-	String getAssignedUserFullNameFromCommand(Command command) {
-		var assignedUserId = UserId.from(getValueFromCommandBody(BODY_PROPERTY_ASSIGNED_USER, command));
-		return userProfileCache.getUserProfile(assignedUserId).getFullName();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java
deleted file mode 100644
index 15c36b91fecc98ea7754587cd12b10e0088dc3fa..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilder.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.historie.CommandWithPrevious.CommandWithPreviousBuilder;
-
-abstract class ChangeHistoryBuilder<T extends ChangeHistoryBuilder<T>> {
-
-	List<Command> commands;
-	String organisationseinheitenID;
-
-	@SuppressWarnings("unchecked")
-	public T withCommands(List<Command> commands) {
-		this.commands = commands;
-		return (T) this;
-	}
-
-	@SuppressWarnings("unchecked")
-	public T withOrganisationseinheitenID(String organisationseinheitenID) {
-		this.organisationseinheitenID = organisationseinheitenID;
-		return (T) this;
-	}
-
-	public Stream<VorgangChange> build() {
-		return Stream.of(retrieveRelevantCommands())
-				.map(this::inChronologicalOrder)
-				.map(this::addPreviousCommand)
-				.map(this::toCommandsWithChangeValues)
-				.flatMap(this::toVorgangChanges);
-	}
-
-	Stream<Command> retrieveRelevantCommands() {
-		return commands.stream().filter(this::isRelevant);
-	}
-
-	abstract boolean isRelevant(Command command);
-
-	Stream<Command> inChronologicalOrder(Stream<Command> commands) {
-		return commands.sorted(Comparator.comparing(Command::getFinishedAt));
-	}
-
-	Stream<CommandWithPrevious> addPreviousCommand(Stream<Command> commands) {
-		var commandsList = commands.toList();
-		var result = new ArrayList<CommandWithPrevious>(commandsList.size());
-		for (int i = 0; i < commandsList.size(); i++) {
-			CommandWithPreviousBuilder builder = new CommandWithPreviousBuilder().command(commandsList.get(i));
-			if (i > 0) {
-				builder.previous(commandsList.get(i - 1));
-			}
-			result.add(builder.build());
-		}
-		return result.stream();
-	}
-
-	Stream<CommandWithChangeValues> toCommandsWithChangeValues(Stream<CommandWithPrevious> commands) {
-		return commands.map(this::toCommandWithChangeValues);
-	}
-
-	abstract CommandWithChangeValues toCommandWithChangeValues(CommandWithPrevious commandWithPrevious);
-
-	Stream<VorgangChange> toVorgangChanges(Stream<CommandWithChangeValues> commandsWithChangeValues) {
-		return commandsWithChangeValues.map(this::toVorgangChange);
-	}
-
-	VorgangChange toVorgangChange(CommandWithChangeValues commandChangeValues) {
-		return VorgangChange.builder()
-				.valueBeforeChange(commandChangeValues.valueBeforeChange())
-				.valueAfterChange(commandChangeValues.valueAfterChange())
-				.authorFullName(commandChangeValues.command().getCreatedByName())
-				.finishedAt(commandChangeValues.command().getFinishedAt())
-				.order(commandChangeValues.command().getOrder())
-				.organisationseinheitenID(organisationseinheitenID)
-				.build();
-	}
-
-	String getValueFromCommandBody(String propertyName, Command command) {
-		return Optional.ofNullable(command.getBody()).map(body -> body.get(propertyName)).map(Object::toString).orElse(StringUtils.EMPTY);
-	}
-
-	record CommandWithChangeValues(Command command, String valueBeforeChange, String valueAfterChange) {
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/CommandWithPrevious.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/CommandWithPrevious.java
deleted file mode 100644
index bc24c2284bf105e4bd923ee56ccc64a4dfb3f2d5..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/CommandWithPrevious.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import de.ozgcloud.alfa.common.command.Command;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Builder(toBuilder = true)
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-class CommandWithPrevious {
-
-	private Command command;
-	private Command previous;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieCommandHandler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieCommandHandler.java
deleted file mode 100644
index 3da6312c0c7c5787c74fad6a9ba7270db2e15c52..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieCommandHandler.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandBodyMapper;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandStatus;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.kommentar.Kommentar;
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-
-/**
- * Bitte zukuenftig als Implementierung von {@link HistorieProcessor} in den
- * jeweiligen fachlichen packages umsetzen.
- *
- * TODO: Aktuellen Code auf Processoren umstellen
- */
-@Component
-class HistorieCommandHandler {
-
-	static final String DIRECTION_INCOMMING = "IN";
-	static final String DIRECTION_OUTGOING = "OUT";
-	static final String DIRECTION = "direction";
-	static final String OZGCLOUD_NACHRICHTEN_MANAGER = "OzgCloud_NachrichtenManager";
-	static final String CLIENT = "client";
-
-	private static final Predicate<Command> IS_CREATE_ATTACHED_ITEM = command -> command.getCommandOrder() == CommandOrder.CREATE_ATTACHED_ITEM;
-
-	@Autowired
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@Autowired
-	private CommandService commandService;
-
-	public boolean isHistorieCommand(Command command) {
-		return !isOutgoingPostfachNachrichtByOzgCloudNachrichtenManager(command)
-				&& !isCreateLoeschAnforderungVorgangAttachedItem(command)
-				&& !isLoeschAnforderungZuruecknehmenRevoked(command)
-				&& !isDeleteVorgangAttachedItem(command);
-	}
-
-	boolean isOutgoingPostfachNachrichtByOzgCloudNachrichtenManager(Command command) {
-		return command.getCommandOrder().equals(CommandOrder.CREATE_ATTACHED_ITEM) && isOzgCloudNachrichtenManager(command) && isOutgoing(command);
-	}
-
-	private boolean isOzgCloudNachrichtenManager(Command command) {
-		return StringUtils.equals(MapUtils.getString(command.getBody(), CLIENT), OZGCLOUD_NACHRICHTEN_MANAGER);
-	}
-
-	private boolean isOutgoing(Command command) {
-		return isDirection(command, DIRECTION_OUTGOING);
-	}
-
-	boolean isCreateLoeschAnforderungVorgangAttachedItem(Command command) {
-		return Optional.of(command)
-				.filter(IS_CREATE_ATTACHED_ITEM)
-				.map(Command::getBody)
-				.map(bodyMap -> MapUtils.getString(bodyMap, VorgangAttachedItem.FIELD_ITEM_NAME))
-				.map(vorgangAttachedItemService::isLoeschAnforderung)
-				.orElse(false);
-	}
-
-	boolean isLoeschAnforderungZuruecknehmenRevoked(Command command) {
-		if (command.getCommandOrder() != CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN) {
-			return false;
-		}
-		var changeStatusCommand = commandService.getById(getChangeStatusCommandId(command));
-		return changeStatusCommand.getStatus() == CommandStatus.REVOKED;
-	}
-
-	private String getChangeStatusCommandId(Command command) {
-		return MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD);
-	}
-
-	boolean isDeleteVorgangAttachedItem(Command command) {
-		return command.getCommandOrder() == CommandOrder.DELETE_ATTACHED_ITEM;
-	}
-
-	public Command translateOrder(Command command) {
-		HistorieCommandHandler translator = new HistorieCommandHandler();
-		return switch (command.getCommandOrder()) {
-			case CREATE_ATTACHED_ITEM:
-				yield translator.mapCreateOrder(command);
-			case UPDATE_ATTACHED_ITEM:
-				yield translator.mapUpdateOrder(command);
-			case PATCH_ATTACHED_ITEM:
-				yield translator.mapPatchOrder(command);
-			case SEND_POSTFACH_MAIL:
-				yield command.toBuilder().order(CommandOrder.SEND_POSTFACH_NACHRICHT.name()).build();
-			default:
-				yield command;
-		};
-	}
-
-	private Command mapCreateOrder(Command command) {
-		var resultBuilder = command.toBuilder();
-		var itemName = getItemName(command);
-
-		itemName.ifPresent(name -> {
-			if (name.equals(Kommentar.class.getSimpleName())) {
-				resultBuilder.order(LegacyOrder.CREATE_KOMMENTAR).build();
-			} else if (name.equals(Wiedervorlage.class.getSimpleName())) {
-				resultBuilder.order(LegacyOrder.CREATE_WIEDERVORLAGE).build();
-			} else if (isOzgCloudNachrichtenManager(command) && isIncomming(command)) {
-				resultBuilder.order(CommandOrder.RECEIVE_POSTFACH_NACHRICHT.name()).build();
-			}
-		});
-
-		return resultBuilder.build();
-	}
-
-	private boolean isIncomming(Command command) {
-		return isDirection(command, DIRECTION_INCOMMING);
-	}
-
-	private boolean isDirection(Command command, String expectedDirection) {
-		return StringUtils.equals(MapUtils.getString(getItemMap(command), DIRECTION), expectedDirection);
-	}
-
-	private Command mapUpdateOrder(Command command) {
-		var resultBuilder = command.toBuilder();
-		var itemName = getItemName(command);
-
-		itemName.ifPresent(name -> {
-			if (name.equals(Kommentar.class.getSimpleName())) {
-				resultBuilder.order(LegacyOrder.EDIT_KOMMENTAR).build();
-			} else if (name.equals(Wiedervorlage.class.getSimpleName())) {
-				resultBuilder.order(LegacyOrder.EDIT_WIEDERVORLAGE).build();
-			}
-		});
-
-		return resultBuilder.build();
-	}
-
-	private Optional<String> getItemName(Command command) {
-		return Optional.ofNullable(MapUtils.getString(command.getBody(), CommandBodyMapper.ITEM_NAME_PROPERTY));
-	}
-
-	private Command mapPatchOrder(Command command) {
-		var resultBuilder = command.toBuilder();
-		var isDone = getDoneValue(command);
-
-		isDone.ifPresent(done -> {
-			if (done.booleanValue()) {
-				resultBuilder.order(LegacyOrder.WIEDERVORLAGE_ERLEDIGEN).build();
-			} else {
-				resultBuilder.order(LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN).build();
-			}
-		});
-
-		return resultBuilder.build();
-	}
-
-	private Optional<Boolean> getDoneValue(Command command) {
-		return Optional.ofNullable(MapUtils.getBoolean(getItemMap(command), Wiedervorlage.DONE_FIELD));
-	}
-
-	@SuppressWarnings("unchecked")
-	private Map<String, Object> getItemMap(Command command) {
-		return MapUtils.getMap(command.getBody(), CommandBodyMapper.ITEM_PROPERTY);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieController.java
deleted file mode 100644
index cc355b033ef5c0787054fd68aa163ae30205c0fb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.command.Command;
-
-@RestController
-@RequestMapping(HistorieController.PATH)
-public class HistorieController {
-
-	static final String PATH = "/api/histories"; // NOSONAR
-	static final String PARAM_VORGANG_ID = "vorgangId";
-
-	@Autowired
-	private HistorieService historieService;
-
-	@Autowired
-	private HistorieModelAssembler modelAssembler;
-
-	@GetMapping(params = PARAM_VORGANG_ID)
-	public CollectionModel<EntityModel<Command>> getAll(@RequestParam String vorgangId) {
-		return modelAssembler.toCollectionModel(historieService.findFinishedCommands(vorgangId));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java
deleted file mode 100644
index b3d974cdfde016189d2218ac258a6fac361be750..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-
-@Component
-class HistorieModelAssembler implements RepresentationModelAssembler<Command, EntityModel<Command>> {
-	static final String SYSTEM_NOTIFICATION_MANAGER_PREFIX = "system-notification_manager";
-
-	static final String REL_ASSIGNED_TO = "assignedTo";
-
-	static final String ASSIGNED_TO_BODY_FIELD = "assignedTo";
-
-	@Autowired
-	private UserManagerUrlProvider userManagerUrlProvider;
-
-	@Override
-	public EntityModel<Command> toModel(Command entity) {
-		var cleanCommand = unsetSystemUser(entity);
-		var modelBuilder = ModelBuilder.fromEntity(cleanCommand).addLink(linkTo(HistorieController.class).slash(cleanCommand.getId()).withSelfRel());
-
-		addAssignedTo(cleanCommand, modelBuilder);
-
-		return modelBuilder.buildModel();
-	}
-
-	Command unsetSystemUser(Command entity) {
-		if (isSystemNotificationUser(entity)) {
-			return entity.toBuilder().createdBy(null).build();
-		}
-
-		return entity;
-	}
-
-	private boolean isSystemNotificationUser(Command entity) {
-		return Objects.nonNull(entity.getCreatedBy()) && entity.getCreatedBy().toString().startsWith(SYSTEM_NOTIFICATION_MANAGER_PREFIX);
-	}
-
-	private void addAssignedTo(Command entity, ModelBuilder<Command> modelBuilder) {
-		Optional.ofNullable(entity.getBody()).map(body -> body.get(ASSIGNED_TO_BODY_FIELD))
-				.ifPresent(assignedTo -> {
-					if (userManagerUrlProvider.isConfiguredForUserProfile()) {
-						modelBuilder.addLink(Link.of(String.format(userManagerUrlProvider.getUserProfileTemplate(), assignedTo), REL_ASSIGNED_TO));
-					}
-				});
-	}
-
-	public CollectionModel<EntityModel<Command>> toCollectionModel(Stream<Command> entities) {
-		return CollectionModel.of(entities.map(this::toModel).toList(), linkTo(HistorieController.class).withSelfRel());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieProcessor.java
deleted file mode 100644
index e28cb6a96dcc9748fafd419e0acd4e5ec6b7e815..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieProcessor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.List;
-
-import de.ozgcloud.alfa.common.command.Command;
-
-public interface HistorieProcessor {
-
-	List<Command> process(List<Command> commands);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieService.java
deleted file mode 100644
index 28cf9b859c1b07fb16971ac69715067da0872691..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.MapUtils;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Service
-class HistorieService {
-
-	private final CommandService commandService;
-	private final HistorieCommandHandler historieCommandHandler;
-	private final List<HistorieProcessor> processors;
-
-	public Stream<Command> findFinishedCommands(String vorgangId) {
-		var reduceBy = new HashSet<String>();
-		var commands = commandService.findFinishedCommands(vorgangId)
-				.filter(historieCommandHandler::isHistorieCommand)
-				.map(command -> considerReduceByIds(reduceBy, command))
-				.map(historieCommandHandler::translateOrder).toList();
-
-		commands = commands.stream().filter(command -> !reduceBy.contains(command.getId()))
-				.toList();
-		return processCommands(commands);
-	}
-
-	private Stream<Command> processCommands(List<Command> commands) {
-		return new CommandHistorieProcessor().process(commands).stream();
-	}
-
-	class CommandHistorieProcessor {
-		private List<Command> processedCommands;
-
-		public List<Command> process(List<Command> commands) {
-			processedCommands = commands;
-			processors.forEach(processor -> processedCommands = processor.process(processedCommands));
-			return processedCommands;
-		}
-	}
-
-	private Command considerReduceByIds(Set<String> reduceBy, Command command) {
-		if (isLoeschAnforderungZuruecknehmenCommand(command)) {
-			reduceBy.addAll(getCommandBodyIds(command));
-		}
-		return command;
-	}
-
-	private boolean isLoeschAnforderungZuruecknehmenCommand(Command command) {
-		return command.getCommandOrder() == CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN;
-	}
-
-	private Set<String> getCommandBodyIds(Command command) {
-		return Set.of(getDeleteAttachedItemCommandId(command), getChangeStatusCommandId(command));
-	}
-
-	private String getDeleteAttachedItemCommandId(Command command) {
-		return MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD);
-	}
-
-	private String getChangeStatusCommandId(Command command) {
-		return MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java
deleted file mode 100644
index 5c2cef4d06968ad08f14dbe239f2b7d57d242cc4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilder.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class StatusChangeHistoryBuilder extends ChangeHistoryBuilder<StatusChangeHistoryBuilder> {
-
-	static final String GELOESCHT_NAME = "Gelöscht";
-	static final Map<VorgangStatus, String> VORGANG_STATUS_TO_NAME = Map.of(
-			VorgangStatus.NEU, "Neu",
-			VorgangStatus.ANGENOMMEN, "Angenommen",
-			VorgangStatus.VERWORFEN, "Verworfen",
-			VorgangStatus.IN_BEARBEITUNG, "In Bearbeitung",
-			VorgangStatus.BESCHIEDEN, "Beschieden",
-			VorgangStatus.ABGESCHLOSSEN, "Abgeschlossen",
-			VorgangStatus.WEITERGELEITET, "Weitergeleitet",
-			VorgangStatus.ZU_LOESCHEN, "Zu Löschen");
-	static final Set<CommandOrder> STATUS_CHANGE_COMMAND_ORDER = Set.of(
-			CommandOrder.VORGANG_ANNEHMEN,
-			CommandOrder.VORGANG_VERWERFEN,
-			CommandOrder.VORGANG_ZURUECKHOLEN,
-			CommandOrder.VORGANG_BEARBEITEN,
-			CommandOrder.VORGANG_BESCHEIDEN,
-			CommandOrder.VORGANG_ABSCHLIESSEN,
-			CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN,
-			CommandOrder.VORGANG_WIEDEREROEFFNEN,
-			CommandOrder.VORGANG_LOESCHEN,
-			CommandOrder.VORGANG_ZURUECKSTELLEN);
-
-	public static StatusChangeHistoryBuilder builder() {
-		return new StatusChangeHistoryBuilder();
-	}
-
-	@Override
-	boolean isRelevant(Command command) {
-		return STATUS_CHANGE_COMMAND_ORDER.contains(command.getCommandOrder());
-	}
-
-	@Override
-	CommandWithChangeValues toCommandWithChangeValues(CommandWithPrevious commandWithPrevious) {
-		return new CommandWithChangeValues(commandWithPrevious.getCommand(),
-				getStatusBeforeChange(commandWithPrevious),
-				getStatusAfterChange(commandWithPrevious));
-	}
-
-	String getStatusBeforeChange(CommandWithPrevious commandWithPrevious) {
-		return Optional.ofNullable(commandWithPrevious.getPrevious())
-				.map(this::getStatus)
-				.orElse(VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU));
-	}
-
-	String getStatusAfterChange(CommandWithPrevious commandWithPrevious) {
-		return getStatus(commandWithPrevious.getCommand());
-	}
-
-	String getStatus(Command command) {
-		return switch (command.getCommandOrder()) {
-			case VORGANG_ANNEHMEN, VORGANG_ZURUECKSTELLEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.ANGENOMMEN);
-			case VORGANG_VERWERFEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN);
-			case VORGANG_ZURUECKHOLEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU);
-			case VORGANG_BEARBEITEN, VORGANG_WIEDEREROEFFNEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.IN_BEARBEITUNG);
-			case VORGANG_BESCHEIDEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.BESCHIEDEN);
-			case VORGANG_ABSCHLIESSEN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.ABGESCHLOSSEN);
-			case VORGANG_ZUM_LOESCHEN_MARKIEREN -> VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN);
-			case VORGANG_LOESCHEN -> GELOESCHT_NAME;
-			default -> throw new IllegalArgumentException("Unexpected or unknown command order " + command.getOrder());
-		};
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/UserProfileCache.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/UserProfileCache.java
deleted file mode 100644
index 1358169db20563cbf7814fedbed40c265b8945be..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/UserProfileCache.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.Function;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.AccessLevel;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-class UserProfileCache {
-
-	private final Function<UserId, UserProfile> findUserProfileForUserId;
-
-	private final Map<UserId, UserProfile> cache = new HashMap<>();
-
-	public static UserProfileCache create(Function<UserId, UserProfile> findUserProfileForUserId) {
-		return new UserProfileCache(findUserProfileForUserId);
-	}
-
-	public UserProfile getUserProfile(UserId userId) {
-		if (!cache.containsKey(userId)) {
-			findAndAddToCache(userId);
-		}
-		return cache.get(userId);
-	}
-
-	private void findAndAddToCache(UserId userId) {
-		var userProfile = findUserProfileForUserId.apply(userId);
-		if (userProfile == null) {
-			throw new TechnicalException("UserProfile not found for user with ID " + userId);
-		}
-		cache.put(userId, userProfile);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChange.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChange.java
deleted file mode 100644
index 51f570e14b89bef0b4ec4b45f87f295e65609aab..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChange.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.time.ZonedDateTime;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Builder(toBuilder = true)
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class VorgangChange {
-
-	private String valueBeforeChange;
-	private String valueAfterChange;
-	private String authorFullName;
-	private ZonedDateTime finishedAt;
-	private String order;
-	private String organisationseinheitenID;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistory.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistory.java
deleted file mode 100644
index 414e7f46e74d6a6221b1dc1be887730b23a4cff5..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.List;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Builder(toBuilder = true)
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class VorgangChangeHistory {
-
-	private List<VorgangChange> statusChangeHistory;
-	private List<VorgangChange> aktenzeichenChangeHistory;
-	private List<VorgangChange> assignedUserChangeHistory;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryService.java
deleted file mode 100644
index 15b6a7374468900ae1b2acd249354726e0102fef..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryService.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@Service
-@RequiredArgsConstructor
-public class VorgangChangeHistoryService {
-
-	private final UserService userService;
-	private final CommandService commandService;
-
-	public VorgangChangeHistory createVorgangChangeHistory(VorgangWithEingang vorgang) {
-		var commands = commandService.findFinishedCommands(vorgang.getId()).toList();
-		return VorgangChangeHistory.builder()
-				.statusChangeHistory(createStatusChangeHistory(vorgang, commands).toList())
-				.aktenzeichenChangeHistory(createAktenzeichenChangeHistory(vorgang, commands).toList())
-				.assignedUserChangeHistory(createAssignedUserChangeHistory(vorgang, commands).toList())
-				.build();
-	}
-
-	Stream<VorgangChange> createStatusChangeHistory(VorgangWithEingang vorgang, List<Command> commands) {
-		return StatusChangeHistoryBuilder.builder()
-				.withCommands(commands)
-				.withOrganisationseinheitenID(vorgang.getOrganisationseinheitenID())
-				.build();
-	}
-
-	Stream<VorgangChange> createAktenzeichenChangeHistory(VorgangWithEingang vorgang, List<Command> commands) {
-		return AktenzeichenChangeHistoryBuilder.builder()
-				.withCommands(commands)
-				.withOrganisationseinheitenID(vorgang.getOrganisationseinheitenID())
-				.build();
-	}
-
-	Stream<VorgangChange> createAssignedUserChangeHistory(VorgangWithEingang vorgang, List<Command> commands) {
-		return AssignedUserChangeHistoryBuilder.builder()
-				.withCommands(commands)
-				.withOrganisationseinheitenID(vorgang.getOrganisationseinheitenID())
-				.withUserProfileCache(UserProfileCache.create(userService::getById))
-				.build();
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/Kommentar.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/Kommentar.java
deleted file mode 100644
index b6a4bb308768448ecae33fb977b8c99768641471..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/Kommentar.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import java.time.ZonedDateTime;
-import java.util.List;
-
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonProperty.Access;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Singular;
-import lombok.ToString;
-
-@Getter
-@Builder(toBuilder = true)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@ToString
-public class Kommentar implements CommandBody {
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private long version;
-
-	@JsonIgnore
-	private String vorgangId;
-
-	@JsonProperty(access = Access.READ_ONLY)
-	@LinkedUserProfileResource
-	private String createdBy;
-	@JsonProperty(access = Access.READ_ONLY)
-	private ZonedDateTime createdAt;
-
-	@NotNull(message = FIELD_IS_EMPTY)
-	@Size(min = 1, message = FIELD_MIN_SIZE)
-	private String text;
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	@Singular
-	private List<FileId> attachments;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarCommandController.java
deleted file mode 100644
index da437abf85959dd9b2819780f30dfd69849b9500..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarCommandController.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-
-@RestController
-@RequestMapping(KommentarCommandController.KOMMENTAR_COMMANDS)
-public class KommentarCommandController {
-
-	static final String KOMMENTAR_COMMANDS = "/api/kommentars/{kommentarId}/{kommentarVersion}/commands";
-
-	@Autowired
-	private KommentarService service;
-
-	@PostMapping
-	public ResponseEntity<Void> editKommentar(@RequestBody CreateCommand command, @PathVariable String kommentarId,
-			@PathVariable long kommentarVersion) {
-		var createdCommand = service.editKommentar((Kommentar) command.getBody(), kommentarId, kommentarVersion);
-
-		return buildResponseLink(createdCommand);
-	}
-
-	private ResponseEntity<Void> buildResponseLink(Command createdKommentarCommand) {
-		return ResponseEntity.created(linkTo(CommandController.class).slash(createdKommentarCommand.getId()).toUri()).build();
-	}
-
-	@RestController
-	@RequestMapping(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG)
-	public static class KommentarCommandByVorgangController {
-
-		static final String KOMMENTAR_COMMANDS_BY_VORGANG = "/api/vorgangs/{vorgangId}/kommentarCommands";
-
-		@Autowired
-		private KommentarService service;
-
-		@PostMapping
-		public ResponseEntity<Void> createKommentar(@RequestBody CreateCommand command, @PathVariable String vorgangId) {
-			var createdCommand = service.createKommentar((Kommentar) command.getBody(), vorgangId);
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarController.java
deleted file mode 100644
index a168d0805179e5451ba9822c1c1fec3c2f0bb450..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarController.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import java.util.Comparator;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.file.OzgFile;
-
-@RestController
-@RequestMapping(KommentarController.KOMMENTAR_PATH)
-public class KommentarController {
-
-	static final String KOMMENTAR_PATH = "/api/kommentars"; // NOSONAR
-
-	@Autowired
-	private KommentarService service;
-
-	@Autowired
-	private KommentarModelAssembler modelAssembler;
-
-	@Autowired
-	private BinaryFileController binaryFileController;
-
-	@GetMapping("/{kommentarId}")
-	public EntityModel<Kommentar> getById(@PathVariable String kommentarId) {
-		return modelAssembler.toModel(service.getById(kommentarId));
-	}
-
-	@GetMapping("/{kommentarId}/attachments")
-	public CollectionModel<EntityModel<OzgFile>> getAttachments(@PathVariable String kommentarId) {
-		var kommentar = service.getById(kommentarId);
-		return binaryFileController.getFiles(kommentar.getAttachments());
-	}
-
-	@RestController
-	@RequestMapping(KommentarByVorgangController.KOMMENTAR_BY_VORGANG_PATH)
-	public static class KommentarByVorgangController {
-
-		static final String KOMMENTAR_BY_VORGANG_PATH = "/api/vorgangs"; // NOSONAR
-
-		@Autowired
-		private KommentarService service;
-
-		@Autowired
-		private KommentarModelAssembler modelAssembler;
-
-		@GetMapping("/{vorgangId}/kommentars")
-		public CollectionModel<EntityModel<Kommentar>> getAll(@PathVariable String vorgangId) {
-			return modelAssembler.toCollectionModel(sortByCreatedAt(service.findByVorgangId(vorgangId)), vorgangId);
-		}
-
-		Stream<Kommentar> sortByCreatedAt(Stream<Kommentar> kommentare) {
-			return kommentare.sorted(Comparator.comparing(Kommentar::getCreatedAt).reversed());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarMapper.java
deleted file mode 100644
index 72edc09c19ad3d714d96f0d83b760f4bdfe1800d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import java.time.ZonedDateTime;
-import java.util.Map;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ozgcloud.alfa.attachment.AttachmentMapper;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-
-@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
-abstract class KommentarMapper {
-
-	static final String ID = "id";
-	static final String TEXT = "text";
-	static final String CREATED_BY = "createdBy";
-	static final String CREATED_AT = "createdAt";
-	static final String ATTACHMENTS = "attachments";
-
-	@Autowired
-	private GrpcObjectMapper grpcObjectMapper;
-
-	public Kommentar fromItem(GrpcVorgangAttachedItem vorgangAttachedItem) {
-		return fromItemMap(grpcObjectMapper.mapFromGrpc(vorgangAttachedItem.getItem()), vorgangAttachedItem.getVersion());
-	}
-
-	Kommentar fromItemMap(Map<String, Object> map, long version) {
-		return Kommentar.builder()
-				.id((String) map.get(ID))
-				.version(version)
-				.createdAt(ZonedDateTime.parse((String) map.get(CREATED_AT)))
-				.createdBy((String) map.get(CREATED_BY))
-				.text((String) map.get(TEXT))
-				.attachments(AttachmentMapper.mapAttachments(map.get(ATTACHMENTS)))
-				.build();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarModelAssembler.java
deleted file mode 100644
index ed4c3a53428540126bb1e7440fbba411d9b58753..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarModelAssembler.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.CollectionModelBuilder;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.kommentar.KommentarCommandController.KommentarCommandByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-
-@Component
-class KommentarModelAssembler implements RepresentationModelAssembler<Kommentar, EntityModel<Kommentar>> {
-
-	static final String REL_CREATE = "create-kommentar";
-	static final String REL_EDIT = "edit";
-	static final String REL_ATTACHMENTS = "attachments";
-	static final String REL_UPLOAD_FILE = "uploadFile";
-
-	private static final Predicate<Kommentar> HAS_ATTACHMENTS = kommentar -> !kommentar.getAttachments().isEmpty();
-
-	@Autowired
-	private VorgangController vorgangController;
-
-	@Override
-	public EntityModel<Kommentar> toModel(Kommentar kommentar) {
-		var vorgang = vorgangController.getVorgang(kommentar.getVorgangId());
-		return buildModel(kommentar, vorgang);
-	}
-
-	EntityModel<Kommentar> buildModel(Kommentar kommentar, VorgangWithEingang vorgang) {
-		var selfLink = linkTo(KommentarController.class).slash(kommentar.getId());
-		var commandLink = linkTo(methodOn(KommentarCommandController.class).editKommentar(null, kommentar.getId(), kommentar.getVersion()));
-		var attachmentsLink = linkTo(methodOn(KommentarController.class).getAttachments(kommentar.getId()));
-
-		return ModelBuilder.fromEntity(kommentar).addLink(selfLink.withSelfRel())
-				.ifMatch(() -> vorgangController.isEditable(vorgang))
-				.addLink(commandLink.withRel(REL_EDIT))
-				.ifMatch(HAS_ATTACHMENTS)
-				.addLink(attachmentsLink.withRel(REL_ATTACHMENTS))
-				.buildModel();
-	}
-
-	public CollectionModel<EntityModel<Kommentar>> toCollectionModel(Stream<Kommentar> entities, String vorgangId) {
-		var vorgang = vorgangController.getVorgang(vorgangId);
-
-		return CollectionModelBuilder.fromEntities(entities.map(kommentar -> buildModel(kommentar, vorgang)))
-				.addLink(linkTo(KommentarController.class).withSelfRel())
-				.addLink(linkTo(BinaryFileController.class).slash(vorgangId).slash("kommentarAttachment").slash("file").withRel(REL_UPLOAD_FILE))
-				.ifMatch(() -> vorgangController.isEditable(vorgang))
-				.addLink(linkTo(methodOn(KommentarCommandByVorgangController.class).createKommentar(null, vorgangId))
-						.withRel(REL_CREATE))
-				.buildModel();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarRemoteService.java
deleted file mode 100644
index c8ecfb45fd43988eedb626b94e72e9992670be19..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarRemoteService.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class KommentarRemoteService {
-
-	static final String ITEM_NAME = "Kommentar";
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
-	@Autowired
-	private KommentarMapper mapper;
-
-	public Stream<Kommentar> findByVorgangId(String vorgangId) {
-		var response = vorgangAttachedItemServiceStub.find(buildFindRequest(vorgangId));
-
-		return response.getVorgangAttachedItemsList().stream().map(mapper::fromItem);
-	}
-
-	GrpcFindVorgangAttachedItemRequest buildFindRequest(String vorgangId) {
-		return GrpcFindVorgangAttachedItemRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setItemName(ITEM_NAME)
-				.build();
-	}
-
-	public Kommentar getById(String kommentarId) {
-		var response = vorgangAttachedItemServiceStub.getById(buildRequest(kommentarId));
-
-		return mapper.fromItem(response.getVorgangAttachedItem()).toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build();
-	}
-
-	private GrpcVorgangAttachedItemRequest buildRequest(String kommentarId) {
-		return GrpcVorgangAttachedItemRequest.newBuilder().setId(kommentarId).build();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarService.java
deleted file mode 100644
index 5c33a662e5b1e0b1389e5c8d5489fe7ad9662279..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/kommentar/KommentarService.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import java.time.ZonedDateTime;
-import java.util.stream.Stream;
-
-import jakarta.validation.Valid;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-
-@Validated
-@Service
-class KommentarService {
-
-	@Autowired
-	private KommentarRemoteService remoteService;
-	@Autowired
-	private CurrentUserService currentUserService;
-	@Autowired
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	public Command createKommentar(@Valid Kommentar kommentar, String vorgangId) {
-		return vorgangAttachedItemService.createNewKommentar(addCreated(kommentar), vorgangId);
-	}
-
-	Kommentar addCreated(Kommentar kommentar) {
-		return kommentar.toBuilder()
-				.createdAt(ZonedDateTime.now().withNano(0))
-				.createdBy(currentUserService.getUserId().toString())
-				.build();
-	}
-
-	public Command editKommentar(@Valid Kommentar kommentar, String kommentarId, long kommentarVersion) {
-		var loadedKommentar = getById(kommentarId);
-		var preparedKommentar = loadedKommentar.toBuilder()
-				.text(kommentar.getText())
-				.clearAttachments().attachments(kommentar.getAttachments())
-				.build();
-
-		return vorgangAttachedItemService.editKommentar(preparedKommentar, kommentarId, kommentarVersion);
-	}
-
-	public Stream<Kommentar> findByVorgangId(String vorgangId) {
-		return remoteService.findByVorgangId(vorgangId);
-	}
-
-	public Kommentar getById(String kommentarId) {
-		return remoteService.getById(kommentarId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/DeleteLoeschAnforderung.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/DeleteLoeschAnforderung.java
deleted file mode 100644
index 50a921cf23d52f2cdd1936e0ce32f127bcdb2a51..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/DeleteLoeschAnforderung.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Getter
-@Builder
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@ToString
-public class DeleteLoeschAnforderung implements CommandBody {
-
-	public static final String DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD = "deleteAttachedItemCommandId";
-	public static final String CHANGE_STATUS_COMMAND_ID_FIELD = "changeStatusCommandId";
-
-	private String deleteAttachedItemCommandId;
-	private String changeStatusCommandId;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderung.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderung.java
deleted file mode 100644
index 9bd2c83b2fcca3d6e3e03a64ffe9c0159767f75f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderung.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Getter
-@Builder(toBuilder = true)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@ToString
-public class LoeschAnforderung implements CommandBody {
-
-	static final String REQUESTED_BY_FIELD = "requestedBy";
-	static final String PREV_STATUS_FIELD = "prevStatus";
-
-	@JsonIgnore
-	private String id;
-
-	@JsonIgnore
-	private String vorgangId;
-
-	@LinkedUserProfileResource
-	private UserId requestedBy;
-	private VorgangStatus prevStatus;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandController.java
deleted file mode 100644
index c5467c5aa470f38861947fe464259cdfa778cd15..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandController.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Optional;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.PatchMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandStatus;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.StatusPatch;
-import de.ozgcloud.alfa.common.errorhandling.OrderNotAllowedException;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(LoeschAnforderungCommandController.BASE_PATH)
-@RequiredArgsConstructor
-public class LoeschAnforderungCommandController {
-
-	static final String BASE_PATH = "/api/loeschanforderungs/{loeschAnforderungId}/commands"; // NOSONAR
-
-	private final LoeschAnforderungService loeschAnforderungService;
-
-	private final VorgangAttachedItemService vorgangAttachedItemService;
-
-	private final VorgangController vorgangController;
-
-	private final CommandController commandController;
-
-	@PreAuthorize("@loeschAnforderungPreAuthorizeHandler.hasPermissionForOrder(#loeschAnforderungId, #command.order)")
-	@PostMapping
-	public ResponseEntity<Void> createCommand(@PathVariable String loeschAnforderungId, @RequestBody CreateCommand command) {
-		var createdCommand = executeCommand(command, loeschAnforderungId);
-
-		return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build();
-	}
-
-	private Command executeCommand(CreateCommand command, String loeschAnforderungId) {
-		return switch (command.getCommandOrder()) {
-			case VORGANG_LOESCHEN -> loeschAnforderungService.vorgangLoeschen(command, loeschAnforderungId);
-			case LOESCH_ANFORDERUNG_ZURUECKNEHMEN -> loeschAnforderungZuruecknehmen(loeschAnforderungId);
-			default -> throw new OrderNotAllowedException(command.getOrder());
-		};
-	}
-
-	private Command loeschAnforderungZuruecknehmen(String loeschAnforderungId) {
-		var vorgangAttachedItem = vorgangAttachedItemService.getById(loeschAnforderungId);
-		var vorgang = vorgangController.getVorgang(vorgangAttachedItem.getVorgangId());
-		return loeschAnforderungService.zuruecknehmen(vorgangAttachedItem, vorgang);
-	}
-
-	@PatchMapping("{commandId}")
-	public ResponseEntity<EntityModel<Command>> revoke(@PathVariable String loeschAnforderungId, @PathVariable String commandId,
-			@RequestBody StatusPatch patch) {
-		if (patch.getStatus() == CommandStatus.REVOKED) {
-			var command = commandController.getById(commandId).getContent();
-
-			if (Optional.ofNullable(command).map(Command::getCommandOrder).orElse(null) == CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN) {
-				return handleVorgangZumLoeschenMarkierenRevokeCommand(loeschAnforderungId, command, patch);
-			}
-			if (Optional.ofNullable(command).map(Command::getCommandOrder).orElse(null) == CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN) {
-				return handleLoeschAnforderungZuruecknehmenRevokeCommand(command, patch);
-			}
-		}
-		return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
-	}
-
-	ResponseEntity<EntityModel<Command>> handleVorgangZumLoeschenMarkierenRevokeCommand(String loeschAnforderungId, Command command,
-			StatusPatch patch) {
-		loeschAnforderungService.deleteLoeschAnforderung(loeschAnforderungId);
-
-		return commandController.revoke(command.getId(), patch);
-	}
-
-	ResponseEntity<EntityModel<Command>> handleLoeschAnforderungZuruecknehmenRevokeCommand(Command command, StatusPatch patch) {
-		loeschAnforderungService.reCreateLoeschAnforderung(command);
-
-		var changeStatusCommandId = loeschAnforderungService.getChangeStatusCommandId(command);
-		return commandController.revoke(changeStatusCommandId, patch);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessor.java
deleted file mode 100644
index a1843587039f98039222b661b48b5b2918dd8c5b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandHelper;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-
-@Component
-class LoeschAnforderungCommandProcessor implements RepresentationModelProcessor<EntityModel<Command>> {
-
-	@Autowired
-	private LoeschAnforderungService service;
-
-	static final LinkRelation REL_REVOKE = LinkRelation.of("revoke");
-
-	private static final Predicate<Command> IS_VORGANG_ZUM_LOESCHEN_MARKIEREN_AND_REVOKEABLE = command -> command
-			.getCommandOrder() == CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN && CommandHelper.IS_REVOKEABLE.test(command);
-	static final Predicate<Command> IS_LOESCHEN_ANFORDERUNG_ZURUECKNEHMEN_AND_REVOKEABLE = command -> command
-			.getCommandOrder() == CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN && CommandHelper.IS_REVOKEABLE.test(command);
-
-	@Override
-	public EntityModel<Command> process(EntityModel<Command> model) {
-		var command = model.getContent();
-
-		if (Objects.isNull(command)) {
-			return model;
-		}
-		return ModelBuilder.fromModel(model)
-				.ifMatch(IS_LOESCHEN_ANFORDERUNG_ZURUECKNEHMEN_AND_REVOKEABLE)
-				.addLink(() -> linkTo(methodOn(LoeschAnforderungCommandController.class).revoke(command.getRelationId(), command.getId(), null))
-						.withRel(REL_REVOKE))
-				.ifMatch(IS_VORGANG_ZUM_LOESCHEN_MARKIEREN_AND_REVOKEABLE)
-				.addLinkIfPresent(() -> buildLink(command))
-				.buildModel();
-	}
-
-	Optional<Link> buildLink(Command command) {
-		return service.findLoeschAnforderung(command.getVorgangId()).map(loeschAnforderung -> buildLink(loeschAnforderung, command.getId()));
-	}
-
-	Link buildLink(VorgangAttachedItem loeschAnforderung, String commandId) {
-		return linkTo(methodOn(LoeschAnforderungCommandController.class).revoke(loeschAnforderung.getId(), commandId, null))
-				.withRel(REL_REVOKE);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungController.java
deleted file mode 100644
index 57d96dcea4d00dd4d0f2e7cf5ffa970bfe1ce494..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungController.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-
-@RestController
-@RequestMapping(LoeschAnforderungController.BASE_PATH)
-public class LoeschAnforderungController {
-
-	static final String BASE_PATH = "/api/loeschanforderungs"; // NOSONAR
-
-	@Autowired
-	private LoeschAnforderungService service;
-
-	@Autowired
-	private LoeschAnforderungModelAssembler modelAssembler;
-
-	@GetMapping("/{id}")
-	public EntityModel<LoeschAnforderung> getLoeschanforderung(@PathVariable String id) {
-		return modelAssembler.toModel(service.getById(id));
-	}
-
-	@RestController
-	@RequestMapping(LoeschAnforderungByVorgangController.BASE_PATH)
-	public static class LoeschAnforderungByVorgangController {
-
-		public static final String BASE_PATH = "/api/vorgangs/{vorgangId}/vorgangVersion/{vorgangVersion}/loeschanforderung"; // NOSONAR
-
-		@Autowired
-		private LoeschAnforderungService loeschAnforderungService;
-
-		@Autowired
-		private VorgangController vorgangController;
-
-		@PostMapping
-		public ResponseEntity<Void> createLoeschAnforderung(@PathVariable String vorgangId, @PathVariable long vorgangVersion,
-				@RequestBody CreateCommand command) {
-			var vorgang = vorgangController.getVorgang(vorgangId);
-			var created = loeschAnforderungService.createLoeschAnforderung(command, vorgang, vorgangVersion);
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
-		}
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapper.java
deleted file mode 100644
index 2bb6fa8f118ddaffb3da32c075f2dbcc6f63325a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapper.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandBodyMapper;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-@Component
-class LoeschAnforderungMapper {
-
-	public LoeschAnforderung fromVorgangAttachedItem(VorgangAttachedItem vorgangAttachedItem) {
-		var item = vorgangAttachedItem.getItem();
-		return LoeschAnforderung.builder()
-				.id(vorgangAttachedItem.getId())
-				.vorgangId(vorgangAttachedItem.getVorgangId())
-				.requestedBy(getRequestedBy(item))
-				.prevStatus(getPrevState(item))
-				.build();
-	}
-
-	public LoeschAnforderung fromCommand(Command command) {
-		var item = getItem(command);
-		return LoeschAnforderung.builder()
-				.id(command.getRelationId())
-				.vorgangId(command.getVorgangId())
-				.requestedBy(getRequestedBy(item))
-				.prevStatus(getPrevState(item))
-				.build();
-	}
-
-	@SuppressWarnings("unchecked")
-	private Map<String, Object> getItem(Command command) {
-		return MapUtils.getMap(command.getBody(), CommandBodyMapper.ITEM_PROPERTY);
-	}
-
-	private UserId getRequestedBy(Map<String, ?> item) {
-		return UserId.from(MapUtils.getString(item, LoeschAnforderung.REQUESTED_BY_FIELD));
-	}
-
-	private VorgangStatus getPrevState(Map<String, ?> item) {
-		return VorgangStatus.valueOf(MapUtils.getString(item, LoeschAnforderung.PREV_STATUS_FIELD));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssembler.java
deleted file mode 100644
index d2b91d808a956a20483ce342da8763de668f9a97..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssembler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-
-@Component
-class LoeschAnforderungModelAssembler implements RepresentationModelAssembler<LoeschAnforderung, EntityModel<LoeschAnforderung>> {
-
-	static final LinkRelation REL_EXECUTE_LOESCHEN = LinkRelation.of("execute_loeschen");
-	static final LinkRelation REL_LOESCH_ANFORDERUNG_ZURUECKNEHMEN = LinkRelation.of("zuruecknehmen");
-
-	@Autowired
-	private LoeschAnforderungService loeschAnforderungService;
-
-	@Override
-	public EntityModel<LoeschAnforderung> toModel(LoeschAnforderung loeschAnforderung) {
-		return ModelBuilder.fromEntity(loeschAnforderung)
-				.addLink(linkTo(methodOn(LoeschAnforderungController.class).getLoeschanforderung(loeschAnforderung.getId())).withSelfRel())
-				.ifMatch(loeschAnforderungService::isAllowedToVorgangLoeschen)
-				.addLink(linkTo(methodOn(LoeschAnforderungCommandController.class).createCommand(loeschAnforderung.getId(), null)).withRel(
-						REL_EXECUTE_LOESCHEN))
-				.addLink(linkTo(methodOn(LoeschAnforderungCommandController.class).createCommand(loeschAnforderung.getId(), null)).withRel(
-						REL_LOESCH_ANFORDERUNG_ZURUECKNEHMEN))
-				.buildModel();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandler.java
deleted file mode 100644
index 0152a5701d6caccb644919ccf5e2423e671f55dc..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class LoeschAnforderungPreAuthorizeHandler {
-
-	private final LoeschAnforderungService loeschAnforderungService;
-	private final CurrentUserService currentUserService;
-
-	public boolean hasPermissionForOrder(String loeschAnforderungId, CommandOrder order) {
-		return switch (order) {
-			case VORGANG_LOESCHEN -> loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderungService.getById(loeschAnforderungId));
-			case LOESCH_ANFORDERUNG_ZURUECKNEHMEN -> hasRoleForZuruecknehmen();
-			default -> false;
-		};
-	}
-
-	private boolean hasRoleForZuruecknehmen() {
-		return currentUserService.hasRole(UserRole.VERWALTUNG_USER) || currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungService.java
deleted file mode 100644
index ee20014e44d336a7b6f5f03021c2f4e3e5e315f9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungService.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import java.util.List;
-import java.util.Optional;
-
-import jakarta.validation.Valid;
-
-import org.apache.commons.collections.MapUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.RequiredOrder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Validated
-@Service
-@RequiredArgsConstructor
-class LoeschAnforderungService {
-
-	private final LoeschAnforderungMapper mapper;
-
-	private final CommandService commandService;
-
-	private final VorgangAttachedItemService vorgangAttachedItemService;
-
-	private final CurrentUserService currentUserService;
-
-	public Command createLoeschAnforderung(@Valid @RequiredOrder(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN) CreateCommand command, Vorgang vorgang,
-			long vorgangVersion) {
-		createVorgangAttachedItem(vorgang);
-
-		return createCreateCommand(command, vorgang, vorgangVersion);
-	}
-
-	void createVorgangAttachedItem(Vorgang vorgang) {
-		vorgangAttachedItemService.createNewLoeschAnforderung(buildLoeschAnforderung(vorgang), vorgang.getId());
-	}
-
-	private LoeschAnforderung buildLoeschAnforderung(Vorgang vorgang) {
-		return LoeschAnforderung.builder()
-				.requestedBy(currentUserService.getUserId())
-				.prevStatus(vorgang.getStatus())
-				.build();
-	}
-
-	Command createCreateCommand(CreateCommand command, Vorgang vorgang, long vorgangVersion) {
-		var createCommand = command.toBuilder().relationId(vorgang.getId()).vorgangId(vorgang.getId()).build();
-
-		return commandService.createCommand(createCommand, vorgangVersion);
-	}
-
-	public Command vorgangLoeschen(CreateCommand command, String loeschAnforderungId) {
-		var loeschAnforderung = getById(loeschAnforderungId);
-
-		command = command.toBuilder().vorgangId(loeschAnforderung.getVorgangId()).relationId(loeschAnforderung.getVorgangId()).build();
-
-		return commandService.createCommand(command);
-	}
-
-	public LoeschAnforderung getById(String id) {
-		var vorgangAttachedItem = vorgangAttachedItemService.getById(id);
-
-		return mapper.fromVorgangAttachedItem(vorgangAttachedItem);
-	}
-
-	public Command zuruecknehmen(VorgangAttachedItem vorgangAttachedItem, Vorgang vorgang) {
-		var deleteAttachedItemCommand = vorgangAttachedItemService.deleteAttachedItem(vorgangAttachedItem);
-
-		var loeschAnforderng = mapper.fromVorgangAttachedItem(vorgangAttachedItem);
-		var changeStatusCommand = setPreviousVorgangStatus(vorgang, loeschAnforderng);
-
-		return commandService.createCommand(
-				buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeStatusCommand, vorgang, loeschAnforderng),
-				vorgang.getVersion());
-	}
-
-	public boolean isAllowedToVorgangLoeschen(LoeschAnforderung loeschAnforderung) {
-		return hasRequiredRoles() && isDifferentUser(loeschAnforderung);
-	}
-
-	private boolean hasRequiredRoles() {
-		return currentUserService.hasRole(UserRole.VERWALTUNG_LOESCHEN);
-	}
-
-	private boolean isDifferentUser(LoeschAnforderung loeschAnforderung) {
-		return !currentUserService.getUserId().equals(loeschAnforderung.getRequestedBy());
-	}
-
-	Command setPreviousVorgangStatus(Vorgang vorgang, LoeschAnforderung loeschAnforderung) {
-		var createCommand = createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-		return commandService.createCommand(createCommand, vorgang.getVersion());
-	}
-
-	CreateCommand createSetPreviousVorgangStatusCreateCommand(Vorgang vorgang, LoeschAnforderung loeschAnforderung) {
-		return CreateCommand.builder()
-				.order(getCommandOrderForPreviousStatus(loeschAnforderung).name())
-				.vorgangId(loeschAnforderung.getVorgangId())
-				.relationId(loeschAnforderung.getVorgangId())
-				.relationVersion(vorgang.getVersion()).build();
-	}
-
-	CommandOrder getCommandOrderForPreviousStatus(LoeschAnforderung loeschAnforderung) {
-		return switch (loeschAnforderung.getPrevStatus()) {
-			case ABGESCHLOSSEN -> CommandOrder.VORGANG_ABSCHLIESSEN;
-			case VERWORFEN -> CommandOrder.VORGANG_VERWERFEN;
-			default -> throw new TechnicalException(
-					String.format("Unexpected prevStatus %s in LoeschAnforderung.", loeschAnforderung.getPrevStatus()));
-		};
-	}
-
-	CreateCommand buildDeleteLoeschAnforderungCommand(Command deleteAttachedItemCommand, Command changeStatusCommand, Vorgang vorgang,
-			LoeschAnforderung loeschAnforderung) {
-		return CreateCommand.builder()
-				.order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name())
-				.vorgangId(vorgang.getId())
-				.relationId(loeschAnforderung.getId())
-				.body(buildDeleteLoeschAnforderung(changeStatusCommand.getId(), deleteAttachedItemCommand.getId()))
-				.build();
-	}
-
-	DeleteLoeschAnforderung buildDeleteLoeschAnforderung(String changeStatusCommandId, String deleteVorgangAttachedItemCommandId) {
-		return DeleteLoeschAnforderung.builder()
-				.changeStatusCommandId(changeStatusCommandId)
-				.deleteAttachedItemCommandId(deleteVorgangAttachedItemCommandId)
-				.build();
-	}
-
-	public void deleteLoeschAnforderung(String loeschAnforderungId) {
-		var vorgangAttachedItem = vorgangAttachedItemService.getById(loeschAnforderungId);
-
-		vorgangAttachedItemService.deleteAttachedItem(vorgangAttachedItem);
-	}
-
-	public Optional<VorgangAttachedItem> findLoeschAnforderung(String vorgangId) {
-		var vorgangAttachedItems = vorgangAttachedItemService.findLoeschAnforderung(vorgangId).toList();
-
-		if (vorgangAttachedItems.isEmpty()) {
-			return Optional.empty();
-		}
-		if (vorgangAttachedItems.size() > 1) {
-			deleteDuplicateLoeschAnforderung(vorgangAttachedItems, vorgangId);
-		}
-		return Optional.of(vorgangAttachedItems.get(0));
-	}
-
-	void deleteDuplicateLoeschAnforderung(List<VorgangAttachedItem> items, String vorgangId) {
-		LOG.warn("Found {} Löschanforderungen for vorgang {}, only one was expected.", items.size(), vorgangId);
-		items.subList(1, items.size()).forEach(vorgangAttachedItemService::deleteAttachedItem);
-	}
-
-	public void reCreateLoeschAnforderung(Command command) {
-		var deleteLoschAnforderungCommand = commandService.getById(getDeleteVorgangAttachedItemCommandId(command));
-		var loeschAnforderung = mapper.fromCommand(deleteLoschAnforderungCommand);
-
-		vorgangAttachedItemService.createNewLoeschAnforderung(loeschAnforderung, command.getVorgangId());
-	}
-
-	private String getDeleteVorgangAttachedItemCommandId(Command command) {
-		return MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD);
-	}
-
-	public String getChangeStatusCommandId(Command command) {
-		return MapUtils.getString(command.getBody(), DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessor.java
deleted file mode 100644
index 5281c140049b6c730996d7243ae76b3e0a3ec408..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungController.LoeschAnforderungByVorgangController;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class LoeschAnforderungVorgangProcessor implements RepresentationModelProcessor<EntityModel<? extends Vorgang>> {
-
-	static final LinkRelation REL_LOESCHEN_ANFORDERN = LinkRelation.of("loeschen_anfordern");
-	static final LinkRelation REL_LOESCH_ANFORDERUNG = LinkRelation.of("loesch_anforderung");
-
-	static final List<String> USER_ROLES_ALLOWED_TO_LOESCHEN_ANFORDERN = List.of(UserRole.VERWALTUNG_USER, UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-	static final List<VorgangStatus> VORGANG_STATUSES_ALLOWED_TO_LOESCHEN_ANFORDERN = List.of(VorgangStatus.VERWORFEN, VorgangStatus.ABGESCHLOSSEN);
-
-	private final LoeschAnforderungService service;
-	private final CurrentUserService currentUserService;
-	private final VorgangController vorgangController;
-
-	@Override
-	public EntityModel<? extends Vorgang> process(EntityModel<? extends Vorgang> model) {
-		var vorgang = model.getContent();
-
-		if (Objects.isNull(vorgang)) {
-			return model;
-		}
-
-		var vorgangAttachedItem = service.findLoeschAnforderung(vorgang.getId());
-
-		return ModelBuilder.fromModel(model)
-				.ifMatch(this::isLoeschenAnfordernAllowed)
-				.addLink(buildLoschenAnfordernLink(vorgang))
-				.addLink(buildLoschAnforderungLink(vorgangAttachedItem))
-				.buildModel();
-	}
-
-	boolean isLoeschenAnfordernAllowed(Vorgang vorgang) {
-		return isAllowedStatus(vorgang) && isAllowedUserRole() && vorgangController.isEditable(vorgang);
-	}
-
-	private boolean isAllowedStatus(Vorgang vorgang) {
-		return VORGANG_STATUSES_ALLOWED_TO_LOESCHEN_ANFORDERN.contains(vorgang.getStatus());
-	}
-
-	private boolean isAllowedUserRole() {
-		return USER_ROLES_ALLOWED_TO_LOESCHEN_ANFORDERN.stream().anyMatch(currentUserService::hasRole);
-	}
-
-	private Link buildLoschenAnfordernLink(Vorgang vorgang) {
-		return linkTo(methodOn(LoeschAnforderungByVorgangController.class).createLoeschAnforderung(vorgang.getId(), vorgang.getVersion(), null))
-				.withRel(REL_LOESCHEN_ANFORDERN);
-	}
-
-	private Optional<Link> buildLoschAnforderungLink(Optional<VorgangAttachedItem> vorgangAttachedItem) {
-		return vorgangAttachedItem.map(item -> linkTo(methodOn(LoeschAnforderungController.class).getLoeschanforderung(item.getId()))
-				.withRel(REL_LOESCH_ANFORDERUNG));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Features.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Features.java
deleted file mode 100644
index 0eafad33f54b644b17d7aa1313798c2c51a6c9ed..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Features.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@AllArgsConstructor
-@Builder
-class Features {
-
-	private boolean reply;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettings.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettings.java
deleted file mode 100644
index 335652a11cfa268dd978af94559502375fca6c21..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettings.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Builder
-public class OrganisationsEinheitSettings {
-	private String signatur;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachAddress.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachAddress.java
deleted file mode 100644
index de404873a339e131bc423aefa1b6b1267c9bb64a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachAddress.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Map;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class PostfachAddress {
-
-	public static final String VERSION_FIELD = "version";
-	public static final String TYPE_FIELD = "type";
-
-	public static final String IDENTIFIER_FIELD = "identifier";
-	public static final String IDENTIFIER_POSTFACH_ID_FIELD = "postfachId";
-
-	private String version;
-	private int type;
-	private Map<String, Object> identifier;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfig.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfig.java
deleted file mode 100644
index f1f7c76c561e1e0d12b133010ac15377c1553a42..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfig.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.ToString;
-
-@Getter
-@Builder
-@ToString
-public class PostfachConfig {
-
-	private final String type;
-	private final boolean replyAllowed;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigGroup.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigGroup.java
deleted file mode 100644
index bd88d5f5d18320ef76fe9648b5fb6bfd60953126..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigGroup.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.List;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.ToString;
-
-@Getter
-@Builder
-@ToString
-public class PostfachConfigGroup {
-
-	private final boolean configured;
-	private final List<PostfachConfig> postfachConfigs;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigMapper.java
deleted file mode 100644
index fbdc69fe77586589a58653e0aabb01319cc66ab6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachConfigMapper.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueCheckStrategy;
-
-import de.ozgcloud.nachrichten.postfach.GrpcGetPostfachConfigResponse;
-import de.ozgcloud.nachrichten.postfach.GrpcPostfach;
-
-@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
-interface PostfachConfigMapper {
-
-	@Mapping(target = "postfachConfigs", source = "postfachList")
-	PostfachConfigGroup toPostfachConfigGroup(GrpcGetPostfachConfigResponse grpcPostfachCollection);
-
-	PostfachConfig toPostfachConfig(GrpcPostfach grpcPostfach);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMail.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMail.java
deleted file mode 100644
index 6df13b095ea7ba65648ed17b50054283f17a12c1..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMail.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import java.time.ZonedDateTime;
-import java.util.List;
-import java.util.Map;
-
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.Size;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Singular;
-import lombok.ToString;
-
-@Builder(toBuilder = true)
-@Getter
-@ToString
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PUBLIC)
-public class PostfachMail implements CommandBody {
-
-	public static final String POSTFACH_ADDRESS_FIELD = "postfachAddress";
-
-	enum Direction {
-		IN, OUT
-	}
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private Map<String, Object> postfachAddress;
-	@JsonIgnore
-	private String vorgangId;
-
-	private ZonedDateTime createdAt;
-	@JsonIgnore
-	private UserId createdBy;
-
-	private ZonedDateTime sentAt;
-	private Boolean sentSuccessful;
-	private String messageCode;
-
-	private Direction direction;
-	private ReplyOption replyOption;
-
-	@NotEmpty(message = FIELD_IS_EMPTY)
-	@Size(max = 70, message = FIELD_MAX_SIZE)
-	private String subject;
-
-	@NotEmpty(message = FIELD_IS_EMPTY)
-	private String mailBody;
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	@Singular
-	private List<FileId> attachments;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailController.java
deleted file mode 100644
index 91ad702bfda5982fb5e22f9f97feec9c3fb5e6f4..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailController.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@RestController
-@RequestMapping(PostfachMailController.PATH)
-public class PostfachMailController {
-
-	public static final String PATH = "/api/postfachMails"; // NOSONAR
-	public static final String PARAM_VORGANG_ID = "vorgangId";
-	static final String PDF_NAME_TEMPLATE = "%s_%s_Nachrichten.pdf";
-	static final DateTimeFormatter PDF_NAME_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
-
-	private final PostfachMailService postfachMailService;
-	private final PostfachSettingsService postfachSettingsService;
-
-	private final PostfachMailModelAssembler assembler;
-
-	private final VorgangController vorgangController;
-	private final BinaryFileController binaryFileController;
-
-	@GetMapping(params = PARAM_VORGANG_ID)
-	public RepresentationModel<EntityModel<PostfachSettings>> getAll(@RequestParam String vorgangId) {
-		var vorgang = getVorgang(vorgangId);
-		var postfachSetting = postfachSettingsService.getPostfachSettings(vorgang);
-		return assembler.toCollectionModel(sort(postfachMailService.getAll(vorgangId)), vorgang, postfachSetting);
-	}
-
-	Stream<PostfachMail> sort(Stream<PostfachMail> nachrichten) {
-		return nachrichten.sorted(new PostfachNachrichtComparator().reversed());
-	}
-
-	@GetMapping(params = PARAM_VORGANG_ID, produces = MediaType.APPLICATION_PDF_VALUE)
-	public ResponseEntity<StreamingResponseBody> getAllAsPdf(@RequestParam String vorgangId) {
-		var vorgang = getVorgang(vorgangId);
-
-		return buildResponseEntity(vorgang, createDownloadStreamingBody(vorgang));
-	}
-
-	private VorgangWithEingang getVorgang(String vorgangId) {
-		return vorgangController.getVorgang(vorgangId);
-	}
-
-	StreamingResponseBody createDownloadStreamingBody(VorgangWithEingang vorgang) {
-		return out -> postfachMailService.getAllAsPdf(vorgang, out);
-	}
-
-	ResponseEntity<StreamingResponseBody> buildResponseEntity(VorgangWithEingang vorgang, StreamingResponseBody responseBody) {
-		return ResponseEntity.ok()
-				.header(HttpHeaders.CONTENT_DISPOSITION, buildPdfName(vorgang))
-				.contentType(MediaType.APPLICATION_PDF)
-				.body(responseBody);
-	}
-
-	private String buildPdfName(VorgangWithEingang vorgang) {
-		return String.format(PDF_NAME_TEMPLATE, vorgang.getNummer(), LocalDate.now().format(PDF_NAME_DATE_FORMATTER));
-	}
-
-	public boolean isPostfachConfigured() {
-		return postfachSettingsService.isPostfachConfigured();
-	}
-
-	@GetMapping("{nachrichtId}/attachments")
-	public CollectionModel<EntityModel<OzgFile>> findAttachments(@PathVariable PostfachNachrichtId nachrichtId) {
-		var postfachNachricht = postfachMailService.findById(nachrichtId);
-
-		return binaryFileController.getFiles(postfachNachricht.getAttachments());
-	}
-
-	@RequiredArgsConstructor
-	@RestController
-	@RequestMapping(PostfachMailCommandController.POSTFACH_MAIL_COMMAND_PATH)
-	public static class PostfachMailCommandController {
-		static final String POSTFACH_MAIL_COMMAND_PATH = "/api/postfachMails/{postfachMailId}/commands"; // NOSONAR
-
-		private final PostfachMailService service;
-		private final PostfachNachrichtHelper helper;
-
-		private final VorgangController vorgangController;
-
-		private final CommandByRelationController commandByRelationController;
-
-		@PostMapping
-		public ResponseEntity<Void> createCommand(@PathVariable String postfachMailId, @RequestBody CreateCommand command) {
-			var created = createCommand(service.findById(PostfachNachrichtId.from(postfachMailId)), command);
-
-			if (created.getCommandOrder() == CommandOrder.RESEND_POSTFACH_MAIL) {
-				service.resendPostfachMail(created.getId(), postfachMailId);
-			}
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
-		}
-
-		private Command createCommand(@NonNull PostfachMail mail, @NonNull CreateCommand command) {
-			var completedCommand = command.toBuilder().vorgangId(mail.getVorgangId()).relationId(mail.getId()).build();
-
-			if (completedCommand.getCommandOrder() == CommandOrder.SEND_POSTFACH_NACHRICHT) {
-				var vorgang = getVorgang(mail.getVorgangId());
-				completedCommand = addPostfachAddress(completedCommand, vorgang);
-			}
-
-			return commandByRelationController.createCommand(completedCommand);
-		}
-
-		private VorgangWithEingang getVorgang(String vorgangId) {
-			return vorgangController.getVorgang(vorgangId);
-		}
-
-		private CreateCommand addPostfachAddress(CreateCommand command, VorgangWithEingang vorgang) {
-			return command.toBuilder().body(helper.addPostfachAddressToBody((PostfachMail) command.getBody(), vorgang)).build();
-		}
-	}
-
-	@RequiredArgsConstructor
-	@RestController
-	@RequestMapping(PostfachMailCommandByVorgangController.PATH)
-	public static class PostfachMailCommandByVorgangController {
-
-		static final String PATH = "/api/vorgangs/{vorgangId}/postfachMailCommands"; // NOSONAR
-
-		private final PostfachMailService service;
-		private final PostfachNachrichtHelper helper;
-		private final VorgangController vorgangController;
-
-		@PostMapping
-		public ResponseEntity<Void> sendPostfachMail(@PathVariable String vorgangId, @RequestBody CreateCommand command) {
-			command = command.toBuilder().vorgangId(vorgangId).relationId(vorgangId).build();
-
-			var vorgang = getVorgang(vorgangId);
-			command = addPostfachAddress(command, vorgang);
-
-			var created = service.sendPostfachMail(command, vorgang.getVersion());
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
-		}
-
-		private VorgangWithEingang getVorgang(String vorgangId) {
-			return vorgangController.getVorgang(vorgangId);
-		}
-
-		private CreateCommand addPostfachAddress(CreateCommand command, VorgangWithEingang vorgang) {
-			return command.toBuilder().body(helper.addPostfachAddressToBody((PostfachMail) command.getBody(), vorgang)).build();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailMapper.java
deleted file mode 100644
index a695f01a4cec220b59c83153d0484b740df26ecb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailMapper.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.commons.beanutils.BeanMap;
-import org.apache.commons.lang3.tuple.Pair;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.MappingConstants;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ValueMapping;
-
-import com.google.protobuf.ProtocolStringList;
-
-import de.ozgcloud.alfa.common.TimeMapper;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.nachrichten.postfach.GrpcPostfachMail;
-
-@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
-		uses = { TimeMapper.class, UserIdMapper.class })
-interface PostfachMailMapper {
-
-	@Mapping(target = "attachment", ignore = true)
-	@ValueMapping(source = "UNRECOGNIZED", target = MappingConstants.NULL)
-	@ValueMapping(source = "UNDEFINED", target = MappingConstants.NULL)
-	@Mapping(target = "attachments", source = "attachmentList")
-	@Mapping(target = "postfachAddress", ignore = true)
-	PostfachMail toPostfachMail(GrpcPostfachMail grpcPostfachMail);
-
-	default List<FileId> fromStringList(ProtocolStringList stringList) {
-		return stringList.stream().map(FileId::from).toList();
-	}
-
-	default Map<String, Object> mapPostfachAddressToMap(PostfachAddress postfachAddress) {
-		return new BeanMap(postfachAddress).entrySet().stream()
-				.map(entry -> Pair.of(entry.getKey().toString(), entry.getValue()))
-				.collect(Collectors.toMap(Pair::getKey, Pair::getValue));
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java
deleted file mode 100644
index 8de875f0fae7795526b3f0b7ec0dd996a2a38d79..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssembler.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.BooleanUtils;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.hateoas.mediatype.hal.HalModelBuilder;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandByVorgangController;
-import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHead;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class PostfachMailModelAssembler implements RepresentationModelAssembler<PostfachMail, EntityModel<PostfachMail>> {
-
-	public static final String REL_SEND_POSTFACH_MAIL = "sendPostfachMail";
-	public static final String REL_SEND = "send";
-	public static final String REL_RESEND_POSTFACH_MAIL = "resendPostfachMail";
-	public static final String REL_RESET_NEW_POSTFACH_MAIL = "resetHasNewPostfachNachricht";
-	public static final String REL_ATTACHMENTS = "attachments";
-	public static final String REL_EDIT = "edit";
-	static final String REL_UPLOAD_ATTACHMENT = "uploadAttachment";
-	static final String REL_CREATED_BY = "createdBy";
-	private static final String POSTFACH_NACHRICHT_ATTACHMENT_FIELD = "postfachNachrichtAttachment";
-	private static final String HAS_NEW_POSTFACH_NACHRICHT_FIELD = "hasNewPostfachNachricht";
-	private static final String FILE_PATH = "file";
-
-	private static final Predicate<PostfachMail> IS_OUTGOING = postfachNachricht -> postfachNachricht.getDirection() == Direction.OUT;
-
-	private static final Predicate<PostfachMail> SENT_FAILED = postfachMail -> Objects.nonNull(postfachMail.getSentAt())
-			&& BooleanUtils.isFalse(postfachMail.getSentSuccessful());
-	private static final Predicate<PostfachMail> IS_UNSEND = IS_OUTGOING.and(mail -> !mail.getSentSuccessful() && Objects.isNull(mail.getSentAt()));
-	private static final Predicate<PostfachMail> HAS_ATTACHMENTS = nachricht -> CollectionUtils.isNotEmpty(nachricht.getAttachments());
-
-	static final String SYSTEM_USER_IDENTIFIER = "system";
-	private static final Predicate<PostfachMail> SENT_BY_CLIENT_USER = postfachNachricht -> Optional.ofNullable(postfachNachricht.getCreatedBy())
-			.map(createdBy -> !createdBy.toString().startsWith(SYSTEM_USER_IDENTIFIER)).orElse(false);
-
-	private final UserManagerUrlProvider userManagerUrlProvider;
-	private final VorgangController vorgangController;
-
-	public RepresentationModel<EntityModel<PostfachSettings>> toCollectionModel(Stream<PostfachMail> postfachMails, VorgangWithEingang vorgang,
-			PostfachSettings postfachSettings) {
-
-		var model = buildHalRepresentationModel(postfachMails, vorgang, postfachSettings);
-
-		if (hasServiceKonto(vorgang)) {
-			addPostfachNachrichtLinks(model, vorgang);
-		}
-		return model;
-	}
-
-	RepresentationModel<EntityModel<PostfachSettings>> buildHalRepresentationModel(Stream<PostfachMail> postfachMails, VorgangWithEingang vorgang,
-			PostfachSettings postfachSettings) {
-		return HalModelBuilder
-				.halModelOf(postfachSettings)
-				.link(linkTo(methodOn(PostfachMailController.class).getAll(vorgang.getId())).withSelfRel())
-				.embed(postfachMails.map(this::toModel))
-				.build();
-	}
-
-	boolean hasServiceKonto(VorgangWithEingang vorgang) {
-		return Optional.ofNullable(vorgang.getHeader()).map(VorgangHead::getServiceKonto).isPresent();
-	}
-
-	void addPostfachNachrichtLinks(RepresentationModel<EntityModel<PostfachSettings>> model, VorgangWithEingang vorgang) {
-		var vorgangId = vorgang.getId();
-
-		if (vorgangController.isEditable(vorgang)) {
-			model.add(linkTo(methodOn(PostfachMailCommandByVorgangController.class).sendPostfachMail(vorgangId, null))
-					.withRel(REL_SEND_POSTFACH_MAIL));
-		}
-
-		model.add(linkTo(BinaryFileController.class).slash(vorgangId).slash(POSTFACH_NACHRICHT_ATTACHMENT_FIELD).slash(FILE_PATH)
-				.withRel(REL_UPLOAD_ATTACHMENT));
-
-		if (vorgang.isHasNewPostfachNachricht()) {
-			model.add(linkTo(VorgangController.class).slash(vorgangId).slash(HAS_NEW_POSTFACH_NACHRICHT_FIELD).withRel(REL_RESET_NEW_POSTFACH_MAIL));
-		}
-	}
-
-	@Override
-	public EntityModel<PostfachMail> toModel(PostfachMail postfachMail) {
-		var selfLink = linkTo(PostfachMailController.class).slash(postfachMail.getId());
-
-		return ModelBuilder.fromEntity(postfachMail).addLink(selfLink.withSelfRel())
-				.ifMatch(IS_UNSEND).addLink(linkTo(PostfachMailCommandController.class, postfachMail.getId()).withRel(REL_SEND))
-				.ifMatch(SENT_FAILED)
-				.addLink(linkTo(methodOn(PostfachMailCommandController.class).createCommand(postfachMail.getId(), null))
-						.withRel(REL_RESEND_POSTFACH_MAIL))
-				.ifMatch(IS_UNSEND)
-				.addLink(linkTo(methodOn(PostfachMailCommandController.class).createCommand(postfachMail.getId(), null))
-						.withRel(REL_EDIT))
-				.ifMatch(HAS_ATTACHMENTS)
-				.addLink(linkTo(methodOn(PostfachMailController.class).findAttachments(PostfachNachrichtId.from(postfachMail.getId())))
-						.withRel(REL_ATTACHMENTS))
-				.ifMatch(() -> userManagerUrlProvider.isConfiguredForUserProfile() && SENT_BY_CLIENT_USER.test(postfachMail))
-				.addLink(() -> Link.of(String.format(userManagerUrlProvider.getUserProfileTemplate(), postfachMail.getCreatedBy()),
-						REL_CREATED_BY))
-				.buildModel();
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteService.java
deleted file mode 100644
index a0c1b2b429c4ef55f0902cece52807ccf4bdfcdb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteService.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailsRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcGetPostfachConfigRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcResendPostfachMailRequest;
-import de.ozgcloud.nachrichten.postfach.PostfachServiceGrpc.PostfachServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class PostfachMailRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private PostfachServiceBlockingStub serviceStub;
-	@Autowired
-	private ContextService contextService;
-	@Autowired
-	private PostfachMailMapper postfachNachrichtMapper;
-	@Autowired
-	private PostfachConfigMapper postfachConfigMapper;
-
-	public Stream<PostfachMail> findPostfachMails(String vorgangId) {
-		var response = serviceStub.findPostfachMails(buildFindPostfachMailsRequest(vorgangId));
-
-		return response.getMailsList().stream().map(postfachNachrichtMapper::toPostfachMail);
-	}
-
-	private GrpcFindPostfachMailsRequest buildFindPostfachMailsRequest(String vorgangId) {
-		return GrpcFindPostfachMailsRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setContext(contextService.createCallContext())
-				.build();
-	}
-
-	public Optional<PostfachMail> findById(PostfachNachrichtId nachrichtId) {
-		var response = serviceStub.findPostfachMail(buildFindPostfachMailRequest(nachrichtId));
-
-		return Optional.ofNullable(response.getNachricht()).map(postfachNachrichtMapper::toPostfachMail);
-	}
-
-	private GrpcFindPostfachMailRequest buildFindPostfachMailRequest(PostfachNachrichtId nachrichtId) {
-		return GrpcFindPostfachMailRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setNachrichtId(nachrichtId.toString())
-				.build();
-	}
-
-	public void resendPostfachMail(String commandId, String postfachMailId) {
-		serviceStub.resendPostfachMail(buildResendPostfachMailRequest(commandId, postfachMailId));
-	}
-
-	GrpcResendPostfachMailRequest buildResendPostfachMailRequest(String commandId, String postfachMailId) {
-		return GrpcResendPostfachMailRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setPostfachMailId(postfachMailId)
-				.setCommandId(commandId)
-				.build();
-	}
-
-	public PostfachConfigGroup getPostfachConfig() {
-		var response = serviceStub.getPostfachConfig(buildGetPostfachConfigRequest());
-		return postfachConfigMapper.toPostfachConfigGroup(response);
-	}
-
-	private GrpcGetPostfachConfigRequest buildGetPostfachConfigRequest() {
-		return GrpcGetPostfachConfigRequest.newBuilder().build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailService.java
deleted file mode 100644
index eb8f0d72dbda1d2a135ee10f5ddda8a1c6d922d3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachMailService.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.io.OutputStream;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-
-@RequiredArgsConstructor
-@Log4j2
-@Service
-class PostfachMailService {
-
-	private final PostfachMailRemoteService remoteService;
-	private final PostfachNachrichtPdfService pdfService;
-	private final BinaryFileService fileService;
-	private final UserService userService;
-	private final CommandService commandService;
-
-	public PostfachMail findById(PostfachNachrichtId nachrichtId) {
-		return remoteService.findById(nachrichtId)
-				.orElseThrow(() -> new ResourceNotFoundException(PostfachMail.class, nachrichtId));
-	}
-
-	public Command sendPostfachMail(CreateCommand command, long relationVersion) {
-		return commandService.createCommand(command, relationVersion);
-	}
-
-	// @Async FIXME Er scheint den CallContext zu verlieren
-	public void resendPostfachMail(String commandId, String postfachMailId) {
-		try {
-			remoteService.resendPostfachMail(commandId, postfachMailId);
-		} catch (RuntimeException e) {
-			LOG.error("Error sending PostfachNachricht: " + e.getMessage(), e);
-			// FIXME mark command as in error
-		}
-	}
-
-	public OutputStream getAllAsPdf(VorgangWithEingang vorgang, OutputStream out) {
-		var postfachNachrichtPdfDataList = buildPostfachNachrichtPdfDataList(vorgang.getId());
-
-		return pdfService.getAllAsPdf(vorgang, postfachNachrichtPdfDataList, out);
-	}
-
-	Stream<PostfachNachrichtPdfData> buildPostfachNachrichtPdfDataList(String vorgangId) {
-		var postfachNachrichten = getAll(vorgangId).toList();
-		var ozgFileIdOzgFileMap = getFiles(postfachNachrichten).collect(Collectors.toMap(OzgFile::getId, OzgFile::getName));
-
-		return postfachNachrichten.stream()
-				.sorted(Comparator.comparing(PostfachMail::getCreatedAt).reversed())
-				.map(postfachNachricht -> buildPostfachNachrichtPdfData(postfachNachricht, ozgFileIdOzgFileMap));
-	}
-
-	public Stream<PostfachMail> getAll(String vorgangId) {
-		return remoteService.findPostfachMails(vorgangId);
-	}
-
-	Stream<OzgFile> getFiles(List<PostfachMail> postfachMails) {
-		return fileService.getFiles(getFileIdsFromAllAttachments(postfachMails));
-	}
-
-	List<FileId> getFileIdsFromAllAttachments(List<PostfachMail> postfachMails) {
-		return postfachMails.stream()
-				.map(PostfachMail::getAttachments)
-				.flatMap(Collection::stream)
-				.toList();
-	}
-
-	PostfachNachrichtPdfData buildPostfachNachrichtPdfData(PostfachMail postfachNachricht,
-			Map<FileId, String> ozgFileIdOzgFileMap) {
-		return PostfachNachrichtPdfData.builder()
-				.createdAt(postfachNachricht.getCreatedAt())
-				.user(getUser(postfachNachricht))
-				.direction(postfachNachricht.getDirection())
-				.mailBody(postfachNachricht.getMailBody())
-				.subject(postfachNachricht.getSubject())
-				.attachmentNames(postfachNachricht.getAttachments().stream().map(ozgFileIdOzgFileMap::get).toList())
-				.build();
-	}
-
-	UserProfile getUser(PostfachMail postfachNachricht) {
-		var createdBy = postfachNachricht.getCreatedBy();
-		if (UserManagerUrlProvider.SENT_BY_CLIENT_USER.test(postfachNachricht)) {
-			return userService.getById(createdBy);
-		}
-		return Optional.ofNullable(createdBy)
-				.map(created -> UserProfile.builder().id(created).build())
-				.orElseGet(() -> null);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparator.java
deleted file mode 100644
index 72db3e699930c8cc0ae08cc6c63da3077c352f43..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Comparator;
-import java.util.Objects;
-
-class PostfachNachrichtComparator implements Comparator<PostfachMail> {
-
-	@Override
-	public int compare(PostfachMail o1, PostfachMail o2) {
-		var comp1 = Objects.isNull(o1.getSentAt()) ? o1.getCreatedAt() : o1.getSentAt();
-		var comp2 = Objects.isNull(o2.getSentAt()) ? o2.getCreatedAt() : o2.getSentAt();
-		return comp1.compareTo(comp2);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelper.java
deleted file mode 100644
index ab78c954d0c0ccf046f8cc3a6b27f4547185fb5b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelper.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.command.CommandBody;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-
-@Component
-class PostfachNachrichtHelper {
-
-	static final String SERVICEKONTO_TYPE_FIELD = "serviceKontoType";
-
-	@Autowired
-	private PostfachMailMapper mapper;
-
-	public CommandBody addPostfachAddressToBody(PostfachMail nachricht, VorgangWithEingang vorgang) {
-		return addPostfachAddress(nachricht, createPostfachAddressForPostfachMail(vorgang));
-	}
-
-	private PostfachMail addPostfachAddress(PostfachMail nachricht, Map<String, Object> postfachAddress) {
-		return nachricht.toBuilder().postfachAddress(postfachAddress).build();
-	}
-
-	private Map<String, Object> createPostfachAddressForPostfachMail(VorgangWithEingang vorgang) {
-		Map<String, Object> postfachAddressForPostfachMail = new HashMap<>(mapper.mapPostfachAddressToMap(getPostfachAddress(vorgang)));
-		postfachAddressForPostfachMail.put(SERVICEKONTO_TYPE_FIELD, getServiceKontoType(vorgang));
-		return Collections.unmodifiableMap(postfachAddressForPostfachMail);
-	}
-
-	private PostfachAddress getPostfachAddress(VorgangWithEingang vorgang) {
-		return vorgang.getHeader().getServiceKonto().getPostfachAddresses().get(0);
-	}
-
-	private String getServiceKontoType(VorgangWithEingang vorgang) {
-		return vorgang.getHeader().getServiceKonto().getType();
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtId.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtId.java
deleted file mode 100644
index e7cb7a54639c4a4ea1c55b7b640d61de617fd792..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtId.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import de.ozgcloud.common.datatype.StringBasedValue;
-import lombok.EqualsAndHashCode;
-
-@EqualsAndHashCode(callSuper = true)
-public class PostfachNachrichtId extends StringBasedValue {
-
-	private static final long serialVersionUID = 1L;
-
-	public PostfachNachrichtId(String nachrichtId) {
-		super(nachrichtId);
-	}
-
-	public static PostfachNachrichtId from(String nachrichtId) {
-		return new PostfachNachrichtId(nachrichtId);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfData.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfData.java
deleted file mode 100644
index 92aebff08686f26a3c81d970b6b5713c2ea7ffed..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfData.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.time.ZonedDateTime;
-import java.util.List;
-
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Builder
-class PostfachNachrichtPdfData {
-
-	private ZonedDateTime createdAt;
-	private UserProfile user;
-
-	private String subject;
-	private String mailBody;
-	private Direction direction;
-
-	private List<String> attachmentNames;
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfModel.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfModel.java
deleted file mode 100644
index fefb10ab35b1af1b02e1f21c23538504213c451a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfModel.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.List;
-
-import jakarta.xml.bind.annotation.XmlElement;
-import jakarta.xml.bind.annotation.XmlElementWrapper;
-import jakarta.xml.bind.annotation.XmlRootElement;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@XmlRootElement
-@Builder
-@AllArgsConstructor(access = AccessLevel.PRIVATE)
-@NoArgsConstructor(access = AccessLevel.PACKAGE)
-class PostfachNachrichtPdfModel {
-
-	@XmlElement
-	private String vorgangName;
-
-	@XmlElement
-	private String vorgangNummer;
-
-	@XmlElement
-	private String antragstellerAnrede;
-
-	@XmlElement
-	private String antragstellerVorname;
-
-	@XmlElement
-	private String antragstellerNachname;
-
-	@XmlElement
-	private String antragstellerStrasse;
-
-	@XmlElement
-	private String antragstellerHausnummer;
-
-	@XmlElement
-	private String antragstellerPlz;
-
-	@XmlElement
-	private String antragstellerOrt;
-
-	@XmlElementWrapper
-	@XmlElement(name = "nachricht")
-	private List<Nachricht> nachrichten;
-
-	@Getter
-	@Builder
-	static class Nachricht {
-
-		@XmlElement
-		private boolean isFirst;
-
-		@XmlElement
-		private String subject;
-
-		@XmlElement
-		private String mailBody;
-
-		@XmlElement
-		private String createdBy;
-
-		@XmlElement
-		private String createdAt;
-
-		@XmlElementWrapper
-		@XmlElement(name = "attachment")
-		private List<String> attachments;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfService.java
deleted file mode 100644
index 4709d669f5cc6c33bda8ed4ef43be8ca576e1097..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfService.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.Resource;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GermanDateTimeFormatter;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import de.ozgcloud.alfa.vorgang.Antragsteller;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.common.pdf.PdfService;
-
-@Service
-class PostfachNachrichtPdfService {
-
-	static final String PDF_TEMPLATE_PATH = "classpath:fop/postfach-nachrichten.xsl";
-
-	static final String SYSTEM_NACHRICHT_NAME = StringUtils.EMPTY;
-	static final String FALLBACK_USER_NAME = "Unbekannter Benutzer";
-
-	static final String FALLBACK_ANTRAGSTELLER_NAME = "Antragsteller";
-
-	@Autowired
-	private PdfService pdfService;
-
-	@Autowired
-	private GermanDateTimeFormatter germanDateTimeFormatter;
-
-	private boolean isFirstNachricht;
-
-	@Value(PostfachNachrichtPdfService.PDF_TEMPLATE_PATH)
-	private Resource pdfTemplate;
-
-	public OutputStream getAllAsPdf(VorgangWithEingang vorgang, Stream<PostfachNachrichtPdfData> postfachNachrichten, OutputStream out) {
-		return pdfService.createPdf(getTemplate(), out, buildModel(vorgang, postfachNachrichten));
-	}
-
-	InputStream getTemplate() {
-		try {
-			return pdfTemplate.getInputStream();
-		} catch (IOException e) {
-			throw new TechnicalException("Pdf Template for postfach nachrichten could not be loaded", e);
-		}
-	}
-
-	PostfachNachrichtPdfModel buildModel(VorgangWithEingang vorgang, Stream<PostfachNachrichtPdfData> postfachNachrichten) {
-		var pdfModelBuilder = PostfachNachrichtPdfModel.builder().vorgangNummer(vorgang.getNummer()).vorgangName(vorgang.getName());
-
-		Optional.ofNullable(vorgang.getEingang().getAntragsteller()).ifPresent(antragsteller -> mapAntragsteller(pdfModelBuilder, antragsteller));
-
-		mapNachrichten(pdfModelBuilder, postfachNachrichten, vorgang.getEingang().getAntragsteller());
-
-		return pdfModelBuilder.build();
-	}
-
-	void mapAntragsteller(PostfachNachrichtPdfModel.PostfachNachrichtPdfModelBuilder modelBuilder, Antragsteller antragsteller) {
-		modelBuilder.antragstellerAnrede(antragsteller.getAnrede())
-				.antragstellerVorname(antragsteller.getVorname())
-				.antragstellerNachname(antragsteller.getNachname())
-				.antragstellerStrasse(antragsteller.getStrasse())
-				.antragstellerHausnummer(antragsteller.getHausnummer())
-				.antragstellerPlz(antragsteller.getPlz())
-				.antragstellerOrt(antragsteller.getOrt());
-	}
-
-	private void mapNachrichten(PostfachNachrichtPdfModel.PostfachNachrichtPdfModelBuilder pdfModelBuilder,
-			Stream<PostfachNachrichtPdfData> postfachNachrichten, Antragsteller antragsteller) {
-		isFirstNachricht = true;
-
-		pdfModelBuilder.nachrichten(postfachNachrichten.map(nachricht -> mapPostfachNachricht(nachricht, antragsteller)).toList());
-
-	}
-
-	PostfachNachrichtPdfModel.Nachricht mapPostfachNachricht(PostfachNachrichtPdfData postfachMail, Antragsteller antragsteller) {
-		return PostfachNachrichtPdfModel.Nachricht.builder()
-				.isFirst(isFirstNachricht())
-				.subject(postfachMail.getSubject())
-				.mailBody(postfachMail.getMailBody())
-				.createdAt(germanDateTimeFormatter.formatZonedDateTime(postfachMail.getCreatedAt()))
-				.createdBy(buildAbsenderName(postfachMail, antragsteller))
-				.attachments(postfachMail.getAttachmentNames())
-				.build();
-	}
-
-	private boolean isFirstNachricht() {
-		if (isFirstNachricht) {
-			isFirstNachricht = false;
-			return true;
-		}
-		return false;
-	}
-
-	String buildAbsenderName(PostfachNachrichtPdfData postfachNachrichtPdfData, Antragsteller antragsteller) {
-		if (postfachNachrichtPdfData.getDirection() == Direction.IN) {
-			return buildAbsenderForOutgoingNachricht(antragsteller);
-		}
-		return buildAbsenderForIncomingNachricht(postfachNachrichtPdfData);
-	}
-
-	String buildAbsenderForOutgoingNachricht(Antragsteller antragsteller) {
-		return Optional.ofNullable(antragsteller)
-				.map(this::formatAntragstellerName)
-				.orElseGet(() -> FALLBACK_ANTRAGSTELLER_NAME);
-	}
-
-	String buildAbsenderForIncomingNachricht(PostfachNachrichtPdfData postfachNachrichtPdfData) {
-		return Optional.ofNullable(postfachNachrichtPdfData.getUser()).map(user -> {
-			if (Objects.nonNull(user.getId()) && user.toString().startsWith(UserManagerUrlProvider.SYSTEM_USER_IDENTIFIER)) {
-				return SYSTEM_NACHRICHT_NAME;
-			}
-			return formatUserName(postfachNachrichtPdfData.getUser());
-		}).orElseGet(() -> FALLBACK_USER_NAME);
-	}
-
-	private String formatUserName(UserProfile user) {
-		return formatForPdf(user.getFirstName(), user.getLastName());
-	}
-
-	private String formatAntragstellerName(Antragsteller antragsteller) {
-		return formatForPdf(antragsteller.getVorname(), antragsteller.getNachname());
-	}
-
-	private String formatForPdf(String firstName, String lastName) {
-		return String.format("%s %s", getPdfStringValue(firstName), getPdfStringValue(lastName)).trim();
-	}
-
-	private String getPdfStringValue(String value) {
-		return Optional.ofNullable(StringUtils.trimToNull(value)).orElseGet(() -> StringUtils.EMPTY);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java
deleted file mode 100644
index 366716ba3f5849248e8ab9817513117fa2b5da54..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Map;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Configuration
-@ConfigurationProperties(prefix = PostfachProperties.PREFIX)
-@RefreshScope
-@Getter
-@Setter
-public class PostfachProperties {
-
-	static final String PREFIX = "ozgcloud.postfach";
-
-	/**
-	 * Signature appended to messages. Configured by administration config server.
-	 */
-	private String signatur = "";
-
-	/**
-	 * Settings that are linked to an Organisationseinheit. Configured by administration config server.
-	 */
-	private Map<String, Map<String, Object>> organisationsEinheitSettings = Map.of();
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettings.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettings.java
deleted file mode 100644
index b984db126c8145f28dbf13b228b905e543804ced..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettings.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@AllArgsConstructor
-@Builder
-class PostfachSettings {
-
-	private Features features;
-	private Settings settings;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java
deleted file mode 100644
index 71d81170a9d3f924be141c3cb85b37e54986d5ed..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
-import org.springframework.cloud.endpoint.RefreshEndpoint;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.FeatureToggleProperties;
-import de.ozgcloud.alfa.vorgang.ServiceKonto;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Service
-class PostfachSettingsService {
-
-	static final String FIELD_SIGNATUR = "signatur";
-
-	private PostfachConfigGroup postfachConfigGroup;
-
-	private final PostfachMailRemoteService remoteService;
-	private final RefreshEndpoint refreshEndpoint;
-	private final PostfachProperties postfachProperties;
-	private final FeatureToggleProperties featureToggleProperties;
-
-	public boolean isPostfachConfigured() {
-		if (Objects.isNull(postfachConfigGroup)) {
-			postfachConfigGroup = remoteService.getPostfachConfig();
-		}
-		return postfachConfigGroup.isConfigured();
-	}
-
-	public PostfachSettings getPostfachSettings(VorgangWithEingang vorgang) {
-		return PostfachSettings.builder()
-				.features(Features.builder()
-						.reply(isReplyToMessageAllowed(vorgang))
-						.build())
-				.settings(Settings.builder()
-						.signatur(getSignatur(vorgang.getOrganisationseinheitenID()))
-						.build())
-				.build();
-	}
-
-	String getSignatur(String organisationseinheitenID) {
-		refreshPostfachProperties();
-		var settings = getOrganisationsEinheitSettings(organisationseinheitenID);
-		return settings.map(OrganisationsEinheitSettings::getSignatur).orElseGet(postfachProperties::getSignatur);
-	}
-
-	void refreshPostfachProperties() {
-		refreshEndpoint.refresh();
-	}
-
-	boolean isReplyToMessageAllowed(VorgangWithEingang vorgang) {
-		return Optional.ofNullable(vorgang.getHeader().getServiceKonto())
-				.map(ServiceKonto::getType)
-				.map(this::isReplyAllowed)
-				.orElse(false);
-	}
-
-	boolean isReplyAllowed(String serviceKontoType) {
-		if (featureToggleProperties.isReplyAlwaysAllowed()) {
-			return true;
-		}
-
-		if (!isPostfachConfigured()) {
-			return false;
-		}
-
-		return postfachConfigGroup.getPostfachConfigs().stream()
-				.filter(postfachConfig -> postfachConfig.getType().equalsIgnoreCase(serviceKontoType))
-				.map(PostfachConfig::isReplyAllowed)
-				.findFirst()
-				.orElse(false);
-	}
-
-	Optional<OrganisationsEinheitSettings> getOrganisationsEinheitSettings(String organisationId) {
-		return Optional.ofNullable(organisationId)
-				.map(this::getOrganisationsEinheitPostfachSettings)
-				.map(this::mapOrganisationsEinheitSettings);
-	}
-
-	OrganisationsEinheitSettings mapOrganisationsEinheitSettings(Map<String, Object> organisationsEinheitSettings) {
-		var signatur = Optional.ofNullable(organisationsEinheitSettings.get(FIELD_SIGNATUR)).map(Object::toString).orElse(null);
-		return OrganisationsEinheitSettings.builder().signatur(signatur).build();
-	}
-
-	private Map<String, Object> getOrganisationsEinheitPostfachSettings(String organisationId) {
-		return postfachProperties.getOrganisationsEinheitSettings().get(organisationId);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/ReplyOption.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/ReplyOption.java
deleted file mode 100644
index a9c478463d57c2a2b415af4b2d1189baa252d8a9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/ReplyOption.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-enum ReplyOption {
-	POSSIBLE, MANDATORY, FORBIDDEN;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Settings.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Settings.java
deleted file mode 100644
index 93c8e5b340e4f0476193cbcd1e8fc09264dab2d8..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/Settings.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-class Settings {
-
-	private String signatur;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/representation/RepresentationByVorgangController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/representation/RepresentationByVorgangController.java
deleted file mode 100644
index fd81c68c0d4c4ac3db1955e9b5bec991c65d47f6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/representation/RepresentationByVorgangController.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.representation;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileModelAssembler;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileService;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(RepresentationByVorgangController.PATH)
-@RequiredArgsConstructor
-public class RepresentationByVorgangController {
-	static final String PATH = "/api/vorgang/{vorgangId}/representations"; // NOSONAR
-
-	private final OzgFileService fileService;
-	private final BinaryFileModelAssembler modelAssembler;
-
-	@GetMapping
-	public CollectionModel<EntityModel<OzgFile>> getAll(@PathVariable String vorgangId) {
-		return modelAssembler.toCollectionModel(fileService.getRepresentations(vorgangId));
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResource.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResource.java
deleted file mode 100644
index 50a47ea6ba11cf9b2a3c98e6ecf628227dbb02fe..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResource.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-@JsonIgnoreProperties(ignoreUnknown=true)
-public class OzgcloudResource {
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceController.java
deleted file mode 100644
index 2ee4e025b92547b592ae360d3afafdc05615c30a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceController.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import java.util.Collection;
-import java.util.Optional;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import jakarta.validation.constraints.NotBlank;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(OzgcloudResourceController.PATH)
-@RequiredArgsConstructor
-public class OzgcloudResourceController {
-
-	static final String PATH = "/api/resources";
-	static final String PARAM_URI = "uri";
-
-	private final Collection<OzgcloudResourceURIResolver> resolvers;
-	private final OzgcloudResourceModelAssembler assembler;
-
-	@GetMapping(params = PARAM_URI)
-	public RepresentationModel<EntityModel<OzgcloudResource>> getOzgcloudResource(@RequestParam @NotBlank String uri) {
-		var resourceLink = resolveUri(uri);
-		if (resourceLink.isEmpty()) {
-			throw new ResourceNotFoundException(OzgcloudResource.class, uri);
-		}
-		return assembler.toModel(new OzgcloudResourceURIResolveResult(uri, resourceLink.get()));
-	}
-
-	private Optional<Link> resolveUri(String uri) {
-		return resolvers.stream()
-				.map(resolver -> resolver.resolve(uri))
-				.flatMap(Optional::stream)
-				.reduce((r1, r2) -> {
-					throw new TechnicalException("Multiple resolvers accepted uri " + uri);
-				});
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssembler.java
deleted file mode 100644
index b2ec4165e53e8852ff273536b4f8d56dbfe9d03e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssembler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class OzgcloudResourceModelAssembler implements RepresentationModelAssembler<OzgcloudResourceURIResolveResult, EntityModel<OzgcloudResource>> {
-
-	@Override
-	public EntityModel<OzgcloudResource> toModel(OzgcloudResourceURIResolveResult uriResolveResult) {
-		return EntityModel.of(new OzgcloudResource()).add(getSelfLink(uriResolveResult.getResourceURI())).add(uriResolveResult.getResourceLink());
-	}
-
-	private Link getSelfLink(String uri) {
-		return linkTo(methodOn(OzgcloudResourceController.class).getOzgcloudResource(uri)).withSelfRel();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessor.java
deleted file mode 100644
index 55ccd4eaddadfcb40250f377b429d553ccf02c26..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.Root;
-
-@Component
-class OzgcloudResourceRootProcessor implements RepresentationModelProcessor<EntityModel<Root>> {
-
-	static final String REL_RESOURCE = "resource";
-
-	@Override
-	public EntityModel<Root> process(EntityModel<Root> model) {
-		return model.add(linkTo(methodOn(OzgcloudResourceController.class).getOzgcloudResource(null)).withRel(REL_RESOURCE));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResult.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResult.java
deleted file mode 100644
index 6759573bd17e4795847dfa9145afdbbaf123aafe..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResult.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import org.springframework.hateoas.Link;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.ToString;
-
-@Builder
-@Getter
-@ToString
-public class OzgcloudResourceURIResolveResult {
-	private final String resourceURI;
-	private final Link resourceLink;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolver.java b/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolver.java
deleted file mode 100644
index ceedf7716673610ad372938dcc6a95204f30662c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolver.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import java.util.Optional;
-
-import org.springframework.hateoas.Link;
-
-public interface OzgcloudResourceURIResolver {
-
-	Optional<Link> resolve(String uri);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/ByStatus.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/ByStatus.java
deleted file mode 100644
index 6f0a4929e00ed92387cf4cf0d7394ce698a2dd07..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/ByStatus.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Builder
-@Getter
-@Setter
-class ByStatus {
-
-	private int neu;
-	private int angenommen;
-	private int inBearbeitung;
-	private int beschieden;
-	private int abgeschlossen;
-	private int verworfen;
-	private int zuLoeschen;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/Statistic.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/Statistic.java
deleted file mode 100644
index cd82cf3b4677e9cb68eac0f6613359b5a5c715a7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/Statistic.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Builder(toBuilder = true)
-@Getter
-@Setter
-public class Statistic {
-
-	private ByStatus byStatus;
-	private int wiedervorlagen;
-	private boolean existsWiedervorlageOverdue;
-	private int ungeleseneNachrichten;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticController.java
deleted file mode 100644
index 0d44b8a938be8677ba966558f04fd0ba919830ae..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticController.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class StatisticController {
-
-	@Autowired
-	private StatisticService statisticService;
-
-	public Statistic getVorgaengeStatistic() {
-		return statisticService.getVorgaengeStatistic();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticMapper.java
deleted file mode 100644
index cc8e05c9f7f06f16c392419e75854ca4830a716f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticMapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import org.mapstruct.CollectionMappingStrategy;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResult;
-
-@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN,
-		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
-		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
-interface StatisticMapper {
-
-	@Mapping(target = "stringValue", source = "resultStringValue")
-	@Mapping(target = "boolValue", source = "resultBoolValue")
-	@Mapping(target = "intValue", source = "resultIntValue")
-	StatisticResult toResult(GrpcVorgangStatisticResult grpcVorgangStatisticResult);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java
deleted file mode 100644
index f4b1574bbdd340979dacb1a6e7e51cf09a3d3bc3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.AlfaProperties;
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.vorgang.common.GrpcQueryOperator;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.GroupMethod;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticRequest;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResponse;
-import de.ozgcloud.vorgang.statistic.StatisticServiceGrpc.StatisticServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class StatisticRemoteService {
-
-	static final String COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT = "countVorgangStatus_%s";
-	static final String COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME = "countWiedervorlage";
-	static final String EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME = "existsWiedervorlageOverdue";
-	static final String COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME = "countVorgaengeWithUngeleseneNachrichten";
-
-	static final String STATUS_PATH = "Vorgang.status";
-	static final String WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE = "ClientAttribute.%s.nextWiedervorlageFrist";
-	static final String VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH = "ClientAttribute.OzgCloud_NachrichtenManager.hasNewPostfachNachricht";
-
-	static final String OPERAND_TODAY_DATE = "today()";
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private StatisticServiceBlockingStub statisticServiceStub;
-	@Autowired
-	private StatisticMapper mapper;
-	@Autowired
-	private AlfaProperties alfaProperties;
-
-	public Map<String, StatisticResult> getVorgaengeStatistics(List<VorgangStatus> countByVorgangStatus) {
-		var grpcRequest = GrpcVorgangStatisticRequest.newBuilder()
-				.addAllQuery(buildCountByStatusQueries(countByVorgangStatus))
-				.addQuery(buildCountWiedervorlageNextFristQuery())
-				.addQuery(buildExistsWiedervorlageOverdueQuery())
-				.addQuery(buildCountVorgaengeWithUngeleseneNachrichtenQuery())
-				.build();
-
-		var grpcResponse = statisticServiceStub.getVorgangStatistic(grpcRequest);
-
-		return buildStatisticResult(grpcResponse);
-	}
-
-	List<GrpcVorgangStatisticQuery> buildCountByStatusQueries(List<VorgangStatus> countByVorgangStatus) {
-		return countByVorgangStatus.stream().map(this::buildCountByVorgangStatusQuery).toList();
-	}
-
-	GrpcVorgangStatisticQuery buildCountByVorgangStatusQuery(VorgangStatus vorgangStatus) {
-		return GrpcVorgangStatisticQuery.newBuilder()
-				.setResultName(buildCountByStatusResultName(vorgangStatus))
-				.setPath(STATUS_PATH)
-				.setGroupMethod(GroupMethod.COUNT)
-				.setOperator(GrpcQueryOperator.EQUAL)
-				.setOperandStringValue(vorgangStatus.name())
-				.build();
-	}
-
-	GrpcVorgangStatisticQuery buildCountWiedervorlageNextFristQuery() {
-		return GrpcVorgangStatisticQuery.newBuilder()
-				.setResultName(COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME)
-				.setPath(String.format(WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, alfaProperties.getApplicationName()))
-				.setGroupMethod(GroupMethod.COUNT)
-				.setOperator(GrpcQueryOperator.UNEQUAL)
-				.build();
-	}
-
-	GrpcVorgangStatisticQuery buildExistsWiedervorlageOverdueQuery() {
-		return GrpcVorgangStatisticQuery.newBuilder()
-				.setResultName(EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME)
-				.setPath(String.format(WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, alfaProperties.getApplicationName()))
-				.setGroupMethod(GroupMethod.EXISTS)
-				.setOperator(GrpcQueryOperator.LESS_THEN_OR_EQUAL_TO)
-				.setOperandStringValue(OPERAND_TODAY_DATE)
-				.build();
-	}
-
-	public String buildCountByStatusResultName(VorgangStatus vorgangStatus) {
-		return String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, vorgangStatus.name());
-	}
-
-	Map<String, StatisticResult> buildStatisticResult(GrpcVorgangStatisticResponse grpcVorgangStatisticResponse) {
-		return grpcVorgangStatisticResponse.getResultList()
-				.stream()
-				.map(mapper::toResult)
-				.collect(Collectors.toMap(StatisticResult::getName, Function.identity()));
-	}
-
-	public GrpcVorgangStatisticQuery buildCountVorgaengeWithUngeleseneNachrichtenQuery() {
-		return GrpcVorgangStatisticQuery.newBuilder()
-				.setResultName(COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME)
-				.setPath(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)
-				.setGroupMethod(GroupMethod.COUNT)
-				.setOperator(GrpcQueryOperator.EQUAL)
-				.setOperandBoolValue(true)
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticResult.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticResult.java
deleted file mode 100644
index 2824d157ba5df2287645e2374af4b4495fd8fbc7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticResult.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-class StatisticResult {
-
-	private String name;
-	private Boolean boolValue;
-	private Integer intValue;
-	private String stringValue;
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java
deleted file mode 100644
index 9e8cbd8c31459b379a51b42b5334c9babb2bcf07..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-@Service
-class StatisticService {
-
-	static final List<VorgangStatus> COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN,
-			VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN);
-	static final List<VorgangStatus> COUNT_BY_VORGANG_STATUS_POSTSTELLE_USER = Collections.emptyList();
-	static final List<VorgangStatus> COUNT_BY_VORGANG_EINHEITLICHER_ANSPRECHPARTNER = Collections.emptyList();
-
-	@Autowired
-	private StatisticRemoteService remoteService;
-
-	@Autowired
-	private CurrentUserService currentUserService;
-
-	public Statistic getVorgaengeStatistic() {
-		var response = remoteService.getVorgaengeStatistics(getCountByVorgangStatusList());
-		return buildGetVorgaengeStatisticResult(response);
-	}
-
-	List<VorgangStatus> getCountByVorgangStatusList() {
-		if (currentUserService.hasRole(UserRole.VERWALTUNG_USER)) {
-			return COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER;
-		}
-		if (currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			return COUNT_BY_VORGANG_STATUS_POSTSTELLE_USER;
-		}
-		if (currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
-			return COUNT_BY_VORGANG_EINHEITLICHER_ANSPRECHPARTNER;
-		}
-		return Collections.emptyList();
-	}
-
-	Statistic buildGetVorgaengeStatisticResult(Map<String, StatisticResult> response) {
-		return Statistic.builder()
-				.existsWiedervorlageOverdue(getBooleanResult(response, StatisticRemoteService.EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME))
-				.wiedervorlagen(getIntResult(response, StatisticRemoteService.COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME))
-				.ungeleseneNachrichten(getIntResult(response, StatisticRemoteService.COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME))
-				.byStatus(ByStatus.builder()
-						.neu(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.NEU)))
-						.abgeschlossen(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.ABGESCHLOSSEN)))
-						.angenommen(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.ANGENOMMEN)))
-						.beschieden(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.BESCHIEDEN)))
-						.verworfen(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.VERWORFEN)))
-						.inBearbeitung(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.IN_BEARBEITUNG)))
-						.zuLoeschen(getIntResult(response, remoteService.buildCountByStatusResultName(VorgangStatus.ZU_LOESCHEN)))
-						.build())
-				.build();
-	}
-
-	private int getIntResult(Map<String, StatisticResult> response, String resultName) {
-		return Optional.ofNullable(response.get(resultName)).map(StatisticResult::getIntValue).orElse(0);
-	}
-
-	private boolean getBooleanResult(Map<String, StatisticResult> response, String resultName) {
-		return Optional.ofNullable(response.get(resultName)).map(StatisticResult::getBoolValue).orElse(false);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapper.java
deleted file mode 100644
index 7c75ae4abbbc30fd3dd7a450634e154f8a61653e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.vorgang.system.GrpcGetSystemStatusResponse;
-
-@Mapper
-interface RemoteSystemStatusMapper {
-
-	VorgangManagerSystemStatus fromGrpc(GrpcGetSystemStatusResponse systemStatusResponse);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusRemoteService.java
deleted file mode 100644
index b905ccbad78586a58eab4f02f7f1c54d629bff5b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusRemoteService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.system.GrpcGetSystemStatusRequest;
-import de.ozgcloud.vorgang.system.SystemStatusServiceGrpc.SystemStatusServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class SystemStatusRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private SystemStatusServiceBlockingStub systemStatusBlockingStub;
-	@Autowired
-	private RemoteSystemStatusMapper remoteSystemStatusMapper;
-
-	public VorgangManagerSystemStatus getSystemStatus() {
-		var systemStatusResponse = systemStatusBlockingStub.getSystemStatus(GrpcGetSystemStatusRequest.newBuilder().build());
-		return remoteSystemStatusMapper.fromGrpc(systemStatusResponse);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusService.java
deleted file mode 100644
index 4dc759f3f060383d016ee3bb63e118ab613862c7..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/system/SystemStatusService.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Service
-public class SystemStatusService {
-
-	@Autowired
-	private SystemStatusRemoteService systemStatusRemoteService;
-
-	public boolean isSearchServerAvailable() {
-		try {
-			return systemStatusRemoteService.getSystemStatus().isSearchServerAvailable();
-		} catch (RuntimeException e) {
-			LOG.warn("Cannot check system status.", e);
-			return false;
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatus.java b/alfa-service/src/main/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatus.java
deleted file mode 100644
index 9130d54933c53539cec398b01f5f28956ed150c6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatus.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import lombok.Builder;
-
-@Builder
-public record VorgangManagerSystemStatus(boolean isSearchServerAvailable, String javaVersion, String buildVersion) {
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Antragsteller.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Antragsteller.java
deleted file mode 100644
index db863f1e551ffe823f9f562761de88d5ccd1772b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Antragsteller.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Map;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class Antragsteller {
-
-	@JsonIgnore
-	private String postfachId;
-
-	private String anrede;
-	private String nachname;
-	private String vorname;
-	private String geburtsdatum;
-	private String geburtsort;
-	private String geburtsname;
-	private String email;
-	private String telefon;
-	private String strasse;
-	private String hausnummer;
-	private String plz;
-	private String ort;
-	private String firmaName;
-
-	private Map<String, Object> otherData;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AntragstellerMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AntragstellerMapper.java
deleted file mode 100644
index 7ceeaf456b09b1eab581db6ee933f8073babfeea..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AntragstellerMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.NullValueMappingStrategy;
-import org.mapstruct.NullValuePropertyMappingStrategy;
-
-import de.ozgcloud.alfa.common.StringToNullMapper;
-import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
-import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
-
-@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_NULL, //
-		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
-		nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT, //
-		uses = { StringToNullMapper.class, GrpcFormDataMapper.class })
-interface AntragstellerMapper {
-
-	Antragsteller toAntragsteller(GrpcAntragsteller antragsteller);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AssignUserCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AssignUserCommandBody.java
deleted file mode 100644
index 14e55034d9dd31cb7e393c678371da4fb0e810b9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/AssignUserCommandBody.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.Getter;
-
-@Getter
-public class AssignUserCommandBody implements CommandBody {
-
-	@LinkedUserProfileResource
-	private UserId assignedTo;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Eingang.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Eingang.java
deleted file mode 100644
index 5ed176167c4c239eced91f21b958ab10392fb10b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Eingang.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Map;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Getter
-@Builder
-@ToString
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-public class Eingang {
-
-	private String id;
-
-	private int numberOfAttachments;
-	private int numberOfRepresentations;
-
-	private ZustaendigeStelle zustaendigeStelle;
-	private Antragsteller antragsteller;
-	private EingangHeader header;
-
-	@ToString.Exclude
-	private Map<String, Object> formData;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeader.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeader.java
deleted file mode 100644
index c7f494f0e702473407595c33441e8d650b8b7f90..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.ZonedDateTime;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class EingangHeader {
-
-	private String requestId;
-	private ZonedDateTime createdAt;
-	private String formId;
-	private String formName;
-	private String sender;
-	private String customer;
-	private String customerId;
-	private String client;
-	private String clientId;
-	private String formEngineName;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapper.java
deleted file mode 100644
index c4a332cdf7071f1843d5c3590592f7ba2028e2b0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapper.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.ZonedDateTime;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader;
-
-@Mapper
-interface EingangHeaderMapper {
-
-	EingangHeader toEingangHeader(GrpcEingangHeader header);
-
-	public static ZonedDateTime mapDateStrToZonedDateTime(String zdtStr) {
-		return ZonedDateTime.parse(zdtStr);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangMapper.java
deleted file mode 100644
index 23acbe922cc88e7152ae1295b08cf72eb7a8caa3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EingangMapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.NullValueMappingStrategy;
-import org.mapstruct.NullValuePropertyMappingStrategy;
-
-import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-
-@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_NULL, //
-		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
-		nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT, //
-		uses = { AntragstellerMapper.class, EingangHeaderMapper.class, ZustaendigeStelleMapper.class, GrpcFormDataMapper.class, })
-interface EingangMapper {
-
-	@Mapping(target = "formData", source = "formData")
-	public abstract Eingang fromGrpc(GrpcEingang eingang);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EnhancedVorgang.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EnhancedVorgang.java
deleted file mode 100644
index 0c4767d8675ecddf79c28d032ef575ae3a42b59c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/EnhancedVorgang.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.statistic.Statistic;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Builder
-@Setter
-@Getter
-class EnhancedVorgang {
-
-	private Statistic statistic;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FilterCriteria.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FilterCriteria.java
deleted file mode 100644
index 897b59c64311a57f8a29d4d65be56fc1c70db25d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FilterCriteria.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder(toBuilder = true)
-class FilterCriteria {
-
-	private boolean filterByOrganisationseinheitenId;
-	@Builder.Default
-	private Collection<String> organisationsEinheitenId = Collections.emptyList();
-	@Builder.Default
-	private Optional<VorgangStatus> status = Optional.empty();
-	private boolean filterByAssignedTo;
-	@Builder.Default
-	private Optional<UserId> assignedTo = Optional.empty();
-	private boolean hasNextWiedervorlageFrist;
-	private boolean hasUngeleseneNachrichten;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FindVorgaengeHeaderRequestCriteria.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FindVorgaengeHeaderRequestCriteria.java
deleted file mode 100644
index 17883280036517435be97d7a3472b8ec62c50ec9..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/FindVorgaengeHeaderRequestCriteria.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Optional;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder(toBuilder = true)
-@Getter
-class FindVorgaengeHeaderRequestCriteria {
-
-	private int page;
-	private int limit;
-	@Builder.Default
-	private Optional<String> searchBy = Optional.empty();
-	private OrderBy orderBy;
-	@Builder.Default
-	private FilterCriteria filterCriteria = FilterCriteria.builder().build();
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/OrderBy.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/OrderBy.java
deleted file mode 100644
index 050040109b8b5b74886d5a40bef70a6fe3b72a68..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/OrderBy.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-enum OrderBy {
-	PRIORITY,
-	EA_PRIORITY,
-	CREATED_AT_DESC,
-	NEXT_WIEDERVORLAGE_FRIST
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java
deleted file mode 100644
index 837dfc33d93f5a1d8af65218a5d815565ca3f47d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ProcessVorgangBody.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.ArrayList;
-
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.Getter;
-
-@Getter
-public class ProcessVorgangBody implements CommandBody {
-
-	private ArrayList<String> processorNames;
-	
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ResetNewPostfachNachrichtBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ResetNewPostfachNachrichtBody.java
deleted file mode 100644
index 70ec293220e4217bec94d7da43727e48306bad85..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ResetNewPostfachNachrichtBody.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-class ResetNewPostfachNachrichtBody {
-
-	private boolean hasNewPostfachNachricht;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKonto.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKonto.java
deleted file mode 100644
index 1aede15058991f2b4c4c27964246dc03962e0898..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKonto.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-
-import de.ozgcloud.alfa.postfach.PostfachAddress;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.Singular;
-
-@Getter
-@Builder
-@Setter
-public class ServiceKonto {
-
-	private String type;
-	@Singular
-	private List<PostfachAddress> postfachAddresses;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapper.java
deleted file mode 100644
index 1bef02557c17fb87ac4329f2265d7aa630db7086..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import org.mapstruct.CollectionMappingStrategy;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.NullValueMappingStrategy;
-
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto;
-
-@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, //
-		nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL, //
-		uses = GrpcObjectMapper.class)
-interface ServiceKontoMapper {
-
-	@Mapping(target = "postfachAddress", ignore = true)
-	@Mapping(target = "postfachAddresses", source = "postfachAddressesList")
-	public ServiceKonto fromServiceKonto(GrpcServiceKonto serviceKonto);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgaengeHeaderResponse.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgaengeHeaderResponse.java
deleted file mode 100644
index 354f8564ff4d2423d9ef9db97787044148a09ee6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgaengeHeaderResponse.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-class VorgaengeHeaderResponse {
-
-	private List<VorgangHeader> vorgaengeHeader;
-	private long total;
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Vorgang.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Vorgang.java
deleted file mode 100644
index 283e43bb02da6cce929019a0021d858a1a8aa86e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/Vorgang.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-import de.ozgcloud.alfa.common.user.UserRole;
-
-public interface Vorgang {
-
-	enum VorgangStatus {
-		NEU, ANGENOMMEN, VERWORFEN, IN_BEARBEITUNG, BESCHIEDEN, ABGESCHLOSSEN, WEITERGELEITET, ZU_LOESCHEN;
-
-		private final Map<String, Set<VorgangStatus>> allowedFollowStatusByRole = new HashMap<>();
-
-		static {
-			NEU.allowedFollowStatusByRole.put(UserRole.EINHEITLICHER_ANSPRECHPARTNER, Set.of(WEITERGELEITET, VERWORFEN));
-			IN_BEARBEITUNG.allowedFollowStatusByRole.put(UserRole.EINHEITLICHER_ANSPRECHPARTNER, Set.of(ABGESCHLOSSEN, WEITERGELEITET));
-			VERWORFEN.allowedFollowStatusByRole.put(UserRole.EINHEITLICHER_ANSPRECHPARTNER, Set.of(NEU));
-			ABGESCHLOSSEN.allowedFollowStatusByRole.put(UserRole.EINHEITLICHER_ANSPRECHPARTNER, Set.of(IN_BEARBEITUNG));
-
-			NEU.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(ANGENOMMEN, VERWORFEN));
-			VERWORFEN.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(NEU));
-			ANGENOMMEN.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(IN_BEARBEITUNG));
-			IN_BEARBEITUNG.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(BESCHIEDEN, ANGENOMMEN, ABGESCHLOSSEN));
-			BESCHIEDEN.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(ABGESCHLOSSEN, IN_BEARBEITUNG));
-			ABGESCHLOSSEN.allowedFollowStatusByRole.put(UserRole.VERWALTUNG_USER, Set.of(IN_BEARBEITUNG));
-		}
-
-		public boolean isTransactionAllowed(String userRole, VorgangStatus newStatus) {
-			if (Objects.isNull(allowedFollowStatusByRole.get(userRole))) {
-				return false;
-			}
-			return allowedFollowStatusByRole.get(userRole).contains(newStatus);
-		}
-	}
-
-	String getId();
-
-	long getVersion();
-
-	VorgangStatus getStatus();
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationService.java
deleted file mode 100644
index 4fe0e63ae6566eeda041b9dbf2e81d29375dbb16..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationService.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-@Service
-class VorgangAuthorizationService {
-
-	static final String VERIFY_BY_USER_ROLE = "@vorgangAuthorizationService.verifyByUserRole(returnObject.getContent())";
-
-	@Autowired
-	private CurrentUserService userService;
-
-	public boolean verifyByUserRole(VorgangWithEingang vorgang) {
-		if (userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			return vorgang.getStatus() == VorgangStatus.NEU;
-		}
-		return true;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java
deleted file mode 100644
index 3b6facda1bdca1ad3dd53fa54f250e4df2cbda93..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangController.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PostAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.statistic.StatisticController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import jakarta.servlet.http.HttpServletResponse;
-
-@RestController
-@RequestMapping(VorgangController.PATH)
-public class VorgangController {
-
-	static final String PATH = "/api/vorgangs"; // NOSONAR
-	static final String PARAM_SEARCH = "searchBy";
-	static final String PARAM_PAGE = "page";
-	static final String PARAM_LIMIT = "limit";
-	static final String PARAM_ASSIGNED_TO = "assignedTo";
-	static final String PARAM_STATUS = "status";
-	static final String PARAM_NEXT_WIEDERVORLAGE_FRIST = "nextFrist";
-	static final String PARAM_NACHRICHTEN = "nachrichten";
-
-	public static final String PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS = "exists";
-	public static final String PARAM_NACHRICHTEN_UNGELESENE = "ungelesene";
-
-	@Autowired
-	private VorgangService vorgangService;
-	@Autowired
-	private VorgangModelAssembler modelAssembler;
-
-	@Autowired
-	private ClientAttributeService clientAttributeService;
-
-	@Autowired
-	private StatisticController statisticController;
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAll(@RequestParam int page, @RequestParam Integer limit) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit).build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_STATUS })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByStatus(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam VorgangStatus status) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder().status(Optional.of(status)).build()).build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_SEARCH })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllBySearchBy(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam String searchBy) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit).searchBy(Optional.of(searchBy)).build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedTo(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam UserId assignedTo) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder().filterByAssignedTo(true).assignedTo(asOptional(assignedTo)).build()).build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO, PARAM_SEARCH })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedToAndSearchBy(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam UserId assignedTo, @RequestParam String searchBy) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder().filterByAssignedTo(true).assignedTo(asOptional(assignedTo)).build())
-				.searchBy(Optional.of(searchBy))
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO, PARAM_STATUS })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedToAndStatus(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam UserId assignedTo, @RequestParam VorgangStatus status) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder()
-						.status(Optional.of(status))
-						.filterByAssignedTo(true).assignedTo(asOptional(assignedTo)).build())
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_NEXT_WIEDERVORLAGE_FRIST })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByHasNextWiedervorlageFrist(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam String nextFrist) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder()
-						.hasNextWiedervorlageFrist(existNextWiedervorlageFrist(nextFrist)).build())
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO, PARAM_NEXT_WIEDERVORLAGE_FRIST })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedToAndHasNextWiedervorlageFrist(@RequestParam int page,
-			@RequestParam Integer limit,
-			@RequestParam UserId assignedTo, @RequestParam String nextFrist) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder()
-						.filterByAssignedTo(true).assignedTo(asOptional(assignedTo))
-						.hasNextWiedervorlageFrist(existNextWiedervorlageFrist(nextFrist))
-						.build())
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	boolean existNextWiedervorlageFrist(String nextWiedervorlageFrist) {
-		return StringUtils.equals(nextWiedervorlageFrist, PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS);
-	}
-
-	Optional<UserId> asOptional(UserId userId) {
-		return StringUtils.isEmpty(userId.toString()) ? Optional.empty() : Optional.of(userId);
-	}
-
-	RepresentationModel<EntityModel<EnhancedVorgang>> handleGetAllRequest(FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		var vorgaengeHeaderResponse = vorgangService.findVorgaengeHeader(requestCriteria);
-
-		return modelAssembler.toCollectionModel(vorgaengeHeaderResponse.getVorgaengeHeader().stream(), vorgaengeHeaderResponse, requestCriteria,
-				statisticController.getVorgaengeStatistic());
-	}
-
-	@PostAuthorize(VorgangAuthorizationService.VERIFY_BY_USER_ROLE)
-	@GetMapping("/{vorgangId}")
-	public EntityModel<Vorgang> getVorgangWithEingang(@PathVariable String vorgangId) {
-		return modelAssembler.toModel(getVorgang(vorgangId));
-	}
-
-	public VorgangWithEingang getVorgang(String vorgangId) {
-		return vorgangService.findVorgangWithEingang(vorgangId);
-	}
-
-	@PutMapping(path = "/{vorgangId}/hasNewPostfachNachricht", consumes = MediaType.APPLICATION_JSON_VALUE)
-	public void resetNewPostfachNachricht(@PathVariable String vorgangId, @RequestBody ResetNewPostfachNachrichtBody body,
-			HttpServletResponse response) {
-		if (body.isHasNewPostfachNachricht()) {
-			response.setStatus(HttpStatus.UNPROCESSABLE_ENTITY.value());
-			return;
-		}
-
-		clientAttributeService.resetPostfachNachricht(vorgangId);
-		response.setStatus(HttpStatus.NO_CONTENT.value());
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_NACHRICHTEN })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByUngeleseneNachrichten(@RequestParam int page, @RequestParam Integer limit,
-			@RequestParam String nachrichten) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder().hasUngeleseneNachrichten(PARAM_NACHRICHTEN_UNGELESENE.equals(nachrichten)).build())
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO, PARAM_NACHRICHTEN })
-	public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedToAndUngeleseneNachrichten(@RequestParam int page,
-			@RequestParam Integer limit, @RequestParam UserId assignedTo, @RequestParam String nachrichten) {
-		var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
-				.filterCriteria(FilterCriteria.builder()
-						.filterByAssignedTo(true).assignedTo(asOptional(assignedTo))
-						.hasUngeleseneNachrichten(PARAM_NACHRICHTEN_UNGELESENE.equals(nachrichten))
-						.build())
-				.build();
-
-		return handleGetAllRequest(requestCriteria);
-	}
-
-	public boolean isEditable(Vorgang vorgang) {
-		return vorgangService.isVorgangEditable(vorgang);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHead.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHead.java
deleted file mode 100644
index 8cd2afc524e3fd7f24c9335823e6e1b57f44f8d0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHead.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Builder
-@Getter
-public class VorgangHead {
-
-	private ServiceKonto serviceKonto;
-	private boolean locked;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeader.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeader.java
deleted file mode 100644
index 095dfd131f3aeb751d197df5422efb18c32f5088..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeader.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonProperty.Access;
-
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.With;
-
-@Getter
-@Builder
-class VorgangHeader implements Vorgang {
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private long version;
-
-	@LinkedUserProfileResource
-	private UserId assignedTo;
-
-	private String name;
-	private VorgangStatus status;
-	private ZonedDateTime createdAt;
-	private String aktenzeichen;
-	private String nummer;
-
-	@With
-	@JsonProperty(access = Access.READ_ONLY)
-	private LocalDate nextFrist;
-
-	private boolean hasPostfachNachricht;
-
-	private boolean hasNewPostfachNachricht;
-
-	private Boolean antragBewilligt;
-
-	private boolean archiving;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapper.java
deleted file mode 100644
index c7d0b102c241d120e654ac9bb77cb4566ae296eb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapper.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.LocalDate;
-import java.util.List;
-
-import org.mapstruct.CollectionMappingStrategy;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.ReportingPolicy;
-
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeUtils;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
-
-@Mapper(uses = UserIdMapper.class, unmappedTargetPolicy = ReportingPolicy.WARN, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, imports = ClientAttribute.class)
-interface VorgangHeaderMapper {
-
-	@Mapping(target = "nextFrist", source = "clientAttributesList")
-	@Mapping(target = "antragBewilligt", source = "clientAttributesList")
-	@Mapping(target = "hasPostfachNachricht", expression = "java(mapBoolClientAttribute(vorgangHeader.getClientAttributesList(), ClientAttribute.HAS_POSTFACH_NACHRICHT))")
-	@Mapping(target = "hasNewPostfachNachricht", expression = "java(mapBoolClientAttribute(vorgangHeader.getClientAttributesList(), ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT))")
-	@Mapping(target = "archiving", expression = "java(mapBoolClientAttribute(vorgangHeader.getClientAttributesList(), ClientAttribute.ARCHIVING))")
-	VorgangHeader toVorgangHeader(GrpcVorgangHeader vorgangHeader);
-
-	default LocalDate mapNextFrist(List<GrpcClientAttribute> clientAttributes) {
-		return ClientAttributeUtils.findGrpcValue(ClientAttribute.WIEDERVORLAGE_NEXT_FRIST, clientAttributes)
-				.map(GrpcClientAttributeValue::getStringValue)
-				.map(LocalDate::parse).orElse(null);
-	}
-
-	default boolean mapBoolClientAttribute(List<GrpcClientAttribute> grpcClientAttributes, ClientAttribute clientAttribute) {
-		return ClientAttributeUtils.findGrpcValue(clientAttribute, grpcClientAttributes)
-				.map(GrpcClientAttributeValue::getBoolValue)
-				.orElse(false);
-	}
-
-	default Boolean mapAntragBewilligt(List<GrpcClientAttribute> grpcClientAttributes) {
-		return ClientAttributeUtils.findGrpcValue(ClientAttribute.ANTRAG_BEWILLIGT, grpcClientAttributes)
-				.map(GrpcClientAttributeValue::getBoolValue)
-				.orElse(null);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java
deleted file mode 100644
index 47c76b1574946937db404c0342d93411f029cc6d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangModelAssembler.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.hateoas.mediatype.hal.HalModelBuilder;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.statistic.Statistic;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class VorgangModelAssembler implements RepresentationModelAssembler<Vorgang, EntityModel<Vorgang>> {
-
-	static final String REL_NEXT = "next";
-	static final String REL_PREVIOUS = "previous";
-	static final String REL_VORGANG_MIT_EINGANG = "vorgang-mit-eingang";
-	static final String REL_WIEDERVORLAGEN = "wiedervorlagen";
-	static final String REL_VORGANG_ASSIGN = "assign";
-
-	private final CurrentUserService userService;
-	private final VorgangService vorgangService;
-
-	public RepresentationModel<EntityModel<EnhancedVorgang>> toCollectionModel(Stream<VorgangHeader> entities, VorgaengeHeaderResponse response,
-			FindVorgaengeHeaderRequestCriteria requestCriteria, Statistic statistic) {
-		var model = initModel(entities, statistic);
-
-		getPreviousPage(requestCriteria.getPage()).map(page -> buildPageLink(page, REL_PREVIOUS, requestCriteria)).ifPresent(model::add);
-		getNextPage(response, requestCriteria).map(page -> buildPageLink(page, REL_NEXT, requestCriteria)).ifPresent(model::add);
-
-		return model;
-	}
-
-	RepresentationModel<EntityModel<EnhancedVorgang>> initModel(Stream<VorgangHeader> entities, Statistic statistic) {
-		return HalModelBuilder.halModelOf(EnhancedVorgang.builder().statistic(statistic).build())
-				.link(linkTo(VorgangController.class).withSelfRel())
-				.embed(entities.map(this::toModel).toList())
-				.build();
-	}
-
-	Optional<Integer> getPreviousPage(int currentPage) {
-		return isFirstPage(currentPage) ? Optional.empty() : Optional.of(currentPage - 1);
-	}
-
-	Optional<Integer> getNextPage(VorgaengeHeaderResponse response, FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		return Optional.of(getLastEntryIndex(requestCriteria, response.getVorgaengeHeader().size()))
-				.filter(index -> response.getTotal() > index)
-				.map(index -> requestCriteria.getPage() + 1);
-	}
-
-	int getLastEntryIndex(FindVorgaengeHeaderRequestCriteria requestCriteria, int currentPageSize) {
-		if (isFirstPage(requestCriteria.getPage())) {
-			return currentPageSize;
-		}
-		return currentPageSize + (requestCriteria.getPage() * requestCriteria.getLimit());
-	}
-
-	private boolean isFirstPage(int currentPage) {
-		return currentPage == 0;
-	}
-
-	Link buildPageLink(int page, String linkRel, FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		var uriBuilder = createVorgangUriBuilder(page, requestCriteria);
-
-		requestCriteria.getSearchBy().ifPresent(searchBy -> uriBuilder.queryParam(VorgangController.PARAM_SEARCH, searchBy));
-		handleAssignedTo(uriBuilder, requestCriteria);
-		requestCriteria.getFilterCriteria().getStatus().ifPresent(status -> uriBuilder.queryParam(VorgangController.PARAM_STATUS, status));
-		handleNextWiedevorlageFrist(uriBuilder, requestCriteria);
-
-		return Link.of(uriBuilder.build().toUri().toASCIIString()).withRel(linkRel);
-	}
-
-	private void handleAssignedTo(UriComponentsBuilder uriBuilder, FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		if (requestCriteria.getFilterCriteria().isFilterByAssignedTo()) {
-			uriBuilder.queryParam(VorgangController.PARAM_ASSIGNED_TO, getAssignedToValue(requestCriteria.getFilterCriteria()));
-		}
-	}
-
-	private void handleNextWiedevorlageFrist(UriComponentsBuilder uriBuilder, FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		if (requestCriteria.getFilterCriteria().isHasNextWiedervorlageFrist()) {
-			uriBuilder.queryParam(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS);
-		}
-	}
-
-	UriComponentsBuilder createVorgangUriBuilder(int page, FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		return linkTo(VorgangController.class).toUriComponentsBuilder()
-				.queryParam(VorgangController.PARAM_PAGE, page)
-				.queryParam(VorgangController.PARAM_LIMIT, requestCriteria.getLimit());
-	}
-
-	String getAssignedToValue(FilterCriteria filterCriteria) {
-		return filterCriteria.getAssignedTo().map(UserId::toString).orElse(StringUtils.EMPTY);
-	}
-
-	@Override
-	public EntityModel<Vorgang> toModel(Vorgang vorgang) {
-		var selfLinkBuilder = linkTo(VorgangController.class).slash(vorgang.getId());
-		var assignLink = linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(),
-				vorgang.getVersion(), null)).withRel(REL_VORGANG_ASSIGN);
-		var wiedervorlagenLink = linkTo(methodOn(WiedervorlageController.class).findByVorgang(vorgang.getId())).withRel(REL_WIEDERVORLAGEN);
-
-		return ModelBuilder.fromEntity(vorgang)
-				.addLink(selfLinkBuilder.withSelfRel())
-				.addLink(selfLinkBuilder.withRel(REL_VORGANG_MIT_EINGANG))
-				.ifMatch(() -> isAssigneable(vorgang))
-				.addLink(assignLink)
-				.ifMatch(() -> userService.hasRole(UserRole.VERWALTUNG_USER)).addLink(wiedervorlagenLink)
-				.buildModel();
-	}
-
-	boolean isAssigneable(Vorgang vorgang) {
-		return (userService.hasRole(UserRole.VERWALTUNG_USER) || userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE))
-				&& vorgangService.isVorgangEditable(vorgang);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java
deleted file mode 100644
index 662a1602ab1d17dc98b9bcfff6f558b64357c1b3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProcessorProperties.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties(prefix = "ozgcloud.vorgang")
-public class VorgangProcessorProperties {
-
-	/**
-	 * Matching condition for processing based on vorgang#formId and vorgang#formEngineName.
-	 */
-	private List<VorgangProperty> processor = Collections.emptyList();
-	
-	/**
-	 * Name of used processor.
-	 */
-	private List<String> processorNames = Collections.emptyList();
-	
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java
deleted file mode 100644
index 700ace1b4ca05848b025503ea7046bd6899f4fd1..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties(prefix = "ozgcloud.vorgang")
-public class VorgangProperties {
-
-	/**
-	 * List of Vorgänge for which notices can be issued.
-	 */
-	private List<VorgangProperty> bescheid = Collections.emptyList();
-	
-	@Builder
-	@Setter
-	@Getter
-	public static class VorgangProperty {
-
-		/**
-		 * ID of the received formular
-		 */
-		private String formId;
-		/**
-		 * Name of the form engine providing the used formular
-		 */
-		private String formEngineName;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangRemoteService.java
deleted file mode 100644
index c693187e0ad13beaab53a06145eaf65d94f4b23e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangRemoteService.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.common.GrpcQueryOperator;
-import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest.GrpcOrderBy;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangRequest;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcQuery;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
-import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-class VorgangRemoteService {
-
-	static final String VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH = "ClientAttribute.OzgCloud_NachrichtenManager.hasNewPostfachNachricht";
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private VorgangServiceBlockingStub vorgangServiceStub;
-	@Autowired
-	private VorgangHeaderMapper vorgangHeaderMapper;
-	@Autowired
-	private VorgangWithEingangMapper vorgangWithEingangMapper;
-
-	public VorgaengeHeaderResponse findVorgaengeHeader(FindVorgaengeHeaderRequestCriteria requestCriteria, FilterCriteria filterCriteria) {
-		var request = buildFindVorgangRequest(requestCriteria, filterCriteria);
-
-		var response = vorgangServiceStub.findVorgang(request);
-
-		return buildVorgaengeHeaderResponse(response);
-	}
-
-	GrpcFindVorgangRequest buildFindVorgangRequest(FindVorgaengeHeaderRequestCriteria requestCriteria, FilterCriteria filterCriteria) {
-		var requestBuilder = createFindVorgangRequestBuilder(requestCriteria, filterCriteria);
-
-		requestCriteria.getSearchBy().ifPresent(requestBuilder::setSearchBy);
-
-		return requestBuilder.build();
-	}
-
-	private GrpcFindVorgangRequest.Builder createFindVorgangRequestBuilder(FindVorgaengeHeaderRequestCriteria requestCriteria,
-			FilterCriteria filterCriteria) {
-		return GrpcFindVorgangRequest.newBuilder()
-				.setOrderBy(GrpcOrderBy.valueOf(requestCriteria.getOrderBy().name()))
-				.setLimit(requestCriteria.getLimit())
-				.setOffset(requestCriteria.getPage() * requestCriteria.getLimit())
-				.setQuery(createQuery(filterCriteria))
-				.setFilterBy(createFilterBy(filterCriteria));
-	}
-
-	GrpcQuery createQuery(FilterCriteria filterCriteria) {
-		var queryBuilder = GrpcQuery.newBuilder();
-		if (filterCriteria.isHasUngeleseneNachrichten()) {
-			addUngeleseneNachrichtenExpression(queryBuilder);
-		}
-		return queryBuilder.build();
-	}
-
-	private void addUngeleseneNachrichtenExpression(GrpcQuery.Builder queryBuilder) {
-		queryBuilder.addExpressions(GrpcVorgangQueryExpression.newBuilder()
-				.setPath(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)
-				.setOperator(GrpcQueryOperator.EQUAL)
-				.setOperandBoolValue(true)
-				.build());
-	}
-
-	VorgaengeHeaderResponse buildVorgaengeHeaderResponse(GrpcFindVorgangResponse response) {
-		return VorgaengeHeaderResponse.builder().total(response.getTotal()).vorgaengeHeader(getVorgaengeHeaderFromResponse(response)).build();
-	}
-
-	private List<VorgangHeader> getVorgaengeHeaderFromResponse(GrpcFindVorgangResponse response) {
-		return response.getVorgangList().stream().map(vorgangHeaderMapper::toVorgangHeader).toList();
-	}
-
-	public VorgangWithEingang findVorgangWithEingang(String vorgangId, FilterCriteria filterCriteria) {
-		var request = buildFindVorgangWithEingangRequest(vorgangId, filterCriteria);
-
-		var response = vorgangServiceStub.findVorgangWithEingang(request);
-
-		return buildVorgangWithEingangResponse(response);
-	}
-
-	GrpcFindVorgangWithEingangRequest buildFindVorgangWithEingangRequest(String vorgangId, FilterCriteria filterCriteria) {
-		return GrpcFindVorgangWithEingangRequest.newBuilder().setId(vorgangId).setFilterBy(createFilterBy(filterCriteria)).build();
-	}
-
-	GrpcFilterBy createFilterBy(FilterCriteria filterCriteria) {
-		var filterCriteriaBuilder = GrpcFilterBy.newBuilder()
-				.setFilterByAssignedTo(filterCriteria.isFilterByAssignedTo())
-				.setFilterByOrganisationseinheitenId(filterCriteria.isFilterByOrganisationseinheitenId())
-				.addAllOrganisationseinheitId(filterCriteria.getOrganisationsEinheitenId())
-				.setHasNextWiedervorlageFrist(filterCriteria.isHasNextWiedervorlageFrist());
-
-		filterCriteria.getAssignedTo().ifPresent(assignedTo -> filterCriteriaBuilder.setAssignedTo(assignedTo.toString()));
-		filterCriteria.getStatus().ifPresent(status -> filterCriteriaBuilder.addStatus(status.toString()));
-
-		return filterCriteriaBuilder.build();
-	}
-
-	private VorgangWithEingang buildVorgangWithEingangResponse(GrpcFindVorgangWithEingangResponse response) {
-		return vorgangWithEingangMapper.toVorgangWithEingang(response.getVorgangWithEingang());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangService.java
deleted file mode 100644
index cb9bb12fbd8121227543a03eb95a7b38b4b2e0e0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangService.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Collection;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-@Service
-class VorgangService {
-
-	@Autowired
-	private VorgangRemoteService remoteService;
-	@Autowired
-	private CurrentUserService userService;
-
-	public VorgaengeHeaderResponse findVorgaengeHeader(FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		requestCriteria = setOrderBy(requestCriteria);
-
-		return remoteService.findVorgaengeHeader(requestCriteria, buildFilterCriteria(requestCriteria.getFilterCriteria()));
-	}
-
-	FindVorgaengeHeaderRequestCriteria setOrderBy(FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		if (userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
-			return requestCriteria.toBuilder().orderBy(OrderBy.EA_PRIORITY).build();
-		}
-		if (userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			return requestCriteria.toBuilder().orderBy(OrderBy.PRIORITY).build();
-		}
-		return setOrderByForVerwaltungUser(requestCriteria);
-	}
-
-	private FindVorgaengeHeaderRequestCriteria setOrderByForVerwaltungUser(FindVorgaengeHeaderRequestCriteria requestCriteria) {
-		if (requestCriteria.getFilterCriteria().getStatus().isPresent()) {
-			return requestCriteria.toBuilder().orderBy(OrderBy.CREATED_AT_DESC).build();
-		}
-		if (requestCriteria.getFilterCriteria().isHasNextWiedervorlageFrist()) {
-			return requestCriteria.toBuilder().orderBy(OrderBy.NEXT_WIEDERVORLAGE_FRIST).build();
-		}
-		return requestCriteria.toBuilder().orderBy(OrderBy.PRIORITY).build();
-	}
-
-	public VorgangWithEingang findVorgangWithEingang(String vorgangId) {
-		return remoteService.findVorgangWithEingang(vorgangId, buildFilterCriteria(FilterCriteria.builder().build()));
-	}
-
-	FilterCriteria buildFilterCriteria(FilterCriteria filterCriteria) {
-		if (userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			return buildFilterByForPoststelle(filterCriteria);
-		}
-		if (userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
-			return buildFilterByForEa(filterCriteria);
-		}
-		return buildFilterByForOtherRoles(filterCriteria);
-	}
-
-	private FilterCriteria buildFilterByForPoststelle(FilterCriteria filterCriteria) {
-		return filterCriteria.toBuilder().filterByOrganisationseinheitenId(false).status(Optional.of(VorgangStatus.NEU)).build();
-	}
-
-	private FilterCriteria buildFilterByForEa(FilterCriteria filterCriteria) {
-		return filterCriteria.toBuilder().filterByOrganisationseinheitenId(false).build();
-	}
-
-	private FilterCriteria buildFilterByForOtherRoles(FilterCriteria filterCriteria) {
-		return filterCriteria.toBuilder().filterByOrganisationseinheitenId(true).organisationsEinheitenId(getOrganisationseinheitenIdsFromUser())
-				.build();
-	}
-
-	private Collection<String> getOrganisationseinheitenIdsFromUser() {
-		return userService.getUser().getOrganisationseinheitIds();
-	}
-
-	public boolean isVorgangEditable(Vorgang vorgang) {
-		var vorgangWithEingang = vorgang instanceof VorgangWithEingang ?
-				(VorgangWithEingang) vorgang :
-				findVorgangWithEingang(vorgang.getId());
-		return isVorgangWithEingangEditable(vorgangWithEingang);
-	}
-
-	boolean isVorgangWithEingangEditable(VorgangWithEingang vorgang) {
-		return vorgang.getStatus() != VorgangStatus.ZU_LOESCHEN && (vorgang.getHeader() == null || !vorgang.getHeader().isLocked());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java
deleted file mode 100644
index 45496925eaebd1b28aacb558acb55ba824855013..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangURIResolver.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Optional;
-import java.util.regex.Pattern;
-
-import org.springframework.hateoas.Link;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.resource.OzgcloudResourceURIResolver;
-
-@Component
-class VorgangURIResolver implements OzgcloudResourceURIResolver {
-
-	static final String REL_NAME = "vorgang";
-
-	private final Pattern pattern = Pattern.compile(".+/vorgangs/([^/]+)");
-
-	@Override
-	public Optional<Link> resolve(String uri) {
-		var matcher = pattern.matcher(uri);
-		if (!matcher.matches()) {
-			return Optional.empty();
-		}
-		var vorgangId = matcher.group(1);
-		return Optional.of(linkTo(VorgangController.class).slash(vorgangId).withRel(REL_NAME));
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingang.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingang.java
deleted file mode 100644
index 7282f013f7d686ce4ea854079365ba808760371f..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingang.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import jakarta.annotation.Nullable;
-import java.time.ZonedDateTime;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.user.UserId;
-import java.util.Optional;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@Builder
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-public class VorgangWithEingang implements Vorgang {
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private long version;
-
-	@LinkedUserProfileResource
-	private UserId assignedTo;
-
-	private String name;
-	private VorgangStatus status;
-	private ZonedDateTime createdAt;
-	private String aktenzeichen;
-	private String nummer;
-	private boolean hasNewPostfachNachricht;
-
-	private VorgangHead header;
-
-	private Eingang eingang;
-
-	@JsonIgnore
-	@Nullable
-	public String getOrganisationseinheitenID() {
-		return Optional.ofNullable(getEingang())
-				.map(Eingang::getZustaendigeStelle)
-				.map(ZustaendigeStelle::getOrganisationseinheitenId)
-				.orElse(null);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapper.java
deleted file mode 100644
index ba60698fca8bc039d34a7202a1b6b0ba3038751d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapper.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-
-import de.ozgcloud.alfa.common.BaseTypesMapper;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeUtils;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangHead;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangWithEingang;
-
-@Mapper(uses = { EingangMapper.class, UserIdMapper.class, BaseTypesMapper.class, ServiceKontoMapper.class })
-interface VorgangWithEingangMapper {
-
-	@Mapping(target = "hasNewPostfachNachricht", source = "clientAttributesList")
-	VorgangWithEingang toVorgangWithEingang(GrpcVorgangWithEingang vorgangMitEingang);
-
-	default boolean mapHasNewPostfachNachricht(List<GrpcClientAttribute> clientAttributes) {
-		return ClientAttributeUtils
-				.findGrpcValue(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, clientAttributes)
-				.map(GrpcClientAttributeValue::getBoolValue)
-				.orElse(false);
-	}
-
-	@Mapping(target = "locked", expression = "java(vorgangHead.hasLock())")
-	VorgangHead toVorgangHead(GrpcVorgangHead vorgangHead);
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java
deleted file mode 100644
index 38e6b3c7e13f35faeab1684111fc787a69361da3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessor.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.attachment.AttachmentByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.historie.HistorieController;
-import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.representation.RepresentationByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class VorgangWithEingangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	static final LinkRelation REL_KOMMENTARE = LinkRelation.of("kommentare");
-	static final LinkRelation REL_ATTACHMENTS = LinkRelation.of("attachments");
-	static final LinkRelation REL_DOWNLOAD_ATTACHMENTS = LinkRelation.of("downloadAttachments");
-	static final LinkRelation REL_REPRESENTATIONS = LinkRelation.of("representations");
-	static final LinkRelation REL_POSTFACH_MAILS = LinkRelation.of("postfachMails");
-	static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding");
-	static final LinkRelation REL_HISTORIE = LinkRelation.of("historie");
-	static final LinkRelation REL_PROCESS_VORGANG = LinkRelation.of("processVorgang");
-
-	static final String REL_SEARCH_USER = "search-user-profiles";
-	static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted";
-	static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId";
-
-	private final PostfachMailController postfachMailController;
-	private final CurrentUserService userService;
-	private final UserManagerUrlProvider userManagerUrlProvider;
-
-	private final VorgangProcessorProperties vorgangProcessorProperties;
-
-	private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang()
-			.getNumberOfAttachments() > 0;
-
-	private static final Predicate<VorgangWithEingang> HAS_REPRESENTATIONS = vorgangWithEingang -> vorgangWithEingang.getEingang()
-			.getNumberOfRepresentations() > 0;
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-
-		if (Objects.isNull(vorgang)) {
-			return model;
-		}
-
-		return ModelBuilder.fromModel(model)
-				.addLink(linkTo(KommentarByVorgangController.class).slash(vorgang.getId()).slash("kommentars").withRel(REL_KOMMENTARE))
-				.ifMatch(HAS_ATTACHMENTS)
-				.addLinks(linkTo(methodOn(AttachmentByVorgangController.class).getAllByVorgang(vorgang.getId()))
-						.withRel(REL_ATTACHMENTS),
-						linkTo(methodOn(AttachmentByVorgangController.class).download(vorgang.getId()))
-								.withRel(REL_DOWNLOAD_ATTACHMENTS))
-				.ifMatch(HAS_REPRESENTATIONS)
-				.addLink(linkTo(methodOn(RepresentationByVorgangController.class).getAll(vorgang.getId()))
-						.withRel(REL_REPRESENTATIONS))
-				.ifMatch(this::isPostfachConfigured)
-				.addLink(linkTo(methodOn(PostfachMailController.class).getAll(vorgang.getId())).withRel(REL_POSTFACH_MAILS))
-				.ifMatch(this::isEinheitlicherAnsprechpartner)
-				.addLink(linkTo(methodOn(ForwardingController.class).findByVorgangId(vorgang.getId())).withRel(REL_VORGANG_FORWARDING))
-				.addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE))
-				.ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang))
-				.addLink(this::buildSearchUserProfilesLink)
-				.ifMatch(this::isProcessable)
-				.addLink(
-						() -> linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
-								null)).withRel(REL_PROCESS_VORGANG))
-				.buildModel();
-	}
-
-	private boolean isPostfachConfigured(VorgangWithEingang vorgang) {
-		return postfachMailController.isPostfachConfigured();
-	}
-
-	private boolean isEinheitlicherAnsprechpartner(VorgangWithEingang vorgang) {
-		return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-	}
-
-	private Link buildSearchUserProfilesLink(VorgangWithEingang vorgang) {
-		return Link.of(userManagerUrlProvider.getSearchUserProfilesTemplate()
-				.queryParam(USER_PROFILE_SEARCH_DELETED_PARAM, false)
-				.queryParam(USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM, getOrganisationsEinheitId(vorgang))
-				.build(false).toUriString(), REL_SEARCH_USER);
-	}
-
-	private boolean hasOrganisationsEinheitId(VorgangWithEingang vorgang) {
-		return Optional.of(vorgang.getEingang()).map(Eingang::getZustaendigeStelle).map(ZustaendigeStelle::getOrganisationseinheitenId).isPresent();
-	}
-
-	private String getOrganisationsEinheitId(VorgangWithEingang vorgang) {
-		return vorgang.getEingang().getZustaendigeStelle().getOrganisationseinheitenId();
-	}
-
-	private boolean isProcessable(VorgangWithEingang vorgang) {
-		return isAnyFormIdAndFormEngineNameMatching(vorgang.getEingang().getHeader(), vorgangProcessorProperties.getProcessor());
-	}
-
-	private boolean isAnyFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, List<VorgangProperty> properties) {
-		return properties.stream().anyMatch(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop));
-	}
-
-	private boolean isFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, VorgangProperty property) {
-		return property.getFormId().equals(eingangHeader.getFormId()) && property.getFormEngineName().equals(eingangHeader.getFormEngineName());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangResponse.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangResponse.java
deleted file mode 100644
index 927ebda877b6b11ecce90754381e799a1dfe4e61..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangResponse.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class VorgangWithEingangResponse {
-	private VorgangWithEingang vorgangWithEingang;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelle.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelle.java
deleted file mode 100644
index 6b243016cc3e058df28b979e9779e4422d51a598..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelle.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class ZustaendigeStelle {
-
-	private String organisationseinheitenId;
-	private String email;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapper.java
deleted file mode 100644
index f0127e386af7ff4865aa8bac62b27a55630f82f1..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle;
-
-@Mapper
-interface ZustaendigeStelleMapper {
-
-	ZustaendigeStelle mapToZustaendigeStelle(GrpcZustaendigeStelle grpcZustaendigeStelle);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessor.java
deleted file mode 100644
index 75b537da45bf69aaafece14961ba5db974837cfd..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessor.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.command;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.RequiredArgsConstructor;
-
-@Component
-@RequiredArgsConstructor
-class VorgangCommandProcessor implements RepresentationModelProcessor<EntityModel<? extends Vorgang>> {
-
-	static final LinkRelation REL_VORGANG_ANNEHMEN = LinkRelation.of("annehmen");
-	static final LinkRelation REL_VORGANG_VERWERFEN = LinkRelation.of("verwerfen");
-	static final LinkRelation REL_VORGANG_ZURUECKHOLEN = LinkRelation.of("zurueckholen");
-	static final LinkRelation REL_VORGANG_BEARBEITEN = LinkRelation.of("bearbeiten");
-	static final LinkRelation REL_VORGANG_BESCHEIDEN = LinkRelation.of("bescheiden");
-	static final LinkRelation REL_VORGANG_ZURUECKSTELLEN = LinkRelation.of("zurueckstellen");
-	static final LinkRelation REL_VORGANG_ABSCHLIESSEN = LinkRelation.of("abschliessen");
-	static final LinkRelation REL_VORGANG_WIEDEREROEFFNEN = LinkRelation.of("wiedereroeffnen");
-
-	private final CurrentUserService userService;
-	private final VorgangController vorgangController;
-
-	@Override
-	public EntityModel<? extends Vorgang> process(EntityModel<? extends Vorgang> model) {
-		var vorgang = model.getContent();
-
-		if (Objects.isNull(vorgang) || !vorgangController.isEditable(vorgang)) {
-			return model;
-		}
-
-		addLinkIfTransactionAllowed(VorgangStatus.ANGENOMMEN, getRelationForAngenommenByStatus(vorgang), vorgang, model);
-		addLinkIfTransactionAllowed(VorgangStatus.VERWORFEN, REL_VORGANG_VERWERFEN, vorgang, model);
-		addLinkIfTransactionAllowed(VorgangStatus.NEU, REL_VORGANG_ZURUECKHOLEN, vorgang, model);
-		addLinkIfTransactionAllowed(VorgangStatus.IN_BEARBEITUNG, getRelationForInBearbeitungByStatus(vorgang), vorgang, model);
-		addLinkIfTransactionAllowed(VorgangStatus.BESCHIEDEN, REL_VORGANG_BESCHEIDEN, vorgang, model);
-		addLinkIfTransactionAllowed(VorgangStatus.ABGESCHLOSSEN, REL_VORGANG_ABSCHLIESSEN, vorgang, model);
-
-		return model;
-	}
-
-	private LinkRelation getRelationForAngenommenByStatus(Vorgang vorgang) {
-		if (vorgang.getStatus() == VorgangStatus.NEU) {
-			return REL_VORGANG_ANNEHMEN;
-		} else {
-			return REL_VORGANG_ZURUECKSTELLEN;
-		}
-	}
-
-	private LinkRelation getRelationForInBearbeitungByStatus(Vorgang vorgang) {
-		if (vorgang.getStatus() == VorgangStatus.ANGENOMMEN) {
-			return REL_VORGANG_BEARBEITEN;
-		} else {
-			return REL_VORGANG_WIEDEREROEFFNEN;
-		}
-	}
-
-	private void addLinkIfTransactionAllowed(VorgangStatus newStatus, LinkRelation relation, Vorgang vorgang, EntityModel<? extends Vorgang> model) {
-		if (isTransactonAllowed(vorgang, newStatus)) {
-			addCreateCommandLink(relation, vorgang, model);
-		}
-	}
-
-	private void addCreateCommandLink(LinkRelation relation, Vorgang vorgang, EntityModel<? extends Vorgang> model) {
-		model.add(linkTo(methodOn(CommandByRelationController.class)
-				.createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(), null)).withRel(relation));
-	}
-
-	private boolean isTransactonAllowed(Vorgang vorgang, VorgangStatus newStatus) {
-		return vorgang.getStatus().isTransactionAllowed(getUserRole(), newStatus);
-	}
-
-	String getUserRole() {
-		String role;
-		if (userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
-			role = UserRole.EINHEITLICHER_ANSPRECHPARTNER;
-		} else if (userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) {
-			role = UserRole.VERWALTUNG_POSTSTELLE;
-		} else {
-			role = UserRole.VERWALTUNG_USER;
-		}
-
-		return role;
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java
deleted file mode 100644
index 1a4862869d9de93184e643671e9d1e4c327d8d4a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessor.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.command;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Objects;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelProcessor;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-
-@Component
-public class VorgangWithEingangCommandProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
-
-	static final LinkRelation REL_VORGANG_FORWARD = LinkRelation.of("forward");
-	static final LinkRelation REL_PENDING_COMMANDS = LinkRelation.of("pending-commands");
-
-	@Autowired
-	private CurrentUserService userService;
-	@Autowired
-	private ForwardingController forwardingController;
-	@Autowired
-	private CommandController commandController;
-
-	@Override
-	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
-		var vorgang = model.getContent();
-		if (Objects.isNull(vorgang)) {
-			return model;
-		}
-		return ModelBuilder.fromModel(model)
-				.ifMatch(this::isForwardingAllowed)
-				.addLink(linkTo(
-						methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(),
-								null)).withRel(REL_VORGANG_FORWARD))
-				.ifMatch(this::existsPendingCommands)
-				.addLink(linkTo(methodOn(CommandController.class).getPendingCommands(true, vorgang.getId())).withRel(REL_PENDING_COMMANDS))
-				.buildModel();
-	}
-
-	boolean isForwardingAllowed(VorgangWithEingang vorgang) {
-		return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)
-				&& (vorgang.getStatus() == VorgangStatus.NEU
-				|| (vorgang.getStatus() == VorgangStatus.IN_BEARBEITUNG
-				&& hasForwardingFailed(vorgang)));
-	}
-
-	private boolean hasForwardingFailed(VorgangWithEingang vorgang) {
-		return !forwardingController.findFailedForwardings(vorgang.getId()).isEmpty();
-	}
-
-	private boolean existsPendingCommands(VorgangWithEingang vorgang) {
-		return commandController.existsPendingCommands(vorgang.getId());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java
deleted file mode 100644
index 8bce269cf11e84e986cba4edbd1333eb066a186a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/Forwarding.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.time.ZonedDateTime;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class Forwarding {
-
-	public enum Status {
-		NEW, SENT, SUCCESSFULL, SEND_ERROR, FAILED
-	}
-
-	@JsonIgnore
-	private String id;
-	@JsonIgnore
-	private String vorgangId;
-	@JsonIgnore
-	private Status status;
-
-	private String zustaendigeStelle;
-
-	private ZonedDateTime createdAt;
-	private String createdBy;
-	private String createdByName;
-
-	private ZonedDateTime sentAt;
-
-	private String errorMessage;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java
deleted file mode 100644
index 62447cc7c136cee398917a79c4cf04d2af0081d2..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingController.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.util.List;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
-
-@RestController
-@RequestMapping(ForwardingController.LIST_PATH)
-public class ForwardingController {
-
-	static final String LIST_PATH = "/api/forwardings"; // NOSONAR
-
-	static final String PARAM_VORGANG_ID = "vorgangId";
-
-	static final Predicate<Forwarding> IS_FAILED_FORWARDING = forwarding -> forwarding.getStatus() == Status.FAILED
-			|| forwarding.getStatus() == Status.SEND_ERROR;
-
-	@Autowired
-	private ForwardingService service;
-	@Autowired
-	private ForwardingModelAssembler modelAssembler;
-
-	@GetMapping(params = { PARAM_VORGANG_ID })
-	public CollectionModel<EntityModel<Forwarding>> findByVorgangId(@RequestParam String vorgangId) {
-		return modelAssembler.toCollectionModel(findByVorgang(vorgangId));
-	}
-
-	public List<Forwarding> findFailedForwardings(String vorgangId) {
-		return findByVorgang(vorgangId).filter(IS_FAILED_FORWARDING).toList();
-	}
-
-	public Stream<Forwarding> findByVorgang(String vorgangId) {
-		return service.findByVorgang(vorgangId);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java
deleted file mode 100644
index 7eb50c08577e8293e2306e6ee986406f3787ed17..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.util.Collections;
-import java.util.Objects;
-import java.util.Set;
-
-import jakarta.annotation.PostConstruct;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Service
-class ForwardingLandesnetzInfoService {
-
-	@Autowired(required = false)
-	private LandesnetzInfoReadService readService;
-
-	private Set<String> landesnetzInfo = Collections.emptySet();
-
-	@PostConstruct
-	private void initLandesnetzList() {
-		if (Objects.isNull(readService)) {
-			LOG.info("Landesnetz-Info not configured.");
-			return;
-		}
-
-		readService.readLandesnetzInfo().thenAccept(this::assingInfos);
-	}
-
-	private void assingInfos(Set<String> lnInfos) {
-		this.landesnetzInfo = lnInfos;
-		LOG.info("{} Landesnetz-Infos entries read.", landesnetzInfo.size());
-	}
-
-	public boolean isEmailInLandesnetz(String email) {
-		return isLandesnetzIncludingDomain(getDomain(email));
-	}
-
-	private String getDomain(String email) {
-		return email.substring(email.lastIndexOf('@') + 1);
-	}
-
-	private boolean isLandesnetzIncludingDomain(String emailDomain) {
-		return landesnetzInfo.contains(emailDomain) ||
-				landesnetzInfo.stream().anyMatch(lnInfo -> isDomainMatching(lnInfo, emailDomain));
-	}
-
-	private boolean isDomainMatching(String netzDomain, String emailDomain) {
-		return emailDomain.endsWith(netzDomain);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java
deleted file mode 100644
index c8e7a4af92ff6d7177040e3c7050d9213781c50e..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingMapper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import org.mapstruct.Mapper;
-
-import de.ozgcloud.alfa.common.TimeMapper;
-import de.ozgcloud.vorgang.forwarding.GrpcForwarding;
-
-@Mapper(uses = TimeMapper.class)
-public interface ForwardingMapper {
-
-	Forwarding fromGrpc(GrpcForwarding forwarding);
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java
deleted file mode 100644
index 8a4d1bb8c7c0f7c2133acbd6f67ffe7a13a84624..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssembler.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
-
-@Component
-class ForwardingModelAssembler implements RepresentationModelAssembler<Forwarding, EntityModel<Forwarding>> {
-
-	static final LinkRelation REL_MARK_AS_SUCCESS = LinkRelation.of("mark-as-success");
-	static final LinkRelation REL_MARK_AS_FAIL = LinkRelation.of("mark-as-fail");
-
-	static final LinkRelation REL_SUCCESSFULL = LinkRelation.of("successfull");
-	static final LinkRelation REL_FAILED = LinkRelation.of("failed");
-
-	static final LinkRelation REL_ERROR = LinkRelation.of("error");
-
-	static final Predicate<Forwarding> IS_SENT = forwarding -> forwarding.getStatus() == Status.SENT;
-	static final Predicate<Forwarding> IS_SUCCESSFULL = forwarding -> forwarding.getStatus() == Status.SUCCESSFULL;
-	static final Predicate<Forwarding> IS_SENT_OR_SUCCESSFULL = forwarding -> forwarding.getStatus() == Status.SENT
-			|| forwarding.getStatus() == Status.SUCCESSFULL;
-	static final Predicate<Forwarding> IS_FAILED = forwarding -> forwarding.getStatus() == Status.FAILED;
-	static final Predicate<Forwarding> IS_SEND_ERROR = forwarding -> forwarding.getStatus() == Status.SEND_ERROR;
-
-	@Override
-	public EntityModel<Forwarding> toModel(Forwarding entity) {
-		var selfLink = linkTo(ForwardingController.class).slash(entity.getId());
-
-		return ModelBuilder.fromEntity(entity)
-				.addLink(linkTo(ForwardingController.class).slash(entity.getId()).withSelfRel())
-				.ifMatch(IS_SENT)
-				.addLinks(buildMarkAsSuccessLink(entity))
-				.ifMatch(IS_SENT_OR_SUCCESSFULL)
-				.addLinks(buildMarkAsFailLink(entity))
-				.ifMatch(IS_FAILED)
-				.addLink(selfLink.withRel(REL_FAILED))
-				.ifMatch(IS_SUCCESSFULL)
-				.addLink(selfLink.withRel(REL_SUCCESSFULL))
-				.ifMatch(IS_SEND_ERROR)
-				.addLink(selfLink.withRel(REL_ERROR))
-				.buildModel();
-	}
-
-	public CollectionModel<EntityModel<Forwarding>> toCollectionModel(Stream<Forwarding> entities) {
-		return CollectionModel.of(entities.map(this::toModel).toList(), linkTo(ForwardingController.class).withSelfRel());
-	}
-
-	public Link buildMarkAsSuccessLink(Forwarding forwarding) {
-		return buildLinkWithLinkRel(forwarding, REL_MARK_AS_SUCCESS);
-	}
-
-	public Link buildMarkAsFailLink(Forwarding forwarding) {
-		return buildLinkWithLinkRel(forwarding, REL_MARK_AS_FAIL);
-	}
-
-	private Link buildLinkWithLinkRel(Forwarding forwarding, LinkRelation linkRel) {
-		return linkTo(methodOn(CommandByRelationController.class).createCommand(forwarding.getVorgangId(), forwarding.getId(), -1, null))
-				.withRel(linkRel);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java
deleted file mode 100644
index 11fec98c49d8e183569257701ddee46a7e9d432d..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordSizeConstraint.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import jakarta.validation.Constraint;
-import jakarta.validation.Payload;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-
-@Retention(RUNTIME)
-@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE })
-@Constraint(validatedBy = { ForwardingPasswordValidator.class })
-@Documented
-public @interface ForwardingPasswordSizeConstraint {
-	String message() default ValidationMessageCodes.FIELD_SIZE;
-
-	Class<?>[] groups() default {};
-
-	Class<? extends Payload>[] payload() default {};
-
-	int max() default 40;
-
-	int min() default 8;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java
deleted file mode 100644
index 1c6a82af0f9256a1373ae927cfa0ada3a21f163b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import jakarta.validation.ConstraintValidator;
-import jakarta.validation.ConstraintValidatorContext;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-
-class ForwardingPasswordValidator implements ConstraintValidator<ForwardingPasswordSizeConstraint, RedirectRequest> {
-
-	@Autowired
-	private ForwardingLandesnetzInfoService landesnetzInfoService;
-
-	@Override
-	public boolean isValid(RedirectRequest request, ConstraintValidatorContext context) {
-		if (StringUtils.isNotBlank(request.getEmail()) && isNotInLandesnetz(request.getEmail())) {
-			prepareConstraint(context);
-
-			return isValidPassword(request);
-		}
-		return true;
-	}
-
-	private boolean isNotInLandesnetz(String email) {
-		return !landesnetzInfoService.isEmailInLandesnetz(email);
-	}
-
-	boolean isValidPassword(RedirectRequest request) {
-		var password = request.getPassword();
-		var constraint = request.getClass().getAnnotation(ForwardingPasswordSizeConstraint.class);
-
-		return ArrayUtils.isNotEmpty(password) && password.length >= constraint.min() && password.length <= constraint.max();
-	}
-
-	void prepareConstraint(ConstraintValidatorContext context) {
-		context.disableDefaultConstraintViolation();
-		context.buildConstraintViolationWithTemplate(ValidationMessageCodes.FIELD_SIZE)
-				.addPropertyNode("password").addConstraintViolation();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java
deleted file mode 100644
index 85ca4d49cb0aec55df057dfc245bfb07364b4e0c..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.vorgang.forwarding.ForwardingServiceGrpc.ForwardingServiceBlockingStub;
-import de.ozgcloud.vorgang.forwarding.GrpcFindForwardingsRequest;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-public class ForwardingRemoteService {
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private ForwardingServiceBlockingStub serviceStub;
-
-	@Autowired
-	private ForwardingMapper mapper;
-
-	@Autowired
-	private ContextService contextService;
-
-	public Stream<Forwarding> findForwardings(String vorgangId) {
-		var response = serviceStub.findForwardings(buildFindForwardingsRequest(vorgangId));
-
-		return response.getForwardingsList().stream().map(mapper::fromGrpc);
-	}
-
-	private GrpcFindForwardingsRequest buildFindForwardingsRequest(String vorgangId) {
-		return GrpcFindForwardingsRequest.newBuilder()
-				.setContext(contextService.createCallContext())
-				.setVorgangId(vorgangId)
-				.build();
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java
deleted file mode 100644
index abd68ad81cff15f504bd1853839bafd05223d148..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-class ForwardingService {
-
-	@Autowired
-	private ForwardingRemoteService remoteService;
-
-	public Stream<Forwarding> findByVorgang(String vorgangId) {
-		return remoteService.findForwardings(vorgangId);
-	}
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java
deleted file mode 100644
index 010b4798226e61d67d2f7579e289e8cd09b41904..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoProperties.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-@Configuration
-@ConfigurationProperties(prefix = LandesnetzInfoProperties.LNINFO_CONFIG_PREFIX)
-public class LandesnetzInfoProperties {
-
-	static final String LNINFO_CONFIG_PREFIX = "ozgcloud.forwarding.lninfo";
-
-	/**
-	 * Url of LandesnetzInfo html/file location.
-	 */
-	private Resource url;
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java
deleted file mode 100644
index 24e63abf3ec8079d2e4bbad6869621409c949d43..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadService.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Optional;
-import java.util.Scanner;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.regex.Pattern;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.extern.log4j.Log4j2;
-
-@Log4j2
-@Service
-@ConditionalOnProperty(prefix = LandesnetzInfoProperties.LNINFO_CONFIG_PREFIX, name = { "url" })
-class LandesnetzInfoReadService {
-
-	static final Pattern SH_SECTION_START = Pattern.compile(".*Beginn Schleswig-Holstein.*", Pattern.CASE_INSENSITIVE);
-	static final Pattern SH_SECTION_END = Pattern.compile(".*Ende Schleswig-Holstein.*", Pattern.CASE_INSENSITIVE);
-
-	@Autowired
-	private LandesnetzInfoProperties properties;
-
-	@Async
-	public CompletableFuture<Set<String>> readLandesnetzInfo() {
-		try {
-			return getInputStream()
-					.map(this::readFile)
-					.map(CompletableFuture::completedFuture)
-					.orElseGet(() -> {
-						LOG.warn("No Landesnetz-Information found");
-						return CompletableFuture.completedFuture(Collections.emptySet());
-					});
-		} catch (RuntimeException e) {
-			LOG.error("Error on reading Landesnetz-Infos.", e);
-		}
-		return CompletableFuture.completedFuture(Collections.emptySet());
-	}
-
-	private Optional<InputStream> getInputStream() {
-		try {
-			return Optional.ofNullable(properties.getUrl().getInputStream());
-		} catch (IOException e) {
-			throw new TechnicalException("Error on reading Landesnetz-Infos", e);
-		}
-	}
-
-	Set<String> readFile(InputStream fileInputStream) {
-		try(var fileScanner = new Scanner(fileInputStream, StandardCharsets.UTF_8)){
-			while (fileScanner.hasNextLine()) {
-				var line = fileScanner.nextLine();
-				if (isStartOfSection(line)) {
-					return readSection(fileScanner);
-				}
-			}
-		}
-		return Collections.emptySet();
-	}
-
-	boolean isStartOfSection(String line) {
-		return SH_SECTION_START.matcher(line).matches();
-	}
-
-	Set<String> readSection(Scanner sectionScanner) {
-		var result = new HashSet<String>();
-		while (sectionScanner.hasNextLine()) {
-			var line = sectionScanner.nextLine();
-			if (isEndOfSection(line)) {
-				return Collections.unmodifiableSet(result);
-			}
-			if (isCommentedLine(line)) {
-				continue;
-			}
-			getFirstColumn(line).ifPresent(result::add);
-		}
-
-		return Collections.emptySet();
-	}
-
-	boolean isEndOfSection(String line) {
-		return SH_SECTION_END.matcher(line).matches();
-	}
-
-	boolean isCommentedLine(String line) {
-		return line.startsWith("#");
-	}
-
-	Optional<String> getFirstColumn(String line) {
-		return Optional.of(line.split("\\s+")[0]).filter(StringUtils::isNoneBlank);
-	}
-
-}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java
deleted file mode 100644
index e07009c3843824afbcdeeae985e0b4837becc700..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/RedirectRequest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.NotEmpty;
-
-import org.springframework.validation.annotation.Validated;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonProperty.Access;
-
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
-@Builder
-@Getter
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PUBLIC)
-@ToString
-@ForwardingPasswordSizeConstraint
-@Validated
-public class RedirectRequest {
-
-	@NotEmpty(message = FIELD_IS_EMPTY)
-	@Email(message = FIELD_INVALID)
-	private String email;
-
-	@JsonProperty(access = Access.WRITE_ONLY)
-	private char[] password;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/Wiedervorlage.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/Wiedervorlage.java
deleted file mode 100644
index 17a5b768078490208d32005e7ec4236eaea11fe8..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/Wiedervorlage.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static de.ozgcloud.alfa.common.ValidationMessageCodes.*;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-import java.util.List;
-
-import jakarta.validation.constraints.FutureOrPresent;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonProperty.Access;
-
-import de.ozgcloud.alfa.common.LinkedResource;
-import de.ozgcloud.alfa.common.LinkedUserProfileResource;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandBody;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Singular;
-import lombok.ToString;
-
-@Getter
-@Builder(toBuilder = true)
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
-@ToString
-public class Wiedervorlage implements CommandBody {
-
-	public static final String DONE_FIELD = "done";
-
-	@JsonIgnore
-	private String id;
-
-	@JsonIgnore
-	private String vorgangId;
-	@JsonIgnore
-	private long version;
-
-	@JsonProperty(access = Access.READ_ONLY)
-	private boolean done;
-
-	@JsonIgnore
-	@LinkedUserProfileResource
-	private String createdBy;
-	@JsonProperty(access = Access.READ_ONLY)
-	private ZonedDateTime createdAt;
-
-	@NotNull(message = FIELD_IS_EMPTY)
-	@Size(min = 3, max = 40, message = FIELD_SIZE)
-	private String betreff;
-	private String beschreibung;
-
-	@NotNull(message = FIELD_IS_EMPTY)
-	@FutureOrPresent(message = FIELD_DATE_PAST)
-	private LocalDate frist;
-
-	@LinkedResource(controllerClass = BinaryFileController.class)
-	@Singular
-	private List<FileId> attachments;
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java
deleted file mode 100644
index e402945ef695e2567bc0e8170ba16a0deed123bb..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.RequiredArgsConstructor;
-
-@RestController
-@RequestMapping(WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS)
-@RequiredArgsConstructor
-public class WiedervorlageCommandController {
-
-	static final String WIEDERVORLAGE_COMMANDS = "/api/wiedervorlages/{wiedervorlageId}/{wiedervorlageVersion}/commands";
-
-	private final WiedervorlageService service;
-
-	@PostMapping
-	public ResponseEntity<Void> updateWiedervorlage(@RequestBody CreateCommand command, @PathVariable String wiedervorlageId,
-			@PathVariable long wiedervorlageVersion) {
-		var wiedervorlage = service.getById(wiedervorlageId);
-		var createdCommand = createCommand(wiedervorlage, command);
-
-		return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build();
-	}
-
-	Command createCommand(Wiedervorlage wiedervorlage, CreateCommand command) {
-		switch (command.getOrder()) {
-		case LegacyOrder.WIEDERVORLAGE_ERLEDIGEN: {
-			var changed = wiedervorlage.toBuilder().done(true).build();
-			service.updateNextFrist(wiedervorlage.getVorgangId(), changed);
-			return service.erledigen(changed);
-		}
-		case LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN: {
-			var changed = wiedervorlage.toBuilder().done(false).build();
-			service.updateNextFrist(wiedervorlage.getVorgangId(), changed);
-			return service.wiedereroeffnen(changed);
-		}
-		case LegacyOrder.EDIT_WIEDERVORLAGE: {
-			var changed = updateWiedervorlageByCommand(wiedervorlage, (Wiedervorlage) command.getBody());
-			service.updateNextFrist(wiedervorlage.getVorgangId(), changed);
-			return service.editWiedervorlage(changed, wiedervorlage.getId(), wiedervorlage.getVersion());
-		}
-		default:
-			throw new TechnicalException("Unsupported order " + command.getOrder());
-		}
-	}
-
-	Wiedervorlage updateWiedervorlageByCommand(Wiedervorlage wiedervorlage, Wiedervorlage requestBody) {
-		return wiedervorlage.toBuilder()
-				.clearAttachments().attachments(requestBody.getAttachments())
-				.betreff(requestBody.getBetreff())
-				.beschreibung(requestBody.getBeschreibung())
-				.frist(requestBody.getFrist()).build();
-	}
-
-	@RestController
-	@RequestMapping(WiedervorlageCommandByVorgangController.WIEDERVORLAGE_COMMANDS_BY_VORGANG)
-	@RequiredArgsConstructor
-	public static class WiedervorlageCommandByVorgangController {
-
-		static final String WIEDERVORLAGE_COMMANDS_BY_VORGANG = "/api/vorgangs/{vorgangId}/wiedervorlageCommands";
-
-		private final WiedervorlageService service;
-
-		@PostMapping
-		public ResponseEntity<Void> createWiedervorlage(@RequestBody CreateCommand command, @PathVariable String vorgangId) {
-			var wiedervorlage = (Wiedervorlage) command.getBody();
-			var createdCommand = service.createWiedervorlage(wiedervorlage, vorgangId);
-
-			service.updateNextFrist(vorgangId, wiedervorlage);
-
-			return ResponseEntity.created(linkTo(CommandController.class).slash(createdCommand.getId()).toUri()).build();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageController.java
deleted file mode 100644
index 08e2b32b890037eee7aa204c387a1af695f198c0..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageController.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-
-@RestController
-@RequestMapping(WiedervorlageController.WIEDERVORLAGE_PATH)
-public class WiedervorlageController {
-
-	static final String WIEDERVORLAGE_PATH = "/api/wiedervorlages"; // NOSONAR
-	static final String PARAM_VORGANG_ID = "vorgangId";
-
-	@Autowired
-	private WiedervorlageService service;
-	@Autowired
-	private WiedervorlageModelAssembler modelAssembler;
-
-	@PreAuthorize(CurrentUserService.VERIFY_HAS_ROLE_VERWALTUNG_USER)
-	@GetMapping("/{wiedervorlageId}")
-	public EntityModel<Wiedervorlage> getById(@PathVariable String wiedervorlageId) {
-		return modelAssembler.toModel(service.getById(wiedervorlageId));
-	}
-
-	@GetMapping(params = PARAM_VORGANG_ID)
-	public CollectionModel<EntityModel<Wiedervorlage>> findByVorgang(@RequestParam String vorgangId) {
-		return modelAssembler.toCollectionModel(service.findByVorgangId(vorgangId), vorgangId);
-	}
-
-	@RestController
-	@RequestMapping(AttachmentsByWiedervorlageController.PATH)
-	static class AttachmentsByWiedervorlageController {
-
-		static final String PATH = "/api/wiedervorlages/{wiedervorlageId}"; // NOSONAR
-
-		@Autowired
-		private BinaryFileController binaryFileController;
-		@Autowired
-		private WiedervorlageService service;
-
-		@GetMapping("/attachments")
-		public CollectionModel<EntityModel<OzgFile>> getAttachments(@PathVariable String wiedervorlageId) {
-			var wiedervorlage = service.getById(wiedervorlageId);
-
-			return binaryFileController.getFiles(wiedervorlage.getAttachments());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapper.java
deleted file mode 100644
index 31b4d284d017ec88fc89b1ac30f3ae66c226e90a..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapper.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-import java.util.Map;
-
-import org.mapstruct.CollectionMappingStrategy;
-import org.mapstruct.Mapper;
-import org.mapstruct.NullValueCheckStrategy;
-import org.mapstruct.ReportingPolicy;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ozgcloud.alfa.attachment.AttachmentMapper;
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-
-@Mapper(uses = { FileIdMapper.class }, unmappedTargetPolicy = ReportingPolicy.WARN, //
-		unmappedSourcePolicy = ReportingPolicy.WARN, //
-		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
-		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
-abstract class WiedervorlageMapper {
-
-	@Autowired
-	private GrpcObjectMapper grpcObjectMapper;
-
-	static final String ID = "id";
-	static final String DONE = "done";
-	static final String CREATED_BY = "createdBy";
-	static final String CREATED_BY_NAME = "createdByName";
-	static final String CREATED_AT = "createdAt";
-	static final String BETREFF = "betreff";
-	static final String BESCHREIBUNG = "beschreibung";
-	static final String FRIST = "frist";
-	static final String ATTACHMENTS = "attachments";
-
-	public Wiedervorlage fromItem(GrpcVorgangAttachedItem item) {
-		return fromItemMap(grpcObjectMapper.mapFromGrpc(item.getItem()), item.getVersion());
-	}
-
-	Wiedervorlage fromItemMap(Map<String, Object> itemMap, long version) {
-		return Wiedervorlage.builder()
-				.id((String) itemMap.get(ID))
-				.version(version)
-				.done(Boolean.valueOf((String) itemMap.get(DONE)))
-				.createdBy((String) itemMap.get(CREATED_BY))
-				.createdAt(ZonedDateTime.parse((String) itemMap.get(CREATED_AT)))
-				.betreff((String) itemMap.get(BETREFF))
-				.beschreibung((String) itemMap.get(BESCHREIBUNG))
-				.frist(LocalDate.parse((String) itemMap.get(FRIST)))
-				.attachments(AttachmentMapper.mapAttachments(itemMap.get(ATTACHMENTS)))
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java
deleted file mode 100644
index 2a94ca0fcd0a618ed77ae80988c4b61821489e70..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssembler.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.server.RepresentationModelAssembler;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.common.CollectionModelBuilder;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageCommandController.WiedervorlageCommandByVorgangController;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController.AttachmentsByWiedervorlageController;
-
-@Component
-class WiedervorlageModelAssembler implements RepresentationModelAssembler<Wiedervorlage, EntityModel<Wiedervorlage>> {
-
-	static final String REL_EDIT = "edit";
-	static final String REL_ERLEDIGEN = "erledigen";
-	static final String REL_WIEDEREROEFFNEN = "wiedereroeffnen";
-	static final String REL_ATTACHMENTS = "attachments";
-
-	static final String REL_CREATE = "create-wiedervorlage";
-	static final String REL_UPLOAD_FILE = "uploadFile";
-
-	private static final Predicate<Wiedervorlage> ALLOW_ERLEDIGEN = wiedervorlage -> !wiedervorlage.isDone();
-	private static final Predicate<Wiedervorlage> ALLOW_WIEDEREROEFFNEN = Wiedervorlage::isDone;
-	private static final Predicate<Wiedervorlage> HAS_ATTACHMENTS = wiedervorlage -> !wiedervorlage.getAttachments().isEmpty();
-	public static final String WIEDERVORLAGE_ATTACHMENT_PATH = "wiedervorlageAttachment";
-	public static final String FILE_PATH = "file";
-
-	@Autowired
-	private VorgangController vorgangController;
-
-	@Override
-	public EntityModel<Wiedervorlage> toModel(Wiedervorlage wiedervorlage) {
-		var vorgang = vorgangController.getVorgang(wiedervorlage.getVorgangId());
-		return buildModel(wiedervorlage, vorgang);
-	}
-
-	EntityModel<Wiedervorlage> buildModel(Wiedervorlage wiedervorlage, VorgangWithEingang vorgang) {
-		var selfLink = linkTo(WiedervorlageController.class).slash(wiedervorlage.getId());
-		var commandLink = linkTo(
-				methodOn(WiedervorlageCommandController.class).updateWiedervorlage(null, wiedervorlage.getId(), wiedervorlage.getVersion()));
-
-		return ModelBuilder.fromEntity(wiedervorlage).addLink(selfLink.withSelfRel())
-				.ifMatch(() -> vorgangController.isEditable(vorgang))
-				.addLink(commandLink.withRel(REL_EDIT))
-				.ifMatch(ALLOW_ERLEDIGEN).addLink(commandLink.withRel(REL_ERLEDIGEN))
-				.ifMatch(ALLOW_WIEDEREROEFFNEN).addLink(commandLink.withRel(REL_WIEDEREROEFFNEN))
-				.ifMatch(HAS_ATTACHMENTS)
-				.addLink(linkTo(methodOn(AttachmentsByWiedervorlageController.class).getAttachments(wiedervorlage.getId())).withRel(REL_ATTACHMENTS))
-				.buildModel();
-	}
-
-	public CollectionModel<EntityModel<Wiedervorlage>> toCollectionModel(Stream<Wiedervorlage> entities, String vorgangId) {
-		var vorgang = vorgangController.getVorgang(vorgangId);
-
-		return CollectionModelBuilder.fromEntities(entities.map(wiedervorlage -> buildModel(wiedervorlage, vorgang)))
-				.addLink(linkTo(WiedervorlageController.class).withSelfRel())
-				.ifMatch(wiedervorlagenModel -> vorgangController.isEditable(vorgang))
-				.addLink(linkTo(methodOn(WiedervorlageCommandByVorgangController.class).createWiedervorlage(null, vorgangId))
-						.withRel(REL_CREATE))
-				.addLink(linkTo(BinaryFileController.class).slash(vorgangId).slash(WIEDERVORLAGE_ATTACHMENT_PATH).slash(FILE_PATH)
-						.withRel(REL_UPLOAD_FILE))
-				.buildModel();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteService.java
deleted file mode 100644
index 9ecc912ae131e54ef4bfe4639fd5c7f1c2ba700b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteService.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Service;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcAccessPermission;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcDeleteClientAttributeRequest;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcSetClientAttributeRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-import net.devh.boot.grpc.client.inject.GrpcClient;
-
-@Service
-public class WiedervorlageRemoteService {
-
-	static final String CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST = "nextWiedervorlageFrist";
-	static final String ITEM_NAME = "Wiedervorlage";
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
-
-	@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
-	private ClientAttributeServiceBlockingStub clientAttributeServiceStub;
-
-	@Autowired
-	private WiedervorlageMapper mapper;
-	@Autowired
-	private ApplicationContext context;
-
-	public Stream<Wiedervorlage> findByVorgangId(String vorgangId) {
-		var response = vorgangAttachedItemServiceStub.find(buildFindRequest(vorgangId));
-
-		return response.getVorgangAttachedItemsList().stream().map(mapper::fromItem);
-	}
-
-	GrpcFindVorgangAttachedItemRequest buildFindRequest(String vorgangId) {
-		return GrpcFindVorgangAttachedItemRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setItemName(ITEM_NAME)
-				.build();
-	}
-
-	public Wiedervorlage getById(String wiedervorlageId) {
-		var response = vorgangAttachedItemServiceStub.getById(GrpcVorgangAttachedItemRequest.newBuilder().setId(wiedervorlageId).build());
-
-		return mapper.fromItem(response.getVorgangAttachedItem()).toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build();
-	}
-
-	public void updateNextFrist(String vorgangId, Optional<LocalDate> nextFrist) {
-		nextFrist.ifPresentOrElse(frist -> setNextFrist(vorgangId, frist), () -> deleteNextFrist(vorgangId));
-	}
-
-	void deleteNextFrist(String vorgangId) {
-		clientAttributeServiceStub.delete(GrpcDeleteClientAttributeRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setClientName(context.getId())
-				.setAttributeName(CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST)
-				.build());
-	}
-
-	void setNextFrist(String vorgangId, LocalDate nextFrist) {
-		clientAttributeServiceStub.set(buildUpdateNextFristRequest(vorgangId, nextFrist));
-	}
-
-	private GrpcSetClientAttributeRequest buildUpdateNextFristRequest(String vorgangId, LocalDate nextFrist) {
-		return GrpcSetClientAttributeRequest.newBuilder()
-				.setVorgangId(vorgangId)
-				.setAttribute(GrpcClientAttribute.newBuilder()
-						.setAccess(GrpcAccessPermission.READ_ONLY)
-						.setAttributeName(CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST)
-						.setValue(GrpcClientAttributeValue.newBuilder().setStringValue(nextFrist.format(DateTimeFormatter.ISO_DATE)))
-						.build())
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java
deleted file mode 100644
index a56a61a999ef35ec2e87e160fa75f3548d9365a6..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-import java.util.Comparator;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import jakarta.validation.Valid;
-
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-@Validated
-@Service
-class WiedervorlageService {
-
-	private static final Predicate<Wiedervorlage> IS_NOT_DONE = wiedervorlage -> !wiedervorlage.isDone();
-
-	private final WiedervorlageRemoteService remoteService;
-	private final VorgangAttachedItemService vorgangAttachedItemService;
-	private final CurrentUserService currentUserService;
-
-	public Command createWiedervorlage(@Valid Wiedervorlage wiedervorlage, String vorgangId) {
-		return vorgangAttachedItemService.createNewWiedervorlage(addCreated(wiedervorlage), vorgangId);
-	}
-
-	Wiedervorlage addCreated(Wiedervorlage wiedervorlage) {
-		return wiedervorlage.toBuilder()
-				.createdAt(ZonedDateTime.now().withNano(0))
-				.createdBy(currentUserService.getUserId().toString())
-				.build();
-	}
-
-	public Command editWiedervorlage(@Valid Wiedervorlage wiedervorlage, String wiedervorlageId, long version) {
-		return vorgangAttachedItemService.editWiedervorlage(wiedervorlage, wiedervorlageId, version);
-	}
-
-	public Wiedervorlage getById(String wiedervorlageId) {
-		return remoteService.getById(wiedervorlageId);
-	}
-
-	@Async
-	public void updateNextFrist(String vorgangId, Wiedervorlage changedOrNewWiedervorlage) {
-		var persistedWiedervorlagen = findByVorgangId(vorgangId);
-		var persistedWiedervorlagenExcludingChanged = persistedWiedervorlagen.filter(
-				wiedervorlage -> !wiedervorlage.getId().equals(changedOrNewWiedervorlage.getId()));
-
-		var wiedervorlagen = Stream.concat(persistedWiedervorlagenExcludingChanged, Stream.of(changedOrNewWiedervorlage));
-		remoteService.updateNextFrist(vorgangId, calculateNextFrist(wiedervorlagen));
-	}
-
-	Optional<LocalDate> calculateNextFrist(Stream<Wiedervorlage> wiedervorlagen) {
-		return wiedervorlagen
-				.filter(Objects::nonNull)
-				.filter(IS_NOT_DONE)
-				.sorted(Comparator.comparing(Wiedervorlage::getFrist))
-				.map(Wiedervorlage::getFrist)
-				.findFirst();
-	}
-
-	public Stream<Wiedervorlage> findByVorgangId(String vorgangId) {
-		return remoteService.findByVorgangId(vorgangId);
-	}
-
-	public Command erledigen(Wiedervorlage wiedervorlage) {
-		return vorgangAttachedItemService.setWiedervorlageDone(wiedervorlage, true);
-	}
-
-	public Command wiedereroeffnen(Wiedervorlage wiedervorlage) {
-		return vorgangAttachedItemService.setWiedervorlageDone(wiedervorlage, false);
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/alfa-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json
deleted file mode 100644
index 8b996c6207d544d30d16e840e708210b8dbd2ff3..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{"properties": [
-  {
-    "name": "ozgcloud.production",
-    "type": "java.lang.Boolean",
-    "description": "Enables/Disables the Angular production mode. (default: true)"
-  },
-  {
-    "name": "ozgcloud.stage.production",
-    "type": "java.lang.String",
-    "description": "Enables/Disables production environment hint. (default: true)"
-  }
-]}
\ No newline at end of file
diff --git a/alfa-service/src/main/resources/files/LandesnetzInfo.html b/alfa-service/src/main/resources/files/LandesnetzInfo.html
deleted file mode 100644
index 34c9d390e7818594faee980f0ff6162dee6cc108..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/resources/files/LandesnetzInfo.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html>
-<!-- saved from url=(0054)https://lninfo.landsh.de/emaildomain/LNmailkunden.html -->
-<html lang="de"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Mailrouting-Tabelle für E-Mail in SH</title>
-    <style>
-        * {
-            box-sizing: border-box;
-            font-family: Arial, Verdana, sans-serif;
-        }
-
-	.clearfix::before,
-	.clearfix::after {
-	   content: " ";
-		   display: table;
-	}
-
-	.clearfix::after {
-	   clear:both;
-	}
-
-        #outer_wrapper {
-            width:85%;
-            max-width: 1200px;
-            margin: 0 auto;
-            
-        }
-
-        #einleitung {
-            font-size: 14px;
-            margin-bottom: 30px;
-        }
-
-	#header_logo {float:left;}
-	#header_logo img {
-		width:200px; padding:10px;
-	}
-	#header h1 {
-		font-size: 24px;
-	}
-	#header #ueberschrift {
-		padding:15px 0 0 220px;
-	}
-
-        #einleitung table {
-            margin: -15px 0 20px 15px;
-        }
-
-        #einleitung td.kuerzel {
-            font-weight: bold;
-            padding-right: 10px;
-
-        }
-
-
-        #InputSuche {
-            background-repeat: no-repeat;
-            width: 100%;
-            font-size: 16px;
-            padding: 12px 20px 12px 12px;
-            border: 1px solid #ddd;
-            margin-bottom: 12px;
-        }
-
-        #tbl_domains {
-            border-collapse: collapse;
-            width: 100%;
-            border: 1px solid #ddd;
-            font-size: 16px;
-        }
-
-        #tbl_domains th,
-        #tbl_domains td {
-            text-align: left;
-            padding: 6px;
-        }
-
-        #tbl_domains tr {
-            border-bottom: 1px solid #ddd;
-        }
-
-        #tbl_domains tr.header,
-        #tbl_domains tr:hover {
-            background-color: #f1f1f1;
-        }
-
-	#letzte_aktualisierung {
-	   margin:25px 0;
- 	   font-size:14px;
-	}
-
-    </style>
-<script src="chrome-extension://mooikfkahbdckldjjndioackbalphokd/assets/prompt.js"></script></head>
-
-<body>
-
-    <div id="outer_wrapper">
-	<div id="header">
-		<div id="header_logo"><img src="./Mailrouting-Tabelle für E-Mail in SH_files/dataport_logo.png" alt="Dataport Logo"></div>
-		<div id="ueberschrift"><h1>Mailroutingtabelle für E-Mail SH Kunden (Fullmail)</h1></div>
-		<div class="clearfix"></div>
-	</div>
-        <div id="einleitung">
-            <p>
-                In der nachfolgenden Tabelle sind Domänen gelistet, welche bei Verwendung des Dataport Mailrelays für
-                das LNSH (E-Mail SH) über interne Wege geroutet werden.<br>
-                Zu jeder Zieldomain ist ersichtlich, über welche Infrastruktur die E-Mail geroutet wird. Bei Mehrfachnennung gilt die nachfolgende Reihenfolge:<br><br>
-            </p>
-            <table>
-                <tbody><tr>
-                    <td class="kuerzel">LNSH</td>
-                    <td>Die E-Mail wird über das Landesnetz Schleswig-Holstein zum Empfänger geroutet.</td>
-                </tr>
-                <tr>
-                    <td class="kuerzel">NdB</td>
-                    <td>Die E-Mail wird über die Netze des Bundes zum Empfänger geroutet.</td>
-                </tr>
-            </tbody></table>
-
-            <p>
-                E-Mails an Ziele, welche nicht in dieser Übersicht vorhanden sind, werden über das Internet
-                geroutet.</p>
-            <p>
-                <i><strong>Hinweis: </strong>Durch die Nennung einer Domäne in dieser Liste wird keine Aussage oder
-                    Empfehlung darüber
-                    gegeben,
-                    welche Art von E-Mail Inhalten übertragen werden dürfen<br>
-                    und ob diese vor dem Versand verschlüsselt werden sollten.
-                    Bitte beachten Sie die für Ihre Organisation gültigen Regelungen.
-                </i>
-            </p>
-        </div>
-
-        <input type="text" id="InputSuche" onkeyup="myFunction()" placeholder="Suche nach Domainnamen.." title="Geben Sie einen Domainnamen ein">
-
-        <table id="tbl_domains">
-            <tbody><tr class="header">
-                <th style="width:60%;">Domainame</th>
-                <th style="width:40%;">wird geroutet via</th>
-            </tr>
-	    <tr>   <td>.ndb.de</td>   <td>Netz des Bundes</td></tr>
-	    <tr>   <td>ndb.de</td>   <td>Netz des Bundes</td></tr>
-	    <tr>   <td>.itvsh.de</td>   <td>LNSH</td></tr>
-	    <tr>   <td>itvsh.de</td>   <td>LNSH</td></tr>
-	    <tr>   <td>.itvsh.old.de</td>   <td>LNSH Altumgebung</td></tr>
-	    <tr>   <td>itvsh.old.de</td>   <td>LNSH Altumgebung</td></tr>
-	    <tr>   <td>dataport.de</td>   <td>LNSH</td></tr>
-	    <tr>   <td>ozg-sh.de</td>   <td>LNSH</td></tr>
-        </tbody></table>
-	<div id="letzte_aktualisierung">Letzte Aktualisierung: 01.06.2021 14:42 Uhr - Alle Angaben ohne Gewähr.</div>
-
-        <script>
-            function myFunction() {
-                var input, filter, table, tr, td, i, txtValue;
-                input = document.getElementById("InputSuche");
-                filter = input.value.toUpperCase();
-                table = document.getElementById("tbl_domains");
-                tr = table.getElementsByTagName("tr");
-                for (i = 0; i < tr.length; i++) {
-                    td = tr[i].getElementsByTagName("td")[0];
-                    if (td) {
-                        txtValue = td.textContent || td.innerText;
-                        if (txtValue.toUpperCase().indexOf(filter) > -1) {
-                            tr[i].style.display = "";
-                        } else {
-                            tr[i].style.display = "none";
-                        }
-                    }
-                }
-            }
-        </script>
-
-    </div>
-
-
-
-</body></html>
diff --git a/alfa-service/src/main/resources/files/mailertable.txt b/alfa-service/src/main/resources/files/mailertable.txt
deleted file mode 100644
index 7358aae2d522f9792ba60289e7dde9e75e56556b..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/resources/files/mailertable.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-##### Beginn ZSP ################################
-#
-# Die Kenntnis dieser IP-Adressen ist den Nutzern des E-Maildienstes im NdB-VN vorbehalten.
-# Diese Adressen sind Dritten nicht zugñnglich zu machen.
-# 192.168.253.20	ESMTP:[mailrelay.zsp.testa-de.net]
-#
-##### Ende ZSP ##################################
-#
-############################## Beginn Berlin (ITDZ) ######################################
-# Koslakowicz, Monika
-# Telefon: 030 90222 6515
-##########################################################################################
-seninnds.berlin.de		esmtp:[mail.berlin.testa-de.net]
-schulbau.berlin.de		esmtp:[mail.berlin.testa-de.net]
-wahlen.berlin.de		esmtp:[mail.berlin.testa-de.net]
-lea.berlin.de		esmtp:[mail.berlin.testa-de.net]
-vhs-servicezentrum.berlin.de		esmtp:[mail.berlin.testa-de.net]
-#
-############################## Ende Berlin ########################################
-#
-#
-############################## Beginn Schleswig-Holstein ##########################
-# DOI Dataport Altenholz
-# Korth, Lennart
-# Telefon: 0431-3295 6667
-#################################################################################
-mgm-cp.com		esmtp:[mx.landsh.doi-de.net]
-mgm-tp.com		esmtp:[mx.landsh.doi-de.net]
-dataport.de		esmtp:[mx.landsh.doi-de.net]
-#
-############################## Ende Schleswig-Holstein ###########################
-#
-#
-############################## Beginn Dataport Hamburg ###########################
-# DOI Dataport Hamburg
-# Ackermann, Stefan
-# Telefon: 040 -428 46 2573
-##################################################################################
-driveport.de		esmtp:[mail.hamburg.testa-de.net]
-meinuk.de		esmtp:[mail.hamburg.testa-de.net]
-meinuk-integration.de		esmtp:[mail.hamburg.testa-de.net]
-dataport-kommunal.de		esmtp:[mail.hamburg.testa-de.net]
-li.hamburg.de		esmtp:[mail.hamburg.testa-de.net]
-#
-############################## Ende Dataport Hamburg ##############################
-#
-############################## Deutsche Bahn VS ######################################
-#
-# Team SeCDocS	   (DB Systel) 069 265 14925 (9-17 Uhr) secdocs@deutschebahn.com
-# Jan-Peter Krause (DB Systel) 030 297 16042
-#
-#####################################################################################
-vs-nfd.deutschebahn.com		esmtp:vs-nfd.deutschebahn.testa-de.net
-#
-############################# Ende Deutsche Bahn VS ##################################
-#
-############################## Beginn ZSP #########################################
-#
-#zsp.testa-de.net		esmtp:[sts03mr1.zsp.testa-de.net]
-#.zsp.testa-de.net		esmtp:[sts03mr1.zsp.testa-de.net]
-.zsp.testa-de.net	local:
-zsp.testa-de.net       local:
-zsp.doi-de.net	     local:
-#
-#
-############################## Ende ZSP #############################################
-#
-#
\ No newline at end of file
diff --git a/alfa-service/src/main/resources/fop/postfach-nachrichten.xsl b/alfa-service/src/main/resources/fop/postfach-nachrichten.xsl
deleted file mode 100644
index 7442f94c340789ee9a8929ce29d935df370fcac8..0000000000000000000000000000000000000000
--- a/alfa-service/src/main/resources/fop/postfach-nachrichten.xsl
+++ /dev/null
@@ -1,140 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.1">
-
-	<xsl:template name="functional-template" match="/testModel">
-		<fo:flow flow-name="xsl-region-body">
-
-			<fo:block font-size="14pt">
-				<fo:table>
-					<fo:table-column column-width="50mm" />
-					<fo:table-column column-width="125mm"/>
-					<fo:table-body>
-						<fo:table-row>
-							<fo:table-cell>
-								<fo:block>Vorgangsname</fo:block>
-							</fo:table-cell>
-							<fo:table-cell>
-								<fo:block><xsl:value-of select="postfachNachrichtPdfModel/vorgangName" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-
-						<fo:table-row>
-							<fo:table-cell>
-								<fo:block>Vorgangsnummer</fo:block>
-							</fo:table-cell>
-							<fo:table-cell>
-								<fo:block><xsl:value-of select="postfachNachrichtPdfModel/vorgangNummer" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-					</fo:table-body>
-				</fo:table>
-			</fo:block>
-			
-			<fo:block font-size="11pt" margin-top="30px">
-				<fo:table>
-					<fo:table-column column-width="50mm" />
-					<fo:table-column column-width="125mm"/>
-					<fo:table-body>
-						<fo:table-row>
-							<fo:table-cell>
-								<fo:block>Antragsteller</fo:block>
-							</fo:table-cell>
-							<fo:table-cell>
-								<fo:block>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerAnrede" />
-							        <xsl:text> </xsl:text>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerVorname" />
-								    <xsl:text> </xsl:text>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerNachname" />
-								</fo:block>
-								<fo:block>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerStrasse" />
-								    <xsl:text> </xsl:text>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerHausnummer" />
-								</fo:block>
-								<fo:block>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerPlz" />
-								    <xsl:text> </xsl:text>
-								    <xsl:value-of select="postfachNachrichtPdfModel/antragstellerOrt" />
-								</fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-
-					</fo:table-body>
-				</fo:table>
-			</fo:block>
-			
-			<fo:block-container font-size="11pt" margin-top="1cm">
-				<fo:block font-size="14pt" margin-bottom="3mm">Nachrichten</fo:block>
-				
-				<xsl:for-each select="postfachNachrichtPdfModel/nachrichten/nachricht">
-			        <xsl:call-template name="nachricht"/>
-				</xsl:for-each>
-			</fo:block-container>
-		</fo:flow>
-	</xsl:template>
-	
-	<xsl:template name="nachricht">
-		
-			<fo:block font-size="11pt"  margin-bottom="2mm" linefeed-treatment="preserve">
-				<xsl:if test="isFirst='false'">
-					<fo:leader leader-pattern="rule" leader-length="175mm" rule-style="solid" rule-thickness="1pt"/>
-				</xsl:if>
-				<fo:table>
-					<fo:table-column column-width="30mm" />
-					<fo:table-column column-width="145mm"/>
-					<fo:table-body>
-						<fo:table-row>
-							<fo:table-cell padding="3px">
-								<fo:block>Absender</fo:block>
-							</fo:table-cell>
-							<fo:table-cell padding="3px">
-								<fo:block><xsl:value-of select="createdBy" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-
-						<fo:table-row>
-							<fo:table-cell padding="3px">
-								<fo:block>Datum</fo:block>
-							</fo:table-cell>
-							<fo:table-cell padding="3px">
-								<fo:block><xsl:value-of select="createdAt" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-						
-						<fo:table-row>
-							<fo:table-cell padding="3px">
-								<fo:block>Betreff</fo:block>
-							</fo:table-cell>
-							<fo:table-cell padding="3px">
-								<fo:block><xsl:value-of select="subject" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-						
-						<fo:table-row>
-							<fo:table-cell padding="3px">
-								<fo:block>Text</fo:block>
-							</fo:table-cell>
-							<fo:table-cell padding="3px">
-								<fo:block><xsl:value-of select="mailBody" /></fo:block>
-							</fo:table-cell>
-						</fo:table-row>
-						
-						<fo:table-row>
-							<fo:table-cell padding="3px">
-								<fo:block>Anhänge</fo:block>
-							</fo:table-cell>
-							<xsl:if test="attachments/attachment">
-								<fo:table-cell padding="3px">
-									<xsl:for-each select="attachments/attachment">
-										<fo:block><xsl:value-of select="."/></fo:block>
-									</xsl:for-each>
-								</fo:table-cell>
-							</xsl:if>
-						</fo:table-row>
-					</fo:table-body>
-				</fo:table>             
-			</fo:block>
-			
-	</xsl:template>
-			
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplication.java b/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplication.java
deleted file mode 100644
index 39b0a70aaf70e26f312514abe9e5dbf1139cd65f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplication.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.TimeZone;
-
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.security.concurrent.DelegatingSecurityContextRunnable;
-import org.springframework.web.filter.ForwardedHeaderFilter;
-
-@SpringBootApplication
-@EnableAsync
-@EnableAspectJAutoProxy(proxyTargetClass = true)
-@ComponentScan({ "de.ozgcloud.*" })
-public class AlfaServerApplication {
-
-	public static void main(String[] args) {
-		TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
-		SpringApplication.run(AlfaServerApplication.class, args);
-	}
-
-	@Bean
-	public FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
-		FilterRegistrationBean<ForwardedHeaderFilter> bean = new FilterRegistrationBean<>();
-		bean.setFilter(new ForwardedHeaderFilter());
-		return bean;
-	}
-
-	@Bean
-	public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
-		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-
-		executor.setThreadNamePrefix("async-");
-		executor.setTaskDecorator(DelegatingSecurityContextRunnable::new);
-		return executor;
-	}
-
-	@Bean
-	public CallScope callScope() {
-		return new CallScope();
-	}
-
-	@Bean
-	public BeanFactoryPostProcessor beanFactoryPostProcessor(CallScope callScope) {
-		return new CallBeanFactoryPostProcessor(callScope);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplicationTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplicationTest.java
deleted file mode 100644
index 4c6057853dd41fcce167850fff4c159390bec622..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/AlfaServerApplicationTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class AlfaServerApplicationTest {
-
-	@Test
-	void contextLoads() { // NOSONAR
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/ApplicationTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/ApplicationTestFactory.java
deleted file mode 100644
index 3ee821a315d78949fe05cf9d5f5a74e87ecf0f7c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/ApplicationTestFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class ApplicationTestFactory {
-
-	public static final String CONTEXT_ID = LoremIpsum.getInstance().getWords(1);
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java
deleted file mode 100644
index ded788339288603e18152161f7f3242ed578ecf5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties;
-import lombok.SneakyThrows;
-
-class EnvironmentControllerTest {
-
-	@InjectMocks
-	private EnvironmentController controller;
-	@Mock
-	private OAuth2Properties oAuth2Properties;
-	@Mock
-	private ProductionProperties productionProperties;
-	@Mock
-	private VorgangProcessorProperties vorgangProcessorProperties;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Get environment")
-	@Nested
-	class TestGetEnvironment {
-
-		private static final String CLIENT = LoremIpsum.getInstance().getFirstName() + "Client";
-		private static final boolean PRODUCTION = true;
-		private static final String PROCESSOR_NAME = "dummyProcessorName";
-
-		@BeforeEach
-		void init() {
-			when(productionProperties.isProduction()).thenReturn(PRODUCTION);
-			when(oAuth2Properties.getResource()).thenReturn(CLIENT);
-			when(vorgangProcessorProperties.getProcessorNames()).thenReturn(List.of(PROCESSOR_NAME));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnOk() {
-			var response = doRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveProductionTrueAsDefault() {
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$.production").value(PRODUCTION));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveClientId() {
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$.clientId").value(CLIENT));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveProcessorNames() {
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$.processorNames").value(PROCESSOR_NAME));
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(get(EnvironmentController.BASE_PATH));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtAuthConverterTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/JwtAuthConverterTest.java
deleted file mode 100644
index e33159e9af7fa2db11ca06f4891c5d864b2ef720..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtAuthConverterTest.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.oauth2.jwt.Jwt;
-import org.springframework.security.oauth2.jwt.JwtClaimNames;
-import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-class JwtAuthConverterTest {
-
-	@Spy
-	@InjectMocks
-	private final JwtAuthConverter converter = new JwtAuthConverter();
-	@Mock
-	private OAuth2Properties oAuth2Properties;
-
-	@DisplayName("Convert")
-	@Nested
-	class TestConvert {
-
-		@Mock
-		private Jwt jwt;
-
-		@BeforeEach
-		void mock() {
-			doReturn(StringUtils.EMPTY).when(converter).getPrincipleClaimName(any());
-			doReturn(Collections.emptySet()).when(converter).getAuthorities(any());
-		}
-
-		@Test
-		void shouldGetAuthrorities() {
-			converter.convert(jwt);
-
-			verify(converter).getAuthorities(jwt);
-		}
-
-		@Test
-		void shouldGetPrincipleClaimName() {
-			converter.convert(jwt);
-
-			verify(converter).getPrincipleClaimName(jwt);
-		}
-
-		@Test
-		void shouldReturnJwtAuthenticationToken() {
-			var token = converter.convert(jwt);
-
-			assertThat(token).isInstanceOf(JwtAuthenticationToken.class);
-		}
-	}
-
-	@DisplayName("Get principle claim name")
-	@Nested
-	class TestGetPrincipleClaimName {
-
-		private final String subClaimValue = LoremIpsum.getInstance().getWords(1);
-		private final String principleClaimKey = LoremIpsum.getInstance().getWords(1);
-		private final String principleClaimValue = LoremIpsum.getInstance().getWords(1);
-		private final Map<String, Object> claimMap = Map.of(JwtClaimNames.SUB, subClaimValue, principleClaimKey, principleClaimValue);
-		private final Jwt jwt = JwtTestFactory.create(claimMap);
-
-		@DisplayName("if principle attribute is set")
-		@Nested
-		class TestIfPrincipleAttributeIsSet {
-
-			@BeforeEach
-			void mock() {
-				when(oAuth2Properties.getPrincipleAttribute()).thenReturn(null);
-			}
-
-			@Test
-			void shouleReturnPrincipleAttributeClaimValue() {
-				var principleClaimName = converter.getPrincipleClaimName(jwt);
-
-				assertThat(principleClaimName).isEqualTo(subClaimValue);
-			}
-		}
-
-		@DisplayName("if principle attribute is not set")
-		@Nested
-		class TestIfPrincipleAttributeNotSet {
-
-			@BeforeEach
-			void mock() {
-				when(oAuth2Properties.getPrincipleAttribute()).thenReturn(principleClaimKey);
-			}
-
-			@Test
-			void shouldReturnSubClaimValue() {
-				var principleClaimName = converter.getPrincipleClaimName(jwt);
-
-				assertThat(principleClaimName).isEqualTo(principleClaimValue);
-			}
-		}
-	}
-
-	@DisplayName("Get authorities")
-	@Nested
-	class TestGetAuthorities {
-
-		private final static String SCOPE_CLAIM_KEY = "scope";
-		private final static String SCOPE_CLAIM_VALUE = "dummyClaimValue";
-		private final Jwt jwt = JwtTestFactory.create(Map.of(SCOPE_CLAIM_KEY, SCOPE_CLAIM_VALUE));
-
-		@BeforeEach
-		void mock() {
-			doReturn(Collections.emptyList()).when(converter).extractResourceRoles(any());
-		}
-
-		@Test
-		void shouldConvertJwt() {
-			var authorities = converter.getAuthorities(jwt);
-
-			assertThat(authorities).extracting(GrantedAuthority::toString)
-					.contains(String.format("%s_%s", SCOPE_CLAIM_KEY.toUpperCase(), SCOPE_CLAIM_VALUE));
-		}
-
-		@Test
-		void shouldExtractRoles() {
-			converter.getAuthorities(jwt);
-
-			verify(converter).extractResourceRoles(jwt);
-		}
-	}
-
-	@DisplayName("Extract resource roles")
-	@Nested
-	class TestExtractResourceRoles {
-
-		private final Map<String, Object> claimsMap = Map.of(JwtAuthConverter.RESOURCE_ACCESS_KEY, Map.of("dummyKey", "dummyValue"));
-		private final Jwt jwt = JwtTestFactory.create(claimsMap);
-
-		@Test
-		void shouldReturnEmptySetOnMissingResourceAccess() {
-			var claimsMap = Map.<String, Object>of(JwtAuthConverter.RESOURCE_ACCESS_KEY, Collections.emptyMap());
-			var jwt = JwtTestFactory.create(claimsMap);
-
-			var resourceRoles = converter.extractResourceRoles(jwt);
-
-			assertThat(resourceRoles).isEmpty();
-		}
-
-		@DisplayName("on existing resource access")
-		@Nested
-		class TestOnExistingResourceAccess {
-
-			@Test
-			void shouldCallProperties() {
-				converter.extractResourceRoles(jwt);
-
-				verify(oAuth2Properties).getResource();
-			}
-
-			@Test
-			void shouldReturnEmptySetOnMissingResourceId() {
-				when(oAuth2Properties.getResource()).thenReturn(null);
-
-				var resourceRoles = converter.extractResourceRoles(jwt);
-
-				assertThat(resourceRoles).isEmpty();
-			}
-
-			@DisplayName("and existing resourceId")
-			@Nested
-			class TestAndExistingResourceId {
-
-				private final static String RESOURCE_ID = "dummyResourceId";
-				private final Map<String, Object> authoritiesMap = Map.of(JwtAuthConverter.RESOURCE_ACCESS_KEY,
-						Map.of(RESOURCE_ID, Collections.emptyMap()));
-				private final Jwt jwt = JwtTestFactory.create(authoritiesMap);
-
-				@BeforeEach
-				void mock() {
-					doReturn(Collections.emptySet()).when(converter).extractRoles(any());
-					when(oAuth2Properties.getResource()).thenReturn(RESOURCE_ID);
-				}
-
-				@Test
-				void shouldExtractRoles() {
-					converter.extractResourceRoles(jwt);
-
-					verify(converter).extractRoles(any());
-				}
-			}
-
-		}
-	}
-
-	@DisplayName("Extract roles")
-	@Nested
-	class TestExtractRoles {
-
-		@Test
-		void shouldReturnMappedRoleIfRolesExist() {
-			var authorities = converter.extractRoles(Map.of(JwtAuthConverter.ROLES_KEY, List.of("dummy")));
-
-			assertThat(authorities).extracting(SimpleGrantedAuthority::toString).containsExactly("ROLE_dummy");
-		}
-
-		@Test
-		void shouldReturnEmptySetIfNoRoleExists() {
-			var authorities = converter.extractRoles(Map.of(JwtAuthConverter.ROLES_KEY, Collections.emptyList()));
-
-			assertThat(authorities).isEmpty();
-		}
-
-		@Test
-		void shouldReturnEmptySetIfRolesEntryNotExists() {
-			var authorities = converter.extractRoles(Collections.emptyMap());
-
-			assertThat(authorities).isEmpty();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTestFactory.java
deleted file mode 100644
index 5971defdf9d52f565c88c5d99e6c94f83ee8d092..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTestFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.time.Instant;
-import java.util.Map;
-
-import org.springframework.security.oauth2.jwt.Jwt;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class JwtTestFactory {
-
-	public static final String TOKEN_VALUE = LoremIpsum.getInstance().getWords(1);
-	private static final Instant ISSUE_AT = Instant.now();
-	private static final Instant EXPIRES_AT = ISSUE_AT.plusMillis(5000);
-
-	public static final String DUMMY_HEADER_KEY = "dummyHeaderKey";
-	private static final String DUMMY_HEADER_VALUE = "dummyHeaderValue";
-	private static final Map<String, Object> HEADERS = Map.of(DUMMY_HEADER_KEY, DUMMY_HEADER_VALUE);
-
-	public static Jwt create(Map<String, Object> claims) {
-		return new Jwt(TOKEN_VALUE, ISSUE_AT, EXPIRES_AT, HEADERS, claims);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTokenUtilTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTokenUtilTest.java
deleted file mode 100644
index 4497357a5fd5859713af1fe99d79cf4ce9d26f1f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/JwtTokenUtilTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.auth0.jwt.exceptions.JWTVerificationException;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenProperties;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.ZustaendigeStelleTestFactory;
-import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-
-class JwtTokenUtilTest {
-
-	@Spy
-	@InjectMocks
-	private JwtTokenUtil jwtTokenUtil;
-	@Mock
-	private DownloadTokenProperties downloadTokenProperties;
-
-	private static final String TOKEN_SECRET = "t0pS3cr3t".repeat(8);
-	private static final int TOKEN_VALIDITY = 60000;
-
-	@BeforeEach
-	public void initTest() throws Exception {
-		when(downloadTokenProperties.getSecret()).thenReturn(TOKEN_SECRET);
-	}
-
-	@Nested
-	@DisplayName("Verify token generation")
-	class TestGenerateToken {
-
-		private String generatedToken;
-
-		@BeforeEach
-		void initTest() {
-			when(downloadTokenProperties.getSecret()).thenReturn(TOKEN_SECRET);
-			when(downloadTokenProperties.getValidity()).thenReturn(TOKEN_VALIDITY);
-
-			generatedToken = jwtTokenUtil.generateToken(FileId.createNew(), UserProfileTestFactory.create());
-		}
-
-		@Test
-		void userId() {
-			var userId = getParsedBody().getSubject();
-
-			assertThat(userId).isEqualTo(SecurityTestFactory.SUBJECT.toString());
-		}
-
-		@Test
-		void expirationDate() {
-			var before = new Date();
-			var expirationDate = getParsedBody().getExpiration();
-			var after = new Date(System.currentTimeMillis() + 900000);
-
-			assertThat(expirationDate).isAfter(before).isBefore(after);
-		}
-
-		@Test
-		void organisationseinheitIds() {
-			var organisationseinheitIds = jwtTokenUtil.getOrganisationseinheitIdsFromToken(generatedToken);
-
-			assertThat(organisationseinheitIds).isEqualTo(List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID));
-		}
-
-		private Claims getParsedBody() {
-			return Jwts.parser().setSigningKey(TOKEN_SECRET.getBytes()).build().parseSignedClaims(generatedToken).getPayload();
-		}
-	}
-
-	@Nested
-	class TestVerifyToken {
-
-		@Test
-		void shouldDoNotThrowExcepionOnValidToken() {
-			var token = buildToken(UUID.randomUUID().toString(), TOKEN_SECRET, TOKEN_VALIDITY);
-
-			jwtTokenUtil.verifyToken(token);
-		}
-
-		@Test
-		void shouldThrowExceptionOnInvalidToken() {
-			var token = buildToken(UUID.randomUUID().toString(), "invalid_token".repeat(5), TOKEN_VALIDITY);
-
-			assertThrows(JWTVerificationException.class, () -> jwtTokenUtil.verifyToken(token));
-		}
-
-		@Test
-		void shouldThrowExceptionOnTimeExpired() {
-			var token = buildToken(UUID.randomUUID().toString(), TOKEN_SECRET, -1000);
-
-			assertThrows(JWTVerificationException.class, () -> jwtTokenUtil.verifyToken(token));
-		}
-
-		private String buildToken(String subject, String token, int expiredTime) {
-			Map<String, Object> claims = new HashMap<>();
-			claims.put(JwtTokenUtil.FIRSTNAME_CLAIM, SecurityTestFactory.USER_FIRSTNAME);
-			claims.put(JwtTokenUtil.LASTNAME_CLAIM, SecurityTestFactory.USER_LASTNAME);
-			claims.put(JwtTokenUtil.ROLE_CLAIM, SecurityTestFactory.AUTHORITIES);
-			claims.put(JwtTokenUtil.FILEID_CLAIM, FileId.createNew());
-			claims.put(JwtTokenUtil.ORGANSIATIONSEINHEIT_IDS_CLAIM, SecurityTestFactory.ORGANSIATIONSEINHEIT_IDS);
-
-			return Jwts.builder()
-					.setClaims(claims)
-					.setSubject(subject)
-					.setHeaderParam(JwtTokenUtil.TOKEN_TYP_KEY, JwtTokenUtil.TOKEN_TYPE)
-					.setIssuer(JwtTokenUtil.TOKEN_ISSUER).setIssuedAt(new Date(System.currentTimeMillis()))
-					.setExpiration(new Date(System.currentTimeMillis() + expiredTime))
-					.setAudience(JwtTokenUtil.TOKEN_AUDIENCE)
-					.signWith(SignatureAlgorithm.HS512, token.getBytes())
-					.compact();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestAttributesTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RequestAttributesTestFactory.java
deleted file mode 100644
index 2abb97662c326dc906e6dceae185c57662902ce4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestAttributesTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.UUID;
-
-public class RequestAttributesTestFactory {
-
-	public static final String REQUEST_ID = UUID.randomUUID().toString();
-
-	public static RequestAttributes create() {
-		return createBuilder().build();
-	}
-
-	public static RequestAttributes.RequestAttributesBuilder createBuilder() {
-		return RequestAttributes.builder()
-				.requestId(REQUEST_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterITCase.java
deleted file mode 100644
index d43c3c1bcaf999f231f29ca37ce974ca6721bee3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterITCase.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.SpyBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-
-@SpringBootTest
-@AutoConfigureMockMvc
-@WithMockUser
-class RequestIdFilterITCase {
-
-	@SpyBean
-	private RequestIdFilter filter;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@Test
-	void shouldCallFilterMethod() throws Exception {
-		mockMvc.perform(get("/"));
-
-		verify(filter).doFilterInternal(any(), any(), any());
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterTest.java
deleted file mode 100644
index 41d02d4f4ed5a1d6a0fa0c220ec5960bde87f3b0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RequestIdFilterTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-
-import jakarta.servlet.FilterChain;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-class RequestIdFilterTest {
-
-	@InjectMocks
-	private RequestIdFilter filter;
-	@Mock
-	private FilterChain filterChain;
-	@Mock
-	private HttpServletRequest request;
-	@Mock
-	private HttpServletResponse response;
-	@Mock
-	private CallScope callScope;
-
-	@Spy
-	private RequestAttributes attributes;
-
-	@Test
-	void shouldContinueFilterChain() throws IOException, ServletException {
-		callDoFilterInternal();
-
-		verify(filterChain).doFilter(request, response);
-	}
-
-	@Test
-	void shouldStartCallScope() {
-		callDoFilterInternal();
-
-		verify(callScope).startScope();
-	}
-
-	@Test
-	void shouldEndCallScopeAfterException() throws IOException, ServletException {
-		doThrow(RuntimeException.class).when(filterChain).doFilter(any(), any());
-
-		assertThrows(RuntimeException.class, this::callDoFilterInternal);
-
-		verify(callScope).endScope();
-	}
-
-	private void callDoFilterInternal() {
-		try {
-			filter.doFilterInternal(request, response, filterChain);
-		} catch (ServletException | IOException e) {
-			throw new RuntimeException(e);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerITCase.java
deleted file mode 100644
index 34b881f160df4f5e74979d50f106f9f51a759fa3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerITCase.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.hamcrest.core.StringEndsWith;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class RootControllerITCase {
-
-	@MockBean
-	private CurrentUserService currentUserService;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		when(currentUserService.getUser()).thenReturn(UserProfileTestFactory.create());
-	}
-
-	@Nested
-	class TestProcess {
-
-		@Test
-		void shouldAddResourceLink() throws Exception {
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$._links.resource.href").value(StringEndsWith.endsWith("/api/resources?uri={uri}")));
-		}
-	}
-
-	private ResultActions doRequest() throws Exception {
-		return mockMvc.perform(get(RootController.PATH)).andExpect(status().isOk());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerTest.java
deleted file mode 100644
index d5a33f093432974751ff02c0b0803b5e6cec00dd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RootControllerTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.boot.info.BuildProperties;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import lombok.SneakyThrows;
-
-class RootControllerTest {
-
-	@Spy
-	@InjectMocks
-	private RootController controller;
-	@Mock
-	private BuildProperties properties;
-	@Mock
-	private RootModelAssembler modelAssembler;
-	@Mock
-	private RootProperties rootProperties;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void mock() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-
-		when(modelAssembler.toModel(any())).thenAnswer(i -> EntityModel.of(i.getArguments()[0]));
-		when(rootProperties.getBarrierefreiheitUrl()).thenReturn(RootTestFactory.BARRIEREFREIHEIT_URL);
-	}
-
-	@DisplayName("Root")
-	@Nested
-	class TestRoot {
-
-		@SneakyThrows
-		@Test
-		void shouldHaveJavaVersion() {
-			doRequest().andExpect(jsonPath("$.javaVersion").exists());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveVersion() {
-			when(properties.getVersion()).thenReturn("42");
-
-			doRequest().andExpect(jsonPath("$.version").value("42"));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveBuildTime() {
-			when(properties.getTime()).thenReturn(LocalDateTime.parse("2021-04-01T10:30").toInstant(ZoneOffset.UTC));
-
-			doRequest().andExpect(jsonPath("$.buildTime").exists());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveProduction() {
-			doRequest().andExpect(jsonPath("$.production").exists());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveBarrierefreiheitUrl() {
-			doRequest().andExpect(jsonPath("$.barrierefreiheitUrl").value(RootTestFactory.BARRIEREFREIHEIT_URL));
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(RootController.PATH)).andExpect(status().isOk());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RootModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RootModelAssemblerTest.java
deleted file mode 100644
index ebdd8bb4d4461195166315635220275d7eb5884c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RootModelAssemblerTest.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.system.SystemStatusService;
-
-class RootModelAssemblerTest {
-
-	@Spy
-	@InjectMocks
-	private RootModelAssembler modelAssembler;
-	@Mock
-	private CurrentUserService currentUserService;
-	@Mock
-	private SystemStatusService systemStatusService;
-	@Mock
-	private UserManagerUrlProvider userManagerUrlProvider;
-	@Mock
-	private RootViewLinkHandler viewLinkHandler;
-
-	private Root root = RootTestFactory.create();
-
-	@DisplayName("Links for user")
-	@Nested
-	class TestLinks {
-
-		@DisplayName("with role " + UserRole.VERWALTUNG_USER)
-		@Nested
-		class TestWithVerwaltungRole {
-
-			@BeforeEach
-			void mockCurrentUserService() {
-				doReturn(true).when(modelAssembler).hasVerwaltungRole();
-			}
-
-			@Test
-			void shouldHaveSelfLink() {
-				var model = modelAssembler.toModel(root);
-
-				assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent();
-			}
-
-			@Test
-			void shouldHaveDownloadTokenLink() {
-				var model = modelAssembler.toModel(root);
-
-				assertThat(model.getLink(RootModelAssembler.REL_DOWNLOAD_TOKEN)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/downloadtoken");
-			}
-		}
-
-		@DisplayName("with no role")
-		@Nested
-		class TestWithNoRole {
-
-			@BeforeEach
-			void mockCurrentUserService() {
-				when(currentUserService.hasRole(anyString())).thenReturn(false);
-			}
-
-			@Test
-			void shouldHaveNoLinkAtAll() {
-				var model = modelAssembler.toModel(root);
-
-				assertThat(model.getLinks()).isEmpty();
-			}
-		}
-
-		@DisplayName("current user")
-		@Nested
-		class CurrentUser {
-
-			@DisplayName("when usermanager url is configured")
-			@Nested
-			class UsermanagerUrlConfigured {
-
-				private String userProfileTemplate = "UserProfileTemplate/%s";
-
-				@BeforeEach
-				void mock() {
-					when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(true);
-					when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(userProfileTemplate);
-					when(currentUserService.findUserId()).thenReturn(Optional.of(UserProfileTestFactory.ID));
-				}
-
-				@Test
-				void shouldHaveCurrentUserLinkWithUserId() {
-					var model = modelAssembler.toModel(root);
-
-					assertThat(model.getLink(RootModelAssembler.REL_CURRENT_USER))
-							.isPresent().get().extracting(Link::getHref)
-							.isEqualTo("UserProfileTemplate/" + UserProfileTestFactory.ID);
-				}
-
-			}
-
-			@DisplayName("when usermanager url is not configured")
-			@Nested
-			class UsermanagerUrlNotConfigured {
-
-				@BeforeEach
-				void mock() {
-					when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(false);
-				}
-
-				@Test
-				void shouldNotHaveCurrentUserLink() {
-					var model = modelAssembler.toModel(root);
-
-					assertThat(model.getLink(RootModelAssembler.REL_CURRENT_USER)).isNotPresent();
-				}
-			}
-		}
-	}
-
-	@DisplayName("Test user assistance documentation link")
-	@Nested
-	class TestDocumentationLink {
-
-		private static final String DOCUMENTATION_URL = "http://alfa-docs";
-
-		@Test
-		void shouldNotHaveLinkForUndefinedUrl() {
-			var link = modelAssembler.toModel(root);
-
-			assertThat(link.getLink(RootModelAssembler.REL_DOCUMENTATIONS)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveLinkForDefinedUrl() {
-			ReflectionTestUtils.setField(modelAssembler, "documentationUrl", DOCUMENTATION_URL);
-
-			var link = modelAssembler.toModel(root);
-
-			assertThat(link.getLink(RootModelAssembler.REL_DOCUMENTATIONS))
-					.isPresent()
-					.map(Link::getHref)
-					.hasValue(DOCUMENTATION_URL);
-		}
-
-		@Test
-		void shouldNotHaveLinkForEmptyStringUrl() {
-			ReflectionTestUtils.setField(modelAssembler, "documentationUrl", "");
-
-			var link = modelAssembler.toModel(root);
-
-			assertThat(link.getLink(RootModelAssembler.REL_DOCUMENTATIONS)).isEmpty();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RootTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RootTestFactory.java
deleted file mode 100644
index 858aa28e9cbf3cf9991ee5e687eec0a0caef9d39..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RootTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-public class RootTestFactory {
-
-	public static final String BARRIEREFREIHEIT_URL = "https://barrierefreiheit.de/";
-
-	public static Root create() {
-		return createBuilder().build();
-	}
-
-	public static Root.RootBuilder createBuilder() {
-		return Root.builder().barrierefreiheitUrl(BARRIEREFREIHEIT_URL);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/RootViewLinkHandlerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/RootViewLinkHandlerTest.java
deleted file mode 100644
index c626a7ad29a639313e4d30a6c07bb59ea223112f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/RootViewLinkHandlerTest.java
+++ /dev/null
@@ -1,745 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.system.SystemStatusService;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-class RootViewLinkHandlerTest {
-
-	@Spy
-	@InjectMocks
-	private RootViewLinkHandler viewLinkHandler;
-	@Mock
-	private CurrentUserService currentUserService;
-	@Mock
-	private SystemStatusService systemStatusService;
-
-	@DisplayName("Add view links")
-	@Nested
-	class TestAddViewLinks {
-
-		@Mock
-		private Root rootResource;
-
-		private Optional<UserId> emptyUserId = Optional.empty();
-
-		@Test
-		void shouldAddVorgaengeAllLink() {
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-			viewLinkHandler.addViewLinks(modelBuilder, emptyUserId);
-
-			assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.ALL_VORGAENGE_REL))
-					.get().extracting(Link::getHref).isEqualTo("/api/vorgangs?page=0&limit=100");
-		}
-
-		@Test
-		void shouldCallAddSearchAllVorgaengeLink() {
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-			viewLinkHandler.addViewLinks(modelBuilder, emptyUserId);
-
-			verify(viewLinkHandler).addSearchAllVorgaengeLink(modelBuilder);
-		}
-
-		@Test
-		void shouldAddLinksForVerwaltungPoststelle() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-			viewLinkHandler.addViewLinks(modelBuilder, emptyUserId);
-
-			verify(viewLinkHandler).addViewLinksForVerwaltungPoststelle(modelBuilder, emptyUserId);
-		}
-
-		@Test
-		void shouldAddLinksForVerwaltungUser() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-			viewLinkHandler.addViewLinks(modelBuilder, emptyUserId);
-
-			verify(viewLinkHandler).addViewLinksForVerwaltungUser(modelBuilder, emptyUserId);
-		}
-
-		@DisplayName("for " + UserRole.VERWALTUNG_POSTSTELLE)
-		@Nested
-		class TestVerwaltungPoststelle {
-
-			private final ModelBuilder<Root> modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-			@Test
-			void shouldCallBuildMyVorgaengeLink() {
-				viewLinkHandler.addViewLinksForVerwaltungPoststelle(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildMyVorgaengeLink(UserProfileTestFactory.ID);
-			}
-
-			@DisplayName("search my vorgaenge")
-			@Nested
-			class TestSearchMyVorgaenge {
-
-				@DisplayName("on configured search server")
-				@Nested
-				class TestOnConfiguredSearchServer {
-
-					@Test
-					void shouldCallBuildSearchMyVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(true);
-
-						viewLinkHandler.addViewLinksForVerwaltungPoststelle(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler).buildSearchMyVorgaengeLink(UserProfileTestFactory.ID);
-					}
-				}
-
-				@DisplayName("on not configured search server")
-				@Nested
-				class TestOnNotConfiguredSearchServer {
-
-					@Test
-					void shouldNotCallBuildSearchMyVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(false);
-
-						viewLinkHandler.addViewLinksForVerwaltungPoststelle(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler, never()).buildSearchMyVorgaengeLink(any());
-					}
-				}
-			}
-		}
-
-		@DisplayName("for " + UserRole.VERWALTUNG_USER)
-		@Nested
-		class TestVerwaltungUser {
-
-			private final ModelBuilder<Root> modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-			@Test
-			void shouldCallAddUnassignedVorgaengeLink() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildGetAllUnassignedVorgaengeLink();
-			}
-
-			@Test
-			void shouldCallAddMyVorgaengeLink() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildMyVorgaengeLink(UserProfileTestFactory.ID);
-			}
-
-			@DisplayName("search my vorgaenge")
-			@Nested
-			class TestSearchMy {
-
-				@DisplayName("on configured search server")
-				@Nested
-				class TestOnConfiguredSearchServer {
-
-					@Test
-					void shouldCallBuildSearchMyVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(true);
-
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler).buildSearchMyVorgaengeLink(UserProfileTestFactory.ID);
-					}
-				}
-
-				@DisplayName("on not configured search server")
-				@Nested
-				class TestOnNotConfiguredSearchServer {
-
-					@Test
-					void shouldNotCallBuildSearchMyVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(false);
-
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler, never()).buildSearchMyVorgaengeLink(any());
-					}
-				}
-			}
-
-			@Test
-			void shouldCallAddVorgangStatusLinks() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).addAllVorgangStatusLinks(modelBuilder);
-			}
-
-			@Test
-			void shouldCallAddMyVorgaengeStatusLinks() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildMyVorgaengeStatusLinks(UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallAddUnassignedVorgaengeStatusLinks() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildUnassignedVorgaengeStatusLinks();
-			}
-
-			@DisplayName("search unassigned vorgaenge")
-			@Nested
-			class TestSearchUnassignedVorgaengeLink {
-
-				@DisplayName("with configured search server")
-				@Nested
-				class TestWithConfiguredSearchServer {
-
-					@Test
-					void shouldCallBuildSearchUnassignedVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(true);
-
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler).buildSearchUnassignedVorgaengeLink();
-					}
-				}
-
-				@DisplayName("with not configured search server")
-				@Nested
-				class TestWithNotConfiguredSearchServer {
-
-					@Test
-					void shouldNotCallBuildSearchUnassignedVorgaengeLink() {
-						when(systemStatusService.isSearchServerAvailable()).thenReturn(false);
-
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						verify(viewLinkHandler, never()).buildSearchUnassignedVorgaengeLink();
-					}
-				}
-			}
-
-			@DisplayName("vorgaenge with open wiedervorlagen")
-			@Nested
-			class TestVorgaengeWithOpenWiedervorlagen {
-
-				@Test
-				void shouldAddAllLink() {
-					var modelBuilder = ModelBuilder.fromEntity(rootResource);
-					viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-					assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.ALL_WIEDERVORLAGEN_REL))
-							.get().extracting(Link::getHref).isEqualTo("/api/vorgangs?page=0&limit=100&nextFrist=exists");
-				}
-
-				@DisplayName("considering user")
-				@Nested
-				class TestConsideringUser {
-
-					@Test
-					void shouldAddAssignedLinkIfExists() {
-						var modelBuilder = ModelBuilder.fromEntity(rootResource);
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-						assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.MY_WIEDERVORLAGEN_REL))
-								.get().extracting(Link::getHref)
-								.isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID + "&nextFrist=exists");
-					}
-
-					@Test
-					void shoulNotAddAssignedLinkIfNotExists() {
-						var modelBuilder = ModelBuilder.fromEntity(rootResource);
-						viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.empty());
-
-						assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.MY_WIEDERVORLAGEN_REL)).isNotPresent();
-					}
-				}
-
-				@Test
-				void shouldAddUnassignedLink() {
-					var modelBuilder = ModelBuilder.fromEntity(rootResource);
-					viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-					assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.UNASSIGNED_WIEDERVORLAGEN_REL))
-							.get().extracting(Link::getHref).isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=&nextFrist=exists");
-				}
-			}
-
-			@Test
-			void shouldAddLinksForUngeleseneNachrichten() {
-				viewLinkHandler.addViewLinksForVerwaltungUser(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-			}
-		}
-
-		@DisplayName("search all vorgaenge")
-		@Nested
-		class TestSearchAllVorgaenge {
-
-			@Test
-			void shouldBeAddedIfSearchServerIsAvailable() {
-				when(systemStatusService.isSearchServerAvailable()).thenReturn(true);
-
-				var modelBuilder = ModelBuilder.fromEntity(rootResource);
-				viewLinkHandler.addSearchAllVorgaengeLink(modelBuilder);
-
-				assertThat(modelBuilder.buildModel().getLink(RootViewLinkHandler.SEARCH_ALL_REL))
-						.get().extracting(Link::getHref).isEqualTo("/api/vorgangs?page=0&limit=100&searchBy={searchBy}");
-			}
-
-			@Test
-			void shouldNotBeAddedIfSearchServerIsUnavailable() {
-				when(systemStatusService.isSearchServerAvailable()).thenReturn(false);
-
-				var modelBuilder = spy(ModelBuilder.fromEntity(rootResource));
-				viewLinkHandler.addSearchAllVorgaengeLink(modelBuilder);
-
-				verify(modelBuilder, never()).addLink(any(Link.class));
-			}
-		}
-
-		@DisplayName("my vorgaenge")
-		@Nested
-		class TestAddMyLink {
-
-			@Test
-			void shouldBeAddedIfUserIsPresent() {
-				var link = viewLinkHandler.buildMyVorgaengeLink(UserProfileTestFactory.ID);
-
-				assertThat(link.getHref()).isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID);
-			}
-		}
-
-		@DisplayName("search my vorgaenge")
-		@Nested
-		class TestSearchMyVorgaengeLink {
-
-			@Test
-			void shouldCallBuild() {
-				viewLinkHandler.buildSearchMyVorgaengeLink(UserProfileTestFactory.ID);
-
-				verify(viewLinkHandler).buildGetAllVorgaengeByAssignedToAndSearchByLink(UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldBuildLinkWithMyVorgaengeRel() {
-				var link = viewLinkHandler.buildSearchMyVorgaengeLink(UserProfileTestFactory.ID);
-
-				assertThat(link.getRel()).extracting(LinkRelation::value).isEqualTo(RootViewLinkHandler.SEARCH_MY_VORGEANGE_REL);
-			}
-		}
-
-		@DisplayName("search unassigned vorgaenge")
-		@Nested
-		class TestSearchUnassignedVorgaenge {
-
-			@Test
-			void shouldBuildLink() {
-				var link = viewLinkHandler.buildSearchUnassignedVorgaengeLink();
-
-				assertThat(link.getHref()).isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=&searchBy={searchBy}");
-				assertThat(link.getRel().value()).isEqualTo(RootViewLinkHandler.SEARCH_UNASSIGNED_VORGEANGE_REL);
-			}
-		}
-
-		@DisplayName("search all vorgaenge by assignedTo")
-		@Nested
-		class TestBuildGetAllVorgaengeByAssigendToAndSearchLink {
-
-			@Test
-			void shouldBuildLink() {
-				var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndSearchByLink(UserProfileTestFactory.ID).withSelfRel();
-
-				assertThat(link).extracting(Link::getHref)
-						.isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID.toString() + "&searchBy={searchBy}");
-			}
-		}
-
-		@DisplayName("all vorgang status")
-		@Nested
-		class TestAddAllVorgangStatusLinks {
-
-			private final ModelBuilder<Root> modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-			@Test
-			void shouldCallAddVorgangStatusLinks() {
-				viewLinkHandler.addAllVorgangStatusLinks(modelBuilder);
-
-				verify(viewLinkHandler).addVorgangStatusLinks(modelBuilder, RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE);
-			}
-		}
-
-		@DisplayName("my vorgang status")
-		@Nested
-		class TestAddMyVorgangStatusLinks {
-
-			@Test
-			void shouldCallAddVorgangStatusLink() {
-				viewLinkHandler.buildMyVorgaengeStatusLinks(UserProfileTestFactory.ID);
-
-				verify(viewLinkHandler).buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, UserProfileTestFactory.ID);
-			}
-
-		}
-
-		@DisplayName("vorgang status")
-		@Nested
-		class TestBuildVorgangStatusLinks {
-
-			private final UserId userId = UserProfileTestFactory.ID;
-
-			@Test
-			void shouldCallBuildVorgangListByPageLink() {
-				viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID);
-
-				verify(viewLinkHandler, times(7)).buildGetAllVorgaengeByAssignedToAndStatus(
-						any(VorgangStatus.class),
-						eq(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE),
-						eq(userId));
-			}
-
-			@Test
-			void shouldCallFormatLinkRelTemplate() {
-				viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID);
-
-				verify(viewLinkHandler, times(7)).formatLinkRelTemplate(eq(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE), any(VorgangStatus.class));
-			}
-
-			@Test
-			void shouldBuildLinks() {
-				var links = viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID);
-
-				assertThat(links).hasSize(7);
-			}
-		}
-
-		@DisplayName("format linkrel template")
-		@Nested
-		class TestFormatLinkRelTemplate {
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldCallFormatLinkRelTemplateWithAllVorgaengeTemplate(VorgangStatus status) {
-				var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, status);
-
-				assertThat(linkRel).isEqualTo("vorgaenge_" + status.toString().toLowerCase() + "_all");
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldCallFormatLinkRelTemplateWithMyVorgaengeTemplate(VorgangStatus status) {
-				var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, status);
-
-				assertThat(linkRel).isEqualTo("vorgaenge_" + status.toString().toLowerCase() + "_my");
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldCallFormatLinkRelTemplateWithUnassignedVorgaengeTemplate(VorgangStatus status) {
-				var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_UNASSIGNED_REL_TEMPLATE, status);
-
-				assertThat(linkRel).isEqualTo("vorgaenge_" + status.toString().toLowerCase() + "_unassigned");
-			}
-		}
-
-		@DisplayName("build get all vorgaenge by status")
-		@Nested
-		class TestBuildGetAllByStatus {
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldAddByStatus(VorgangStatus status) {
-				var link = viewLinkHandler.buildGetAllVorgaengeByStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE);
-
-				assertThat(link.getHref()).isEqualTo("/api/vorgangs?page=0&limit=100&status=" + status.toString());
-			}
-
-		}
-
-		@DisplayName("build get all vorgaenge by assignedTo and status")
-		@Nested
-		class TestBuildGetAllVorgaengeByAssignedToAndStatus {
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldAddByAssignedToAndStatus(VorgangStatus status) {
-				var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
-						UserProfileTestFactory.ID);
-
-				assertThat(link.getHref()).isEqualTo(
-						"/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID.toString() + "&status=" + status.toString());
-			}
-		}
-
-		@DisplayName("build get all unassigned vorgaenge by status")
-		@Nested
-		class TestBuildGetAllUnassignedVorgaengeByStatus {
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
-					"ZU_LOESCHEN" })
-			void shouldAddByUnassignedToAndStatus(VorgangStatus status) {
-				var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
-						UserId.empty());
-
-				assertThat(link.getHref()).isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=&status=" + status.toString());
-			}
-		}
-	}
-
-	@Nested
-	class TestBuildGelAllByUngeleseneNachrichtenLink {
-
-		@Test
-		void shouldHaveLinkHref() {
-			var link = viewLinkHandler.buildGelAllByUngeleseneNachrichtenLink();
-
-			assertThat(link)
-					.extracting(Link::getHref)
-					.isEqualTo("/api/vorgangs?page=0&limit=100&nachrichten=ungelesene");
-		}
-
-		@Test
-		void shouldHaveLinkRel() {
-			var link = viewLinkHandler.buildGelAllByUngeleseneNachrichtenLink();
-
-			assertThat(link)
-					.extracting(Link::getRel)
-					.extracting(LinkRelation::value)
-					.isEqualTo(RootViewLinkHandler.ALL_UNGELESENE_NACHRICHTEN_REL);
-		}
-	}
-
-	@Nested
-	class TestBuildGetAllByAssignedToAndUngeleseneNachrichten {
-
-		@Nested
-		class AssignTo {
-
-			@Test
-			void shouldHaveLink() {
-				var link = viewLinkHandler.buildGetAllByAssignedToAndUngeleseneNachrichten(UserProfileTestFactory.ID,
-						RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-
-				assertThat(link)
-						.extracting(Link::getHref)
-						.isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID + "&nachrichten=ungelesene");
-			}
-
-			@Test
-			void shouldHaveLinkRel() {
-				var link = viewLinkHandler.buildGetAllByAssignedToAndUngeleseneNachrichten(UserProfileTestFactory.ID,
-						RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-
-				assertThat(link)
-						.extracting(Link::getRel)
-						.extracting(LinkRelation::value)
-						.isEqualTo(RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-			}
-		}
-
-		@Nested
-		class Unassigned {
-
-			@Test
-			void shouldHaveLink() {
-				var link = viewLinkHandler.buildGetAllByAssignedToAndUngeleseneNachrichten(UserId.empty(),
-						RootViewLinkHandler.UNASSIGNED_UNGELESENE_NACHRICHTEN_REL);
-
-				assertThat(link)
-						.extracting(Link::getHref)
-						.isEqualTo("/api/vorgangs?page=0&limit=100&assignedTo=&nachrichten=ungelesene");
-			}
-
-			@Test
-			void shouldHaveLinkRel() {
-				var link = viewLinkHandler.buildGetAllByAssignedToAndUngeleseneNachrichten(UserId.empty(),
-						RootViewLinkHandler.UNASSIGNED_UNGELESENE_NACHRICHTEN_REL);
-
-				assertThat(link)
-						.extracting(Link::getRel)
-						.extracting(LinkRelation::value)
-						.isEqualTo(RootViewLinkHandler.UNASSIGNED_UNGELESENE_NACHRICHTEN_REL);
-			}
-
-		}
-
-	}
-
-	@Nested
-	class TestAddGetByUngeleseneNachrichtenLinks {
-
-		@Mock
-		private Root rootResource;
-		private final ModelBuilder<Root> modelBuilder = ModelBuilder.fromEntity(rootResource);
-		private final Link linkAllUngeleseneNachrichten = Link.of(LoremIpsum.getInstance().getUrl());
-		private final Link linkMyUngeleseneNachrichten = Link.of(LoremIpsum.getInstance().getUrl());
-		private final Link linkUnassignedUngeleseneNachrichten = Link.of(LoremIpsum.getInstance().getUrl());
-
-		@BeforeEach
-		void setUp() {
-			doReturn(linkAllUngeleseneNachrichten).when(viewLinkHandler).buildGelAllByUngeleseneNachrichtenLink();
-			doReturn(linkUnassignedUngeleseneNachrichten).when(viewLinkHandler)
-					.buildGetAllByAssignedToAndUngeleseneNachrichten(UserId.empty(), RootViewLinkHandler.UNASSIGNED_UNGELESENE_NACHRICHTEN_REL);
-		}
-
-		@Test
-		void shouldBuildLinkForUngeleseneNachrichten() {
-			viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-			verify(viewLinkHandler).buildGelAllByUngeleseneNachrichtenLink();
-		}
-
-		@Test
-		void shouldAddLinkForUngeleseneNachrichten() {
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-			viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-			assertThat(modelBuilder.buildModel().getLinks()).contains(linkAllUngeleseneNachrichten);
-		}
-
-		@Test
-		void shouldBuildLinkForUnassignedUngeleseneNachrichten() {
-			viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.empty());
-
-			verify(viewLinkHandler).buildGetAllByAssignedToAndUngeleseneNachrichten(UserId.empty(),
-					RootViewLinkHandler.UNASSIGNED_UNGELESENE_NACHRICHTEN_REL);
-		}
-
-		@Test
-		void shouldAddLinkForUnassignedUngeleseneNachrichten() {
-			var modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-			viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.empty());
-
-			assertThat(modelBuilder.buildModel().getLinks()).contains(linkUnassignedUngeleseneNachrichten);
-		}
-
-		@Nested
-		class UsedIdExists {
-
-			@BeforeEach
-			void setUp() {
-				doReturn(linkMyUngeleseneNachrichten).when(viewLinkHandler).buildGetAllByAssignedToAndUngeleseneNachrichten(UserProfileTestFactory.ID,
-						RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-			}
-
-			@Test
-			void shouldBuildLinkForMyUngeleseneNachrichten() {
-				viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				verify(viewLinkHandler).buildGetAllByAssignedToAndUngeleseneNachrichten(UserProfileTestFactory.ID,
-						RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-			}
-
-			@Test
-			void shouldAddLinkForMyUngeleseneNachrichten() {
-				var modelBuilder = ModelBuilder.fromEntity(rootResource);
-
-				viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.of(UserProfileTestFactory.ID));
-
-				assertThat(modelBuilder.buildModel().getLinks()).contains(linkMyUngeleseneNachrichten);
-			}
-		}
-
-		@Nested
-		class UserIdEmpty {
-
-			@Test
-			void shouldNotBuildLinkForMyUngeleseneNachrichten() {
-				viewLinkHandler.addGetByUngeleseneNachrichtenLinks(modelBuilder, Optional.empty());
-
-				verify(viewLinkHandler, never()).buildGetAllByAssignedToAndUngeleseneNachrichten(UserProfileTestFactory.ID,
-						RootViewLinkHandler.MY_UNGELESENE_NACHRICHTEN_REL);
-			}
-		}
-
-	}
-
-	//	@DisplayName("Test user assistance documentation link")
-	//	@Nested
-	//	class TestDocumentationLink {
-	//
-	//		private static final String DOCUMENTATION_URL = "http://alfa-docs";
-	//
-	//		@Test
-	//		void shouldNotHaveLinkForUndefinedUrl() {
-	//			var link = viewLinkHandler.toModel(root);
-	//
-	//			assertThat(link.getLink(RootViewLinkHandler.REL_DOCUMENTATIONS)).isEmpty();
-	//		}
-	//
-	//		@Test
-	//		void shouldHaveLinkForDefinedUrl() {
-	//			ReflectionTestUtils.setField(viewLinkHandler, "documentationUrl", DOCUMENTATION_URL);
-	//
-	//			var link = viewLinkHandler.toModel(root);
-	//
-	//			assertThat(link.getLink(RootViewLinkHandler.REL_DOCUMENTATIONS))
-	//					.isPresent()
-	//					.map(Link::getHref)
-	//					.hasValue(DOCUMENTATION_URL);
-	//		}
-	//
-	//		@Test
-	//		void shouldNotHaveLinkForEmptyStringUrl() {
-	//			ReflectionTestUtils.setField(viewLinkHandler, "documentationUrl", "");
-	//
-	//			var link = viewLinkHandler.toModel(root);
-	//
-	//			assertThat(link.getLink(RootViewLinkHandler.REL_DOCUMENTATIONS)).isEmpty();
-	//		}
-	//
-	//	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/SecurityTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/SecurityTestFactory.java
deleted file mode 100644
index 9b64325252c99ae3ee0e8f91f371e5609e260b90..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/SecurityTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class SecurityTestFactory {
-
-	static final String SUBJECT = UserProfileTestFactory.ID.toString();
-	static final String USER_FIRSTNAME = "Tim";
-	static final String USER_LASTNAME = "Tester";
-	static final String ROLE = "Testrolle";
-	static final List<SimpleGrantedAuthority> AUTHORITIES = Arrays.asList(new SimpleGrantedAuthority(ROLE));
-	static final Collection<String> ORGANSIATIONSEINHEIT_IDS = List.of("812546");
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java
deleted file mode 100644
index 98c3b71d19a838674ca853d415457eddd448f783..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/aktenzeichen/AktenzeichenModelProcessorTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.aktenzeichen;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.InjectMocks;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.UriTemplate;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class AktenzeichenModelProcessorTest {
-
-	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@InjectMocks
-	private AktenzeichenModelProcessor processor;
-
-	@Nested
-	class TestSetAktenzeichenLink {
-
-		@DisplayName("should not add a link if Vorgang is not present")
-		@Test
-		void shouldDoNothing() {
-			var model = processor.process(mock(EntityModel.class));
-
-			assertThat(model.hasLinks()).isFalse();
-		}
-
-		@ParameterizedTest
-		@EnumSource(names = { "ANGENOMMEN", "IN_BEARBEITUNG" }, mode = EnumSource.Mode.EXCLUDE)
-		void shouldNotCreateSetAktenzeichenLink(Vorgang.VorgangStatus vorgangStatus) {
-			initUserProfileUrlProvider(urlProvider);
-
-			var model = processor.process(buildModelWithVorgangStatus(vorgangStatus));
-
-			assertThat(model.getLink(AktenzeichenModelProcessor.REL_SET_AKTENZEICHEN)).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(names = { "ANGENOMMEN", "IN_BEARBEITUNG" })
-		void shouldCreateSetAktenzeichenLink(Vorgang.VorgangStatus vorgangStatus) {
-			initUserProfileUrlProvider(urlProvider);
-
-			var model = processor.process(buildModelWithVorgangStatus(vorgangStatus));
-
-			assertThat(model.getLink(AktenzeichenModelProcessor.REL_SET_AKTENZEICHEN)).isPresent().get()
-					.extracting(Link::getHref)
-					.isEqualTo(UriTemplate.of(CommandController.CommandByRelationController.COMMAND_BY_RELATION_PATH)
-							.expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString()
-					);
-		}
-	}
-
-	private EntityModel<VorgangWithEingang> buildModelWithVorgangStatus(Vorgang.VorgangStatus vorgangStatus) {
-		return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().status(vorgangStatus).build());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangControllerTest.java
deleted file mode 100644
index a24e03e69012ef646a33ebf16c4a537de56edc05..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentByVorgangControllerTest.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.attachment;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.io.OutputStream;
-import java.util.List;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileModelAssembler;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileService;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.common.zipdownload.ZipDownloadService;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class AttachmentByVorgangControllerTest {
-
-	@Spy
-	@InjectMocks
-	private AttachmentByVorgangController controller;
-	@Mock
-	private BinaryFileModelAssembler modelAssembler;
-	@Mock
-	private OzgFileService fileService;
-	@Mock
-	private ZipDownloadService zipDownloadService;
-	@Mock
-	private VorgangController vorgangController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetAttachmentsByVorgang {
-
-		@BeforeEach
-		void mockFileService() {
-			when(fileService.getAttachments(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(OzgFileTestFactory.create()));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldResponseWithStatusOk() {
-			var result = callEndpoint();
-
-			result.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallModelAssembler() {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(ArgumentMatchers.<Stream<OzgFile>>any());
-		}
-
-		@SneakyThrows
-		private ResultActions callEndpoint() {
-			return mockMvc.perform(
-					get(AttachmentByVorgangController.PATH.replace("{vorgangId}", VorgangHeaderTestFactory.ID))
-							.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE));
-		}
-	}
-
-	@DisplayName("Download")
-	@Nested
-	class TestDownload {
-		private final String filename = LoremIpsum.getInstance().getWords(1);
-
-		@BeforeEach
-		void setUpMock() {
-			doReturn(filename).when(controller).buildZipName(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldRespondWithStatusOk() {
-			var response = doRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldBuildZipName() {
-			doRequest();
-
-			verify(controller).buildZipName(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveContentDispositonHeader() {
-			var response = doRequest();
-
-			response.andExpect(header().string(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveContentType() {
-			var response = doRequest();
-
-			response.andExpect(header().string(HttpHeaders.CONTENT_TYPE, AttachmentByVorgangController.APPLICATION_ZIP_VALUE));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldWriteZipFile() {
-			doRequest();
-
-			verify(controller).createZipFile(any(), eq(VorgangHeaderTestFactory.ID));
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(asyncDispatch(
-							mockMvc.perform(get(AttachmentByVorgangController.PATH.replace("{vorgangId}", VorgangHeaderTestFactory.ID))
-											.header(HttpHeaders.ACCEPT, AttachmentByVorgangController.APPLICATION_ZIP_VALUE))
-									.andReturn()))
-					.andExpect(status().isOk());
-		}
-	}
-
-	@Nested
-	class TestBuildZipName {
-		private final String vorgangId = UUID.randomUUID().toString();
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void mockVorgangController() {
-			when(vorgangController.getVorgang(vorgangId)).thenReturn(vorgang);
-		}
-
-		@Test
-		void shouldCallVorgangController() {
-			callController();
-
-			verify(vorgangController).getVorgang(vorgangId);
-		}
-
-		@Test
-		void shouldReturnFileName() {
-			var resultFileName = callController();
-
-			assertThat(resultFileName).isEqualTo(vorgang.getNummer() + "_Anhaenge.zip");
-		}
-
-		private String callController() {
-			return controller.buildZipName(vorgangId);
-		}
-	}
-
-	@Nested
-	class TestCreateZipFile {
-		@Mock
-		private OutputStream outputStream;
-
-		@Test
-		void shouldGetAttachments() {
-			callController();
-
-			verify(fileService).getAttachments(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallZipDownloadService() {
-			var ozgFile = OzgFileTestFactory.create();
-			when(fileService.getAttachments(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(ozgFile));
-
-			callController();
-
-			verify(zipDownloadService).write(List.of(ozgFile), outputStream);
-		}
-
-		private void callController() {
-			controller.createZipFile(outputStream, VorgangHeaderTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentMapperTest.java
deleted file mode 100644
index bb3bdbcef5f77ed85b6049c9de170fce70f56e7e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/AttachmentMapperTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.attachment;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Test;
-
-import com.google.common.collect.Lists;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-
-class AttachmentMapperTest {
-
-	@Test
-	void shouldMapAttachmentsToEmptyList() {
-		var attachments = AttachmentMapper.mapAttachments(null);
-
-		assertThat(attachments).isEmpty();
-	}
-
-	@Test
-	void shouldMapAttachmentsToList() {
-		var attachments = AttachmentMapper.mapAttachments(Lists.newArrayList("a1", "a2"));
-
-		assertThat(attachments).containsExactly(FileId.from("a1"), FileId.from("a2"));
-	}
-
-	@Test
-	void shouldMapOneElementToList() {
-		var attachments = AttachmentMapper.mapAttachments("a1");
-
-		assertThat(attachments).containsExactly(FileId.from("a1"));
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/GrpcGetAttachmentsResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/GrpcGetAttachmentsResponseTestFactory.java
deleted file mode 100644
index f41bac3e3844016b8653c1ea66862b92ccbff7a7..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/attachment/GrpcGetAttachmentsResponseTestFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.attachment;
-
-import java.util.Collections;
-
-import de.ozgcloud.alfa.common.file.GrpcOzgFileTestFactory;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetAttachmentsResponse;
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-
-public class GrpcGetAttachmentsResponseTestFactory {
-
-	private static GrpcOzgFile GRPC_FILE = GrpcOzgFileTestFactory.create();
-
-	public static GrpcGetAttachmentsResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetAttachmentsResponse.Builder createBuilder() {
-		return GrpcGetAttachmentsResponse.newBuilder()
-				.addAllFile(Collections.singleton(GRPC_FILE));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparatorTest.java
deleted file mode 100644
index 00d2595ed975a69e7ab3d536814327d3c11f37f5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByBeschiedenAmComparatorTest.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-
-class BescheidByBeschiedenAmComparatorTest {
-
-	@Spy
-	private BescheidByBeschiedenAmComparator comparator;
-
-	@Nested
-	class TestCompare {
-		int expectedResult = -1;
-		private final Bescheid olderBescheid = BescheidTestFactory.create();
-		private final Bescheid recentBescheid = BescheidTestFactory.create();
-
-		@Test
-		void shouldCompareByStatus() {
-			compare();
-
-			verify(comparator).compareByStatus(olderBescheid, recentBescheid);
-		}
-
-		@Nested
-		class TestWithDraft {
-
-			@BeforeEach
-			void setUpMock() {
-				doReturn(expectedResult).when(comparator).compareByStatus(olderBescheid, recentBescheid);
-			}
-
-			@Test
-			void shouldNotCompareByBeschiedenAm() {
-				compare();
-
-				verify(comparator, never()).compareByBeschiedenAm(any(), any());
-			}
-
-			@Test
-			void shouldNotCompareBySentAt() {
-				compare();
-
-				verify(comparator, never()).compareBySentAt(any(), any());
-			}
-
-			@Test
-			void shouldReturnCompareByStatus() {
-				var compareResult = compare();
-
-				assertThat(compareResult).isEqualTo(expectedResult);
-			}
-
-		}
-
-		@Nested
-		class TestWithoutDraft {
-
-			@BeforeEach
-			void mockCompareByStatus() {
-				doReturn(0).when(comparator).compareByStatus(olderBescheid, recentBescheid);
-			}
-
-			@Nested
-			class TestWithDifferentBeschiedenAm {
-
-				@BeforeEach
-				void setUpMock() {
-					doReturn(expectedResult).when(comparator).compareByBeschiedenAm(olderBescheid, recentBescheid);
-				}
-
-				@Test
-				void shouldCompareByBeschiedenAm() {
-					compare();
-
-					verify(comparator).compareByBeschiedenAm(olderBescheid, recentBescheid);
-				}
-
-				@Test
-				void shouldNotCompareBySentAt() {
-					compare();
-
-					verify(comparator, never()).compareBySentAt(any(), any());
-				}
-
-				@Test
-				void shouldReturnCompareByBeschiedenAmResult() {
-					var compareResult = compare();
-
-					assertThat(compareResult).isEqualTo(expectedResult);
-				}
-			}
-
-			@Nested
-			class TestWithSameBeschiedenAm {
-				@BeforeEach
-				void setUpMock() {
-					doReturn(0).when(comparator).compareByBeschiedenAm(olderBescheid, recentBescheid);
-				}
-
-				@Test
-				void shouldCompareByBeschiedenAm() {
-					compare();
-
-					verify(comparator).compareByBeschiedenAm(olderBescheid, recentBescheid);
-				}
-
-				@Test
-				void shouldCompareBySentAt() {
-					compare();
-
-					verify(comparator).compareBySentAt(any(), any());
-				}
-
-				@Test
-				void shouldReturnCompareBySentAtResult() {
-					doReturn(expectedResult).when(comparator).compareBySentAt(olderBescheid, recentBescheid);
-
-					var compareResult = compare();
-
-					assertThat(compareResult).isEqualTo(expectedResult);
-				}
-			}
-		}
-
-		private int compare() {
-			return comparator.compare(olderBescheid, recentBescheid);
-		}
-	}
-
-	@Nested
-	class TestCompareByStatus {
-		private final Bescheid sentBescheid = BescheidTestFactory.createBuilder().status(BescheidStatus.SENT).build();
-		private final Bescheid draftBescheid = BescheidTestFactory.createBuilder().status(BescheidStatus.DRAFT).build();
-
-		@Test
-		void shouldReturnNegative() {
-			var result = comparator.compareByStatus(sentBescheid, draftBescheid);
-
-			assertThat(result).isNegative();
-		}
-
-		@Test
-		void shouldReturnPositive() {
-			var result = comparator.compareByStatus(draftBescheid, sentBescheid);
-
-			assertThat(result).isPositive();
-		}
-
-		@Test
-		void shouldReturnZero() {
-			var secondSentBescheid = BescheidTestFactory.createBuilder().status(BescheidStatus.SENT).build();
-			var result = comparator.compareByStatus(sentBescheid, secondSentBescheid);
-
-			assertThat(result).isZero();
-		}
-	}
-
-	@Nested
-	class TestCompareByBeschiedenAm {
-		private final Bescheid olderBescheid = BescheidTestFactory.createBuilder().beschiedenAm("2024-05-26").build();
-		private final Bescheid recentBescheid = BescheidTestFactory.createBuilder().beschiedenAm("2024-05-27").build();
-
-		@Test
-		void shouldReturnNegative() {
-			var result = comparator.compareByBeschiedenAm(olderBescheid, recentBescheid);
-
-			assertThat(result).isNegative();
-		}
-
-		@Test
-		void shouldReturnPositive() {
-			var result = comparator.compareByBeschiedenAm(recentBescheid, olderBescheid);
-
-			assertThat(result).isPositive();
-		}
-
-		@Test
-		void shouldReturnZero() {
-			var result = comparator.compareByBeschiedenAm(olderBescheid, olderBescheid);
-
-			assertThat(result).isZero();
-		}
-	}
-
-	@Nested
-	class TestComapreBySentAt {
-
-		private final Bescheid olderBescheid = BescheidTestFactory.createBuilder()
-				.sentInfo(SentInfoTestFactory.create())
-				.build();
-		private final Bescheid recentBescheid = BescheidTestFactory.createBuilder()
-				.sentInfo(SentInfoTestFactory.createBuilder().sentAt(SentInfoTestFactory.SENT_AT.plusHours(1)).build())
-				.build();
-
-		@Test
-		void shouldReturnNegative() {
-			var result = comparator.compareBySentAt(olderBescheid, recentBescheid);
-
-			assertThat(result).isNegative();
-		}
-
-		@Test
-		void shouldReturnPositive() {
-			var result = comparator.compareBySentAt(recentBescheid, olderBescheid);
-
-			assertThat(result).isPositive();
-		}
-
-		@Test
-		void shouldReturnZero() {
-			var result = comparator.compareBySentAt(olderBescheid, olderBescheid);
-
-			assertThat(result).isZero();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByVorgangControllerTest.java
deleted file mode 100644
index 3611415ad72bfdd523a737fdd35c6869f1ae8bdd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidByVorgangControllerTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import lombok.SneakyThrows;
-
-class BescheidByVorgangControllerTest {
-
-	@InjectMocks
-	private BescheidByVorgangController controller;
-
-	@Mock
-	private BescheidService service;
-
-	@Mock
-	private BescheidModelAssembler modelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initMockMvc() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetAll {
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@BeforeEach
-		void setUpMock() {
-			when(service.findByVorgangIdSorted(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(bescheid));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldReturnStatusOk() {
-			var result = callEndpoint();
-
-			result.andExpect(status().isOk());
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldCallService() {
-			callEndpoint();
-
-			verify(service).findByVorgangIdSorted(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldCallModelAssembler() {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(List.of(bescheid));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldReturnCollectionModel() {
-			CollectionModel<EntityModel<Bescheid>> model = CollectionModel.empty();
-			when(modelAssembler.toCollectionModel(List.of(bescheid))).thenReturn(model);
-
-			var result = callEndpoint();
-
-			assertThat(result.andReturn().getResponse().getContentAsString()).isEqualTo("{\"links\":[],\"content\":[]}");
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(BescheidByVorgangController.BESCHEID_BY_VORGANG_PATH + "/" + VorgangHeaderTestFactory.ID + "/bescheids"));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidCommandITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidCommandITCase.java
deleted file mode 100644
index 6b523f3ee12b408ffee620f4174d2c86eb8ab918..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidCommandITCase.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandRemoteService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-public class BescheidCommandITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-	@MockBean
-	private CommandRemoteService commandRemoteService;
-
-	@WithMockUser
-	@Nested
-	class TestCreateCommand {
-
-		@BeforeEach
-		void init() {
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@Test
-		void createCommandWithInvalidBeschiedenAm() throws Exception {
-			String content = createInvalidRequestContent(BescheidTestFactory.createBuilder().beschiedenAm(null).build());
-
-			doRequest(content).andExpect(status().isUnprocessableEntity())
-					.andExpect(jsonPath("$.invalidParams.length()").value(1))
-					.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.body.beschiedenAm"))
-					.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_DATE_FORMAT_INVALID));
-		}
-
-		@ParameterizedTest
-		@ValueSource(strings = { "01.04.2014", "1.4.2014", "1.4.14" })
-		void createCommandWithValidBeschiedenAm(String beschiedenAm) throws Exception {
-			String content = createValidRequestContent(BescheidTestFactory.createBuilder().beschiedenAm(beschiedenAm).build());
-
-			doRequest(content).andExpect(status().isCreated());
-		}
-
-		private static String createValidRequestContent(Bescheid bescheid) {
-			return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithBescheid.json.tmpl",
-					CommandOrder.CREATE_BESCHEID.name(),
-					bescheid.getBeschiedenAm(),
-					String.valueOf(bescheid.getBewilligt()));
-		}
-
-		private static String createInvalidRequestContent(Bescheid bescheid) {
-			return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithInvalidBescheid.json.tmpl",
-					CommandOrder.CREATE_BESCHEID.name(),
-					String.valueOf(bescheid.getBewilligt()));
-		}
-
-		private ResultActions doRequest(String content) throws Exception {
-			return mockMvc.perform(
-					post(CommandByRelationController.COMMAND_BY_RELATION_PATH, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID,
-							VorgangHeaderTestFactory.VERSION)
-									.with(csrf())
-									.contentType(MediaType.APPLICATION_JSON)
-									.content(content));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidControllerTest.java
deleted file mode 100644
index 458337f0fe6848e241ab6c7c702e95fe3f1c598b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidControllerTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.SneakyThrows;
-
-class BescheidControllerTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidController controller;
-	@Mock
-	private BescheidModelAssembler assembler;
-	@Mock
-	private BescheidService bescheidService;
-	@Mock
-	private BinaryFileController binaryFileController;
-
-	private MockMvc mockMvc;
-
-	private final Bescheid draft = BescheidTestFactory.create();
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetDraft {
-
-		@SneakyThrows
-		@Test
-		void shouldCallBescheidService() {
-			doRequest();
-
-			verify(bescheidService).getBescheidDraft(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusNotFoundIfDraftDoesNotExist() {
-			when(bescheidService.getBescheidDraft(BescheidTestFactory.VORGANG_ID)).thenReturn(Optional.empty());
-
-			var response = doRequest();
-
-			response.andExpect(status().isNotFound());
-		}
-
-		@DisplayName("on existing")
-		@Nested
-		class TestOnExistingDraft {
-
-			@BeforeEach
-			void mock() {
-				when(bescheidService.getBescheidDraft(BescheidTestFactory.VORGANG_ID)).thenReturn(Optional.of(draft));
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldCallAssembler() {
-				doRequest();
-
-				verify(assembler).toModel(draft);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldReturnValue() {
-				when(assembler.toModel(draft)).thenReturn(EntityModel.of(draft));
-
-				doRequest().andExpect(status().isOk());
-			}
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(get(BescheidController.PATH).param("vorgangId", VorgangHeaderTestFactory.ID));
-		}
-	}
-
-	@DisplayName("Get Attachments")
-	@Nested
-	class TestGetAttachments {
-
-		@BeforeEach
-		void mock() {
-			doReturn(BescheidTestFactory.create()).when(controller).getBescheid(anyString(), anyString());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldGetBescheid() {
-			doRequest();
-
-			verify(controller).getBescheid(BescheidTestFactory.ID, BescheidTestFactory.VORGANG_ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallBinaryFileController() {
-			doRequest();
-
-			verify(binaryFileController).getFiles(BescheidTestFactory.ATTACHMENTS);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			var response = doRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(
-					get(BescheidController.PATH + "/{bescheidId}/attachments", BescheidTestFactory.ID).param("vorgangId",
-							BescheidTestFactory.VORGANG_ID));
-		}
-	}
-
-	@DisplayName("Get Bescheid")
-	@Nested
-	class TestGetBescheid {
-
-		private final Bescheid matchingBescheid = BescheidTestFactory.create();
-		private final Bescheid notMatchingBescheid = BescheidTestFactory.createBuilder().id("NOT_MATCH").build();
-
-		@BeforeEach
-		void mock() {
-			when(bescheidService.findByVorgangId(anyString())).thenReturn(Stream.of(matchingBescheid, notMatchingBescheid));
-		}
-
-		@DisplayName("should call service to find all bescheid by vorgang")
-		@Test
-		void shouldCallFindByVorgangId() {
-			controller.getBescheid(BescheidTestFactory.ID, VorgangHeaderTestFactory.ID);
-
-			verify(bescheidService).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnMatchingEntry() {
-			var bescheid = controller.getBescheid(BescheidTestFactory.ID, VorgangHeaderTestFactory.ID);
-
-			assertThat(bescheid).isEqualTo(matchingBescheid);
-		}
-
-		@Test
-		void shouldThrowExceptionIfNoBescheidExists() {
-			when(bescheidService.findByVorgangId(anyString())).thenReturn(Stream.empty());
-
-			assertThatThrownBy(() -> controller.getBescheid(BescheidTestFactory.ID, VorgangHeaderTestFactory.ID))
-					.isInstanceOf(TechnicalException.class)
-					.hasMessageContaining("No Bescheid exists for id " + BescheidTestFactory.ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessorTest.java
deleted file mode 100644
index b6bf0944b34d9f7b1f9d93511ae3fe75bc2cd0cb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidHistorieProcessorTest.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.ZonedDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-
-class BescheidHistorieProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidHistorieProcessor processor;
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@DisplayName("Process")
-	@Nested
-	class TestProcess {
-
-		private final Command command = CommandTestFactory.create();
-		private final List<Command> commands = Collections.singletonList(command);
-
-		@BeforeEach
-		void mock() {
-			doReturn(commands).when(processor).filterByOrder(commands);
-			doReturn(commands).when(processor).filterBescheidRelatedCommands(commands);
-		}
-
-		@Test
-		void shouldFilterByOrder() {
-			processor.process(commands);
-
-			verify(processor).filterByOrder(commands);
-		}
-
-		@Test
-		void shouldFilterBescheidRelatedCommands() {
-			processor.process(commands);
-
-			verify(processor).filterBescheidRelatedCommands(commands);
-		}
-
-		@Test
-		void shouldReturnCommands() {
-			var processedCommands = processor.process(commands);
-
-			assertThat(processedCommands).containsExactly(command);
-		}
-	}
-
-	@DisplayName("Filter by order")
-	@Nested
-	class TestFilterByOrder {
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "CREATE_BESCHEID", "DELETE_BESCHEID" })
-		void shouldFilterCommandWithOrder(CommandOrder order) {
-			var command = CommandTestFactory.createBuilder().order(order.name()).build();
-
-			var commands = processor.filterByOrder(Collections.singletonList(command));
-
-			assertThat(commands).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "CREATE_BESCHEID", "DELETE_BESCHEID" })
-		void shouldKeepCommandWithOrder(CommandOrder order) {
-			var command = CommandTestFactory.createBuilder().order(order.name()).build();
-
-			var commands = processor.filterByOrder(Collections.singletonList(command));
-
-			assertThat(commands).containsExactly(command);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "CREATE_ATTACHED_ITEM", "UPDATE_ATTACHED_ITEM", "PATCH_ATTACHED_ITEM" })
-		@DisplayName("should filter bescheid related command")
-		void shouldFilterAttachedItemCommand(CommandOrder order) {
-			var command = CommandTestFactory.createBuilder().order(order.name())
-					.body(Collections.singletonMap(VorgangAttachedItem.FIELD_ITEM_NAME, BescheidHistorieProcessor.BESCHEID_ITEM_NAME))
-					.build();
-
-			var commands = processor.filterByOrder(Collections.singletonList(command));
-
-			assertThat(commands).isEmpty();
-		}
-	}
-
-	@DisplayName("Filter bescheid related commands")
-	@Nested
-	class TestFilterBescheidRelatedCommands {
-
-		private final Command commandToFilter = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString()).build();
-		private final Command command = CommandTestFactory.create();
-		private final List<Command> commands = List.of(commandToFilter, command);
-
-		@BeforeEach
-		void mock() {
-			doReturn(Collections.singletonList(commandToFilter.getId())).when(processor).getExcludedBescheidRelatedCommandIds(any());
-		}
-
-		@Test
-		void shouldGetBescheidRelatedCommandIdsToFilter() {
-			processor.filterBescheidRelatedCommands(commands);
-
-			verify(processor).getExcludedBescheidRelatedCommandIds(commands);
-		}
-
-		@Test
-		void shouldReturnFilteredList() {
-			var filteredCommands = processor.filterBescheidRelatedCommands(commands);
-
-			assertThat(filteredCommands).containsExactly(command);
-		}
-	}
-
-	@DisplayName("Get bescheid related command ids to filter")
-	@Nested
-	class TestGetBescheidRelatedCommandIdsToFilter {
-
-		private final Command sendBescheidCommand = CommandTestFactory.createBuilder()
-				.id(UUID.randomUUID().toString())
-				.relationId(BescheidTestFactory.ID)
-				.order(CommandOrder.SEND_BESCHEID.name())
-				.build();
-		private final Command updateBescheidCommand = CommandTestFactory.createBuilder()
-				.id(UUID.randomUUID().toString())
-				.relationId(BescheidTestFactory.ID)
-				.order(CommandOrder.UPDATE_BESCHEID.name())
-				.build();
-		private final Command updateBescheidCommandOfBescheidNotSent = CommandTestFactory.createBuilder()
-				.id(UUID.randomUUID().toString())
-				.relationId(UUID.randomUUID().toString())
-				.order(CommandOrder.UPDATE_BESCHEID.name())
-				.build();
-		private final List<Command> commands = List.of(sendBescheidCommand, updateBescheidCommand, updateBescheidCommandOfBescheidNotSent);
-
-		@BeforeEach
-		void mock() {
-			doReturn(Collections.singletonList(updateBescheidCommand.getId())).when(processor).getCommandIdsToFilter(any(), any());
-		}
-
-		@Test
-		void shouldGetCommandIdsToFilter() {
-			processor.getExcludedBescheidRelatedCommandIds(commands);
-
-			verify(processor).getCommandIdsToFilter(sendBescheidCommand, commands);
-		}
-
-		@Test
-		void shouldReturnIdsToFilter() {
-			var commandIds = processor.getExcludedBescheidRelatedCommandIds(commands);
-
-			assertThat(commandIds).containsExactlyInAnyOrder(updateBescheidCommand.getId(), updateBescheidCommandOfBescheidNotSent.getId());
-		}
-	}
-
-	@DisplayName("Get commands to filter")
-	@Nested
-	class TestGetCommandsToFilter {
-
-		private final Command sendBescheidCommand = CommandTestFactory.createBuilder()
-				.id(UUID.randomUUID().toString())
-				.relationId(BescheidTestFactory.ID)
-				.order(CommandOrder.SEND_BESCHEID.name()).build();
-
-		private final Command relatedUpdateBescheidCommand = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString())
-				.createdAt(ZonedDateTime.now()).build();
-		private final Command relatedLatestUpdateBescheidCommand = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString())
-				.createdAt(ZonedDateTime.now().plusMinutes(10))
-				.build();
-		private final List<Command> relatedUpdateBescheidCommands = List.of(relatedUpdateBescheidCommand, relatedLatestUpdateBescheidCommand);
-
-		private final Map<String, ?> bescheidItemMap = BescheidTestFactory.createAsMap();
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.createBuilder().item(bescheidItemMap).build();
-
-		@BeforeEach
-		void mock() {
-			when(vorgangAttachedItemService.getById(anyString())).thenReturn(vorgangAttachedItem);
-			doReturn(relatedUpdateBescheidCommands).when(processor).getRelatedUpdateBescheidCommands(sendBescheidCommand,
-					relatedUpdateBescheidCommands);
-		}
-
-		@Test
-		void shouldGetRelatedUpdateBescheidCommands() {
-			processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-			verify(processor).getRelatedUpdateBescheidCommands(sendBescheidCommand, relatedUpdateBescheidCommands);
-		}
-
-		@Test
-		void shouldGetVorgangAttachedItem() {
-			processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-			verify(processor).getVorgangAttachedItem(sendBescheidCommand.getRelationId());
-		}
-
-		@Test
-		void shouldCheckIfManualSent() {
-			processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-			verify(processor).isManualSent(bescheidItemMap);
-		}
-
-		@DisplayName("on send by manual")
-		@Nested
-		class TestOnSendByManualCommand {
-
-			private final VorgangAttachedItem vorgangAttachedItem = createVorgangAttachedItem(createBescheidMap(SendBy.MANUAL));
-
-			@BeforeEach
-			void mock() {
-				when(vorgangAttachedItemService.getById(anyString())).thenReturn(vorgangAttachedItem);
-				doReturn(Stream.of(relatedUpdateBescheidCommand.getId())).when(processor).filterLatestByCreatedAt(any());
-			}
-
-			@Test
-			void shouldCallFilterLatestByCreatedAt() {
-				processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-				verify(processor).filterLatestByCreatedAt(relatedUpdateBescheidCommands);
-			}
-
-			@Test
-			void shouldReturnRelatedCommandIds() {
-				var ids = processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-				assertThat(ids).containsExactly(sendBescheidCommand.getId(), relatedUpdateBescheidCommand.getId());
-			}
-		}
-
-		@DisplayName("on send by nachricht")
-		@Nested
-		class TestOnSendByNachrichtCommand {
-
-			private final VorgangAttachedItem vorgangAttachedItem = createVorgangAttachedItem(createBescheidMap(SendBy.NACHRICHT));
-
-			@BeforeEach
-			void mock() {
-				when(vorgangAttachedItemService.getById(anyString())).thenReturn(vorgangAttachedItem);
-			}
-
-			@Test
-			void shouldReturnRelatedCommandIds() {
-				var ids = processor.getCommandIdsToFilter(sendBescheidCommand, relatedUpdateBescheidCommands);
-
-				assertThat(ids).containsExactly(relatedUpdateBescheidCommand.getId());
-			}
-		}
-
-		private VorgangAttachedItem createVorgangAttachedItem(Map<String, Object> item) {
-			return VorgangAttachedItemTestFactory.createBuilder()
-					.id(BescheidTestFactory.ID)
-					.itemName(BescheidHistorieProcessor.BESCHEID_ITEM_NAME)
-					.item(item)
-					.build();
-		}
-
-		private Map<String, Object> createBescheidMap(SendBy sendBy) {
-			var item = BescheidTestFactory.createAsMap();
-			item.put(Bescheid.SEND_BY_FIELD, sendBy);
-			return item;
-		}
-	}
-
-	@DisplayName("Get related update bescheid commands")
-	@Nested
-	class TestGetRelatedUpdateBescheiCommands {
-
-		private final Command command = CommandTestFactory.create();
-
-		@Test
-		void shouldFilterOnMismatchRelationId() {
-			var commandWithNonMatchingRelationId = CommandTestFactory.createBuilder().relationId(UUID.randomUUID().toString()).build();
-
-			var relatedCommands = processor.getRelatedUpdateBescheidCommands(command, Collections.singletonList(commandWithNonMatchingRelationId));
-
-			assertThat(relatedCommands).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "UPDATE_BESCHEID" })
-		void shouldKeepUpdateBescheidCommandsOnly(CommandOrder order) {
-			var commandWithNonMatchingOrder = CommandTestFactory.createBuilder().order(order.name()).build();
-
-			var relatedCommands = processor.getRelatedUpdateBescheidCommands(command, Collections.singletonList(commandWithNonMatchingOrder));
-
-			assertThat(relatedCommands).containsExactly(commandWithNonMatchingOrder);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "UPDATE_BESCHEID" })
-		void shouldFilterNonUpdateBescheidCommands(CommandOrder order) {
-			var commandWithNonMatchingOrder = CommandTestFactory.createBuilder().order(order.name()).build();
-
-			var relatedCommands = processor.getRelatedUpdateBescheidCommands(command, Collections.singletonList(commandWithNonMatchingOrder));
-
-			assertThat(relatedCommands).isEmpty();
-		}
-	}
-
-	@DisplayName("Get vorgangAttachedItem")
-	@Nested
-	class TestGetVorgangAttachedItem {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void mock() {
-			when(vorgangAttachedItemService.getById(anyString())).thenReturn(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldCallService() {
-			processor.getVorgangAttachedItem(VorgangAttachedItemTestFactory.ID);
-
-			verify(vorgangAttachedItemService).getById(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturn() {
-			var vorgangAttachedItem = processor.getVorgangAttachedItem(VorgangAttachedItemTestFactory.ID);
-
-			assertThat(vorgangAttachedItem).isNotNull().usingRecursiveComparison().isEqualTo(vorgangAttachedItem);
-		}
-	}
-
-	@DisplayName("Is manual sent")
-	@Nested
-	class TestIsManualSent {
-
-		@Test
-		void shouldReturnTrueOnManual() {
-			var manualSent = processor.isManualSent(Map.of(Bescheid.SEND_BY_FIELD, SendBy.MANUAL));
-
-			assertThat(manualSent).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseOnNachricht() {
-			var manualSent = processor.isManualSent(Map.of(Bescheid.SEND_BY_FIELD, SendBy.NACHRICHT));
-
-			assertThat(manualSent).isFalse();
-		}
-
-		@Test
-		void shouldThrowOnMissingSendBy() {
-			var bescheidItemMap = Collections.<String, Object>emptyMap();
-			assertThatThrownBy(() -> processor.isManualSent(bescheidItemMap)).isInstanceOf(NullPointerException.class);
-		}
-	}
-
-	@DisplayName("Filter latest by createdAt")
-	@Nested
-	class TestFilterLatestByCreatedAt {
-
-		private final Command command1 = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString())
-				.createdAt(ZonedDateTime.now().minusHours(12)).build();
-		private final Command command2 = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString()).createdAt(ZonedDateTime.now()).build();
-		private final Command command3 = CommandTestFactory.createBuilder().id(UUID.randomUUID().toString())
-				.createdAt(ZonedDateTime.now().plusHours(12)).build();
-
-		private final List<Command> commands = List.of(command2, command3, command1);
-
-		@Test
-		void shouldFilterLatestCreatedAtCommand() {
-			var filteredCommands = processor.filterLatestByCreatedAt(commands);
-
-			assertThat(filteredCommands).containsExactlyInAnyOrder(command1.getId(), command2.getId());
-		}
-
-		@Test
-		void shouldReturnEmptyIfThereAreNoCommands() {
-			var latestCommandId = processor.filterLatestByCreatedAt(List.of());
-
-			assertThat(latestCommandId).isEmpty();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidMapperTest.java
deleted file mode 100644
index 2b93192a54784deb5eb7ea1a98f68f0933cb7924..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidMapperTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.ZonedDateTime;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class BescheidMapperTest {
-
-	@Mock
-	private FileIdMapper fileIdMapper;
-	@Mock
-	private UserIdMapper userIdMapper;
-	@InjectMocks
-	private final BescheidMapper mapper = Mappers.getMapper(BescheidMapper.class);
-
-	@Nested
-	class TestFromGrpc {
-
-		@Test
-		void shouldMapId() {
-			var bescheid = map();
-
-			assertThat(bescheid.getId()).isEqualTo(GrpcBescheidTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapVorgangId() {
-			var bescheid = map();
-
-			assertThat(bescheid.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapBewilligt() {
-			var bescheid = map();
-
-			assertThat(bescheid.getBewilligt()).isEqualTo(GrpcBescheidTestFactory.BEWILLIGT);
-		}
-
-		@Test
-		void shouldMapBeschiedenAm() {
-			var bescheid = map();
-
-			assertThat(bescheid.getBeschiedenAm()).isEqualTo(GrpcBescheidTestFactory.BESCHIEDEN_AM);
-		}
-
-		@Test
-		void shouldMapBescheidDocument() {
-			var bescheid = map();
-
-			assertThat(bescheid.getBescheidDocument()).isEqualTo(GrpcBescheidTestFactory.BESCHEID_DOCUMENT);
-		}
-
-		@Test
-		void shouldMapAttachments() {
-			when(fileIdMapper.toFileId(any())).thenCallRealMethod();
-
-			var bescheid = map();
-
-			assertThat(bescheid.getAttachments()).containsExactlyInAnyOrderElementsOf(BescheidTestFactory.ATTACHMENTS);
-		}
-
-		@Test
-		void shouldMapNachrichtText() {
-			var bescheid = map();
-
-			assertThat(bescheid.getNachrichtText()).isEqualTo(GrpcBescheidTestFactory.NACHRICHT_TEXT);
-		}
-
-		@Test
-		void shouldMapNachrichtSubject() {
-			var bescheid = map();
-
-			assertThat(bescheid.getNachrichtSubject()).isEqualTo(GrpcBescheidTestFactory.NACHRICHT_SUBJECT);
-		}
-
-		@Test
-		void shouldMapStatus() {
-			var bescheid = map();
-
-			assertThat(bescheid.getStatus()).isEqualTo(BescheidTestFactory.STATUS);
-		}
-
-		@Nested
-		class TestMapSentInfo {
-			private final SentInfo expectedSentInfo = SentInfoTestFactory.createBuilder()
-					.sentAt(ZonedDateTime.parse(GrpcSentInfoTestFactory.SENT_AT))
-					.sentBy(UserId.from(GrpcSentInfoTestFactory.SENT_BY))
-					.build();
-
-			@Test
-			void shouldMapSentBy() {
-				when(userIdMapper.fromString(GrpcSentInfoTestFactory.SENT_BY)).thenCallRealMethod();
-
-				var bescheid = map();
-
-				assertThat(bescheid.getSentInfo().getSentBy()).isEqualTo(expectedSentInfo.getSentBy());
-			}
-
-			@Test
-			void shouldMapSentAt() {
-				var bescheid = map();
-
-				assertThat(bescheid.getSentInfo().getSentAt()).isEqualTo(expectedSentInfo.getSentAt());
-			}
-		}
-
-		private Bescheid map() {
-			return mapper.fromGrpc(GrpcBescheidTestFactory.create(), VorgangHeaderTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java
deleted file mode 100644
index 2db87cf5d2741de5cc3ad649dfb414c8b0e31d1c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidModelAssemblerTest.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static de.ozgcloud.alfa.bescheid.BescheidModelAssembler.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.NullAndEmptySource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.web.util.UriTemplate;
-
-import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.Eingang;
-import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.EingangTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeadTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangProperties;
-import de.ozgcloud.alfa.vorgang.VorgangPropertyTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class BescheidModelAssemblerTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidModelAssembler assembler;
-
-	@Mock
-	private BescheidService bescheidService;
-
-	@Mock
-	private VorgangProperties vorgangProperties;
-
-	@Mock
-	private VorgangController vorgangController;
-	@Mock
-	private PostfachMailController postfachMailController;
-
-	@Nested
-	class TestToModel {
-
-		private final Bescheid bescheid = BescheidTestFactory.create();
-		private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgangWithEingang);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(BescheidController.PATH + "?vorgangId=" + BescheidTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldHaveDeleteLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_DELETE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(new UriTemplate(CommandController.CommandByRelationController.COMMAND_BY_RELATION_PATH)
-							.expand(VorgangHeaderTestFactory.ID, BescheidTestFactory.ID, BescheidTestFactory.VERSION).toString());
-		}
-
-		@Test
-		void shouldHaveUploadBescheidFileLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_UPLOAD_BESCHEID_FILE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(uploadFileLink("bescheidFile"));
-		}
-
-		@Test
-		void shouldHaveUploadAttachmentLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_UPLOAD_ATTACHMENT)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(uploadFileLink("bescheidAttachment"));
-		}
-
-		@ParameterizedTest
-		@NullAndEmptySource
-		void shouldNotHaveAttachmentsLinkIfNoAttachmentsAvailable(List<FileId> attachments) {
-			var bescheid = BescheidTestFactory.createBuilder().attachments(attachments).build();
-
-			var model = callToModel(bescheid);
-
-			assertThat(model.getLink(REL_ATTACHMENTS)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveAttachmentsLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_ATTACHMENTS)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(String.format("%s/%s/attachments?vorgangId=%s", BescheidController.PATH, BescheidTestFactory.ID,
-							BescheidTestFactory.VORGANG_ID));
-		}
-
-		@Test
-		void shouldHaveUpdateLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_UPDATE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(createCommandLink());
-		}
-
-		@Test
-		void shouldHaveCreateDocumentLink() {
-			doReturn(true).when(assembler).canCreateBescheidDocumentAutomatically(vorgangWithEingang);
-
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_CREATE_DOCUMENT)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(createCommandLink());
-		}
-
-		@Test
-		void shoulNotdHaveCreateDocumentLink() {
-			doReturn(false).when(assembler).canCreateBescheidDocumentAutomatically(vorgangWithEingang);
-
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_CREATE_DOCUMENT)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveCreateDocumentFromFileLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_CREATE_DOCUMENT_FROM_FILE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(createCommandLink());
-		}
-
-		@ParameterizedTest
-		@NullAndEmptySource
-		void shouldNotHaveBescheidDocumentLinkIfNoDocumentAvailable(String documentId) {
-			var model = callToModel(BescheidTestFactory.createBuilder().bescheidDocument(documentId).build());
-
-			assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveBescheidDocumentLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_BESCHEID_DOCUMENT)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(String.format("%s/%s", DocumentController.PATH, BescheidTestFactory.BESCHEID_DOCUMENT));
-		}
-
-		@Test
-		void shouldHaveBescheidenUndSendenLink() {
-			when(postfachMailController.isPostfachConfigured()).thenReturn(true);
-
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_BESCHEIDEN_UND_SENDEN))
-					.isPresent().get()
-					.extracting(Link::getHref).isEqualTo(bescheidenUndSendenLink());
-		}
-
-		@Test
-		void shouldNotHaveBescheidenUndSendenLinkOnNotConfiguredPostfach() {
-			when(postfachMailController.isPostfachConfigured()).thenReturn(false);
-
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_BESCHEIDEN_UND_SENDEN)).isEmpty();
-		}
-
-		@Test
-		void shouldNotHaveBescheidenUndSendenLinkOnVorgangWithoutServiceKonto() {
-			var vorgang = vorgangWithEingang.builder().header(VorgangHeadTestFactory.createBuilder().serviceKonto(null).build()).build();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-			when(postfachMailController.isPostfachConfigured()).thenReturn(true);
-
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_BESCHEIDEN_UND_SENDEN)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveBescheidenLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_BESCHEIDEN))
-					.isPresent().get()
-					.extracting(Link::getHref).isEqualTo(createCommandLink());
-		}
-
-		@Test
-		void shouldHaveBody() {
-			var model = callToModel();
-
-			assertThat(model.getContent()).isEqualTo(bescheid);
-		}
-
-		private String uploadFileLink(String field) {
-			return new UriTemplate("/api/binaryFiles/{vorgangId}/{field}/file").expand(VorgangHeaderTestFactory.ID, field).toString();
-		}
-
-		private String createCommandLink() {
-			return new UriTemplate(CommandController.CommandByRelationController.COMMAND_BY_RELATION_PATH)
-					.expand(VorgangHeaderTestFactory.ID, BescheidTestFactory.ID, BescheidTestFactory.VERSION).toString();
-		}
-
-		private String bescheidenUndSendenLink() {
-			return new UriTemplate(BescheidCommandController.PATH)
-					.expand(VorgangHeaderTestFactory.ID, BescheidTestFactory.ID, BescheidTestFactory.VERSION).toString();
-		}
-
-		private EntityModel<Bescheid> callToModel() {
-			return callToModel(bescheid);
-		}
-
-		private EntityModel<Bescheid> callToModel(Bescheid bescheid) {
-			return assembler.toModel(bescheid);
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@Test
-		void shouldCallToModel() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
-
-			callMethod();
-
-			verify(assembler).toModel(bescheid);
-		}
-
-		@Test
-		void shouldHaveEntityModel() {
-			var entityModel = ModelBuilder.fromEntity(bescheid).buildModel();
-			doReturn(entityModel).when(assembler).toModel(bescheid);
-
-			var collectionModel = callMethod();
-
-			assertThat(collectionModel.getContent()).containsExactly(entityModel);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
-
-			var collectionModel = callMethod();
-
-			assertThat(collectionModel.getLinks())
-					.containsExactly(linkTo(BescheidByVorgangController.class).withSelfRel());
-		}
-
-		private CollectionModel<EntityModel<Bescheid>> callMethod() {
-			return assembler.toCollectionModel(List.of(bescheid));
-		}
-
-	}
-
-	@Nested
-	class TestHasVorgangCreateBescheidDocumentEnabled {
-
-		@Nested
-		class TestOnEmptyBescheidProperties {
-
-			@BeforeEach
-			void setUp() {
-				when(vorgangProperties.getBescheid()).thenReturn(Collections.emptyList());
-			}
-
-			@Test
-			void shouldReturnFalse() {
-				var hasEnabled = callAssembler(VorgangWithEingangTestFactory.create());
-
-				assertThat(hasEnabled).isFalse();
-			}
-
-		}
-
-		@Nested
-		class TestOnBescheidPropertiesSet {
-
-			@BeforeEach
-			void setUp() {
-				when(vorgangProperties.getBescheid()).thenReturn(List.of(VorgangPropertyTestFactory.create()));
-			}
-
-			@Test
-			void shouldReturnFalseIfFormEngineNameNotEquals() {
-				var vorgang = createVorgang(EingangTestFactory.createBuilder()
-						.header(EingangHeaderTestFactory.createBuilder()
-								.formEngineName("different").build())
-						.build());
-
-				var hasEnabled = callAssembler(vorgang);
-
-				assertThat(hasEnabled).isFalse();
-			}
-
-			@Test
-			void shouldReturnTrue() {
-				var hasEnabled = callAssembler(VorgangWithEingangTestFactory.create());
-
-				assertThat(hasEnabled).isTrue();
-			}
-		}
-
-		@Test
-		void shouldReturnFalseOnEmptyEingang() {
-			var vorgangWithEmptyEingang = createVorgang(null);
-
-			var hasEnabled = callAssembler(vorgangWithEmptyEingang);
-
-			assertThat(hasEnabled).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnEmptyEingangHeader() {
-			var vorgangWithEmptyEingangHeader = EingangTestFactory.createBuilder().header(null).build();
-
-			var hasEnabled = callAssembler(createVorgang(vorgangWithEmptyEingangHeader));
-
-			assertThat(hasEnabled).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnEmptyFormEngineName() {
-			var vorgangWithEmptyFormEngineName = createVorgang(
-					EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formEngineName(null).build()).build());
-
-			var hasEnabled = callAssembler(vorgangWithEmptyFormEngineName);
-
-			assertThat(hasEnabled).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnEmptyFormId() {
-			var vorgangWithEmptyFormId = createVorgang(
-					EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formId(null).build()).build());
-
-			var hasEnabled = callAssembler(vorgangWithEmptyFormId);
-
-			assertThat(hasEnabled).isFalse();
-		}
-
-		private boolean callAssembler(VorgangWithEingang vorgang) {
-			return assembler.hasVorgangCreateBescheidDocumentEnabled(vorgang);
-		}
-
-		private VorgangWithEingang createVorgang(Eingang eingang) {
-			return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build();
-		}
-
-	}
-
-	@Nested
-	class TestCanCreateBescheidDocumentAutomatically {
-
-		private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldReturnTrueIfServiceConfigured() {
-			doReturn(true).when(assembler).hasVorgangCreateBescheidDocumentEnabled(vorgangWithEingang);
-			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
-
-			var canCreate = assembler.canCreateBescheidDocumentAutomatically(vorgangWithEingang);
-
-			assertThat(canCreate).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfServiceNotConfigured() {
-			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(false);
-
-			var canCreate = assembler.canCreateBescheidDocumentAutomatically(vorgangWithEingang);
-
-			assertThat(canCreate).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfVorgangNotConfigured() {
-			doReturn(false).when(assembler).hasVorgangCreateBescheidDocumentEnabled(vorgangWithEingang);
-			when(bescheidService.canCreateBescheidDocumentAutomatically()).thenReturn(true);
-
-			var canCreate = assembler.canCreateBescheidDocumentAutomatically(vorgangWithEingang);
-
-			assertThat(canCreate).isFalse();
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java
deleted file mode 100644
index 3e74aac952c10febc3d53e6322c3eec505e337af..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidRemoteServiceTest.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.bescheid.BescheidServiceGrpc.BescheidServiceBlockingStub;
-import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest;
-import de.ozgcloud.bescheid.GrpcBescheidManagerConfigResponse;
-import de.ozgcloud.bescheid.GrpcGetAllBescheidRequest;
-import de.ozgcloud.bescheid.GrpcGetAllBescheidResponse;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse;
-
-class BescheidRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidRemoteService service;
-	@Mock
-	private BescheidServiceBlockingStub bescheidServiceStub;
-	@Mock
-	private BescheidMapper bescheidMapper;
-
-	@Nested
-	class TestGetBescheidDraft {
-
-		private final GrpcGetBescheidDraftRequest request = GrpcGetBescheidDraftRequestTestFactory.create();
-		private final GrpcGetBescheidDraftResponse response = GrpcGetBescheidDraftResponseTestFactory.create();
-		private final Bescheid bescheidDraft = BescheidTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			doReturn(request).when(service).buildGetBescheidDraftRequest(VorgangHeaderTestFactory.ID);
-			when(bescheidServiceStub.getBescheidDraft(request)).thenReturn(response);
-		}
-
-		@Test
-		void shouldBuildGrpcGetBescheidRequest() {
-			service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			verify(service).buildGetBescheidDraftRequest(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallGrpcService() {
-			service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			verify(bescheidServiceStub).getBescheidDraft(request);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			doReturn(Optional.of(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID)).when(service).getBescheidFromResponse(response);
-
-			service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			verify(bescheidMapper).fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnBescheid() {
-			when(bescheidMapper.fromGrpc(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID)).thenReturn(
-					bescheidDraft);
-
-			var bescheidDraft = service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			assertThat(bescheidDraft).hasValue(this.bescheidDraft);
-		}
-
-		@Test
-		void shouldReturnEmpty() {
-			doReturn(Optional.empty()).when(service).getBescheidFromResponse(response);
-
-			var bescheidDraft = service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			assertThat(bescheidDraft).isEmpty();
-		}
-
-		@Test
-		void shouldGetBescheidFromResponse() {
-			service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			verify(service).getBescheidFromResponse(response);
-		}
-	}
-
-	@Nested
-	class TestBuildGetBescheidDraftRequest {
-
-		@Test
-		void shouldHaveVorgangId() {
-			var request = service.buildGetBescheidDraftRequest(VorgangHeaderTestFactory.ID);
-
-			assertThat(request.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetBescheidFromResponse {
-
-		@Test
-		void shouldReturnEmpty() {
-			var bescheid = service.getBescheidFromResponse(GrpcGetBescheidDraftResponse.getDefaultInstance());
-
-			assertThat(bescheid).isEmpty();
-		}
-
-		@Test
-		void shouldReturnBescheid() {
-			var bescheid = service.getBescheidFromResponse(GrpcGetBescheidDraftResponseTestFactory.create());
-
-			assertThat(bescheid).hasValue(GrpcGetBescheidDraftResponseTestFactory.GRPC_BESCHEID);
-		}
-	}
-
-	@Nested
-	class TestCanCreateBescheidDocument {
-
-		private final GrpcBescheidManagerConfigRequest request = GrpcBescheidManagerConfigRequestTestFactory.create();
-		private final GrpcBescheidManagerConfigResponse respone = GrpcBescheidManagerConfigResponseTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			when(bescheidServiceStub.getConfig(request)).thenReturn(respone);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.canCreateBescheidDocument();
-
-			verify(bescheidServiceStub).getConfig(request);
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			var canCreate = service.canCreateBescheidDocument();
-
-			assertThat(canCreate).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfNoFeaturesAvailable() {
-			when(bescheidServiceStub.getConfig(request)).thenReturn(GrpcBescheidManagerConfigResponse.newBuilder().build());
-
-			var canCreate = service.canCreateBescheidDocument();
-
-			assertThat(canCreate).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfFeatureDisabled() {
-			var respones = GrpcBescheidManagerConfigResponseTestFactory.createBuilder()
-					.setFeatures(GrpcBescheidManagerFeaturesTestFactory.createBuilder()
-							.setCanCreateBescheidDocument(false)
-							.build())
-					.build();
-			when(bescheidServiceStub.getConfig(request)).thenReturn(respones);
-
-			var canCreate = service.canCreateBescheidDocument();
-
-			assertThat(canCreate).isFalse();
-		}
-	}
-
-	@DisplayName("Find by vorgang id")
-	@Nested
-	class TestFindByVorgangId {
-
-		private final GrpcGetAllBescheidRequest request = GrpcGetAllBescheidRequestTestFactory.create();
-		private final GrpcGetAllBescheidResponse response = GrpcGetAllBescheidResponseTestFactory.create();
-
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			doReturn(request).when(service).buildGetAllBescheidRequest(VorgangHeaderTestFactory.ID);
-			when(bescheidServiceStub.getAll(any())).thenReturn(response);
-
-		}
-
-		@Test
-		void shouldBuildGetAllRequest() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			verify(service).buildGetAllBescheidRequest(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			verify(bescheidServiceStub).getAll(request);
-		}
-
-		@Test
-		void shouldMapBescheid() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID).toList();
-
-			verify(bescheidMapper).fromGrpc(GrpcGetAllBescheidResponseTestFactory.GRPC_BESCHEID, VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnStreamOfBescheide() {
-			when(bescheidMapper.fromGrpc(any(), any())).thenReturn(bescheid);
-
-			var bescheide = service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			assertThat(bescheide).containsExactly(bescheid);
-		}
-	}
-
-	@DisplayName("Build get all bescheid request")
-	@Nested
-	class TestBuildGetAllBescheidRequest {
-
-		@Test
-		void shouldContainVorgangId() {
-			var request = service.buildGetAllBescheidRequest(VorgangHeaderTestFactory.ID);
-
-			assertThat(request.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandControllerTest.java
deleted file mode 100644
index 48cb200a7bde55fd0a0000a39b2ef9374625219a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidSendenCommandControllerTest.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static de.ozgcloud.alfa.common.command.CommandController.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.SneakyThrows;
-
-class BescheidSendenCommandControllerTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidCommandController controller;
-
-	@Mock
-	private BescheidService bescheidService;
-	@Mock
-	private CommandService commandService;
-
-	@Mock
-	private BescheidSendenCommandValidator bescheidSendenCommandValidator;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void setUp() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestCreateCommand {
-
-		private final Command command = CommandTestFactory.create();
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		@BeforeEach
-		void setUp() {
-			doNothing().when(controller).validate(eq(VorgangHeaderTestFactory.ID), any(CreateCommand.class));
-			when(commandService.createCommand(any(CreateCommand.class), eq(BescheidTestFactory.VERSION))).thenReturn(command);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldValidate() {
-			doRequest();
-
-			verify(controller).validate(eq(VorgangHeaderTestFactory.ID), any(CreateCommand.class));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldSetVorgangIdOnCreateCommand() {
-			doRequest();
-
-			verify(controller).validate(eq(VorgangHeaderTestFactory.ID), createCommandArgumentCaptor.capture());
-			assertThat(createCommandArgumentCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldSetRelationIdOnCreateCommand() {
-			doRequest();
-
-			verify(controller).validate(eq(VorgangHeaderTestFactory.ID), createCommandArgumentCaptor.capture());
-			assertThat(createCommandArgumentCaptor.getValue().getRelationId()).isEqualTo(BescheidTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallCommandService() {
-			doRequest();
-
-			verify(commandService).createCommand(any(CreateCommand.class), eq(BescheidTestFactory.VERSION));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnCreated() {
-			var response = doRequest();
-
-			response.andExpect(status().isCreated());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnCommand() {
-			doRequest()
-					.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(
-					post(BescheidCommandController.PATH,
-							VorgangHeaderTestFactory.ID,
-							BescheidTestFactory.ID,
-							BescheidTestFactory.VERSION)
-							.content(CommandTestFactory.buildCreateCommandContent(CommandOrder.SEND_BESCHEID))
-							.contentType(MediaType.APPLICATION_JSON));
-		}
-
-	}
-
-	@Nested
-	class TestValidate {
-
-		private final CreateCommand createCommand = CommandTestFactory.createCreateCommand();
-		private final Bescheid bescheid = BescheidTestFactory.create();
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> commandArgumentCaptor;
-
-		@Nested
-		class WhenBescheidExists {
-
-			@BeforeEach
-			void setUp() {
-				when(bescheidService.getBescheidDraft(VorgangHeaderTestFactory.ID)).thenReturn(Optional.of(bescheid));
-				doNothing().when(bescheidSendenCommandValidator).validate(any(CreateCommand.class));
-			}
-
-			@Test
-			void shouldGetBescheidDraft() {
-				controller.validate(VorgangHeaderTestFactory.ID, createCommand);
-
-				verify(bescheidService).getBescheidDraft(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldValidate() {
-				controller.validate(VorgangHeaderTestFactory.ID, createCommand);
-
-				verify(bescheidSendenCommandValidator).validate(any(CreateCommand.class));
-			}
-
-			@Test
-			void shouldAddBescheidToCommand() {
-				controller.validate(VorgangHeaderTestFactory.ID, createCommand);
-
-				verify(bescheidSendenCommandValidator).validate(commandArgumentCaptor.capture());
-				assertThat(commandArgumentCaptor.getValue()).usingRecursiveComparison().isEqualTo(createCommand.toBuilder().body(bescheid).build());
-			}
-		}
-
-		@Nested
-		class WhenBescheidNotExists {
-
-			@Test
-			void shouldThrowTechnicalException() {
-				when(bescheidService.getBescheidDraft(VorgangHeaderTestFactory.ID)).thenReturn(Optional.empty());
-
-				assertThatThrownBy(() -> controller.validate(VorgangHeaderTestFactory.ID, createCommand)).isInstanceOf(TechnicalException.class);
-			}
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidServiceTest.java
deleted file mode 100644
index 07cb7f98e4ef1018673fb7fbb847c2082870bb28..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidServiceTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Comparator;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class BescheidServiceTest {
-
-	@Spy
-	@InjectMocks
-	private BescheidService service;
-	@Mock
-	private BescheidRemoteService remoteService;
-	@Mock
-	private BescheidByBeschiedenAmComparator comparator;
-
-	@Nested
-	class TestGetBescheidDraft {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).getBescheidDraft(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnResultFromRemoteService() {
-			var remoteServiceResult = Optional.of(BescheidTestFactory.create());
-			when(remoteService.getBescheidDraft(VorgangHeaderTestFactory.ID)).thenReturn(remoteServiceResult);
-
-			var result = service.getBescheidDraft(VorgangHeaderTestFactory.ID);
-
-			assertThat(result).isEqualTo(remoteServiceResult);
-		}
-	}
-
-	@Nested
-	class TestFindByVorgangId {
-		private final Stream<Bescheid> bescheidsUnsorted = Stream.of(BescheidTestFactory.create());
-		private final Stream<Bescheid> bescheidsSorted = Stream.of(BescheidTestFactory.create());
-
-		@BeforeEach
-		void setUpMocks() {
-			when(remoteService.findByVorgangId(VorgangHeaderTestFactory.ID)).thenReturn(bescheidsUnsorted);
-			doReturn(bescheidsSorted).when(service).sortBescheids(bescheidsUnsorted);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			callService();
-
-			verify(remoteService).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldSortStream() {
-			callService();
-
-			verify(service).sortBescheids(bescheidsUnsorted);
-		}
-
-		@Test
-		void shouldReturnSortedStream() {
-			var resultStream = callService();
-
-			assertThat(resultStream).isEqualTo(bescheidsSorted);
-		}
-
-		private Stream<Bescheid> callService() {
-			return service.findByVorgangIdSorted(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestSortBescheids {
-		@Mock
-		private Stream<Bescheid> bescheids;
-
-		@Mock
-		private Comparator<Bescheid> reversedComparator;
-
-		@BeforeEach
-		void setUpMock() {
-			when(comparator.reversed()).thenReturn(reversedComparator);
-		}
-
-		@Test
-		void shouldSort() {
-			service.sortBescheids(bescheids);
-
-			verify(bescheids).sorted(reversedComparator);
-		}
-
-		@Test
-		void shouldReturnSortedStream() {
-			Stream<Bescheid> bescheidsSorted = Stream.of(BescheidTestFactory.create());
-			when(bescheids.sorted(reversedComparator)).thenReturn(bescheidsSorted);
-
-			var result = service.sortBescheids(bescheids);
-
-			assertThat(result).isEqualTo(bescheidsSorted);
-		}
-	}
-
-	@Nested
-	class TestCanCreateBescheidDocumentAutomatically {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.canCreateBescheidDocumentAutomatically();
-
-			verify(remoteService).canCreateBescheidDocument();
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { true, false })
-		void shouldRetrun(boolean canCreateBescheidDocument) {
-			when(remoteService.canCreateBescheidDocument()).thenReturn(canCreateBescheidDocument);
-
-			var canCreateAutomatically = service.canCreateBescheidDocumentAutomatically();
-
-			assertThat(canCreateAutomatically).isEqualTo(canCreateBescheidDocument);
-		}
-	}
-
-	@DisplayName("Exists bescheid")
-	@Nested
-	class TestExistsBescheid {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.existsBescheid(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@DisplayName("on existing bescheid")
-		@Nested
-		class TestOnExistingBescheid {
-
-			@BeforeEach
-			void mock() {
-				when(remoteService.findByVorgangId(anyString())).thenReturn(Stream.of(BescheidTestFactory.create()));
-			}
-
-			@Test
-			void shouldReturnTrue() {
-				var exists = service.existsBescheid(VorgangHeaderTestFactory.ID);
-
-				assertThat(exists).isTrue();
-			}
-		}
-
-		@DisplayName("on missing bescheid")
-		@Nested
-		class TestOnMissingBescheid {
-
-			@BeforeEach
-			void mock() {
-				when(remoteService.findByVorgangId(anyString())).thenReturn(Stream.empty());
-			}
-
-			@Test
-			void shouldReturnFalse() {
-				var exists = service.existsBescheid(VorgangHeaderTestFactory.ID);
-
-				assertThat(exists).isFalse();
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidTestFactory.java
deleted file mode 100644
index 2f84362023d62e5ee86f533280ec3b81abe689eb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidTestFactory.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-public class BescheidTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final BescheidStatus STATUS = BescheidStatus.DRAFT;
-	public static final long VERSION = 42;
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-	public static final String BESCHIEDEN_AM = "2024-05-27";
-	public static final boolean BEWILLIGT = true;
-	public static final String BESCHEID_DOCUMENT = UUID.randomUUID().toString();
-	public static final List<FileId> ATTACHMENTS = List.of(FileId.from(UUID.randomUUID().toString()), FileId.from(UUID.randomUUID().toString()));
-	public static final String NACHRICHT_TEXT = LoremIpsum.getInstance().getWords(10);
-	public static final String NACHRICHT_SUBJECT = LoremIpsum.getInstance().getWords(3);
-	public static final SendBy SEND_BY = SendBy.MANUAL;
-	public static final SentInfo SENT_INFO = SentInfoTestFactory.create();
-
-	public static Bescheid.BescheidBuilder createBuilder() {
-		return Bescheid.builder()
-				.id(ID)
-				.status(STATUS)
-				.version(VERSION)
-				.vorgangId(VORGANG_ID)
-				.beschiedenAm(BESCHIEDEN_AM)
-				.bewilligt(BEWILLIGT)
-				.bescheidDocument(BESCHEID_DOCUMENT)
-				.attachments(ATTACHMENTS)
-				.nachrichtText(NACHRICHT_TEXT)
-				.nachrichtSubject(NACHRICHT_SUBJECT)
-				.sendBy(SEND_BY)
-				.sentInfo(SENT_INFO);
-	}
-
-	public static Bescheid create() {
-		return createBuilder().build();
-	}
-
-	public static Map<String, Object> createAsMap() {
-		var map = new HashMap<String, Object>();
-		map.put(Bescheid.ID_FIELD, ID);
-		map.put(Bescheid.STATUS_FIELD, STATUS);
-		map.put(Bescheid.VERSION_FIELD, VERSION);
-		map.put(Bescheid.VORGANG_ID_FIELD, VORGANG_ID);
-		map.put(Bescheid.BESCHIEDEN_AM_FIELD, BESCHIEDEN_AM);
-		map.put(Bescheid.BEWILLIGT_FIELD, BEWILLIGT);
-		map.put(Bescheid.BESCHEID_DOCUMENT_FIELD, BESCHEID_DOCUMENT);
-		map.put(Bescheid.ATTACHMENTS_FIELD, ATTACHMENTS);
-		map.put(Bescheid.NACHRICHT_TEXT_FIELD, NACHRICHT_TEXT);
-		map.put(Bescheid.NARCHRICHT_SUBJECT_FIELD, NACHRICHT_SUBJECT);
-		map.put(Bescheid.SEND_BY_FIELD, SEND_BY);
-		return map;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
deleted file mode 100644
index 162e1cd996bd355fee44ec30b80ce5ac11c0395a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-import java.util.function.BooleanSupplier;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.EntityModelTestFactory;
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class BescheidVorgangProcessorTest {
-
-	private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-	@Spy
-	@InjectMocks
-	private BescheidVorgangProcessor processor;
-
-	@Mock
-	private BescheidService service;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@Nested
-	class TestProcess {
-
-		@Test
-		void shouldReturnTheSameModelOnNullVorgang() {
-			var processedModel = processor.process(EntityModelTestFactory.NULLABLE);
-
-			assertThat(processedModel).isEqualTo(EntityModelTestFactory.NULLABLE);
-		}
-
-		@Test
-		void shouldReturnTheSameModelWhenUserIsEinheitlicherAnsprechpartner() {
-			var inputModel = EntityModel.of(VorgangWithEingangTestFactory.create());
-			when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-
-			var processedModel = processor.process(inputModel);
-
-			assertThat(processedModel).isEqualTo(inputModel);
-		}
-
-		@Test
-		void shouldCallExistsBescheid() {
-			initUserProfileUrlProvider(new UserProfileUrlProvider());
-			doReturn(true).when(processor).existsBescheid(anyString());
-
-			callProcess();
-
-			verify(processor).existsBescheid(VorgangHeaderTestFactory.ID);
-		}
-
-		@Nested
-		class TestLinks {
-
-			@BeforeEach
-			void init() {
-				initUserProfileUrlProvider(new UserProfileUrlProvider());
-			}
-
-			@Test
-			void shouldNotHaveLinkToDraft() {
-				givenRetrievingDraftIsAllowed(false);
-
-				var model = callProcess();
-
-				assertThat(model.getLink(BescheidVorgangProcessor.REL_DRAFT)).isEmpty();
-			}
-
-			@Test
-			void shouldHaveLinkToDraft() {
-				givenRetrievingDraftIsAllowed(true);
-
-				var model = callProcess();
-
-				assertThat(model.getLink(BescheidVorgangProcessor.REL_DRAFT)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo(BescheidController.PATH + "?vorgangId=" + VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldHaveLinkToCreateBescheidDraft() {
-				givenCreatingDraftIsAllowed(true);
-
-				var model = callProcess();
-
-				assertThat(model.getLink(BescheidVorgangProcessor.REL_CREATE_DRAFT)).isPresent().get()
-						.extracting(Link::getHref)
-						.isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/"
-								+ VorgangHeaderTestFactory.VERSION + "/commands");
-			}
-
-			@Test
-			void shouldNotHaveLinkToCreateBescheidDraft() {
-				givenCreatingDraftIsAllowed(false);
-
-				var model = callProcess();
-
-				assertThat(model.getLink(BescheidVorgangProcessor.REL_CREATE_DRAFT)).isEmpty();
-			}
-
-			@DisplayName("bescheide link")
-			@Nested
-			class TestBescheideLink {
-
-				@DisplayName("on existing bescheid")
-				@Nested
-				class TestOnExistingBescheid {
-
-					@BeforeEach
-					void mock() {
-						doReturn(true).when(processor).existsBescheid(anyString());
-					}
-
-					@Test
-					void shouldExists() {
-						var model = callProcess();
-
-						assertThat(model.getLink(BescheidVorgangProcessor.REL_BESCHEIDE)).isPresent().get()
-								.extracting(Link::getHref)
-								.isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/bescheids");
-					}
-				}
-
-				@DisplayName("on missing bescheid")
-				@Nested
-				class TestOnMissingBescheid {
-
-					@BeforeEach
-					void mock() {
-						doReturn(false).when(processor).existsBescheid(anyString());
-					}
-
-					@Test
-					void shouldNOTExists() {
-						var model = callProcess();
-
-						assertThat(model.getLink(BescheidVorgangProcessor.REL_BESCHEIDE)).isNotPresent();
-					}
-				}
-			}
-
-			private void givenRetrievingDraftIsAllowed(boolean shouldBeAdded) {
-				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).isRetrievingDraftAllowed(vorgang);
-			}
-
-			private void givenCreatingDraftIsAllowed(boolean shouldBeAdded) {
-				doReturn((BooleanSupplier) () -> shouldBeAdded).when(processor).isCreatingDraftAllowed(vorgang);
-			}
-		}
-
-		private EntityModel<VorgangWithEingang> callProcess() {
-			return processor.process(EntityModel.of(vorgang));
-		}
-	}
-
-	@DisplayName("Exists bescheid")
-	@Nested
-	class TestExistsBescheid {
-
-		@BeforeEach
-		void mock() {
-			when(service.existsBescheid(anyString())).thenReturn(true);
-		}
-
-		@Test
-		void shouldCallService() {
-			processor.existsBescheid(VorgangHeaderTestFactory.ID);
-
-			verify(service).existsBescheid(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnValue() {
-			var exists = processor.existsBescheid(VorgangHeaderTestFactory.ID);
-
-			assertThat(exists).isTrue();
-		}
-	}
-
-	@Nested
-	class TestIsRetrievingDraftAllowed {
-
-		@Test
-		void shouldReturnTrue() {
-			givenVorgangInBearbeitung(true);
-			givenDraftExists(true);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfVorgangNotInBearbeitung() {
-			givenVorgangInBearbeitung(false);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfDraftDoesNotExist() {
-			givenVorgangInBearbeitung(true);
-			givenDraftExists(false);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isFalse();
-		}
-
-		private BooleanSupplier callMethod() {
-			return processor.isRetrievingDraftAllowed(vorgang);
-		}
-	}
-
-	@Nested
-	class TestIsCreatingDraftAllowed {
-
-		@Test
-		void shouldReturnTrue() {
-			givenVorgangInBearbeitung(true);
-			givenDraftExists(false);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfVorgangNotInBearbeitung() {
-			givenVorgangInBearbeitung(false);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfDraftExists() {
-			givenVorgangInBearbeitung(true);
-			givenDraftExists(true);
-
-			var booleanSupplier = callMethod();
-
-			assertThat(booleanSupplier.getAsBoolean()).isFalse();
-		}
-
-		private BooleanSupplier callMethod() {
-			return processor.isCreatingDraftAllowed(vorgang);
-		}
-	}
-
-	@Nested
-	class TestIsVorgangInBearbeitung {
-
-		@ParameterizedTest
-		@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
-		void shouldReturnFalse(Vorgang.VorgangStatus vorgangStatus) {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder().status(vorgangStatus).build();
-
-			var inBearbeitung = processor.isVorgangInBearbeitung(vorgang);
-
-			assertThat(inBearbeitung).isFalse();
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder().status(Vorgang.VorgangStatus.IN_BEARBEITUNG).build();
-
-			var inBearbeitung = processor.isVorgangInBearbeitung(vorgang);
-
-			assertThat(inBearbeitung).isTrue();
-		}
-	}
-
-	@Nested
-	class TestDraftExists {
-
-		@Test
-		void shouldCallBescheidService() {
-			processor.draftExists(vorgang);
-
-			verify(service).getBescheidDraft(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			when(service.getBescheidDraft(VorgangHeaderTestFactory.ID)).thenReturn(Optional.empty());
-
-			var result = processor.draftExists(vorgang);
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			when(service.getBescheidDraft(VorgangHeaderTestFactory.ID)).thenReturn(Optional.of(BescheidTestFactory.create()));
-
-			var result = processor.draftExists(vorgang);
-
-			assertThat(result).isTrue();
-		}
-	}
-
-	private void givenVorgangInBearbeitung(boolean inBearbeitung) {
-		doReturn(inBearbeitung).when(processor).isVorgangInBearbeitung(vorgang);
-	}
-
-	private void givenDraftExists(boolean exists) {
-		doReturn(exists).when(processor).draftExists(vorgang);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentControllerTest.java
deleted file mode 100644
index c629f5c9011e0fac350ecc6800d1affc9a4f524c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentControllerTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-class DocumentControllerTest {
-
-	@Mock
-	private DocumentService documentService;
-	@Mock
-	private DocumentModelAssembler assembler;
-	@Spy
-	@InjectMocks
-	private DocumentController controller;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetDocument {
-
-		private final Document document = DocumentTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(documentService.getDocument(DocumentTestFactory.ID)).thenReturn(document);
-		}
-
-		@Test
-		void shouldGetDocument() throws Exception {
-			doRequest();
-
-			verify(documentService).getDocument(DocumentTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallAssembler() throws Exception {
-			doRequest();
-
-			verify(assembler).toModel(document);
-		}
-
-		@Test
-		void shouldReturnValue() throws Exception {
-			doRequest().andExpect(status().isOk());
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(DocumentController.PATH + "/{documentId}", DocumentTestFactory.ID));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessorTest.java
deleted file mode 100644
index 41e1f2a11c72cfa85e948335a6b827b9b4a680d9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentHistorieProcessorTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-
-class DocumentHistorieProcessorTest {
-
-	@Spy
-	private DocumentHistorieProcessor processor;
-
-	@DisplayName("Process")
-	@Nested
-	class TestProcess {
-
-		private final Command command = CommandTestFactory.create();
-		private final List<Command> commands = Collections.singletonList(command);
-
-		@BeforeEach
-		void mock() {
-			doReturn(commands).when(processor).filterIrrelevantCommands(any());
-		}
-
-		@Test
-		void shouldFilterIrrelevantCommands() {
-			processor.process(commands);
-
-			verify(processor).filterIrrelevantCommands(commands);
-		}
-
-		@Test
-		void shouldReturnCommands() {
-			var processedCommands = processor.process(commands);
-
-			assertThat(processedCommands).containsExactly(command);
-		}
-	}
-
-	@DisplayName("Filter irrelevant commands")
-	@Nested
-	class TestFilterIrrelevantCommands {
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "CREATE_BESCHEID_DOCUMENT", "CREATE_BESCHEID_DOCUMENT_FROM_FILE" })
-		void shouldFilterCommandWithOrder(CommandOrder order) {
-			var command = CommandTestFactory.createBuilder().order(order.toString()).build();
-
-			var commands = processor.filterIrrelevantCommands(Collections.singletonList(command));
-
-			assertThat(commands).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "CREATE_BESCHEID_DOCUMENT", "CREATE_BESCHEID_DOCUMENT_FROM_FILE" })
-		void shouldKeepCommandWithOrder(CommandOrder order) {
-			var command = CommandTestFactory.createBuilder().order(order.toString()).build();
-
-			var commands = processor.filterIrrelevantCommands(Collections.singletonList(command));
-
-			assertThat(commands).containsExactly(command);
-		}
-
-		@DisplayName("should filter document related create attached item command")
-		@Test
-		void shouldFilterCreateAttachedItemCommand() {
-			var command = CommandTestFactory.createBuilder().order(CommandOrder.CREATE_ATTACHED_ITEM.toString())
-					.body(Map.of(VorgangAttachedItem.FIELD_ITEM_NAME, DocumentHistorieProcessor.DOCUMENT_ITEM_NAME))
-					.build();
-
-			var commands = processor.filterIrrelevantCommands(Collections.singletonList(command));
-
-			assertThat(commands).isEmpty();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentMapperTest.java
deleted file mode 100644
index 8e3b5614318eba2d75f015ad9030ad618324ea3e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentMapperTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-
-public class DocumentMapperTest {
-
-	@Mock
-	private FileIdMapper fileIdMapper;
-	@InjectMocks
-	private final DocumentMapper mapper = Mappers.getMapper(DocumentMapper.class);
-
-	@Nested
-	class TestFromGrpc {
-
-		@BeforeEach
-		void init() {
-			when(fileIdMapper.toFileId(GrpcDocumentTestFactory.FILE_ID)).thenReturn(DocumentTestFactory.FILE_ID);
-		}
-
-		@Test
-		void shouldMapId() {
-			var document = map();
-
-			assertThat(document.getId()).isEqualTo(GrpcDocumentTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapType() {
-			var document = map();
-
-			assertThat(document.getType()).isEqualTo(GrpcDocumentTestFactory.TYPE);
-		}
-
-		@Test
-		void shouldMapFileId() {
-			var document = map();
-
-			assertThat(document.getFileId()).isEqualTo(DocumentTestFactory.FILE_ID);
-		}
-
-		@Test
-		void shouldMapNachrichtSubject() {
-			var document = map();
-
-			assertThat(document.getNachrichtSubject()).isEqualTo(GrpcDocumentTestFactory.NACHRICHT_SUBJECT);
-		}
-
-		@Test
-		void shouldMapNachrichtText() {
-			var document = map();
-
-			assertThat(document.getNachrichtText()).isEqualTo(GrpcDocumentTestFactory.NACHRICHT_TEXT);
-		}
-
-		private Document map() {
-			return mapper.fromGrpc(GrpcDocumentTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java
deleted file mode 100644
index b867db73a6ac2d3c267b6105a450325742e2c470..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentModelAssemblerTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static de.ozgcloud.alfa.bescheid.DocumentModelAssembler.*;
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-class DocumentModelAssemblerTest {
-
-	@Spy
-	private DocumentModelAssembler assembler;
-
-	@Nested
-	class TestToModel {
-
-		private final Document document = DocumentTestFactory.create();
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(DocumentController.PATH + "/" + DocumentTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveFileIdLink() {
-			var model = callToModel();
-
-			assertThat(model.getLink(REL_FILE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo("/api/binaryFiles/" + DocumentTestFactory.FILE_ID);
-		}
-
-		private EntityModel<Document> callToModel() {
-			return assembler.toModel(document);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentRemoteServiceTest.java
deleted file mode 100644
index 1a8ea418aca986cf81659abbd53057557ad3ec0a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentRemoteServiceTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.document.DocumentServiceGrpc.DocumentServiceBlockingStub;
-import de.ozgcloud.document.GrpcGetDocumentRequest;
-
-class DocumentRemoteServiceTest {
-
-	@Mock
-	private DocumentServiceBlockingStub documentServiceStub;
-	@Mock
-	private DocumentMapper documentMapper;
-	@Spy
-	@InjectMocks
-	private DocumentRemoteService service;
-
-	@Nested
-	class TestGetDocument {
-
-		private static final ArgumentMatcher<GrpcGetDocumentRequest> REQUEST_MATCHER = request -> request.getId().equals(DocumentTestFactory.ID);
-
-		private final Document document = DocumentTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(documentServiceStub.getDocument(argThat(REQUEST_MATCHER))).thenReturn(GrpcGetDocumentResponseTestFactory.create());
-			when(documentMapper.fromGrpc(GrpcGetDocumentResponseTestFactory.GRPC_DOCUMENT)).thenReturn(document);
-		}
-
-		@Test
-		void shouldCallGrpcService() {
-			callService();
-
-			verify(documentServiceStub).getDocument(argThat(REQUEST_MATCHER));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			callService();
-
-			verify(documentMapper).fromGrpc(GrpcGetDocumentResponseTestFactory.GRPC_DOCUMENT);
-		}
-
-		@Test
-		void shouldReturnDocument() {
-			var result = callService();
-
-			assertThat(result).isEqualTo(document);
-		}
-
-		private Document callService() {
-			return service.getDocument(DocumentTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentServiceTest.java
deleted file mode 100644
index 9faabc9fd95994de15ef7b2ea60742be0db17564..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentServiceTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-class DocumentServiceTest {
-
-	@Mock
-	private DocumentRemoteService remoteService;
-	@Spy
-	@InjectMocks
-	private DocumentService service;
-
-	@Nested
-	class TestGetDocument {
-
-		private final Document document = DocumentTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(remoteService.getDocument(DocumentTestFactory.ID)).thenReturn(document);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getDocument(DocumentTestFactory.ID);
-
-			verify(remoteService).getDocument(DocumentTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnResultFromRemoteService() {
-			var result = service.getDocument(DocumentTestFactory.ID);
-
-			assertThat(result).isEqualTo(document);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentTestFactory.java
deleted file mode 100644
index faa98ff0b58d4330f407688c56bb919c5d4b919e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/DocumentTestFactory.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-
-public class DocumentTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String TYPE = LoremIpsum.getInstance().getWords(1);
-	public static final FileId FILE_ID = BinaryFileTestFactory.FILE_ID;
-	public static final String NACHRICHT_SUBJECT = LoremIpsum.getInstance().getWords(5);
-	public static final String NACHRICHT_TEXT = LoremIpsum.getInstance().getWords(20);
-
-	public static Document.DocumentBuilder createBuilder() {
-		return Document.builder()
-				.id(ID)
-				.type(TYPE)
-				.fileId(FILE_ID)
-				.nachrichtSubject(NACHRICHT_SUBJECT)
-				.nachrichtText(NACHRICHT_TEXT);
-	}
-
-	public static Document create() {
-		return createBuilder().build();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java
deleted file mode 100644
index c2ddf5fe79fb1427bdb2151306c4cb1768ee59d9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigRequestTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.bescheid.GrpcBescheidManagerConfigRequest;
-
-public class GrpcBescheidManagerConfigRequestTestFactory {
-
-	public static GrpcBescheidManagerConfigRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcBescheidManagerConfigRequest.Builder createBuilder() {
-		return GrpcBescheidManagerConfigRequest.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java
deleted file mode 100644
index d90b382a10cbac1872efab99746096d56339733b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerConfigResponseTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.bescheid.GrpcBescheidManagerConfigResponse;
-
-public class GrpcBescheidManagerConfigResponseTestFactory {
-
-	public static GrpcBescheidManagerConfigResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcBescheidManagerConfigResponse.Builder createBuilder() {
-		return GrpcBescheidManagerConfigResponse.newBuilder().setFeatures(GrpcBescheidManagerFeaturesTestFactory.create());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java
deleted file mode 100644
index 1150827c0ea0ca58770a59fd7994e7a115b601ff..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidManagerFeaturesTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.bescheid.GrpcBescheidManagerFeatures;
-
-public class GrpcBescheidManagerFeaturesTestFactory {
-
-	public static final boolean CAN_CREATE_BESCHEID = true;
-
-	public static GrpcBescheidManagerFeatures create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcBescheidManagerFeatures.Builder createBuilder() {
-		return GrpcBescheidManagerFeatures.newBuilder().setCanCreateBescheidDocument(CAN_CREATE_BESCHEID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidTestFactory.java
deleted file mode 100644
index 7c05a12f621586e93b7a01b8966d356765d7c9a3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcBescheidTestFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.util.List;
-
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.bescheid.GrpcSentInfo;
-import de.ozgcloud.common.datatype.StringBasedValue;
-
-public class GrpcBescheidTestFactory {
-
-	public static final String ID = BescheidTestFactory.ID;
-	public static final boolean BEWILLIGT = BescheidTestFactory.BEWILLIGT;
-	public static final String BESCHIEDEN_AM = BescheidTestFactory.BESCHIEDEN_AM;
-	public static final String BESCHEID_DOCUMENT = BescheidTestFactory.BESCHEID_DOCUMENT;
-	public static final List<String> ATTACHMENTS = BescheidTestFactory.ATTACHMENTS.stream().map(StringBasedValue::toString).toList();
-	public static final String NACHRICHT_TEXT = BescheidTestFactory.NACHRICHT_TEXT;
-	public static final String NACHRICHT_SUBJECT = BescheidTestFactory.NACHRICHT_SUBJECT;
-	public static final GrpcSentInfo SENT_INFO = GrpcSentInfoTestFactory.create();
-
-	public static GrpcBescheid create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcBescheid.Builder createBuilder() {
-		return GrpcBescheid.newBuilder()
-				.setId(ID)
-				.setStatus(BescheidTestFactory.STATUS.toString())
-				.setBewilligt(BEWILLIGT)
-				.setBeschiedenAm(BESCHIEDEN_AM)
-				.setBescheidDocument(BESCHEID_DOCUMENT)
-				.addAllAttachments(ATTACHMENTS)
-				.setNachrichtText(NACHRICHT_TEXT)
-				.setNachrichtSubject(NACHRICHT_SUBJECT)
-				.setSendBy(BescheidTestFactory.SEND_BY.toString())
-				.setSentInfo(SENT_INFO);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcDocumentTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcDocumentTestFactory.java
deleted file mode 100644
index 4719630617c5d26e917bd5b8ea4538ba8ed2d3ef..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcDocumentTestFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.document.GrpcDocument;
-
-public class GrpcDocumentTestFactory {
-
-	public static final String ID = DocumentTestFactory.ID;
-	public static final String TYPE = DocumentTestFactory.TYPE;
-	public static final String FILE_ID = DocumentTestFactory.FILE_ID.toString();
-	public static final String NACHRICHT_SUBJECT = DocumentTestFactory.NACHRICHT_SUBJECT;
-	public static final String NACHRICHT_TEXT = DocumentTestFactory.NACHRICHT_TEXT;
-
-	public static GrpcDocument create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcDocument.Builder createBuilder() {
-		return GrpcDocument.newBuilder()
-				.setId(ID)
-				.setType(TYPE)
-				.setFileId(FILE_ID)
-				.setNachrichtSubject(NACHRICHT_SUBJECT)
-				.setNachrichtText(NACHRICHT_TEXT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidRequestTestFactory.java
deleted file mode 100644
index ced557a1071248f836947c199f470287913cd02f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidRequestTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.bescheid.GrpcGetAllBescheidRequest;
-
-public class GrpcGetAllBescheidRequestTestFactory {
-
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-	public static GrpcGetAllBescheidRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetAllBescheidRequest.Builder createBuilder() {
-		return GrpcGetAllBescheidRequest.newBuilder().setVorgangId(VORGANG_ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidResponseTestFactory.java
deleted file mode 100644
index 9beae7eedc1980f75f54b84b6b84a5b1673816f8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetAllBescheidResponseTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.bescheid.GrpcGetAllBescheidResponse;
-
-public class GrpcGetAllBescheidResponseTestFactory {
-
-	public static final GrpcBescheid GRPC_BESCHEID = GrpcBescheidTestFactory.create();
-
-	public static GrpcGetAllBescheidResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetAllBescheidResponse.Builder createBuilder() {
-		return GrpcGetAllBescheidResponse.newBuilder().addBescheid(GRPC_BESCHEID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftRequestTestFactory.java
deleted file mode 100644
index 55b44b9f40c190644ace896510645a32c565d067..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftRequestTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftRequest;
-
-public class GrpcGetBescheidDraftRequestTestFactory {
-
-	public static GrpcGetBescheidDraftRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetBescheidDraftRequest.Builder createBuilder() {
-		return GrpcGetBescheidDraftRequest.newBuilder()
-				.setVorgangId(VorgangHeaderTestFactory.ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftResponseTestFactory.java
deleted file mode 100644
index 491f4532579b798fe419c518148eabbe0eaebdbd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetBescheidDraftResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.bescheid.GrpcBescheid;
-import de.ozgcloud.bescheid.GrpcGetBescheidDraftResponse;
-
-public class GrpcGetBescheidDraftResponseTestFactory {
-
-	public static final GrpcBescheid GRPC_BESCHEID = GrpcBescheidTestFactory.create();
-
-	public static GrpcGetBescheidDraftResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetBescheidDraftResponse.Builder createBuilder() {
-		return GrpcGetBescheidDraftResponse.newBuilder()
-				.setBescheid(GRPC_BESCHEID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentRequestTestFactory.java
deleted file mode 100644
index 213f3e655e40f80c400840c7fe6dd223e67cb0c1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentRequestTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.document.GrpcGetDocumentRequest;
-
-public class GrpcGetDocumentRequestTestFactory {
-
-	public static final String ID = DocumentTestFactory.ID;
-
-	public static GrpcGetDocumentRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetDocumentRequest.Builder createBuilder() {
-		return GrpcGetDocumentRequest.newBuilder().setId(ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentResponseTestFactory.java
deleted file mode 100644
index fb1c6f66adb1c80cb5c964a778eff2deb5c1eda2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcGetDocumentResponseTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import de.ozgcloud.document.GrpcDocument;
-import de.ozgcloud.document.GrpcGetDocumentResponse;
-
-public class GrpcGetDocumentResponseTestFactory {
-
-	public static final GrpcDocument GRPC_DOCUMENT = GrpcDocumentTestFactory.create();
-
-	public static GrpcGetDocumentResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetDocumentResponse.Builder createBuilder() {
-		return GrpcGetDocumentResponse.newBuilder().setDocument(GRPC_DOCUMENT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcSentInfoTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcSentInfoTestFactory.java
deleted file mode 100644
index 39f6fa51231bde4eff18d9becc2dc6fe1f9b34fa..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/GrpcSentInfoTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.time.ZonedDateTime;
-
-import de.ozgcloud.alfa.common.user.GrpcUserTestFactory;
-import de.ozgcloud.bescheid.GrpcSentInfo;
-
-public class GrpcSentInfoTestFactory {
-
-	public static final String SENT_AT = ZonedDateTime.now().toString();
-	public static final String SENT_BY = GrpcUserTestFactory.ID;
-
-	public static GrpcSentInfo create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcSentInfo.Builder createBuilder() {
-		return GrpcSentInfo.newBuilder()
-				.setSentAt(SENT_AT)
-				.setSentBy(SENT_BY);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/SentInfoTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/SentInfoTestFactory.java
deleted file mode 100644
index 7ec11090bba682a85d73876e3d0d0f2ef55e0475..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/SentInfoTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.bescheid;
-
-import java.time.ZonedDateTime;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class SentInfoTestFactory {
-
-	public static final ZonedDateTime SENT_AT = ZonedDateTime.now();
-	public static final UserId SENT_BY = UserProfileTestFactory.ID;
-
-	public static SentInfo create() {
-		return createBuilder().build();
-	}
-
-	public static SentInfo.SentInfoBuilder createBuilder() {
-		return SentInfo.builder()
-				.sentAt(SENT_AT)
-				.sentBy(SENT_BY);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/AnschriftTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/AnschriftTestFactory.java
deleted file mode 100644
index 9a5f3726dd9fd44456200d4d059fe3cf5db7f95d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/AnschriftTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.collaboration.Anschrift.AnschriftBuilder;
-
-public class AnschriftTestFactory {
-	public static final String PLZ = LoremIpsum.getInstance().getZipCode();
-	public static final String ORT = LoremIpsum.getInstance().getCity();
-	public static final String STRASSE = LoremIpsum.getInstance().getWords(2);
-	public static final String HAUSNUMMER = String.valueOf((int) (Math.random() * 1000));
-
-	public static Anschrift create() {
-		return createBuilder().build();
-	}
-
-	public static AnschriftBuilder createBuilder() {
-		return Anschrift.builder()
-				.strasse(STRASSE)
-				.ort(ORT)
-				.hausnummer(HAUSNUMMER)
-				.plz(PLZ);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationAssertions.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationAssertions.java
deleted file mode 100644
index b0791216e900caeda441f822e6389579a8f91122..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationAssertions.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.result.JsonPathResultMatchers;
-import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
-class CollaborationAssertions {
-
-	private final boolean collectionModel;
-
-	void assertHasFields(ResultActions response) throws Exception {
-		response.andExpect(jsonPath("id").doesNotExist())
-				.andExpect(jsonPath("vorgangId").doesNotExist())
-				.andExpect(jsonPath("collaborationVorgangId").doesNotExist())
-				.andExpect(jsonPath("titel").value(OrganisationsEinheitCollaborationTestFactory.TITEL))
-				.andExpect(jsonPath("beschreibung").value(OrganisationsEinheitCollaborationTestFactory.BESCHREIBUNG))
-				.andExpect(jsonPath("collaborationLevel").value(OrganisationsEinheitCollaborationTestFactory.COLLABORATION_LEVEL));
-	}
-
-	void assertHasZustaendigeStelleLink(ResultActions response, String controllerPath, String zustaendigeStelle) throws Exception {
-		var expectedLink = UriComponentsBuilder
-				.fromUriString("http://localhost")
-				.path(controllerPath)
-				.pathSegment(zustaendigeStelle)
-				.build();
-
-		response.andExpect(jsonPath("zustaendigeStelle").value(expectedLink.toString()));
-	}
-
-	private JsonPathResultMatchers jsonPath(String expression, Object... args) {
-		return MockMvcResultMatchers.jsonPath(jsonPathPrefix() + expression, args);
-	}
-
-	private String jsonPathPrefix() {
-		var prefix = "$.";
-		if (collectionModel) {
-			prefix += "content[0].";
-		}
-		return prefix;
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationByVorgangControllerTest.java
deleted file mode 100644
index c432f4b2aeae8b69b02074b5803285925a7ed650..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationByVorgangControllerTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.Collections;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import lombok.SneakyThrows;
-
-class CollaborationByVorgangControllerTest {
-
-	@InjectMocks
-	private CollaborationByVorgangController controller;
-
-	@Mock
-	private CollaborationService service;
-
-	@Mock
-	private CollaborationModelAssembler assembler;
-
-	private MockMvc mockMvc;
-
-	private static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetAllByVorgangId {
-
-		private final Collaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-		@Test
-		void shouldCallCollaborationService() {
-			performRequest();
-
-			verify(service).getCollaborations(VORGANG_ID);
-		}
-
-		@Nested
-		class TestOnExistingCollaboration {
-
-			private final CollaborationAssertions collaborationAssertions = new CollaborationAssertions(true);
-			private final Stream<Collaboration> collaborations = Stream.of(collaboration);
-
-			@BeforeEach
-			void mock() {
-				when(service.getCollaborations(VORGANG_ID)).thenReturn(collaborations);
-				when(assembler.toCollectionModel(collaborations, VORGANG_ID))
-						.thenReturn(CollectionModel.of(Collections.singletonList(EntityModel.of(collaboration))));
-			}
-
-			@Test
-			void shouldCallAssembler() {
-				performRequest();
-
-				verify(assembler).toCollectionModel(collaborations, VORGANG_ID);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldReturnStatusOk() {
-				var response = performRequest();
-
-				response.andExpect(status().isOk());
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldHaveContentWithFields() {
-				var response = performRequest();
-
-				collaborationAssertions.assertHasFields(response);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldHaveZustaendigeStelleLink() {
-				var response = performRequest();
-
-				collaborationAssertions.assertHasZustaendigeStelleLink(response, OrganisationsEinheitController.PATH,
-						OrganisationsEinheitCollaborationTestFactory.ZUSTAENDIGE_STELLE);
-			}
-		}
-
-		@SneakyThrows
-		private ResultActions performRequest() {
-			return mockMvc.perform(
-					get(CollaborationByVorgangController.PATH + "/" + VORGANG_ID + "/collaborations"));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationControllerTest.java
deleted file mode 100644
index 46cacf0c79daf497c83be3664d523884cf56a646..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationControllerTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import lombok.SneakyThrows;
-
-class CollaborationControllerTest {
-
-	@InjectMocks
-	private CollaborationController controller;
-
-	@Mock
-	private CollaborationService service;
-
-	@Mock
-	private CollaborationModelAssembler assembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final CollaborationAssertions collaborationAssertions = new CollaborationAssertions(false);
-
-		@Nested
-		class OnOrganisationsEinheitCollaboration {
-
-			public static final String COLLABORATION_ID = OrganisationsEinheitCollaborationTestFactory.ID;
-			private final Collaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-			@BeforeEach
-			void init() {
-				when(service.getById(OrganisationsEinheitCollaborationTestFactory.ID)).thenReturn(collaboration);
-				when(assembler.toModel(collaboration)).thenReturn(EntityModel.of(collaboration));
-			}
-
-			@Test
-			void shouldCallCollaborationService() {
-				performRequest();
-
-				verify(service).getById(COLLABORATION_ID);
-			}
-
-			@Test
-			void shouldCreateModel() {
-				performRequest();
-
-				verify(assembler).toModel(collaboration);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldReturnStatusOk() {
-				var response = performRequest();
-
-				response.andExpect(status().isOk());
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldHaveContentWithFields() {
-				var response = performRequest();
-
-				collaborationAssertions.assertHasFields(response);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldHaveZustaendigeStelleLink() {
-				var response = performRequest();
-
-				collaborationAssertions.assertHasZustaendigeStelleLink(response, OrganisationsEinheitController.PATH,
-						OrganisationsEinheitCollaborationTestFactory.ZUSTAENDIGE_STELLE);
-			}
-
-			@SneakyThrows
-			private ResultActions performRequest() {
-				return mockMvc.perform(get(CollaborationController.PATH + "/" + COLLABORATION_ID));
-			}
-		}
-
-		@Nested
-		class OnFachstelleCollaboration {
-
-			public static final String COLLABORATION_ID = FachstelleCollaborationTestFactory.ID;
-			private final Collaboration collaboration = FachstelleCollaborationTestFactory.create();
-
-			@BeforeEach
-			void init() {
-				when(service.getById(FachstelleCollaborationTestFactory.ID)).thenReturn(collaboration);
-				when(assembler.toModel(collaboration)).thenReturn(EntityModel.of(collaboration));
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldHaveContentWithLink() {
-				var response = performRequest();
-
-				collaborationAssertions.assertHasZustaendigeStelleLink(response, FachstelleController.PATH,
-						FachstelleCollaborationTestFactory.ZUSTAENDIGE_STELLE);
-			}
-
-			@SneakyThrows
-			private ResultActions performRequest() {
-				return mockMvc.perform(get(CollaborationController.PATH + "/" + COLLABORATION_ID));
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationMapperTest.java
deleted file mode 100644
index d279f7ad8f9c0b2b0ed708dd80eeea2cb44fc6bf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationMapperTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.Spy;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-
-class CollaborationMapperTest {
-
-	@Spy
-	private CollaborationMapper mapper = Mappers.getMapper(CollaborationMapper.class);
-
-	@Nested
-	class TestFromCollaborationRequest {
-
-		@Nested
-		class OnOrganisationsEinheitRequest {
-
-			public final GrpcCollaborationRequest request = GrpcFindRequestsResponseTestFactory.COLLABORATION_REQUEST;
-			public final OrganisationsEinheitCollaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-			@BeforeEach
-			void init() {
-				doReturn(false).when(mapper).isFachstelle(request);
-				doReturn(collaboration).when(mapper).fromOrganisationsEinheitRequest(request);
-			}
-
-			@Test
-			void shouldCheckForFachstelleRequest() {
-				mapper.fromCollaborationRequest(request);
-
-				verify(mapper).isFachstelle(request);
-			}
-
-			@Test
-			void shouldMapToOrganisationsEinheitCollaboration() {
-				mapper.fromCollaborationRequest(request);
-
-				verify(mapper).fromOrganisationsEinheitRequest(request);
-			}
-
-			@Test
-			void shouldReturnOrganisationsEinheitCollaboration() {
-				var mapped = mapper.fromCollaborationRequest(request);
-
-				assertThat(mapped).isEqualTo(collaboration);
-			}
-		}
-
-		@Nested
-		class OnFachstelleRequest {
-
-			public final GrpcCollaborationRequest request = GrpcFindRequestsResponseTestFactory.COLLABORATION_REQUEST;
-			public final FachstelleCollaboration collaboration = FachstelleCollaborationTestFactory.create();
-
-			@BeforeEach
-			void init() {
-				doReturn(true).when(mapper).isFachstelle(request);
-				doReturn(collaboration).when(mapper).fromFachstelleRequest(request);
-			}
-
-			@Test
-			void shouldCheckForFachstelleRequest() {
-				mapper.fromCollaborationRequest(request);
-
-				verify(mapper).isFachstelle(request);
-			}
-
-			@Test
-			void shouldMapToFachstelleCollaboration() {
-				mapper.fromCollaborationRequest(request);
-
-				verify(mapper).fromFachstelleRequest(request);
-			}
-
-			@Test
-			void shouldReturnFachstelleCollaboration() {
-				var mapped = mapper.fromCollaborationRequest(request);
-
-				assertThat(mapped).isEqualTo(collaboration);
-			}
-		}
-	}
-
-	@Nested
-	class TestIsFachstelle {
-
-		@Test
-		void shouldReturnTrue() {
-			var fachstelle = mapper.isFachstelle(GrpcCollaborationRequestForFachstelleTestFactory.create());
-
-			assertThat(fachstelle).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var fachstelle = mapper.isFachstelle(GrpcCollaborationRequestForOrganisationsEinheitTestFactory.create());
-
-			assertThat(fachstelle).isFalse();
-		}
-	}
-
-	@Nested
-	class TestFromOrganisationsEinheitRequest {
-
-		@Test
-		void shouldMap() {
-			var collaboration = mapper.fromOrganisationsEinheitRequest(GrpcCollaborationRequestForOrganisationsEinheitTestFactory.create());
-
-			assertThat(collaboration).usingRecursiveComparison().isEqualTo(OrganisationsEinheitCollaborationTestFactory.create());
-		}
-	}
-
-	@Nested
-	class TestFromFachstelleRequest {
-
-		@Test
-		void shouldMap() {
-			var collaboration = mapper.fromFachstelleRequest(GrpcCollaborationRequestForFachstelleTestFactory.create());
-
-			assertThat(collaboration).usingRecursiveComparison().isEqualTo(FachstelleCollaborationTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java
deleted file mode 100644
index 3f4db275292b754887a4287662e537e5fba55284..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationModelAssemblerTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.UriTemplate;
-
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.common.ModelBuilder;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class CollaborationModelAssemblerTest {
-
-	@Spy
-	@InjectMocks
-	private CollaborationModelAssembler assembler;
-
-	@Mock
-	private VorgangController vorgangController;
-
-	@Nested
-	class TestToModel {
-
-		private static final String REL_ZUSTAENDIGE_STELLE = "zustaendigeStelle";
-
-		@Nested
-		class OnOrganisationsEinheitCollaboration {
-
-			private final OrganisationsEinheitCollaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-			@Test
-			void shouldHaveContent() {
-				var entityModel = callAssembler();
-
-				assertThat(entityModel.getContent()).isEqualTo(collaboration);
-			}
-
-			@Test
-			void shouldHaveLinkToOrganisationsEinheit() {
-				var entityModel = callAssembler();
-
-				assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
-						.isEqualTo(OrganisationsEinheitController.PATH + "/" + OrganisationsEinheitTestFactory.ID);
-			}
-
-			private EntityModel<Collaboration> callAssembler() {
-				return assembler.toModel(collaboration);
-			}
-		}
-
-		@Nested
-		class OnFachstelleCollaboration {
-
-			private final FachstelleCollaboration collaboration = FachstelleCollaborationTestFactory.create();
-
-			@Test
-			void shouldHaveContent() {
-				var entityModel = callAssembler();
-
-				assertThat(entityModel.getContent()).isEqualTo(collaboration);
-			}
-
-			@Test
-			void shouldHaveLinkToFachstelle() {
-				var entityModel = callAssembler();
-
-				assertThat(entityModel.getLink(REL_ZUSTAENDIGE_STELLE)).get().extracting(Link::getHref)
-						.isEqualTo(FachstelleController.PATH + "/" + FachstelleTestFactory.ID);
-			}
-
-			private EntityModel<Collaboration> callAssembler() {
-				return assembler.toModel(collaboration);
-			}
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-
-		private final Collaboration collaboration = FachstelleCollaborationTestFactory.create();
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void mockVorgangController() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-		}
-
-		@Nested
-		class OnNonEmptyCollaborationList {
-
-			@Test
-			void shouldGetVorgang() {
-				callAssembler();
-
-				verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallToModel() {
-				callAssembler();
-
-				verify(assembler).toModel(collaboration);
-			}
-
-			@Test
-			void shouldHaveEntityModel() {
-				var entityModel = ModelBuilder.fromEntity(collaboration).buildModel();
-				doReturn(entityModel).when(assembler).toModel(collaboration);
-
-				var collectionModel = callAssembler();
-
-				assertThat(collectionModel.getContent()).containsExactly(entityModel);
-			}
-
-			@Test
-			void shouldHaveSelfLink() {
-				var collectionModel = callAssembler();
-
-				assertThat(collectionModel.getLink(IanaLinkRelations.SELF_VALUE)).get().extracting(Link::getHref)
-						.isEqualTo(CollaborationByVorgangController.PATH + "/" + VorgangHeaderTestFactory.ID + "/collaborations");
-			}
-
-			@Test
-			void shouldNotHaveCreateCollaborationRequestLink() {
-				var collectionModel = callAssembler();
-
-				assertThat(collectionModel.getLink(CollaborationModelAssembler.REL_CREATE_COLLABORATION_REQUEST)).isEmpty();
-			}
-
-			private CollectionModel<EntityModel<Collaboration>> callAssembler() {
-				return assembler.toCollectionModel(Stream.of(collaboration), VorgangHeaderTestFactory.ID);
-			}
-		}
-
-		@Nested
-		class OnEmptyCollaborationList {
-
-			@Test
-			void shouldGetVorgang() {
-				callAssembler();
-
-				verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldHaveEmptyContent() {
-				var collectionModel = callAssembler();
-
-				assertThat(collectionModel.getContent()).isEmpty();
-			}
-
-			@Test
-			void shouldHaveSelfLink() {
-				var collectionModel = callAssembler();
-
-				assertThat(collectionModel.getLink(IanaLinkRelations.SELF_VALUE)).get().extracting(Link::getHref)
-						.isEqualTo(CollaborationByVorgangController.PATH + "/" + VorgangHeaderTestFactory.ID + "/collaborations");
-			}
-
-			@Nested
-			class OnVorgangIsEditable {
-
-				@Mock
-				private Link createCollaborationRequestLink;
-
-				@BeforeEach
-				void mock() {
-					when(vorgangController.isEditable(vorgang)).thenReturn(true);
-					doReturn(createCollaborationRequestLink).when(assembler).buildCreateCollaborationRequestLink(vorgang);
-				}
-
-				@Test
-				void shouldHaveCreateCollaborationRequestLink() {
-					var collectionModel = callAssembler();
-
-					assertThat(collectionModel.getLinks()).contains(createCollaborationRequestLink);
-				}
-			}
-
-			@Nested
-			class OnVorgangIsNotEditable {
-
-				@BeforeEach
-				void mock() {
-					when(vorgangController.isEditable(vorgang)).thenReturn(false);
-				}
-
-				@Test
-				void shouldNotHaveCreateCollaborationRequestLink() {
-					var collectionModel = callAssembler();
-
-					assertThat(collectionModel.getLink(CollaborationModelAssembler.REL_CREATE_COLLABORATION_REQUEST)).isEmpty();
-				}
-			}
-
-			private CollectionModel<EntityModel<Collaboration>> callAssembler() {
-				return assembler.toCollectionModel(Stream.empty(), VorgangHeaderTestFactory.ID);
-			}
-		}
-	}
-
-	@Nested
-	class TestBuildCreateCollaborationRequestLink {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldHaveHrefToCreateCommand() {
-			var expectedHref = UriTemplate.of(CommandByRelationController.COMMAND_BY_RELATION_PATH)
-					.expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString();
-
-			var link = callAssembler();
-
-			assertThat(link).extracting(Link::getHref).isEqualTo(expectedHref);
-		}
-
-		@Test
-		void shouldHaveCreateCollaborationRequestRelation() {
-			var link = callAssembler();
-
-			assertThat(link).extracting(Link::getRel).isEqualTo(CollaborationModelAssembler.REL_CREATE_COLLABORATION_REQUEST);
-		}
-
-		private Link callAssembler() {
-			return assembler.buildCreateCollaborationRequestLink(vorgang);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteServiceTest.java
deleted file mode 100644
index db6e95eb2ed3aab8ee5abf335c5a3dfc3a7efd64..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationRemoteServiceTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.collaboration.request.CollaborationRequestServiceGrpc.CollaborationRequestServiceBlockingStub;
-import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
-import de.ozgcloud.collaboration.request.GrpcGetRequestRequest;
-
-class CollaborationRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private CollaborationRemoteService service;
-	@Mock
-	private CollaborationRequestServiceBlockingStub stub;
-	@Mock
-	private CollaborationMapper mapper;
-
-	@Nested
-	class TestGetById {
-
-		public static final String COLLABORATION_ID = GrpcGetRequestRequestTestFactory.COLLABORATION_ID;
-
-		private final GrpcGetRequestRequest request = GrpcGetRequestRequestTestFactory.create();
-		private final Collaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(stub.getRequest(request)).thenReturn(GrpcGetRequestResponseTestFactory.create());
-			when(mapper.fromCollaborationRequest(GrpcGetRequestResponseTestFactory.COLLABORATION_REQUEST)).thenReturn(collaboration);
-		}
-
-		@Test
-		void shouldBuildGetRequest() {
-			service.getById(COLLABORATION_ID);
-
-			verify(service).buildGetRequest(COLLABORATION_ID);
-		}
-
-		@Test
-		void shouldGetRequest() {
-			service.getById(COLLABORATION_ID);
-
-			verify(stub).getRequest(request);
-		}
-
-		@Test
-		void shouldMapFromCollaborationRequest() {
-			service.getById(COLLABORATION_ID);
-
-			verify(mapper).fromCollaborationRequest(GrpcGetRequestResponseTestFactory.COLLABORATION_REQUEST);
-		}
-
-		@Test
-		void shouldReturnCollaboration() {
-			var collaborationById = service.getById(COLLABORATION_ID);
-
-			assertThat(collaborationById).isEqualTo(collaboration);
-		}
-	}
-
-	@Nested
-	class TestGetCollaborations {
-
-		public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-		private final GrpcFindRequestsRequest searchRequest = GrpcFindRequestsRequestTestFactory.create();
-		private final Collaboration collaboration = OrganisationsEinheitCollaborationTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			doReturn(searchRequest).when(service).buildSearchRequest(VORGANG_ID);
-			when(stub.findRequests(searchRequest)).thenReturn(GrpcFindRequestsResponseTestFactory.create());
-			when(mapper.fromCollaborationRequest(GrpcFindRequestsResponseTestFactory.COLLABORATION_REQUEST)).thenReturn(collaboration);
-		}
-
-		@Test
-		void shouldBuildSearchRequest() {
-			service.getCollaborations(VORGANG_ID).toList();
-
-			verify(service).buildSearchRequest(VORGANG_ID);
-		}
-
-		@Test
-		void shouldFindRequests() {
-			service.getCollaborations(VORGANG_ID).toList();
-
-			verify(stub).findRequests(searchRequest);
-		}
-
-		@Test
-		void shouldMapFromCollaborationRequest() {
-			service.getCollaborations(VORGANG_ID).toList();
-
-			verify(mapper).fromCollaborationRequest(GrpcFindRequestsResponseTestFactory.COLLABORATION_REQUEST);
-		}
-
-
-		@Test
-		void shouldReturnCollaborations() {
-			var collaborations = service.getCollaborations(VORGANG_ID).toList();
-
-			assertThat(collaborations).containsExactly(collaboration);
-		}
-	}
-
-	@Nested
-	class TestBuildGetRequest {
-
-		@Test
-		void shouldSetCollaborationId() {
-			var request = service.buildGetRequest(GrpcGetRequestRequestTestFactory.COLLABORATION_ID);
-
-			assertThat(request.getId()).isEqualTo(GrpcGetRequestRequestTestFactory.COLLABORATION_ID);
-		}
-	}
-
-	@Nested
-	class TestBuildSearchRequest {
-
-		@Test
-		void shouldSetVorgangId() {
-			var request = service.buildSearchRequest(GrpcFindRequestsRequestTestFactory.VORGANG_ID);
-
-			assertThat(request).usingRecursiveComparison().isEqualTo(GrpcFindRequestsRequestTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationServiceTest.java
deleted file mode 100644
index 90addf09f050c5b09d08757084f116f7aadde152..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationServiceTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-class CollaborationServiceTest {
-
-	@InjectMocks
-	private CollaborationService service;
-
-	@Mock
-	private CollaborationRemoteService remoteService;
-
-	@Nested
-	class TestGetById {
-
-		public static final String COLLABORATION_ID = FachstelleCollaborationTestFactory.ID;
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(COLLABORATION_ID);
-
-			verify(remoteService).getById(COLLABORATION_ID);
-		}
-
-		@Test
-		void shouldReturnCollaboration() {
-			var expected = FachstelleCollaborationTestFactory.create();
-			when(remoteService.getById(COLLABORATION_ID)).thenReturn(expected);
-
-			var collaboration = service.getById(COLLABORATION_ID);
-
-			assertThat(collaboration).isEqualTo(expected);
-		}
-	}
-
-	@Nested
-	class TestGetCollaborations {
-
-		private static final String VORGANG_ID = UUID.randomUUID().toString();
-
-		@Test
-		void shouldCallRemoteService() {
-			callService();
-
-			verify(remoteService).getCollaborations(VORGANG_ID);
-		}
-
-		@Test
-		void shouldReturnCollaboration() {
-			var collaboration = FachstelleCollaborationTestFactory.create();
-			when(remoteService.getCollaborations(VORGANG_ID)).thenReturn(Stream.of(collaboration));
-
-			var returnedCollaboration = callService();
-
-			assertThat(returnedCollaboration).contains(collaboration);
-		}
-
-		private Stream<Collaboration> callService() {
-			return service.getCollaborations(VORGANG_ID);
-		}
-	}
-
-	@Nested
-	class TestHasCollaboration {
-
-		private final String id = UUID.randomUUID().toString();
-
-		@Test
-		void shouldCallRemoteService() {
-			callService();
-
-			verify(remoteService).getCollaborations(id);
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			var collaboration = FachstelleCollaborationTestFactory.create();
-			when(remoteService.getCollaborations(id)).thenReturn(Stream.of(collaboration));
-
-			var hasCollaboration = callService();
-
-			assertThat(hasCollaboration).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			when(remoteService.getCollaborations(id)).thenReturn(Stream.empty());
-
-			var hasCollaboration = callService();
-
-			assertThat(hasCollaboration).isFalse();
-		}
-
-		private boolean callService() {
-			return service.hasCollaboration(id);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorITCase.java
deleted file mode 100644
index 16aabccae584f25bdcea320868007372298e9196..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorITCase.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
-
-class CollaborationVorgangProcessorITCase {
-
-	@SpringBootTest(properties = {"ozgcloud.feature.collaboration-enabled=true"})
-	@Nested
-	class OnFeatureEnabled {
-
-		@Test
-		void shouldExistInApplicationContext(ApplicationContext context) {
-			assertThat(context.getBean(CollaborationVorgangProcessor.class)).isNotNull();
-		}
-	}
-
-	@SpringBootTest
-	@Nested
-	class OnFeatureDisabled {
-
-		@Test
-		void shouldNotExistInApplicationContext(ApplicationContext context) {
-			assertThatThrownBy(() -> context.getBean(CollaborationVorgangProcessor.class)).isInstanceOf(NoSuchBeanDefinitionException.class);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java
deleted file mode 100644
index 4a64401a176409235eaf75a26a7cc089575f1ddf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import de.ozgcloud.alfa.collaboration.CollaborationController.CollaborationByVorgangController;
-import de.ozgcloud.alfa.common.EntityModelTestFactory;
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class CollaborationVorgangProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private CollaborationVorgangProcessor processor;
-
-	@Mock
-	private CollaborationService collaborationService;
-
-	@Mock
-	private CurrentUserService currentUserService;
-
-	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@Nested
-	class TestProcess {
-
-		@Nested
-		class OnNullVorgang {
-
-			@Test
-			void shouldNotAddLinksIfVorgangIsNull() {
-				var model = processor.process(EntityModelTestFactory.NULLABLE);
-
-				assertThat(model.hasLinks()).isFalse();
-			}
-		}
-
-		@Nested
-		class OnNotVerwaltungUserRole {
-
-			@BeforeEach
-			void mockUserService() {
-				when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			}
-
-			@Test
-			void shouldNotAddLinks() {
-				var model = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-
-				assertThat(model.hasLinks()).isFalse();
-			}
-
-		}
-
-		@Nested
-		class OnNonNullVorgangAndOnVerwaltungUserRole {
-
-			@BeforeEach
-			void prepareBuilder() {
-				initUserProfileUrlProvider(urlProvider);
-			}
-
-			@BeforeEach
-			void mockUserService() {
-				when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-			}
-
-			@Nested
-			class OnCollaborationPresent {
-
-				@BeforeEach
-				void setUpMock() {
-					when(collaborationService.hasCollaboration(VorgangHeaderTestFactory.ID)).thenReturn(true);
-				}
-
-				@Test
-				void shouldHaveTwoLinks() {
-					var model = callProcessor();
-
-					assertThat(model.getLinks()).hasSize(2);
-				}
-
-				@Test
-				void shouldNotAddSearchOrganisationsEinheitLink() {
-					var model = callProcessor();
-
-					assertThat(model.getLink(CollaborationVorgangProcessor.REL_SEARCH_ORGANISATIONS_EINHEIT)).isEmpty();
-				}
-
-				@Test
-				void shouldAddCollaborationsLink() {
-					var model = callProcessor();
-
-					assertThat(model.getLink(CollaborationVorgangProcessor.REL_COLLABORATIONS)).get()
-							.extracting(Link::getHref)
-							.isEqualTo(CollaborationByVorgangController.PATH + "/" + VorgangHeaderTestFactory.ID + "/collaborations");
-				}
-			}
-
-			@Nested
-			class OnCollaborationsNotPresent {
-
-				@BeforeEach
-				void setUpMock() {
-					when(collaborationService.hasCollaboration(VorgangHeaderTestFactory.ID)).thenReturn(false);
-				}
-
-				@Test
-				void shouldHaveFourLinks() {
-					var model = callProcessor();
-
-					assertThat(model.getLinks()).hasSize(4);
-				}
-
-				@Test
-				void shouldAddSearchOrganisationsEinheitLink() {
-					var expectedHref = UriComponentsBuilder.fromUriString(OrganisationsEinheitController.PATH)
-							.queryParam(OrganisationsEinheitController.SEARCH_BY_PARAM, "{" + OrganisationsEinheitController.SEARCH_BY_PARAM + "}")
-							.build().toString();
-
-					var model = callProcessor();
-
-					assertThat(model.getLink(CollaborationVorgangProcessor.REL_SEARCH_ORGANISATIONS_EINHEIT)).get()
-							.extracting(Link::getHref)
-							.isEqualTo(expectedHref);
-				}
-
-				@Test
-				void shouldAddSearchFachstelleLink() {
-					var expectedHref = UriComponentsBuilder.fromUriString(FachstelleController.PATH)
-							.queryParam(FachstelleController.SEARCH_BY_PARAM, "{" + FachstelleController.SEARCH_BY_PARAM + "}")
-							.build().toString();
-
-					var model = callProcessor();
-
-					assertThat(model.getLink(CollaborationVorgangProcessor.REL_SEARCH_FACHSTELLE)).get()
-							.extracting(Link::getHref)
-							.isEqualTo(expectedHref);
-				}
-
-				@Test
-				void shouldAddCollaborationsLink() {
-					var expectedHref = UriComponentsBuilder.fromUriString(CollaborationByVorgangController.PATH)
-							.pathSegment(VorgangHeaderTestFactory.ID, "collaborations")
-							.build().toString();
-
-					var model = callProcessor();
-
-					assertThat(model.getLink(CollaborationVorgangProcessor.REL_COLLABORATIONS)).get()
-							.extracting(Link::getHref)
-							.isEqualTo(expectedHref);
-				}
-			}
-
-			private EntityModel<VorgangWithEingang> callProcessor() {
-				return processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleCollaborationTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleCollaborationTestFactory.java
deleted file mode 100644
index 70f19d51460de816bf170b04df3191164b0d4727..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleCollaborationTestFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.collaboration.FachstelleCollaboration.FachstelleCollaborationBuilder;
-
-public class FachstelleCollaborationTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String COLLABORATION_VORGANG_ID = UUID.randomUUID().toString();
-	public static final long COLLABORATION_LEVEL = 4L;
-	public static final String TITEL = LoremIpsum.getInstance().getWords(7);
-	public static final String BESCHREIBUNG = LoremIpsum.getInstance().getParagraphs(2, 5);
-	public static final String ZUSTAENDIGE_STELLE = FachstelleTestFactory.ID;
-
-	public static FachstelleCollaboration create() {
-		return createBuilder()
-				.build();
-	}
-
-	private static FachstelleCollaborationBuilder createBuilder() {
-		return FachstelleCollaboration.builder()
-				.id(ID)
-				.collaborationVorgangId(COLLABORATION_VORGANG_ID)
-				.collaborationLevel(COLLABORATION_LEVEL)
-				.titel(TITEL)
-				.beschreibung(BESCHREIBUNG)
-				.zustaendigeStelle(ZUSTAENDIGE_STELLE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleControllerTest.java
deleted file mode 100644
index 1e5fd24ad9cbb264f719b89695615e0c7597b557..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleControllerTest.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import lombok.SneakyThrows;
-
-class FachstelleControllerTest {
-
-	@InjectMocks
-	private FachstelleController controller;
-
-	@Mock
-	private FachstelleService service;
-
-	@Mock
-	private FachstelleModelAssembler modelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final Fachstelle fachstelle = FachstelleTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.getById(FachstelleTestFactory.ID)).thenReturn(fachstelle);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallFachstelleService() {
-			performRequest();
-
-			verify(service).getById(FachstelleTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallAssembler() {
-			performRequest();
-
-			verify(modelAssembler).toModel(fachstelle);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			when(modelAssembler.toModel(fachstelle)).thenReturn(EntityModel.of(fachstelle));
-
-			var response = performRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveFachstelleName() {
-			when(modelAssembler.toModel(fachstelle)).thenReturn(EntityModel.of(fachstelle));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.name").value(FachstelleTestFactory.NAME));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveFachstelleAnschrift() {
-			when(modelAssembler.toModel(fachstelle)).thenReturn(EntityModel.of(fachstelle));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.anschrift").value(FachstelleTestFactory.ANSCHRIFT));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveFachstelleEmail() {
-			when(modelAssembler.toModel(fachstelle)).thenReturn(EntityModel.of(fachstelle));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.email").value(FachstelleTestFactory.EMAIL));
-		}
-
-		@SneakyThrows
-		private ResultActions performRequest() {
-			return mockMvc.perform(get(FachstelleController.PATH + "/" + FachstelleTestFactory.ID));
-		}
-	}
-
-	@Nested
-	class TestSearch {
-
-		private final Fachstelle fachstelle1 = FachstelleTestFactory.create();
-		private final Fachstelle fachstelle2 = FachstelleTestFactory.createBuilder()
-				.name(LoremIpsum.getInstance().getName())
-				.build();
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-		private final List<Fachstelle> fachstellen = List.of(fachstelle1, fachstelle2);
-
-		@BeforeEach
-		void setUpMocks() {
-			when(service.searchFachstellen(searchBy)).thenReturn(Stream.of(fachstelle1, fachstelle2));
-			when(modelAssembler.toCollectionModel(fachstellen))
-					.thenReturn(
-							CollectionModel.of(List.of(EntityModel.of(fachstelle1), EntityModel.of(fachstelle2))));
-		}
-
-		@Test
-		void shouldCallService() {
-			performRequest();
-
-			verify(service).searchFachstellen(searchBy);
-		}
-
-		@Test
-		void shouldCallModelAssembler() {
-			performRequest();
-
-			verify(modelAssembler).toCollectionModel(fachstellen);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			var response = performRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstFachstelleName() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].name").value(fachstelle1.getName()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstFachstelleAnschrift() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].anschrift").value(fachstelle1.getAnschrift()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstFachstelleEmail() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].email").value(fachstelle1.getEmail()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondFachstelleName() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].name").value(fachstelle2.getName()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondFachstelleAnschrift() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].anschrift").value(fachstelle2.getAnschrift()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondFachstelleEmail() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].email").value(fachstelle2.getEmail()));
-		}
-
-		@SneakyThrows
-		private ResultActions performRequest() {
-			return mockMvc.perform(get(FachstelleController.PATH)
-					.param("searchBy", searchBy)).andExpect(status().isOk());
-
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleMapperTest.java
deleted file mode 100644
index c500205e72ff6bb575a4f1aa0b59b3f173d53049..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleMapperTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class FachstelleMapperTest {
-
-	private final FachstelleMapper mapper = Mappers.getMapper(FachstelleMapper.class);
-
-	@Nested
-	class TestFromGrpc {
-
-		@Test
-		void shouldMap() {
-			var fachstelle = mapper.fromGrpc(GrpcFachstelleTestFactory.create());
-
-			assertThat(fachstelle).usingRecursiveComparison().isEqualTo(FachstelleTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssemblerTest.java
deleted file mode 100644
index 9a1f9177c0d59bed039987f5c16271783b98ea1b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleModelAssemblerTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-class FachstelleModelAssemblerTest {
-
-	@Spy
-	private FachstelleModelAssembler assembler;
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = assembler.toModel(FachstelleTestFactory.create());
-
-			assertHaveSelfLink(model);
-		}
-
-		private void assertHaveSelfLink(EntityModel<Fachstelle> model) {
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(FachstelleController.PATH + "/" + FachstelleTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-
-		private Fachstelle fachstelle = FachstelleTestFactory.create();
-
-		@Test
-		void shouldCallToModel() {
-			callAssembler();
-
-			verify(assembler).toModel(fachstelle);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = callAssembler();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(FachstelleController.PATH);
-		}
-
-		@Test
-		void shouldContainEntityModel() {
-			var entityModel = EntityModel.of(fachstelle);
-			doReturn(entityModel).when(assembler).toModel(fachstelle);
-
-			var model = callAssembler();
-
-			assertThat(model).containsExactly(entityModel);
-		}
-
-		private CollectionModel<EntityModel<Fachstelle>> callAssembler() {
-			return assembler.toCollectionModel(List.of(fachstelle));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteServiceTest.java
deleted file mode 100644
index f5a47ee1caef08485928e17808fe9f88758183c3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleRemoteServiceTest.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.zufi.grpc.fachstelle.FachstelleServiceGrpc.FachstelleServiceBlockingStub;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchRequest;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchResponse;
-
-class FachstelleRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private FachstelleRemoteService service;
-
-	@Mock
-	private FachstelleServiceBlockingStub serviceStub;
-
-	@Mock
-	private FachstelleMapper fachstelleMapper;
-
-	@Nested
-	class TestSearch {
-
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-		private final GrpcFachstelleSearchResponse grpcFachstelleSearchResponse = GrpcFachstelleSearchResponseTestFactory
-				.create();
-
-		@BeforeEach
-		void setUpMocks() {
-			when(serviceStub.search(argThat(requestContainsSearchBy()))).thenReturn(grpcFachstelleSearchResponse);
-		}
-
-		@Test
-		void shouldCallGrpcStub() {
-			callService();
-
-			verify(serviceStub).search(argThat(requestContainsSearchBy()));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			callService().toList();
-
-			verify(fachstelleMapper).fromGrpc(GrpcFachstelleSearchResponseTestFactory.FACHSTELLE);
-		}
-
-		@Test
-		void shouldReturnFachstelle() {
-			var fachstelle = FachstelleTestFactory.create();
-			when(fachstelleMapper.fromGrpc(GrpcFachstelleSearchResponseTestFactory.FACHSTELLE)).thenReturn(fachstelle);
-
-			var fachstellen = callService();
-
-			assertThat(fachstellen).containsExactly(fachstelle);
-		}
-
-		private Stream<Fachstelle> callService() {
-			return service.search(searchBy);
-		}
-
-		private ArgumentMatcher<GrpcFachstelleSearchRequest> requestContainsSearchBy() {
-			return request -> request.getSearchBy().equals(searchBy);
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final GrpcFachstelleGetRequest request = GrpcFachstelleGetRequestTestFactory.create();
-		private final GrpcFachstelleGetResponse response = GrpcFachstelleGetResponseTestFactory.create();
-		private final Fachstelle fachstelle = FachstelleTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			doReturn(request).when(service).buildGetByIdRequest(FachstelleTestFactory.ID);
-			when(serviceStub.getById(request)).thenReturn(response);
-			doReturn(fachstelle).when(service).getFachstelleFromGetByIdResponse(response);
-		}
-
-		@Test
-		void shouldBuildRequest() {
-			callService();
-
-			verify(service).buildGetByIdRequest(FachstelleTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallGrpcStub() {
-			callService();
-
-			verify(serviceStub).getById(request);
-		}
-
-		@Test
-		void shouldBuildResponse() {
-			callService();
-
-			verify(service).getFachstelleFromGetByIdResponse(response);
-		}
-
-		@Test
-		void shouldReturnFachstelle() {
-			var get = service.getById(FachstelleTestFactory.ID);
-
-			assertThat(get).isEqualTo(fachstelle);
-		}
-
-		private Fachstelle callService() {
-			return service.getById(FachstelleTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestBuildGetByIdRequest {
-
-		@Test
-		void shouldHaveId() {
-			var request = service.buildGetByIdRequest(FachstelleTestFactory.ID);
-
-			assertThat(request.getId()).isEqualTo(FachstelleTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetFachstelleFromGetByIdResponse {
-
-		private final GrpcFachstelleGetResponse response = GrpcFachstelleGetResponseTestFactory.create();
-		private final Fachstelle fachstelle = FachstelleTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			when(fachstelleMapper.fromGrpc(response.getFachstelle())).thenReturn(fachstelle);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			callService();
-
-			verify(fachstelleMapper).fromGrpc(response.getFachstelle());
-		}
-
-		@Test
-		void shouldReturnFachstelle() {
-			var built = callService();
-
-			assertThat(built).isEqualTo(fachstelle);
-		}
-
-		private Fachstelle callService() {
-			return service.getFachstelleFromGetByIdResponse(response);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleServiceTest.java
deleted file mode 100644
index b4ed3aa67464127a9ba28b955af65b328d78a6a2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleServiceTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-class FachstelleServiceTest {
-
-	@InjectMocks
-	private FachstelleService service;
-
-	@Mock
-	private FachstelleRemoteService remoteService;
-
-	@Nested
-	class TestGetById {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(FachstelleTestFactory.ID);
-
-			verify(remoteService).getById(FachstelleTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnFachstelle() {
-			var fachstelle = FachstelleTestFactory.create();
-			when(remoteService.getById(FachstelleTestFactory.ID)).thenReturn(fachstelle);
-
-			var gotFachstelle = service.getById(FachstelleTestFactory.ID);
-
-			assertThat(gotFachstelle).isEqualTo(fachstelle);
-		}
-	}
-
-	@Nested
-	class TestSearchFachstellen {
-
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-
-		@Test
-		void shouldCallRemoteService() {
-			callService();
-
-			verify(remoteService).search(searchBy);
-		}
-
-		@Test
-		void shouldReturnFachstellen() {
-			var fachstelle = FachstelleTestFactory.create();
-			when(remoteService.search(searchBy)).thenReturn(Stream.of(fachstelle));
-
-			var fachstellen = callService();
-
-			assertThat(fachstellen).containsExactly(fachstelle);
-		}
-
-		private Stream<Fachstelle> callService() {
-			return service.searchFachstellen(searchBy);
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleTestFactory.java
deleted file mode 100644
index 5e672ba9eee4f7a31eca972ce2f27c061c504429..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/FachstelleTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class FachstelleTestFactory {
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String NAME = LoremIpsum.getInstance().getName();
-	public static final String ANSCHRIFT = LoremIpsum.getInstance().getCity();
-	public static final String EMAIL = LoremIpsum.getInstance().getEmail();
-
-	public static Fachstelle create() {
-		return createBuilder().build();
-	}
-
-	public static Fachstelle.FachstelleBuilder createBuilder() {
-		return Fachstelle.builder()
-				.id(ID)
-				.name(NAME)
-				.anschrift(ANSCHRIFT)
-				.email(EMAIL);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcAnschriftTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcAnschriftTestFactory.java
deleted file mode 100644
index 2843ca246d032ee963672171fd7dd13ca85bf988..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcAnschriftTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcAnschrift;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcAnschrift.Builder;
-
-public class GrpcAnschriftTestFactory {
-	public static final String STRASSE = AnschriftTestFactory.STRASSE;
-	public static final String HAUSNUMMER = AnschriftTestFactory.HAUSNUMMER;
-	public static final String PLZ = AnschriftTestFactory.PLZ;
-	public static final String ORT = AnschriftTestFactory.ORT;
-
-	public static GrpcAnschrift create() {
-		return createBuilder().build();
-	}
-
-	public static Builder createBuilder() {
-		return GrpcAnschrift.newBuilder()
-				.setStrasse(STRASSE)
-				.setHausnummer(HAUSNUMMER)
-				.setPlz(PLZ)
-				.setOrt(ORT);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForFachstelleTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForFachstelleTestFactory.java
deleted file mode 100644
index 4ebe8da9c1445f3d839f06dab2eb588a583169a5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForFachstelleTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-
-class GrpcCollaborationRequestForFachstelleTestFactory {
-
-	public static final String ID = FachstelleCollaborationTestFactory.ID;
-	public static final String COLLABORATION_VORGANG_ID = FachstelleCollaborationTestFactory.COLLABORATION_VORGANG_ID;
-	public static final String TITEL = FachstelleCollaborationTestFactory.TITEL;
-	public static final String BESCHREIBUNG = FachstelleCollaborationTestFactory.BESCHREIBUNG;
-	public static final String ZUSTAENDIGE_STELLE = FachstelleCollaborationTestFactory.ZUSTAENDIGE_STELLE;
-
-	public static GrpcCollaborationRequest create() {
-		return createBuilder()
-				.setCollaborationLevel(FachstelleCollaborationTestFactory.COLLABORATION_LEVEL)
-				.build();
-	}
-
-	public static GrpcCollaborationRequest.Builder createBuilder() {
-		return GrpcCollaborationRequest.newBuilder()
-				.setId(ID)
-				.setCollaborationVorgangId(COLLABORATION_VORGANG_ID)
-				.setTitel(TITEL)
-				.setBeschreibung(BESCHREIBUNG)
-				.setZustaendigeStelle(ZUSTAENDIGE_STELLE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForOrganisationsEinheitTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForOrganisationsEinheitTestFactory.java
deleted file mode 100644
index d212054294df68b932bda1091abe9b198120dd84..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcCollaborationRequestForOrganisationsEinheitTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-
-class GrpcCollaborationRequestForOrganisationsEinheitTestFactory {
-
-	public static final String ID = OrganisationsEinheitCollaborationTestFactory.ID;
-	public static final String COLLABORATION_VORGANG_ID = OrganisationsEinheitCollaborationTestFactory.COLLABORATION_VORGANG_ID;
-	public static final String TITEL = OrganisationsEinheitCollaborationTestFactory.TITEL;
-	public static final String BESCHREIBUNG = OrganisationsEinheitCollaborationTestFactory.BESCHREIBUNG;
-	public static final String ZUSTAENDIGE_STELLE = OrganisationsEinheitCollaborationTestFactory.ZUSTAENDIGE_STELLE;
-
-	public static GrpcCollaborationRequest create() {
-		return createBuilder()
-				.setCollaborationLevel(OrganisationsEinheitCollaborationTestFactory.COLLABORATION_LEVEL)
-				.build();
-	}
-
-	public static GrpcCollaborationRequest.Builder createBuilder() {
-		return GrpcCollaborationRequest.newBuilder()
-				.setId(ID)
-				.setCollaborationVorgangId(COLLABORATION_VORGANG_ID)
-				.setTitel(TITEL)
-				.setBeschreibung(BESCHREIBUNG)
-				.setZustaendigeStelle(ZUSTAENDIGE_STELLE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetRequestTestFactory.java
deleted file mode 100644
index d51e2c01ae242b66f0dec1869f1c2557b04c3ba9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetRequestTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetRequest;
-
-class GrpcFachstelleGetRequestTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-
-	public static GrpcFachstelleGetRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFachstelleGetRequest.Builder createBuilder() {
-		return GrpcFachstelleGetRequest.newBuilder().setId(ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetResponseTestFactory.java
deleted file mode 100644
index 7cee69f700d48abe4eb021e969f0274711a4c527..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleGetResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleGetResponse;
-
-class GrpcFachstelleGetResponseTestFactory {
-
-	public static final GrpcFachstelle GRPC_FACHSTELLE = GrpcFachstelleTestFactory.create();
-
-	public static GrpcFachstelleGetResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFachstelleGetResponse.Builder createBuilder() {
-		return GrpcFachstelleGetResponse.newBuilder().setFachstelle(GRPC_FACHSTELLE);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleSearchResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleSearchResponseTestFactory.java
deleted file mode 100644
index 7e1d52c6d91246fc2d6a48adea17c69a85013b29..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleSearchResponseTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle;
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelleSearchResponse;
-
-public class GrpcFachstelleSearchResponseTestFactory {
-
-	public static final GrpcFachstelle FACHSTELLE = GrpcFachstelleTestFactory.create();
-
-	public static GrpcFachstelleSearchResponse create() {
-		return createBuilder()
-				.build();
-	}
-
-	public static GrpcFachstelleSearchResponse.Builder createBuilder() {
-		return GrpcFachstelleSearchResponse.newBuilder()
-				.addFachstellen(FACHSTELLE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleTestFactory.java
deleted file mode 100644
index 4744d48d62c276154556c3e8ed6bca0381741887..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFachstelleTestFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.fachstelle.GrpcFachstelle;
-
-public class GrpcFachstelleTestFactory {
-	public static final String ID = FachstelleTestFactory.ID;
-	public static final String NAME = FachstelleTestFactory.NAME;
-	public static final String ANSCHRIFT = FachstelleTestFactory.ANSCHRIFT;
-	public static final String EMAIL = FachstelleTestFactory.EMAIL;
-
-	public static GrpcFachstelle create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFachstelle.Builder createBuilder() {
-		return GrpcFachstelle.newBuilder()
-				.setId(ID)
-				.setFirmenName(NAME)
-				.setAnschrift(ANSCHRIFT)
-				.setEmailAdresse(EMAIL);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsRequestTestFactory.java
deleted file mode 100644
index c78dcec4ee4e0e982cb7130fdfe655d41323ae31..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsRequestTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.collaboration.request.GrpcFindRequestsRequest;
-
-class GrpcFindRequestsRequestTestFactory {
-
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-	public static GrpcFindRequestsRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFindRequestsRequest.Builder createBuilder() {
-		return GrpcFindRequestsRequest.newBuilder().setVorgangId(VORGANG_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsResponseTestFactory.java
deleted file mode 100644
index 102e3dc3e68515b84bc6fdd5ca2125383ead2f31..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcFindRequestsResponseTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-import de.ozgcloud.collaboration.request.GrpcFindRequestsResponse;
-
-class GrpcFindRequestsResponseTestFactory {
-
-	public static final GrpcCollaborationRequest COLLABORATION_REQUEST = GrpcCollaborationRequestForOrganisationsEinheitTestFactory.create();
-
-	public static GrpcFindRequestsResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFindRequestsResponse.Builder createBuilder() {
-		return GrpcFindRequestsResponse.newBuilder().addRequests(COLLABORATION_REQUEST);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestRequestTestFactory.java
deleted file mode 100644
index 974dfb3f3b63cc3b5410fd4dc9595d5803786d82..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestRequestTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import de.ozgcloud.collaboration.request.GrpcGetRequestRequest;
-
-class GrpcGetRequestRequestTestFactory {
-
-	public static final String COLLABORATION_ID = UUID.randomUUID().toString();
-
-	public static GrpcGetRequestRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetRequestRequest.Builder createBuilder() {
-		return GrpcGetRequestRequest.newBuilder().setId(COLLABORATION_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestResponseTestFactory.java
deleted file mode 100644
index b90e8ae9b15d2c9fd5e77e5e57c5e114b2fa855c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcGetRequestResponseTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.collaboration.request.GrpcCollaborationRequest;
-import de.ozgcloud.collaboration.request.GrpcGetRequestResponse;
-
-class GrpcGetRequestResponseTestFactory {
-
-	public static final GrpcCollaborationRequest COLLABORATION_REQUEST = GrpcCollaborationRequestForOrganisationsEinheitTestFactory.create();
-
-	public static GrpcGetRequestResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetRequestResponse.Builder createBuilder() {
-		return GrpcGetRequestResponse.newBuilder().setRequest(COLLABORATION_REQUEST);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetRequestTestFactory.java
deleted file mode 100644
index fb15ac8307c6bb871f2e7ef9a84ff49375afe882..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetRequestTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest;
-
-class GrpcOrganisationsEinheitGetRequestTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-
-	public static GrpcOrganisationsEinheitGetRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcOrganisationsEinheitGetRequest.Builder createBuilder() {
-		return GrpcOrganisationsEinheitGetRequest.newBuilder().setId(ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetResponseTestFactory.java
deleted file mode 100644
index 0a78226aff84a8a2239c1e5f1e9e741ea7c1f55e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitGetResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse;
-
-class GrpcOrganisationsEinheitGetResponseTestFactory {
-
-	public static final GrpcOrganisationsEinheit GRPC_ORGANISATIONS_EINHEIT = GrpcOrganisationsEinheitTestFactory.create();
-
-	public static GrpcOrganisationsEinheitGetResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcOrganisationsEinheitGetResponse.Builder createBuilder() {
-		return GrpcOrganisationsEinheitGetResponse.newBuilder().setOrganisationsEinheit(GRPC_ORGANISATIONS_EINHEIT);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitSearchResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitSearchResponseTestFactory.java
deleted file mode 100644
index b904d1fcabe8b3e856b451b0337f9026694d7fa4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitSearchResponseTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchResponse;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchResponse.Builder;
-
-public class GrpcOrganisationsEinheitSearchResponseTestFactory {
-
-	public static final GrpcOrganisationsEinheit ORGANISATIONS_EINHEIT = GrpcOrganisationsEinheitTestFactory.create();
-
-	public static GrpcOrganisationsEinheitSearchResponse create() {
-		return createBuilder()
-				.build();
-	}
-
-	public static Builder createBuilder() {
-		return GrpcOrganisationsEinheitSearchResponse.newBuilder()
-				.addOrganisationsEinheiten(ORGANISATIONS_EINHEIT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitTestFactory.java
deleted file mode 100644
index a847367d717be3672a6f38d5583a2c60d8277707..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcOrganisationsEinheitTestFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcAnschrift;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheit.Builder;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcXzufiId;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcZustaendigkeit;
-
-public class GrpcOrganisationsEinheitTestFactory {
-	public static final String ID = OrganisationsEinheitTestFactory.ID;
-	public static final GrpcXzufiId XZUFI_ID = GrpcXzufiIdTestFactory.create();
-	public static final String NAME = OrganisationsEinheitTestFactory.NAME;
-	public static final String SYNONYME = LoremIpsum.getInstance().getWords(5);
-	public static final String VORGANG_MANAGER_ADDRESS = LoremIpsum.getInstance().getUrl();
-	public static final GrpcAnschrift ANSCHRIFT = GrpcAnschriftTestFactory.create();
-	public static final GrpcZustaendigkeit ZUSTAENDIGKEIT = GrpcZustaendigkeitTestFactory.create();
-
-	public static GrpcOrganisationsEinheit create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcOrganisationsEinheit createWithoutSynonyme() {
-		return createBuilderWithoutSynonyme()
-				.build();
-	}
-
-	public static Builder createBuilder() {
-		return createBuilderWithoutSynonyme()
-				.setSynonyme(SYNONYME);
-	}
-
-	public static Builder createBuilderWithoutSynonyme() {
-		return GrpcOrganisationsEinheit.newBuilder()
-				.setId(ID)
-				.setName(NAME)
-				.setAnschrift(ANSCHRIFT)
-				.setVorgangManagerAddress(VORGANG_MANAGER_ADDRESS)
-				.addZustaendigkeiten(ZUSTAENDIGKEIT)
-				.setXzufiId(XZUFI_ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcXzufiIdTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcXzufiIdTestFactory.java
deleted file mode 100644
index 6d3caee2917c9cdd320054411c032b0dc8c9eade..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcXzufiIdTestFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcXzufiId;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcXzufiId.Builder;
-
-public class GrpcXzufiIdTestFactory {
-	public static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString();
-	public static final String SCHEME_AGENCY_ID = UUID.randomUUID().toString();
-
-	public static GrpcXzufiId create() {
-		return createBuilder(ORGANISATIONS_EINHEIT_ID, SCHEME_AGENCY_ID).build();
-	}
-
-	public static GrpcXzufiId create(String id, String schemeAgencyId) {
-		return createBuilder(id, schemeAgencyId).build();
-	}
-
-	public static Builder createBuilder(String id, String schemeAgencyId) {
-		return GrpcXzufiId.newBuilder().setId(id).setSchemeAgencyId(schemeAgencyId);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcZustaendigkeitTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcZustaendigkeitTestFactory.java
deleted file mode 100644
index f0072099d0203e1e2d04abd9c03c28f39d7cb3da..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/GrpcZustaendigkeitTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcXzufiId;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcZustaendigkeit;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcZustaendigkeit.Builder;
-
-public class GrpcZustaendigkeitTestFactory {
-	public static final GrpcXzufiId ID = GrpcXzufiIdTestFactory.create();
-	public static final String GEBIET_ID = UUID.randomUUID().toString();
-
-	public static GrpcZustaendigkeit create() {
-		return createBuilder().build();
-	}
-
-	private static Builder createBuilder() {
-		return GrpcZustaendigkeit.newBuilder()
-				.setXzufiId(ID)
-				.setGebietId(GEBIET_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaborationTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaborationTestFactory.java
deleted file mode 100644
index 88d52fc1d116a1c1f4c5cfc413f41395efd9a9f9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitCollaborationTestFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.collaboration.OrganisationsEinheitCollaboration.OrganisationsEinheitCollaborationBuilder;
-
-public class OrganisationsEinheitCollaborationTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String COLLABORATION_VORGANG_ID = UUID.randomUUID().toString();
-	public static final long COLLABORATION_LEVEL = 1L;
-	public static final String TITEL = LoremIpsum.getInstance().getWords(7);
-	public static final String BESCHREIBUNG = LoremIpsum.getInstance().getParagraphs(2, 5);
-	public static final String ZUSTAENDIGE_STELLE = OrganisationsEinheitTestFactory.ID;
-
-	public static OrganisationsEinheitCollaboration create() {
-		return createBuilder()
-				.build();
-	}
-
-	private static OrganisationsEinheitCollaborationBuilder createBuilder() {
-		return OrganisationsEinheitCollaboration.builder()
-				.id(ID)
-				.collaborationVorgangId(COLLABORATION_VORGANG_ID)
-				.collaborationLevel(COLLABORATION_LEVEL)
-				.titel(TITEL)
-				.beschreibung(BESCHREIBUNG)
-				.zustaendigeStelle(ZUSTAENDIGE_STELLE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java
deleted file mode 100644
index 8f1efd6b991fc2f5649f58359da0cf0d6941c2fb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import lombok.SneakyThrows;
-
-class OrganisationsEinheitControllerTest {
-
-	@InjectMocks
-	private OrganisationsEinheitController controller;
-
-	@Mock
-	private OrganisationsEinheitService service;
-
-	@Mock
-	private OrganisationsEinheitModelAssembler assembler;
-
-	@Mock
-	private OrganisationsEinheitHeaderModelAssembler headerModelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.getById(OrganisationsEinheitTestFactory.ID)).thenReturn(organisationsEinheit);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallOrganisationsEinheitService() {
-			performRequest();
-
-			verify(service).getById(OrganisationsEinheitTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallAssembler() {
-			performRequest();
-
-			verify(assembler).toModel(organisationsEinheit);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			when(assembler.toModel(organisationsEinheit)).thenReturn(EntityModel.of(organisationsEinheit));
-
-			var response = performRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveOrganisationsEinheitId() {
-			when(assembler.toModel(organisationsEinheit)).thenReturn(EntityModel.of(organisationsEinheit));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.id").value(OrganisationsEinheitTestFactory.ID));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveOrganisationsEinheitXzufiId() {
-			when(assembler.toModel(organisationsEinheit)).thenReturn(EntityModel.of(organisationsEinheit));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.xzufiId.id").value(XzufiIdTestFactory.ID));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldHaveOrganisationsEinheitXzufiSchemeAgencyId() {
-			when(assembler.toModel(organisationsEinheit)).thenReturn(EntityModel.of(organisationsEinheit));
-
-			var response = performRequest();
-
-			response.andExpect(jsonPath("$.xzufiId.schemeAgencyId").value(XzufiIdTestFactory.SCHEME_AGENCY_ID));
-		}
-
-		@SneakyThrows
-		private ResultActions performRequest() {
-			return mockMvc.perform(get(OrganisationsEinheitController.PATH + "/" + OrganisationsEinheitTestFactory.ID));
-		}
-	}
-
-	@Nested
-	class TestSearch {
-
-		private final OrganisationsEinheitHeader organisationsEinheitHeader1 = OrganisationsEinheitHeaderTestFactory.create();
-		private final OrganisationsEinheitHeader organisationsEinheitHeader2 = OrganisationsEinheitHeaderTestFactory.createBuilder()
-				.name(LoremIpsum.getInstance().getName())
-				.build();
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-		private final List<OrganisationsEinheitHeader> organisationsEinheitHeaders = List.of(organisationsEinheitHeader1,
-				organisationsEinheitHeader2);
-
-		@BeforeEach
-		void setUpMocks() {
-			when(service.searchOrganisationsEinheiten(searchBy)).thenReturn(Stream.of(organisationsEinheitHeader1, organisationsEinheitHeader2));
-			when(headerModelAssembler.toCollectionModel(organisationsEinheitHeaders))
-					.thenReturn(
-							CollectionModel.of(List.of(EntityModel.of(organisationsEinheitHeader1), EntityModel.of(organisationsEinheitHeader2))));
-		}
-
-		@Test
-		void shouldCallService() {
-			performRequest();
-
-			verify(service).searchOrganisationsEinheiten(searchBy);
-		}
-
-		@Test
-		void shouldCallModelAssembler() {
-			performRequest();
-
-			verify(headerModelAssembler).toCollectionModel(organisationsEinheitHeaders);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			var response = performRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstOrganisationsEinheitName() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].name").value(organisationsEinheitHeader1.getName()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstOrganisationsEinheitStrasse() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].anschrift.strasse").value(organisationsEinheitHeader1.getAnschrift().getStrasse()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstOrganisationsEinheitHausnummer() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].anschrift.hausnummer").value(organisationsEinheitHeader1.getAnschrift().getHausnummer()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstOrganisationsEinheitPlz() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].anschrift.plz").value(organisationsEinheitHeader1.getAnschrift().getPlz()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveFirstOrganisationsEinheitOrt() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[0].anschrift.ort").value(organisationsEinheitHeader1.getAnschrift().getOrt()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondOrganisationsEinheitName() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].name").value(organisationsEinheitHeader2.getName()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondOrganisationsEinheitStrasse() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].anschrift.strasse").value(organisationsEinheitHeader2.getAnschrift().getStrasse()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondOrganisationsEinheitHausnummer() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].anschrift.hausnummer").value(organisationsEinheitHeader2.getAnschrift().getHausnummer()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondOrganisationsEinheitPlz() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].anschrift.plz").value(organisationsEinheitHeader2.getAnschrift().getPlz()));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldHaveSecondOrganisationsEinheitOrt() {
-			var response = performRequest();
-			response.andExpect(jsonPath("$.content[1].anschrift.ort").value(organisationsEinheitHeader2.getAnschrift().getOrt()));
-		}
-
-		@SneakyThrows
-		private ResultActions performRequest() {
-			return mockMvc.perform(get(OrganisationsEinheitController.PATH)
-					.param("searchBy", searchBy)).andExpect(status().isOk());
-
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapperTest.java
deleted file mode 100644
index 1632a472dab82a6b8dd6e14f0c2bc0fb74bd9ccc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderMapperTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class OrganisationsEinheitHeaderMapperTest {
-
-	private final OrganisationsEinheitHeaderMapper mapper = Mappers.getMapper(OrganisationsEinheitHeaderMapper.class);
-
-	@Nested
-	class TestFromGrpc {
-
-		@Test
-		void shouldMap() {
-			var organisationsEinheitHeader = mapper.fromGrpc(GrpcOrganisationsEinheitTestFactory.create());
-
-			assertThat(organisationsEinheitHeader).usingRecursiveComparison().isEqualTo(OrganisationsEinheitHeaderTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssemblerTest.java
deleted file mode 100644
index 34127bb1bc9646ead782efb1f6fdc9aa31f5b939..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderModelAssemblerTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-class OrganisationsEinheitHeaderModelAssemblerTest {
-
-	@Spy
-	private OrganisationsEinheitHeaderModelAssembler assembler;
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = assembler.toModel(OrganisationsEinheitHeaderTestFactory.create());
-
-			assertHaveSelfLink(model);
-		}
-
-		private void assertHaveSelfLink(EntityModel<OrganisationsEinheitHeader> model) {
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(OrganisationsEinheitController.PATH + "/" + OrganisationsEinheitHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-
-		private OrganisationsEinheitHeader organisationsEinheitHeader = OrganisationsEinheitHeaderTestFactory.create();
-
-		@Test
-		void shouldCallToModel() {
-			callAssembler();
-
-			verify(assembler).toModel(organisationsEinheitHeader);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = callAssembler();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(OrganisationsEinheitController.PATH);
-		}
-
-		@Test
-		void shouldContainEntityModel() {
-			var entityModel = EntityModel.of(organisationsEinheitHeader);
-			doReturn(entityModel).when(assembler).toModel(organisationsEinheitHeader);
-
-			var model = callAssembler();
-
-			assertThat(model).containsExactly(entityModel);
-		}
-
-		private CollectionModel<EntityModel<OrganisationsEinheitHeader>> callAssembler() {
-			return assembler.toCollectionModel(List.of(organisationsEinheitHeader));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderTestFactory.java
deleted file mode 100644
index 81ac634cb448240003e751ec677a618ecbc84959..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitHeaderTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import de.ozgcloud.alfa.collaboration.OrganisationsEinheitHeader.OrganisationsEinheitHeaderBuilder;
-
-;
-
-public class OrganisationsEinheitHeaderTestFactory {
-	public static final String ID = OrganisationsEinheitTestFactory.ID;
-	public static final String NAME = OrganisationsEinheitTestFactory.NAME;
-	public static final Anschrift ANSCHRIFT = AnschriftTestFactory.create();
-
-	public static OrganisationsEinheitHeader create() {
-		return createBuilder().build();
-	}
-
-	public static OrganisationsEinheitHeaderBuilder createBuilder() {
-		return OrganisationsEinheitHeader.builder()
-				.id(ID)
-				.name(NAME)
-				.anschrift(ANSCHRIFT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapperTest.java
deleted file mode 100644
index b1e74b31ffaad59722c4363fec7a45491d6db632..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitMapperTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class OrganisationsEinheitMapperTest {
-
-	private final OrganisationsEinheitMapper mapper = Mappers.getMapper(OrganisationsEinheitMapper.class);
-
-	@Nested
-	class TestFromGrpc {
-
-		@Test
-		void shouldMap() {
-			var organisationsEinheit = mapper.fromGrpc(GrpcOrganisationsEinheitTestFactory.create());
-
-			assertThat(organisationsEinheit).usingRecursiveComparison().isEqualTo(OrganisationsEinheitTestFactory.create());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssemblerTest.java
deleted file mode 100644
index 434cab790b7e79957362621a3002b3aa7f870e96..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitModelAssemblerTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.web.util.UriComponentsBuilder;
-
-class OrganisationsEinheitModelAssemblerTest {
-
-	@Spy
-	private OrganisationsEinheitModelAssembler assembler;
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var expectedHref = UriComponentsBuilder.fromUriString(OrganisationsEinheitController.PATH)
-					.pathSegment(OrganisationsEinheitTestFactory.ID)
-					.build().toString();
-
-			var model = assembler.toModel(OrganisationsEinheitTestFactory.create());
-
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(expectedHref);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteServiceTest.java
deleted file mode 100644
index 7b217036e6cc32d9e2b5cb15fd155a3a57e71790..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitRemoteServiceTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetRequest;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitGetResponse;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchRequest;
-import de.ozgcloud.zufi.grpc.organisationseinheit.GrpcOrganisationsEinheitSearchResponse;
-import de.ozgcloud.zufi.grpc.organisationseinheit.OrganisationsEinheitServiceGrpc.OrganisationsEinheitServiceBlockingStub;
-
-class OrganisationsEinheitRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private OrganisationsEinheitRemoteService service;
-
-	@Mock
-	private OrganisationsEinheitServiceBlockingStub serviceStub;
-
-	@Mock
-	private OrganisationsEinheitHeaderMapper organisationsEinheitHeaderMapper;
-	@Mock
-	private OrganisationsEinheitMapper organisationsEinheitMapper;
-
-	@Nested
-	class TestSearch {
-
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-		private final GrpcOrganisationsEinheitSearchResponse grpcOrganisationsEinheitSearchResponse = GrpcOrganisationsEinheitSearchResponseTestFactory
-				.create();
-
-		@BeforeEach
-		void setUpMocks() {
-			when(serviceStub.search(argThat(requestContainsSearchBy()))).thenReturn(grpcOrganisationsEinheitSearchResponse);
-		}
-
-		@Test
-		void shouldCallGrpcStub() {
-			callService();
-
-			verify(serviceStub).search(argThat(requestContainsSearchBy()));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			callService().toList();
-
-			verify(organisationsEinheitHeaderMapper).fromGrpc(GrpcOrganisationsEinheitSearchResponseTestFactory.ORGANISATIONS_EINHEIT);
-		}
-
-		@Test
-		void shouldReturnMappedOrganisationsEinheitHeader() {
-			var organisationsEinheitHeader = OrganisationsEinheitHeaderTestFactory.create();
-			when(organisationsEinheitHeaderMapper.fromGrpc(GrpcOrganisationsEinheitSearchResponseTestFactory.ORGANISATIONS_EINHEIT)).thenReturn(
-					organisationsEinheitHeader);
-
-			var organisationsEinheitHeaders = callService();
-
-			assertThat(organisationsEinheitHeaders).containsExactly(organisationsEinheitHeader);
-		}
-
-		private Stream<OrganisationsEinheitHeader> callService() {
-			return service.search(searchBy);
-		}
-
-		private ArgumentMatcher<GrpcOrganisationsEinheitSearchRequest> requestContainsSearchBy() {
-			return request -> request.getSearchBy().equals(searchBy);
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final GrpcOrganisationsEinheitGetRequest request = GrpcOrganisationsEinheitGetRequestTestFactory.create();
-		private final GrpcOrganisationsEinheitGetResponse response = GrpcOrganisationsEinheitGetResponseTestFactory.create();
-		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			doReturn(request).when(service).buildGetByIdRequest(OrganisationsEinheitTestFactory.ID);
-			when(serviceStub.getById(request)).thenReturn(response);
-			doReturn(organisationsEinheit).when(service).getOrganisationsEinheitFromGetByIdResponse(response);
-		}
-
-		@Test
-		void shouldBuildRequest() {
-			callService();
-
-			verify(service).buildGetByIdRequest(OrganisationsEinheitTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallGrpcStub() {
-			callService();
-
-			verify(serviceStub).getById(request);
-		}
-
-		@Test
-		void shouldBuildResponse() {
-			callService();
-
-			verify(service).getOrganisationsEinheitFromGetByIdResponse(response);
-		}
-
-		@Test
-		void shouldReturnOrganisationsEinheit() {
-			var get = service.getById(OrganisationsEinheitTestFactory.ID);
-
-			assertThat(get).isEqualTo(organisationsEinheit);
-		}
-
-		private OrganisationsEinheit callService() {
-			return service.getById(OrganisationsEinheitTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestBuildGetByIdRequest {
-
-		@Test
-		void shouldHaveId() {
-			var request = service.buildGetByIdRequest(OrganisationsEinheitTestFactory.ID);
-
-			assertThat(request.getId()).isEqualTo(OrganisationsEinheitTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetOrganisationsEinheitFromGetByIdResponse {
-
-		private final GrpcOrganisationsEinheitGetResponse response = GrpcOrganisationsEinheitGetResponseTestFactory.create();
-		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-
-		@BeforeEach
-		void setUp() {
-			when(organisationsEinheitMapper.fromGrpc(response.getOrganisationsEinheit())).thenReturn(organisationsEinheit);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			callService();
-
-			verify(organisationsEinheitMapper).fromGrpc(response.getOrganisationsEinheit());
-		}
-
-		@Test
-		void shouldReturnOrgnisationsEinheit() {
-			var built = callService();
-
-			assertThat(built).isEqualTo(organisationsEinheit);
-		}
-
-		private OrganisationsEinheit callService() {
-			return service.getOrganisationsEinheitFromGetByIdResponse(response);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitServiceTest.java
deleted file mode 100644
index 6a694193fccafa0bc05ff5d0cd8e7842f51fab1b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitServiceTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-class OrganisationsEinheitServiceTest {
-
-	@InjectMocks
-	private OrganisationsEinheitService service;
-
-	@Mock
-	private OrganisationsEinheitRemoteService remoteService;
-
-	@Nested
-	class TestGetById {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(OrganisationsEinheitTestFactory.ID);
-
-			verify(remoteService).getById(OrganisationsEinheitTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnOrganisationsEinheit() {
-			var organisationsEinheit = OrganisationsEinheitTestFactory.create();
-			when(remoteService.getById(OrganisationsEinheitTestFactory.ID)).thenReturn(organisationsEinheit);
-
-			var returnedOrganisationsEinheit = service.getById(OrganisationsEinheitTestFactory.ID);
-
-			assertThat(returnedOrganisationsEinheit).isEqualTo(organisationsEinheit);
-		}
-	}
-
-	@Nested
-	class TestSearchOrganisationsEinheiten {
-
-		private final String searchBy = LoremIpsum.getInstance().getWords(5);
-
-		@Test
-		void shouldCallRemoteService() {
-			callService();
-
-			verify(remoteService).search(searchBy);
-		}
-
-		@Test
-		void shouldReturnOrganisationsEinheiten() {
-			var organisationsEinheitHeader = OrganisationsEinheitHeaderTestFactory.create();
-			when(remoteService.search(searchBy)).thenReturn(Stream.of(organisationsEinheitHeader));
-
-			var organisationsEinheitHeaders = callService();
-
-			assertThat(organisationsEinheitHeaders).containsExactly(organisationsEinheitHeader);
-		}
-
-		private Stream<OrganisationsEinheitHeader> callService() {
-			return service.searchOrganisationsEinheiten(searchBy);
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitTestFactory.java
deleted file mode 100644
index 89d8fd9e1f0ffad09f85ab9f929363c5a1c56b52..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.collaboration.OrganisationsEinheit.OrganisationsEinheitBuilder;
-
-public class OrganisationsEinheitTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final XzufiId XZUFI_ID = XzufiIdTestFactory.create();
-	public static final String NAME = LoremIpsum.getInstance().getName();
-	public static final Anschrift ANSCHRIFT = AnschriftTestFactory.create();
-
-	public static OrganisationsEinheit create() {
-		return createBuilder().build();
-	}
-
-	public static OrganisationsEinheitBuilder createBuilder() {
-		return OrganisationsEinheit.builder()
-				.id(ID)
-				.xzufiId(XZUFI_ID)
-				.name(NAME)
-				.anschrift(ANSCHRIFT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/XzufiIdTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/XzufiIdTestFactory.java
deleted file mode 100644
index 87fe2248234e2022290da4b4164d38a15af49264..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/XzufiIdTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.collaboration;
-
-public class XzufiIdTestFactory {
-
-	public static final String ID = GrpcXzufiIdTestFactory.ORGANISATIONS_EINHEIT_ID;
-	public static final String SCHEME_AGENCY_ID = GrpcXzufiIdTestFactory.SCHEME_AGENCY_ID;
-
-	public static XzufiId create() {
-		return createBuilder().build();
-	}
-
-	public static XzufiId.XzufiIdBuilder createBuilder() {
-		return XzufiId.builder()
-				.id(ID)
-				.schemeAgencyId(SCHEME_AGENCY_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/AlfaTestUtils.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/AlfaTestUtils.java
deleted file mode 100644
index 7326b5ee707dac12af5a7af707145436e92d0cdf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/AlfaTestUtils.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.mockito.Mockito.*;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HexFormat;
-import java.util.List;
-import java.util.function.Consumer;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.RandomStringUtils;
-
-public class AlfaTestUtils {
-
-	public static final String UUID_REGEX = "[0-9a-f]{8,8}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{12,12}";
-
-	public static String uuidRegexWithSuffix(String suffix) {
-		return String.format("^%s%s$", UUID_REGEX, suffix);
-	}
-
-	public static <T> void mockStreamToList(List<T> list, Consumer<Stream<T>> mock) {
-		var mockStream = mock(Stream.class);
-		when(mockStream.toList()).thenReturn(list);
-		mock.accept(mockStream);
-	}
-
-	public static String createMongoDbObjectId() {
-		return HexFormat.of().formatHex(RandomStringUtils.randomAlphanumeric(24).getBytes(StandardCharsets.UTF_8));
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/CollectionModelBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/CollectionModelBuilderTest.java
deleted file mode 100644
index 53e3d279b9ee0174a865852293ec9eb5a7daf849..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/CollectionModelBuilderTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-import java.util.function.Supplier;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-
-class CollectionModelBuilderTest {
-
-	private final String HREF = "http://test";
-	private final String REL = "rel";
-
-	@Nested
-	class TestBuildModel {
-
-		@Test
-		void shouldBuildModel() {
-			var vorgang = VorgangHeaderTestFactory.create();
-
-			var model = CollectionModelBuilder.fromEntities(List.of(vorgang)).buildModel();
-
-			assertThat(model.getContent()).hasSize(1).first().usingRecursiveComparison().isEqualTo(vorgang);
-		}
-	}
-
-	@Nested
-	class TestAddLink {
-
-		@Test
-		void shouldAddLink() {
-			var model = CollectionModelBuilder.fromEntities(List.of()).addLink(Link.of(HREF, REL)).buildModel();
-
-			assertThat(model.getLinks()).hasSize(1).first().extracting(Link::getHref, link -> link.getRel().value()).containsExactly(HREF, REL);
-		}
-	}
-
-	@Nested
-	class TestIfMatch {
-
-		@Nested
-		class TestWithBooleanSupplier {
-
-			@Test
-			void shouldAddLink() {
-				var model = CollectionModelBuilder.fromEntities(List.of()).ifMatch(() -> true).addLink(Link.of(HREF, REL)).buildModel();
-
-				assertThat(model.getLinks()).hasSize(1).first().extracting(Link::getHref, link -> link.getRel().value()).containsExactly(HREF, REL);
-			}
-
-			@Test
-			void shouldNotAddLink() {
-				var model = CollectionModelBuilder.fromEntities(List.of()).ifMatch(() -> false).addLink(Link.of(HREF, REL)).buildModel();
-
-				assertThat(model.getLinks()).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestWithPredicate {
-
-			private final Stream<Wiedervorlage> wiedervorlageStream = Stream.of(WiedervorlageTestFactory.create());
-
-			@Test
-			void shouldAddLink() {
-				var model = CollectionModelBuilder.fromEntities(wiedervorlageStream)
-						.ifMatch(wiedervorlagen -> true)
-						.addLink(Link.of(HREF, REL))
-						.buildModel();
-
-				assertThat(model.getLinks()).hasSize(1).first().extracting(Link::getHref, link -> link.getRel().value()).containsExactly(HREF, REL);
-			}
-
-			@Test
-			void shouldNotAddLink() {
-				var model = CollectionModelBuilder.fromEntities(wiedervorlageStream)
-						.ifMatch(wiedervorlagen -> false)
-						.addLink(Link.of(HREF, REL))
-						.buildModel();
-
-				assertThat(model.getLinks()).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestWithLinkSupplier {
-
-			@Mock
-			private Supplier<Link> linkSupplier;
-
-			@Test
-			void shouldAddLink() {
-				when(linkSupplier.get()).thenReturn(Link.of(HREF, REL));
-
-				var model = CollectionModelBuilder.fromEntities(List.of()).ifMatch(() -> true).addLink(linkSupplier).buildModel();
-
-				assertThat(model.getLinks()).hasSize(1).first().extracting(Link::getHref, link -> link.getRel().value()).containsExactly(HREF, REL);
-			}
-
-			@Test
-			void shouldNotCallLinkSupplier() {
-				CollectionModelBuilder.fromEntities(List.of()).ifMatch(() -> false).addLink(linkSupplier).buildModel();
-
-				verify(linkSupplier, never()).get();
-			}
-
-			@Test
-			void shouldNotAddLink() {
-				var model = CollectionModelBuilder.fromEntities(List.of()).ifMatch(() -> false).addLink(linkSupplier).buildModel();
-
-				assertThat(model.getLinks()).isEmpty();
-			}
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/EntityModelTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/EntityModelTestFactory.java
deleted file mode 100644
index 629a8f7c6e8ee5df2c89ee3d3715c59f4eeb773a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/EntityModelTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import org.springframework.hateoas.EntityModel;
-
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import lombok.NoArgsConstructor;
-
-public class EntityModelTestFactory {
-
-	public static final NullableEntityModel NULLABLE = createNullable();
-
-	private static NullableEntityModel createNullable() {
-		return new NullableEntityModel();
-	}
-
-	@NoArgsConstructor
-	private static class NullableEntityModel extends EntityModel<VorgangWithEingang> {
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/GermanDateTimeFormatterTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/GermanDateTimeFormatterTest.java
deleted file mode 100644
index 8eac830c5872722d97eb6a85bd5d5a7959e04bf0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/GermanDateTimeFormatterTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.jupiter.params.provider.MethodSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-class GermanDateTimeFormatterTest {
-
-	@Mock
-	private SystemProperties properties;
-
-	@InjectMocks
-	private GermanDateTimeFormatter germanDateTimeFormatter;
-
-	@ParameterizedTest
-	@MethodSource("provideDataForFormatZonedDateTime")
-	void shouldFormatZonedDateTime(ZonedDateTime date, String zoneId, String expected) {
-		when(properties.getTimeZone()).thenReturn(ZoneId.of(zoneId));
-
-		assertThat(germanDateTimeFormatter.formatZonedDateTime(date)).isEqualTo(expected);
-	}
-
-	private static Stream<Arguments> provideDataForFormatZonedDateTime() {
-		return Stream.of(
-				Arguments.of(zonedDateTime(2023, 9, 25, 10, "UTC"), "Europe/Berlin", "25.09.2023 12:00:00 MESZ"),
-				Arguments.of(zonedDateTime(2023, 9, 25, 23, "UTC"), "Europe/Berlin", "26.09.2023 01:00:00 MESZ"),
-				Arguments.of(zonedDateTime(2023, 12, 1, 10, "UTC"), "Europe/Berlin", "01.12.2023 11:00:00 MEZ"),
-				Arguments.of(zonedDateTime(2023, 9, 25, 10, "UTC"), "America/Los_Angeles", "25.09.2023 03:00:00 PDT"),
-				Arguments.of(zonedDateTime(2023, 9, 25, 4, "UTC"), "America/Los_Angeles", "24.09.2023 21:00:00 PDT"),
-				Arguments.of(zonedDateTime(2023, 12, 1, 10, "UTC"), "America/Los_Angeles", "01.12.2023 02:00:00 PST"),
-				Arguments.of(zonedDateTime(2023, 12, 1, 10, "America/Los_Angeles"), "Europe/Berlin", "01.12.2023 19:00:00 MEZ")
-		);
-	}
-
-	private static ZonedDateTime zonedDateTime(int year, int month, int dayOfMonth, int hour, String zoneID) {
-		return ZonedDateTime.of(year, month, dayOfMonth, hour, 0, 0, 0, ZoneId.of(zoneID));
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/GrpcCallContextTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/GrpcCallContextTestFactory.java
deleted file mode 100644
index 85a3c0f3ed309df0f5e6c72d1d0ef4cb45c401a7..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/GrpcCallContextTestFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import de.ozgcloud.alfa.common.user.GrpcUserTestFactory;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-import de.ozgcloud.vorgang.grpc.command.GrpcUser;
-
-public class GrpcCallContextTestFactory {
-
-	private static final GrpcUser USER = GrpcUserTestFactory.create();
-	public static final String CLIENT = "testClient";
-
-	public static GrpcCallContext create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcCallContext.Builder createBuilder() {
-		return GrpcCallContext.newBuilder()
-				.setUser(USER)
-				.setClient(CLIENT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/IdBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/IdBuilderTest.java
deleted file mode 100644
index ce0be5b469196317dde1c56e26841007d1b6957f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/IdBuilderTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import com.fasterxml.jackson.databind.BeanProperty;
-
-class IdBuilderTest {
-
-	@DisplayName("Test building ID when deserializing linked resources")
-	@Nested
-	class TestBuilingId {
-		private static final String ID = "id";
-
-		@Test
-		void shouldBuildId() {
-			IdBuilder idBuilder = new IdBuilder();
-
-			var idObject = idBuilder.build(ID);
-
-			assertThat(idObject).isInstanceOf(Object.class).asString().isEqualTo(ID);
-		}
-
-		@Test
-		void shouldCreateObjectBuilder() {
-			BeanProperty property = mock(BeanProperty.class);
-			ObjectBuilder<Object> idBuilder = new IdBuilder().constructContextAware(property);
-
-			assertThat(idBuilder).isNotNull();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceDeserializerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceDeserializerTest.java
deleted file mode 100644
index 50573d6a3ac82923b9e8109be492e0cd746353d8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceDeserializerTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import com.fasterxml.jackson.core.exc.StreamReadException;
-import com.fasterxml.jackson.databind.DatabindException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-class LinkedResourceDeserializerTest {
-	private static final String TEST_JSON = "{\"id\":\"/api/vorgangs/" + UserProfileTestFactory.ID.toString() + "\"}";
-
-	@DisplayName("Test the deserilization of linked resource json")
-	@Nested
-	class TestDeserialization {
-		@Test
-		void shouldDeserialize() throws StreamReadException, DatabindException, IOException {
-			LinkedResourceTestObject res = new ObjectMapper().readValue(TEST_JSON.getBytes(), LinkedResourceTestObject.class);
-
-			assertThat(res).hasFieldOrPropertyWithValue("id", UserProfileTestFactory.ID);
-		}
-
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceSerializerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceSerializerTest.java
deleted file mode 100644
index 3d59d4ca1fa69916e0fba547415e4a17297b30bd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceSerializerTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-class LinkedResourceSerializerTest {
-
-	@DisplayName("Test the json serialization of linked resource annotations")
-	@Nested
-	class TestSerialization {
-		@Test
-		void shouldSerialize() throws JsonProcessingException {
-			var testObj = new LinkedResourceTestObject(UserProfileTestFactory.ID);
-
-			String serialized = new ObjectMapper().writeValueAsString(testObj);
-
-			assertThat(serialized).isEqualTo("{\"id\":\"/api/vorgangs/" + UserProfileTestFactory.ID.toString() + "\"}");
-		}
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestObject.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestObject.java
deleted file mode 100644
index 3c2e2ba16cbcedf8d92e79a4d40283e7c32d7c91..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedResourceTestObject.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@AllArgsConstructor
-@NoArgsConstructor
-class LinkedResourceTestObject {
-	@LinkedResource(controllerClass = VorgangController.class)
-	private UserId id;
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializerTest.java
deleted file mode 100644
index 2286b4330b077224520fd3d0f0fdfc156d786af9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceDeserializerTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import com.fasterxml.jackson.core.exc.StreamReadException;
-import com.fasterxml.jackson.databind.DatabindException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-class LinkedUserProfileResourceDeserializerTest {
-	private static final String TEST_JSON = "{\"id\":\"http://localhost/api/profile/" + UserProfileTestFactory.ID.toString() + "\"}";
-
-	@DisplayName("Test the deserilization of linked resource json")
-	@Nested
-	class TestDeserialization {
-		@Test
-		void shouldDeserialize() throws StreamReadException, DatabindException, IOException {
-			LinkedUserProfileResourceTestObject res = new ObjectMapper().readValue(TEST_JSON.getBytes(), LinkedUserProfileResourceTestObject.class);
-
-			assertThat(res).hasFieldOrPropertyWithValue("id", UserProfileTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializerTest.java
deleted file mode 100644
index 6a7ebb175d136027b76138fa4d0c6aea6544108c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceSerializerTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-class LinkedUserProfileResourceSerializerTest {
-	@DisplayName("Test the json serilization of linked user profile resource annotations")
-	@Nested
-	class TestSerialization {
-		private static final String HTTP_LOCALHOST = "http://localhost/";
-		private static final String API_TEMPLATE = "api/profile/%s";
-		private static final String API_PATH = "api/profile/";
-
-		private UserProfileUrlProvider provider = new UserProfileUrlProvider();
-
-		@Mock
-		private ApplicationContext context;
-		@Mock
-		private Environment env;
-
-		@Test
-		void shouldSerialize() throws JsonProcessingException {
-			when(env.getProperty(UserProfileUrlProvider.URL_ROOT_KEY)).thenReturn(HTTP_LOCALHOST);
-			when(env.getProperty(UserProfileUrlProvider.USER_PROFILES_TEMPLATE_KEY)).thenReturn(API_TEMPLATE);
-			when(context.getEnvironment()).thenReturn(env);
-			provider.setApplicationContext(context);
-
-			var testObj = new LinkedUserProfileResourceTestObject(UserProfileTestFactory.ID);
-
-			String serialized = new ObjectMapper().writeValueAsString(testObj);
-
-			assertThat(serialized).isEqualTo("{\"id\":\"" + HTTP_LOCALHOST + API_PATH + UserProfileTestFactory.ID.toString() + "\"}");
-		}
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceTestObject.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceTestObject.java
deleted file mode 100644
index b8163f1cdacacc3e8723d9fd6f1fec3035af163c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/LinkedUserProfileResourceTestObject.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@AllArgsConstructor
-@NoArgsConstructor
-class LinkedUserProfileResourceTestObject {
-	@LinkedUserProfileResource
-	private UserId id;
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/ModelBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/ModelBuilderTest.java
deleted file mode 100644
index 8b32ab174485e75e66ed4d3ad7a84bd2aacd77dc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/ModelBuilderTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.NullAndEmptySource;
-import org.mockito.Mock;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import lombok.Builder;
-
-class ModelBuilderTest {
-
-	@DisplayName("Add link by annotation if missing")
-	@Nested
-	class TestAddLinkByAnnotationIfMissing {
-
-		private static final String USER_MANAGER_URL = "http://localhost";
-		private static final String USER_MANAGER_PROFILE_TEMPLATE = "/api/profile/%s";
-
-		private UserProfileUrlProvider provider = new UserProfileUrlProvider();
-
-		@Mock
-		private ApplicationContext context;
-		@Mock
-		private Environment env;
-
-		private TestEntity entity = TestEntityTestFactory.create();
-
-		@BeforeEach
-		void mockEnvironment() {
-			when(env.getProperty(UserProfileUrlProvider.URL_ROOT_KEY)).thenReturn(USER_MANAGER_URL);
-			when(env.getProperty(UserProfileUrlProvider.USER_PROFILES_TEMPLATE_KEY)).thenReturn(USER_MANAGER_PROFILE_TEMPLATE);
-			when(context.getEnvironment()).thenReturn(env);
-
-			provider.setApplicationContext(context);
-		}
-
-		@Test
-		void shouldHaveAddLinkByLinkedResource() {
-			var model = ModelBuilder.fromEntity(entity).buildModel();
-
-			assertThat(model.getLink(TestController.FILE_REL).get().getHref()).isEqualTo(TestController.PATH + "/" + TestEntityTestFactory.FILE);
-		}
-
-		@Test
-		void shouldHaveAddLinkByLinkedUserProfileResource() {
-			var model = ModelBuilder.fromEntity(entity).buildModel();
-
-			assertThat(model.getLink(TestController.USER_REL).get().getHref())
-					.isEqualTo(String.format(USER_MANAGER_URL + USER_MANAGER_PROFILE_TEMPLATE, TestEntityTestFactory.USER));
-		}
-
-		@ParameterizedTest
-		@NullAndEmptySource
-		void shouldNotAddLinkByLinkedRessourceIfFieldValueIsNotSet(String fileId) {
-			var model = ModelBuilder.fromEntity(TestEntityTestFactory.createBuilder().file(fileId).build()).buildModel();
-
-			assertThat(model.getLink(TestController.FILE_REL)).isEmpty();
-		}
-	}
-
-	@DisplayName("if usermanager is not configured")
-	@Nested
-	class TestNotAddLinkByAnnotationIfNotConfigured {
-
-		private UserProfileUrlProvider provider = new UserProfileUrlProvider();
-
-		@Mock
-		private ApplicationContext context;
-		@Mock
-		private Environment env;
-
-		private TestEntity entity = TestEntityTestFactory.create();
-
-		@BeforeEach
-		void mockEnvironment() {
-			when(env.getProperty(UserProfileUrlProvider.URL_ROOT_KEY)).thenReturn(null);
-			when(context.getEnvironment()).thenReturn(env);
-
-			provider.setApplicationContext(context);
-		}
-
-		@Test
-		void shouldHaveAddLinkByLinkedResource() {
-			var model = ModelBuilder.fromEntity(entity).buildModel();
-
-			assertThat(model.getLink(TestController.FILE_REL).get().getHref()).isEqualTo(TestController.PATH + "/" + TestEntityTestFactory.FILE);
-		}
-
-		@Test
-		void shouldNotHaveLinkAddByLinkedUserProfileAnnotation() {
-			var model = ModelBuilder.fromEntity(entity).buildModel();
-
-			assertThat(model.getLink(TestController.USER_REL)).isNotPresent();
-		}
-	}
-}
-
-@Builder
-class TestEntity {
-
-	@LinkedResource(controllerClass = TestController.class)
-	private String file;
-
-	@LinkedUserProfileResource
-	private String user;
-}
-
-@RequestMapping(TestController.PATH)
-class TestController {
-
-	static final String PATH = "/api/test";
-
-	static final String USER_REL = "user";
-	static final String FILE_REL = "file";
-
-}
-
-class TestEntityTestFactory {
-
-	static final String USER = UUID.randomUUID().toString();
-	static final String FILE = UUID.randomUUID().toString();
-
-	public static TestEntity create() {
-		return createBuilder().build();
-	}
-
-	public static TestEntity.TestEntityBuilder createBuilder() {
-		return TestEntity.builder()
-				.file(FILE)
-				.user(USER);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/RegexUtilTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/RegexUtilTest.java
deleted file mode 100644
index 79df691492a1d11022b8d4ee8d7b01ceade36188..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/RegexUtilTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.regex.Pattern;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-public class RegexUtilTest {
-
-	@Nested
-	class TestValidationEMail {
-
-		private final String REGEX = RegexUtil.VALIDATION_EMAIL;
-
-		@Nested
-		class TestEmailAt {
-
-			@Test
-			void shouldMatchOnOneAtChar() {
-				shouldMatch("localpart@domain.com");
-			}
-
-			@Test
-			void shouldNotMatchOnNoneAtChar() {
-				shouldNotMatch("localpartdomain.com");
-			}
-
-			@Test
-			void shouldNotMatchOnMultipleAtChar() {
-				shouldNotMatch("localpart@@domain.com");
-			}
-		}
-
-		@Nested
-		class TestDomain {
-
-			@Nested
-			class TestDomainDot {
-
-				@Test
-				void shouldMatchOnOneDot() {
-					shouldMatch("localpart@domain.com");
-				}
-
-				@Test
-				void shouldNotMatchOnNoneDot() {
-					shouldNotMatch("localpart@domaincom");
-				}
-
-				@Test
-				void shouldMatchOnMultipleDots() {
-					shouldNotMatch("localpart@domain...com");
-				}
-			}
-
-			@Nested
-			class TestDomainCharCaseSensitive {
-
-				@Test
-				void shouldMatchOnLowerCaseChar() {
-					shouldMatch("localpart@domain.com");
-				}
-
-				@Test
-				void shouldMatchOnUpperCaseChar() {
-					shouldMatch("localpart@DOMAIN.COM");
-				}
-			}
-		}
-
-		@Nested
-		class TestLocalPart {
-
-			@Nested
-			class TestLocalPartChar {
-
-				@Test
-				void shouldMatchOnAtLeastOneChar() {
-					shouldMatch("l@domain.com");
-				}
-
-				@Test
-				void shouldMatchOnNoneChar() {
-					shouldNotMatch("@domain.com");
-				}
-			}
-
-			@Nested
-			class TestLocalPartCharCaseSensitive {
-
-				@Test
-				void shouldAllowUpperCaseChar() {
-					shouldMatch("UPPER_CHAR@domain.com");
-				}
-
-				@Test
-				void shouldAllowLowerCaseChar() {
-					shouldMatch("lower_char@domain.com");
-				}
-			}
-		}
-
-		@Test
-		void shouldAcceptCharInLocalPart() {
-			shouldMatch("local-part-1234567890!#$%&'*+/=?^_`{|}~-.'/&%*@domain.com");
-		}
-
-		private void shouldMatch(String eMail) {
-			boolean match = matchPattern(eMail);
-
-			assertThat(match).isTrue();
-		}
-
-		private void shouldNotMatch(String eMail) {
-			boolean match = matchPattern(eMail);
-
-			assertThat(match).isFalse();
-		}
-
-		private boolean matchPattern(String eMail) {
-			return Pattern.matches(REGEX, eMail);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java
deleted file mode 100644
index 9498db2b673db8e3d7e171e35a6c87871913aded..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/UserProfileUrlProviderTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common;
-
-import static org.mockito.Mockito.*;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-
-public class UserProfileUrlProviderTestFactory {
-	public static final String ROOT_URL = "https://localhost";
-	public static final String USER_PROFILES_API_PATH = "/api/userProfiles/";
-	public static final String OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE = "ozgcloud.user-manager.profile-template";
-	public static final String OZGCLOUD_USER_MANAGER_URL = "ozgcloud.user-manager.url";
-
-	public static void initUserProfileUrlProvider(UserProfileUrlProvider urlProvider) {
-		ApplicationContext context = mock(ApplicationContext.class);
-		Environment environment = mock(Environment.class);
-		when(environment.getProperty(OZGCLOUD_USER_MANAGER_URL)).thenReturn(ROOT_URL);
-		when(environment.getProperty(OZGCLOUD_USER_MANAGER_PROFILE_TEMPLATE)).thenReturn(USER_PROFILES_API_PATH + "%s");
-		when(context.getEnvironment()).thenReturn(environment);
-		urlProvider.setApplicationContext(context);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemRequestTestFactory.java
deleted file mode 100644
index 0305d2841d42a700c86b78e55f8362a5d3a9faef..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemRequestTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-
-public class GrpcFindVorgangAttachedItemRequestTestFactory {
-
-	public static GrpcFindVorgangAttachedItemRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFindVorgangAttachedItemRequest.Builder createBuilder() {
-		return GrpcFindVorgangAttachedItemRequest.newBuilder().setVorgangId(VorgangHeaderTestFactory.ID)
-				.setItemName(VorgangAttachedItemTestFactory.ITEM_NAME);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemResponseTestFactory.java
deleted file mode 100644
index e8a9de572fbf9bd9d36cf9638f2b48c80b044cf5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcFindVorgangAttachedItemResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-
-public class GrpcFindVorgangAttachedItemResponseTestFactory {
-
-	public static final GrpcVorgangAttachedItem VORGANG_ATTACHED_ITEM = GrpcVorgangAttachedItemTestFactory.create();
-
-	public static GrpcFindVorgangAttachedItemResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFindVorgangAttachedItemResponse.Builder createBuilder() {
-		return GrpcFindVorgangAttachedItemResponse.newBuilder().addVorgangAttachedItems(VORGANG_ATTACHED_ITEM);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemRequestTestFactory.java
deleted file mode 100644
index c0962430f51f56513349216c4d802a5346f0530f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemRequestTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-
-public class GrpcVorgangAttachedItemRequestTestFactory {
-
-	public static GrpcVorgangAttachedItemRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangAttachedItemRequest.Builder createBuilder() {
-		return GrpcVorgangAttachedItemRequest.newBuilder().setId(VorgangAttachedItemTestFactory.ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemResponseTestFactory.java
deleted file mode 100644
index 85bbfabb4136b3b8e9609be7cfbc2e3b74d371d2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/GrpcVorgangAttachedItemResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemResponse;
-
-public class GrpcVorgangAttachedItemResponseTestFactory {
-
-	public static final GrpcVorgangAttachedItem VORGANG_ATTACHED_ITEM = GrpcVorgangAttachedItemTestFactory.create();
-
-	public static GrpcVorgangAttachedItemResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangAttachedItemResponse.Builder createBuilder() {
-		return GrpcVorgangAttachedItemResponse.newBuilder().setVorgangAttachedItem(VORGANG_ATTACHED_ITEM);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapperTest.java
deleted file mode 100644
index dc55406935e7f8119244f2a3422b68885d12b1e8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemMapperTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-
-class VorgangAttachedItemMapperTest {
-
-	@InjectMocks
-	private final VorgangAttachedItemMapper mapper = Mappers.getMapper(VorgangAttachedItemMapper.class);
-
-	@Spy
-	private final GrpcObjectMapper grpcObjectMapper = Mappers.getMapper(GrpcObjectMapper.class);
-
-	@Nested
-	@DisplayName("From Grpc")
-	class TestMapVorgangAttachedItem {
-
-		@Test
-		void shouldMap() {
-			var mapped = mapper.fromGrpc(GrpcVorgangAttachedItemTestFactory.create());
-
-			assertThat(mapped).usingRecursiveComparison().isEqualTo(VorgangAttachedItemTestFactory.create());
-		}
-
-		@Test
-		void shouldCallGrpcObjectMapper() {
-			var grpcVorgangAttachedItem = GrpcVorgangAttachedItemTestFactory.create();
-
-			mapper.fromGrpc(grpcVorgangAttachedItem);
-
-			verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteServiceTest.java
deleted file mode 100644
index 02fb7877fc6bc7c90c8c032e30f55dc342a951a3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemRemoteServiceTest.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-import io.grpc.Status;
-import io.grpc.Status.Code;
-import io.grpc.StatusRuntimeException;
-
-class VorgangAttachedItemRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangAttachedItemRemoteService service;
-
-	@Mock
-	private VorgangAttachedItemServiceBlockingStub grpcService;
-
-	@Mock
-	private VorgangAttachedItemMapper mapper;
-
-	@Nested
-	@DisplayName("FindVorgangAttachedItem")
-	class TestFindVorgangAttachedItem {
-
-		private final GrpcFindVorgangAttachedItemRequest request = GrpcFindVorgangAttachedItemRequestTestFactory.create();
-		private final GrpcFindVorgangAttachedItemResponse response = GrpcFindVorgangAttachedItemResponseTestFactory.create();
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@Captor
-		private ArgumentCaptor<GrpcVorgangAttachedItem> grpcVorgangAttachedItemArgumentCaptor;
-
-		@BeforeEach
-		void init() {
-			when(grpcService.find(request)).thenReturn(response);
-			doReturn(request).when(service).buildFindRequest(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-		}
-
-		@Test
-		void shouldCallGrpcService() {
-			service.findVorgangAttachedItem(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-
-			verify(grpcService).find(request);
-		}
-
-		@Test
-		void shouldBuildRequest() {
-			service.findVorgangAttachedItem(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-
-			verify(service).buildFindRequest(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-		}
-
-		@Test
-		void shouldMapGrpcResponse() {
-			service.findVorgangAttachedItem(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME).toList();
-
-			verify(mapper).fromGrpc(grpcVorgangAttachedItemArgumentCaptor.capture());
-			assertThat(grpcVorgangAttachedItemArgumentCaptor.getAllValues())
-					.containsExactly(GrpcFindVorgangAttachedItemResponseTestFactory.VORGANG_ATTACHED_ITEM);
-		}
-
-		@Test
-		void shouldReturnResult() {
-			when(mapper.fromGrpc(any())).thenReturn(vorgangAttachedItem);
-
-			var result = service.findVorgangAttachedItem(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-
-			assertThat(result).hasSize(1).containsExactly(vorgangAttachedItem);
-		}
-	}
-
-	@Nested
-	@DisplayName("Build find vorgang attached item gRPC request")
-	class TestBuildFindRequest {
-
-		@Test
-		void shouldBuild() {
-			var request = service.buildFindRequest(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.ITEM_NAME);
-
-			assertThat(request.getItemName()).isEqualTo(VorgangAttachedItemTestFactory.ITEM_NAME);
-			assertThat(request.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	@DisplayName("Build get by id gRPC request")
-	class TestBuildGetByIdRequest {
-
-		@Test
-		void shouldBuild() {
-			var request = service.buildGetByIdRequest(VorgangAttachedItemTestFactory.ID);
-
-			assertThat(request.getId()).isEqualTo(VorgangAttachedItemTestFactory.ID);
-		}
-
-	}
-
-	@DisplayName("Get by id")
-	@Nested
-	class TestGetById {
-
-		private final GrpcVorgangAttachedItemResponse response = GrpcVorgangAttachedItemResponseTestFactory.create();
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(mapper.fromGrpc(any())).thenReturn(vorgangAttachedItem);
-			doReturn(response).when(service).doGetById(any());
-		}
-
-		@Test
-		void shouldDoGetById() {
-			service.getById(VorgangAttachedItemTestFactory.ID);
-
-			verify(service).doGetById(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapResponse() {
-			service.getById(VorgangAttachedItemTestFactory.ID);
-
-			verify(mapper).fromGrpc(response.getVorgangAttachedItem());
-		}
-
-		@Test
-		void shouldReturnResult() {
-			var result = service.getById(VorgangAttachedItemTestFactory.ID);
-
-			assertThat(result).isEqualTo(vorgangAttachedItem);
-		}
-	}
-
-	@DisplayName("Do get by id")
-	@Nested
-	class TestDoGetById {
-
-		@Test
-		void shouldBuildRequest() {
-			service.doGetById(VorgangAttachedItemTestFactory.ID);
-
-			verify(service).buildGetByIdRequest(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallGrpcService() {
-			var request = GrpcVorgangAttachedItemRequestTestFactory.create();
-
-			service.doGetById(VorgangAttachedItemTestFactory.ID);
-
-			verify(grpcService).getById(request);
-		}
-
-		@DisplayName("on grpc exception")
-		@Nested
-		class TestOnGrpcException {
-
-			@DisplayName("not found")
-			@Nested
-			class TestNotFound {
-
-				@Test
-				void shouldThrowResourceNotFoundException() {
-					var statusRuntimeException = new StatusRuntimeException(Status.NOT_FOUND);
-
-					when(grpcService.getById(any())).thenThrow(statusRuntimeException);
-
-					assertThatThrownBy(() -> service.doGetById(VorgangAttachedItemTestFactory.ID)).isInstanceOf(ResourceNotFoundException.class);
-				}
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "NOT_FOUND" })
-			void shouldThrowException(Code code) {
-				var statusRuntimeException = new StatusRuntimeException(code.toStatus());
-
-				when(grpcService.getById(any())).thenThrow(statusRuntimeException);
-
-				assertThatThrownBy(() -> service.doGetById(VorgangAttachedItemTestFactory.ID)).isInstanceOf(StatusRuntimeException.class);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemServiceTest.java
deleted file mode 100644
index 53ec1753dc06969a552ace5cb82c40a62d9e82b1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemServiceTest.java
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.callcontext.CallContextTestFactory;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandBodyMapper;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.kommentar.Kommentar;
-import de.ozgcloud.alfa.kommentar.KommentarTestFactory;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-
-class VorgangAttachedItemServiceTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangAttachedItemService service;
-	@Mock
-	private CommandBodyMapper commandBodyMapper;
-	@Mock
-	private CommandService commandService;
-	@Mock
-	private VorgangAttachedItemRemoteService vorgangAttachedItemRemoteService;
-
-	@Mock
-	private ContextService contextService;
-
-	@DisplayName("Create new wiedervorlage")
-	@Nested
-	class TestCreateNewWiedervorlage {
-
-		private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-
-		@BeforeEach
-		void mockServices() {
-			doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any());
-			doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any());
-		}
-
-		@Test
-		void shouldBuildVorgangAttachedItem() {
-			callCreateNewWiedervorlage();
-
-			verify(service).buildVorgangAttachedItem(wiedervorlage, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			callCreateNewWiedervorlage();
-
-			verify(service).buildCreateCommand(eq(VorgangHeaderTestFactory.ID), any(VorgangAttachedItem.class));
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			callCreateNewWiedervorlage();
-
-			verify(commandService).createCommandDeprecated(any(CreateCommand.class));
-		}
-
-		private Command callCreateNewWiedervorlage() {
-			return service.createNewWiedervorlage(wiedervorlage, VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Edit wiedervorlage")
-	@Nested
-	class TestEditWiedervorlage {
-
-		private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any());
-			doReturn(CommandTestFactory.createCreateCommand()).when(service).buildUpdateCommand(any(), any(), any());
-		}
-
-		@Test
-		void shouldBuildVorgangAttachedItem() {
-			callEditWiedervorlage();
-
-			verify(service).buildVorgangAttachedItem(wiedervorlage, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			callEditWiedervorlage();
-
-			verify(service).buildUpdateCommand(eq(VorgangHeaderTestFactory.ID), eq(WiedervorlageTestFactory.ID), any(VorgangAttachedItem.class));
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			callEditWiedervorlage();
-
-			verify(commandService).createCommand(any(CreateCommand.class), eq(WiedervorlageTestFactory.VERSION));
-		}
-
-		private Command callEditWiedervorlage() {
-			return service.editWiedervorlage(wiedervorlage, wiedervorlage.getId(), wiedervorlage.getVersion());
-		}
-	}
-
-	@Nested
-	class TestWiedervorlageDone {
-		private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-
-		@Test
-		void shouldCallCommandService() {
-			callSetWiedervorlageDone(true);
-
-			verify(commandService).createCommand(any(CreateCommand.class), eq(WiedervorlageTestFactory.VERSION));
-		}
-
-		@Test
-		void shouldSetItemName() {
-			var command = service.createPatchCommand(WiedervorlageTestFactory.create(), false);
-
-			assertThat(((VorgangAttachedItem) command.getBody()).getItemName()).isEqualTo(Wiedervorlage.class.getSimpleName());
-		}
-
-		@Test
-		void shouldSetItem() {
-			var command = service.createPatchCommand(WiedervorlageTestFactory.create(), false);
-
-			assertThat(((VorgangAttachedItem) command.getBody()).getItem()).isNotEmpty();
-		}
-
-		@Test
-		void shouldSetItemDoneValue() {
-			var command = service.createPatchCommand(WiedervorlageTestFactory.create(), true);
-
-			var attachedItem = ((VorgangAttachedItem) command.getBody()).getItem();
-			assertThat(attachedItem).containsKey("done");
-			assertThat(attachedItem.get("done")).isEqualTo(Boolean.TRUE);
-		}
-
-		private Command callSetWiedervorlageDone(boolean done) {
-			return service.setWiedervorlageDone(wiedervorlage, done);
-		}
-
-	}
-
-	@DisplayName("Create new kommentar")
-	@Nested
-	class TestCreateNewKommentar {
-
-		private Kommentar kommentar = KommentarTestFactory.create();
-
-		@BeforeEach
-		void mockServices() {
-			doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any());
-			doReturn(CommandTestFactory.createCreateCommand()).when(service).buildCreateCommand(any(), any());
-		}
-
-		@Test
-		void shouldBuildVorgangAttachedItem() {
-			callCreateNewKommentar();
-
-			verify(service).buildVorgangAttachedItem(kommentar, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.KOMMENTAR_ITEM_NAME);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			callCreateNewKommentar();
-
-			verify(service).buildCreateCommand(eq(VorgangHeaderTestFactory.ID), any(VorgangAttachedItem.class));
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			callCreateNewKommentar();
-
-			verify(commandService).createCommandDeprecated(any(CreateCommand.class));
-		}
-
-		private Command callCreateNewKommentar() {
-			return service.createNewKommentar(kommentar, VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Edit kommentar")
-	@Nested
-	class TestEditKommentar {
-
-		private Kommentar kommentar = KommentarTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			doReturn(VorgangAttachedItemTestFactory.create()).when(service).buildVorgangAttachedItem(any(), any(), any());
-			doReturn(CommandTestFactory.createCreateCommand()).when(service).buildUpdateCommand(any(), any(), any());
-		}
-
-		@Test
-		void shouldBuildVorgangAttachedItem() {
-			callEditKommentar();
-
-			verify(service).buildVorgangAttachedItem(kommentar, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.KOMMENTAR_ITEM_NAME);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			callEditKommentar();
-
-			verify(service).buildUpdateCommand(eq(VorgangHeaderTestFactory.ID), eq(KommentarTestFactory.ID), any(VorgangAttachedItem.class));
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			callEditKommentar();
-
-			verify(commandService).createCommand(any(CreateCommand.class), eq(KommentarTestFactory.VERSION));
-		}
-
-		private Command callEditKommentar() {
-			return service.editKommentar(kommentar, KommentarTestFactory.ID, KommentarTestFactory.VERSION);
-		}
-	}
-
-	@DisplayName("build vorgang attached item")
-	@Nested
-	class TestBuildVorgangAttachedItem {
-
-		private static final Wiedervorlage BODY = WiedervorlageTestFactory.create();
-
-		@BeforeEach
-		void mockServices() {
-			when(commandBodyMapper.fromObjectToMap(any())).thenReturn(VorgangAttachedItemTestFactory.ITEM);
-			when(contextService.getClientName()).thenReturn(CallContextTestFactory.CLIENT_NAME);
-		}
-
-		@Test
-		void shouldCallCommandBodyMapper() {
-			buildVorgangAttachedItem();
-
-			verify(commandBodyMapper).fromObjectToMap(BODY);
-		}
-
-		@Test
-		void shouldContainsVorgangId() {
-			var vorgangAttachedItem = buildVorgangAttachedItem();
-
-			assertThat(vorgangAttachedItem.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsItemName() {
-			var vorgangAttachedItem = buildVorgangAttachedItem();
-
-			assertThat(vorgangAttachedItem.getItemName()).isEqualTo(VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME);
-		}
-
-		@Test
-		void shouldContainsItem() {
-			var vorgangAttachedItem = buildVorgangAttachedItem();
-
-			assertThat(vorgangAttachedItem.getItem()).isEqualTo(VorgangAttachedItemTestFactory.ITEM);
-		}
-
-		@Test
-		void shouldContainsClientName() {
-			var vorgangAttachedItem = buildVorgangAttachedItem();
-
-			assertThat(vorgangAttachedItem.getClient()).isEqualTo(CallContextTestFactory.CLIENT_NAME);
-		}
-
-		private VorgangAttachedItem buildVorgangAttachedItem() {
-			return service.buildVorgangAttachedItem(BODY, VorgangHeaderTestFactory.ID,
-					VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME);
-		}
-	}
-
-	@DisplayName("build createCommand")
-	@Nested
-	class TestBuildCreateCommand {
-
-		@Test
-		void shouldContainsVorgangId() throws Exception {
-			var createCommand = buildCommand();
-
-			assertThat(createCommand.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsRelationId() throws Exception {
-			var createCommand = buildCommand();
-
-			assertThat(createCommand.getRelationId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsOrder() throws Exception {
-			var createCommand = buildCommand();
-
-			assertThat(createCommand.getCommandOrder()).isEqualTo(CommandOrder.CREATE_ATTACHED_ITEM);
-		}
-
-		@Test
-		void shouldContainsBody() throws Exception {
-			var createCommand = buildCommand();
-
-			assertThat(((VorgangAttachedItem) createCommand.getBody())).usingRecursiveComparison()
-					.isEqualTo(VorgangAttachedItemTestFactory.create());
-		}
-
-		private CreateCommand buildCommand() {
-			return service.buildCreateCommand(VorgangHeaderTestFactory.ID, VorgangAttachedItemTestFactory.create());
-		}
-	}
-
-	@Nested
-	class TestCreateNewLoeschAnforderung {
-
-		private final LoeschAnforderung itemBody = LoeschAnforderungTestFactory.create();
-		private final CreateCommand createCommand = CommandTestFactory.createCreateCommand();
-		private final Command command = CommandTestFactory.create();
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			doReturn(vorgangAttachedItem).when(service)
-					.buildVorgangAttachedItem(itemBody, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.LOESCH_ANFORDERUNG_ITEM_NAME);
-			doReturn(createCommand).when(service).buildCreateCommand(VorgangHeaderTestFactory.ID, vorgangAttachedItem);
-			when(commandService.createCommandDeprecated(createCommand)).thenReturn(command);
-		}
-
-		@Test
-		void shouldBuildVorgangAttachedItem() {
-			callCreateVorgangAttachedItem();
-
-			verify(service).buildVorgangAttachedItem(itemBody, VorgangHeaderTestFactory.ID, VorgangAttachedItemService.LOESCH_ANFORDERUNG_ITEM_NAME);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			callCreateVorgangAttachedItem();
-
-			verify(service).buildCreateCommand(VorgangHeaderTestFactory.ID, vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			callCreateVorgangAttachedItem();
-
-			verify(commandService).createCommandDeprecated(createCommand);
-		}
-
-		@Test
-		void shouldReturnCommand() {
-			var result = callCreateVorgangAttachedItem();
-
-			assertThat(result).isEqualTo(command);
-		}
-
-		private Command callCreateVorgangAttachedItem() {
-			return service.createNewLoeschAnforderung(itemBody, VorgangHeaderTestFactory.ID);
-		}
-
-	}
-
-	@Nested
-	@DisplayName("GetById")
-	class TestGetById {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(VorgangAttachedItemTestFactory.ID);
-
-			verify(vorgangAttachedItemRemoteService).getById(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnResult() {
-			doReturn(vorgangAttachedItem).when(service).getById(VorgangAttachedItemTestFactory.ID);
-
-			var result = service.getById(VorgangAttachedItemTestFactory.ID);
-
-			assertThat(result).isEqualTo(vorgangAttachedItem);
-		}
-	}
-
-	@Nested
-	class TestIsLoeschAnforderung {
-
-		@Test
-		void shouldReturnTrue() {
-			var isLoeschAnforderung = service.isLoeschAnforderung(VorgangAttachedItemService.LOESCH_ANFORDERUNG_ITEM_NAME);
-
-			assertThat(isLoeschAnforderung).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var isLoeschAnforderung = service.isLoeschAnforderung(VorgangAttachedItemService.WIEDERVORLAGE_ITEM_NAME);
-
-			assertThat(isLoeschAnforderung).isFalse();
-		}
-	}
-
-	@Nested
-	class TestDeleteAttachedItem {
-
-		private final CreateCommand createCommand = CommandTestFactory.createCreateCommand();
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		private final Command command = CommandTestFactory.create();
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			doReturn(createCommand).when(service).buildDeleteCommand(vorgangAttachedItem);
-			when(commandService.createCommand(createCommand, VorgangAttachedItemTestFactory.VERSION)).thenReturn(command);
-		}
-
-		@Test
-		void shouldBuildCreateCommand() {
-			service.deleteAttachedItem(vorgangAttachedItem);
-
-			verify(service).buildDeleteCommand(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			service.deleteAttachedItem(vorgangAttachedItem);
-
-			verify(commandService).createCommand(createCommandArgumentCaptor.capture(), eq(VorgangAttachedItemTestFactory.VERSION));
-			assertThat(createCommandArgumentCaptor.getValue()).isEqualTo(createCommand);
-		}
-
-		@Test
-		void shouldReturnCommand() {
-			var resultCommand = service.deleteAttachedItem(vorgangAttachedItem);
-
-			assertThat(resultCommand).isEqualTo(command);
-		}
-	}
-
-	@DisplayName("Build deleteCommand")
-	@Nested
-	class TestBuildDeleteCommand {
-
-		private final VorgangAttachedItem item = VorgangAttachedItemTestFactory.create();
-
-		@Test
-		void shouldContainsVorgangId() {
-			var createCommand = service.buildDeleteCommand(item);
-
-			assertThat(createCommand.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsRelationId() {
-			var createCommand = service.buildDeleteCommand(item);
-
-			assertThat(createCommand.getRelationId()).isEqualTo(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsRelationVersion() {
-			var createCommand = service.buildDeleteCommand(item);
-
-			assertThat(createCommand.getRelationVersion()).isEqualTo(VorgangAttachedItemTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldContainsOrder() {
-			var createCommand = service.buildDeleteCommand(item);
-
-			assertThat(createCommand.getCommandOrder()).isEqualTo(CommandOrder.DELETE_ATTACHED_ITEM);
-		}
-
-		@Test
-
-		void shouldContainsBody() {
-			var createCommand = service.buildDeleteCommand(item);
-
-			assertThat(createCommand.getBody()).usingRecursiveComparison().isEqualTo(item);
-		}
-	}
-
-	@DisplayName("Find loeschAnforderung")
-	@Nested
-	class TestFindLoeschAnforderung {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-			verify(vorgangAttachedItemRemoteService).findVorgangAttachedItem(VorgangHeaderTestFactory.ID,
-					VorgangAttachedItemService.LOESCH_ANFORDERUNG_ITEM_NAME);
-		}
-
-		@Test
-		void shouldReturnValue() {
-			var vorgangAttachedItemStream = Stream.of(VorgangAttachedItemTestFactory.create());
-			when(vorgangAttachedItemRemoteService.findVorgangAttachedItem(anyString(), anyString())).thenReturn(vorgangAttachedItemStream);
-
-			var loeschAnforderungen = service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-			assertThat(loeschAnforderungen).isEqualTo(vorgangAttachedItemStream);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemTestFactory.java
deleted file mode 100644
index e36587305cd8bb732c66d52f0b86484c8d1e35eb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/attacheditem/VorgangAttachedItemTestFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.attacheditem;
-
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ThreadLocalRandom;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-public class VorgangAttachedItemTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final long VERSION = ThreadLocalRandom.current().nextLong();
-	public static final String CLIENT = "Alfa";
-	public static final String ITEM_NAME = "ItemName";
-	public static final String ITEM_KEY = "oneKey";
-	public static final String ITEM_VALUE = "oneValue";
-	public static final Map<String, Object> ITEM = Map.of(ITEM_KEY, ITEM_VALUE);
-
-	public static VorgangAttachedItem create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangAttachedItem.VorgangAttachedItemBuilder createBuilder() {
-		return VorgangAttachedItem.builder()
-				.id(ID)
-				.version(VERSION)
-				.client(CLIENT)
-				.itemName(ITEM_NAME)
-				.item(ITEM)
-				.vorgangId(VorgangHeaderTestFactory.ID);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerITCase.java
deleted file mode 100644
index de1bb94e7422f5ecae51a7e5aec1740f624fe986..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerITCase.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static de.ozgcloud.alfa.JwtTokenUtil.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.mock.mockito.SpyBean;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenController;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenProperties;
-import de.ozgcloud.alfa.common.downloadtoken.DownloadTokenTestFactory;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.ITCase;
-import io.jsonwebtoken.JwtBuilder;
-
-@AutoConfigureMockMvc
-@WithMockUser
-@ITCase
-class BinaryFileControllerITCase {
-
-	@SpyBean
-	private BinaryFileController controller;
-	@MockBean
-	private BinaryFileRemoteService remoteService;
-	@Autowired
-	private MockMvc mockMvc;
-	@Autowired
-	private DownloadTokenProperties downloadTokenProperties;
-
-	private FileId fileId = FileId.createNew();
-
-	@Nested
-	class TestGetFile {
-
-		@Nested
-		class TestDragAndDropFlow {
-
-			private JwtBuilder tokenBuilder = DownloadTokenTestFactory.createTokenBuilder(downloadTokenProperties.getSecret(),
-					downloadTokenProperties.getValidity());
-
-			@BeforeEach
-			void init() {
-				when(remoteService.getFile(any())).thenReturn(OzgFileTestFactory.create());
-			}
-
-			@Test
-			void shouldGet403WhenNoFileId() throws Exception {
-				setTokenToSecuriyContext(tokenBuilder.compact());
-
-				performRequest().andExpect(status().isForbidden());
-			}
-
-			@Test
-			void shouldGet403WhenWrongFileId() throws Exception {
-				setTokenToSecuriyContext(tokenBuilder.addClaims(createClaims(FileId.createNew())).compact());
-
-				performRequest().andExpect(status().isForbidden());
-			}
-
-			@Test
-			void shouldGetFile() throws Exception {
-				setTokenToSecuriyContext(tokenBuilder.addClaims(createClaims(fileId)).compact());
-
-				performRequest().andExpect(status().isOk());
-			}
-
-			private Map<String, Object> createClaims(FileId fileId) {
-				return new HashMap<>(Map.of(
-						FIRSTNAME_CLAIM, UserProfileTestFactory.FIRSTNAME,
-						LASTNAME_CLAIM, UserProfileTestFactory.LASTNAME,
-						ROLE_CLAIM, List.of(),
-						FILEID_CLAIM, fileId.toString()));
-			}
-
-			void setTokenToSecuriyContext(String token) throws Exception {
-				mockMvc.perform(get(DownloadTokenController.DOWNLOAD_TOKEN_PATH + "?" + DownloadTokenController.PARAM_TOKEN + "=" + token)
-						.with(csrf()))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@Nested
-		class TestDefaultFlow {
-
-			@Mock
-			private Authentication authentication;
-
-			@BeforeEach
-			void init() {
-				when(remoteService.getFile(any())).thenReturn(OzgFileTestFactory.create());
-				SecurityContextHolder.getContext().setAuthentication(authentication);
-			}
-
-			@Test
-			void shouldGet403WhenUnautorised() throws Exception {
-				when(authentication.isAuthenticated()).thenReturn(Boolean.FALSE);
-
-				performRequest().andExpect(status().isForbidden());
-			}
-
-			@Test
-			void shouldGetFile() throws Exception {
-				when(authentication.isAuthenticated()).thenReturn(Boolean.TRUE);
-
-				performRequest().andExpect(status().isOk());
-			}
-		}
-
-		ResultActions performRequest() throws Exception {
-			return mockMvc.perform(get(BinaryFileController.PATH + "/" + fileId.toString()).with(csrf()));
-		}
-	}
-
-	@Nested
-	class TestUploadFile {
-
-		@Nested
-		class TestFileContentType {
-
-			@Test
-			void shouldReturnValidationMessage() throws Exception {
-				performRequest(createFile(MediaType.TEXT_PLAIN)).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_FILE_CONTENT_TYPE_INVALID));
-			}
-
-			@Test
-			void shouldAcceptConfiguredContentType() throws Exception {
-				when(remoteService.uploadFile(any())).thenReturn(CompletableFuture.completedFuture(FileId.createNew()));
-
-				performRequest(createFile(MediaType.APPLICATION_PDF)).andExpect(status().isOk());
-			}
-
-			private ResultActions performRequest(MockMultipartFile file) throws Exception {
-				return mockMvc.perform(multipart(
-						String.format("%s/%s/%s/file", BinaryFileController.PATH, VorgangHeaderTestFactory.ID,
-								UploadBinaryFileTestFactory.FIELD)).file(
-										file).with(csrf()));
-			}
-
-			private MockMultipartFile createFile(MediaType contentType) {
-				return new MockMultipartFile("file", "hello.txt", contentType.toString(), "Hello, World!".getBytes());
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerTest.java
deleted file mode 100644
index 72801845db82305c9118ab5ea80bdf55a1deffd1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileControllerTest.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.MvcResult;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-class BinaryFileControllerTest {
-
-	private final String PATH = BinaryFileController.PATH;
-
-	@Spy
-	@InjectMocks
-	private BinaryFileController controller;
-	@Mock
-	private BinaryFileService service;
-	@Mock
-	private BinaryFileModelAssembler modelAssembler;
-	@Mock
-	private FileIdMapper fileIdMapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestUploadFile {
-
-		private CompletableFuture<FileId> fileIdFuture = CompletableFuture.completedFuture(BinaryFileTestFactory.FILE_ID);
-
-		@BeforeEach
-		void mockServiec() {
-			when(service.uploadFile(any())).thenReturn(fileIdFuture);
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			var uploadBinaryFile = UploadBinaryFileTestFactory.create();
-			doReturn(uploadBinaryFile).when(controller).buildBinaryFileUploadRequest(any(), any(), any());
-
-			callEndpoint();
-
-			verify(service).uploadFile(uploadBinaryFile);
-		}
-
-		@Test
-		void shouldReturnCreatedStatus() throws Exception {
-			var result = callEndpoint();
-
-			mockMvc.perform(asyncDispatch(result)).andExpect(status().isCreated());
-		}
-
-		@Test
-		void shouldReturnLocation() throws Exception {
-			var result = callEndpoint();
-
-			mockMvc.perform(asyncDispatch(result))
-					.andExpect(header().string("Location", containsString("/api/binaryFiles/" + BinaryFileTestFactory.FILE_ID)));
-		}
-
-		private MvcResult callEndpoint() throws Exception {
-			return mockMvc.perform(multipart(PATH + "/" + VorgangHeaderTestFactory.ID + "/" + BinaryFileTestFactory.FIELD + "/file")
-					.file(BinaryFileTestFactory.TEST_FILE))
-					.andExpect(request().asyncStarted())
-					.andReturn();
-		}
-	}
-
-	@Nested
-	class TestBuildBinaryFileUploadRequest {
-
-		@Test
-		void shouldContainsVorgangId() {
-			var result = buildBinaryFileUploadRequest();
-
-			assertThat(result.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldContainsField() {
-			var result = buildBinaryFileUploadRequest();
-
-			assertThat(result.getField()).isEqualTo(BinaryFileTestFactory.FIELD);
-		}
-
-		@Test
-		void shouldContainsSize() {
-			var result = buildBinaryFileUploadRequest();
-
-			assertThat(result.getSize()).isEqualTo(OzgFileTestFactory.SIZE);
-		}
-
-		@Test
-		void shouldContainsName() {
-			var result = buildBinaryFileUploadRequest();
-
-			assertThat(result.getName()).isEqualTo(OzgFileTestFactory.NAME);
-		}
-
-		@Test
-		void shouldContainsContentType() {
-			var result = buildBinaryFileUploadRequest();
-
-			assertThat(result.getContentType()).isEqualTo(OzgFileTestFactory.CONTENT_TYPE);
-		}
-
-		@Test
-		void shouldGetInputStreamFromFile() {
-			buildBinaryFileUploadRequest();
-
-			verify(controller).getInputStream(BinaryFileTestFactory.TEST_FILE);
-		}
-
-		private UploadBinaryFileRequest buildBinaryFileUploadRequest() {
-			return controller.buildBinaryFileUploadRequest(VorgangHeaderTestFactory.ID, BinaryFileTestFactory.FIELD, BinaryFileTestFactory.TEST_FILE);
-		}
-	}
-
-	@Nested
-	class TestGetInputStreamOfFile {
-
-		@Mock
-		private MultipartFile file;
-
-		@Test
-		void shouldReturnStream() throws IOException {
-			var uploadStream = file.getInputStream();
-
-			when(file.getInputStream()).thenReturn(uploadStream);
-
-			assertThat(controller.getInputStream(file)).isEqualTo(uploadStream);
-		}
-
-		@Test
-		void shouldThrowException() throws IOException {
-			when(file.getInputStream()).thenThrow(IOException.class);
-
-			assertThrows(TechnicalException.class, () -> controller.getInputStream(file));
-		}
-	}
-
-	@Nested
-	class TestGetFileData {
-
-		@Mock
-		private StreamingResponseBody body;
-		private OzgFile ozgFile = OzgFileTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.getFile(any())).thenReturn(ozgFile);
-		}
-
-		@Test
-		void shouldCallServiceGetFile() throws Exception {
-			callEndpoint();
-
-			verify(service).getFile(OzgFileTestFactory.ID);
-		}
-
-		@Test
-		void shouldBuildResponseEntity() throws Exception {
-			doReturn(body).when(controller).createDownloadStreamingBody(OzgFileTestFactory.ID);
-
-			callEndpoint();
-
-			verify(controller).buildResponseEntity(ozgFile, body);
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(PATH + "/" + OzgFileTestFactory.ID).contentType(MediaType.APPLICATION_OCTET_STREAM_VALUE))
-					.andExpect(status().isOk());
-		}
-	}
-
-	@Nested
-	class TestCreateDownloadStreamingBody {
-
-		@Mock
-		private OutputStream out;
-
-		@Test
-		void shouldCallServiceWriteFileContent() throws IOException {
-			controller.createDownloadStreamingBody(OzgFileTestFactory.ID).writeTo(out);
-
-			verify(service).writeFileContent(any(), any());
-		}
-	}
-
-	@Nested
-	class TestGetFile {
-
-		private OzgFile ozgFile = OzgFileTestFactory.create();
-
-		@BeforeEach
-		void mockServiec() {
-			when(service.getFile(any())).thenReturn(ozgFile);
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).getFile(BinaryFileTestFactory.FILE_ID);
-		}
-
-		@Test
-		void shouldCallAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toModel(ozgFile);
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(BinaryFileController.PATH + '/' + BinaryFileTestFactory.FILE_ID)
-					.contentType(MediaType.APPLICATION_JSON_VALUE))
-					.andExpect(status().isOk());
-		}
-	}
-
-	@Nested
-	class TestGetFiles {
-
-		private OzgFile file = OzgFileTestFactory.create();
-
-		@BeforeEach
-		void mockServiec() {
-			when(service.getFiles(any())).thenReturn(Stream.of(file));
-			when(fileIdMapper.toString(any())).then(fileId -> fileId.toString());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).getFiles(any());
-		}
-
-		@Test
-		void shouldCallAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(Stream.of(file).collect(Collectors.toList()));
-		}
-
-		private CollectionModel<EntityModel<OzgFile>> callEndpoint() throws Exception {
-			return controller.getFiles(List.of(BinaryFileTestFactory.FILE_ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserverTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserverTest.java
deleted file mode 100644
index 6cac563882f8237fbbbc83ad7618636bcb8b25bd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileDownloadStreamObserverTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.concurrent.CompletableFuture;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import com.google.protobuf.ByteString;
-
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcGetBinaryFileDataResponse;
-
-class BinaryFileDownloadStreamObserverTest {
-
-	@InjectMocks
-	private BinaryFileDownloadStreamObserver downloadStreamObserver;
-	@Mock
-	private CompletableFuture<Boolean> streamFuture;
-	@Mock
-	private OutputStream out;
-
-	@Nested
-	class TestOnNext {
-
-		@Mock
-		private GrpcGetBinaryFileDataResponse response;
-
-		@Test
-		void shouldWriteToStreamOnReceivingContentPart() throws IOException {
-			downloadStreamObserver.onNext(createFileConentResponse());
-
-			verify(out).write(BinaryFileTestFactory.DATA);
-		}
-
-		private GrpcGetBinaryFileDataResponse createFileConentResponse() {
-			return GrpcGetBinaryFileDataResponse.newBuilder().setFileContent(ByteString.copyFrom(BinaryFileTestFactory.DATA)).build();
-		}
-	}
-
-	@Nested
-	class TestOnError {
-
-		@Mock
-		private Throwable throwable;
-
-		@Test
-		void shouldCompleteFutureExceptionally() {
-			downloadStreamObserver.onError(throwable);
-
-			verify(streamFuture).completeExceptionally(throwable);
-		}
-	}
-
-	@Nested
-	class TestOnCompleted {
-
-		@Test
-		void shouldCompleteFuture() {
-			downloadStreamObserver.onCompleted();
-
-			verify(streamFuture).complete(true);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileITCase.java
deleted file mode 100644
index 1e49eb8ffbf5224842a2287eb47b6565608358f4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileITCase.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.util.unit.DataSize;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class BinaryFileITCase {
-
-	@MockBean
-	private BinaryFileRemoteService remoteService;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@WithMockUser
-	@Nested
-	class TestUploadFile {
-
-		private final CompletableFuture<FileId> future = CompletableFuture.completedFuture(BinaryFileTestFactory.FILE_ID);
-
-		public static final byte[] DATA_OVER_3_MB = BinaryFileTestFactory.createByteOfSize(DataSize.ofMegabytes(41));
-		public static final MockMultipartFile TEST_FILE = new MockMultipartFile("file", BinaryFileTestFactory.NAME,
-				BinaryFileTestFactory.CONTENT_TYPE, DATA_OVER_3_MB);
-
-		@BeforeEach
-		void mockStub() {
-			when(remoteService.uploadFile(any())).thenReturn(future);
-		}
-
-		@Nested
-		class TestDefault {
-			@Test
-			void shouldReturnConstraintViolationException() throws Exception {
-				var result = callEndpoint(TEST_FILE, BinaryFileTestFactory.FIELD);
-
-				result.andExpect(status().isUnprocessableEntity());
-			}
-
-			@Test
-			void shouldReturnConstraintViolationExceptionData() throws Exception {
-				var result = callEndpoint(TEST_FILE, BinaryFileTestFactory.FIELD);
-
-				result.andExpect(jsonPath("invalidParams[0].name").value("uploadFile.uploadBinaryFileRequest"))
-						.andExpect(jsonPath("invalidParams[0].reason").value("validation_field_file_size_exceeded"))
-						.andExpect(jsonPath("invalidParams[0].constraintParameters[0].name").value("unit"))
-						.andExpect(
-								jsonPath("invalidParams[0].constraintParameters[0].value").value(UploadBinaryFileSizeValidator.DEFAULT_UNIT_STRING));
-			}
-
-			@Test
-			void shouldContainsExceptionDataOnDefaultMaxSize() throws Exception {
-				var result = callEndpoint(TEST_FILE, BinaryFileTestFactory.FIELD);
-
-				result.andExpect(jsonPath("invalidParams[0].constraintParameters[1].name").value("max"))
-						.andExpect(jsonPath("invalidParams[0].constraintParameters[1].value").value("40"));
-			}
-		}
-
-		@Nested
-		class TestForPostfachNachricht {
-
-			private static final String FIELD = "postfachNachrichtAttachment";
-
-			@Test
-			void shouldContainsExceptionDataOnPostfachNachrichtMaxSize() throws Exception {
-				var result = callEndpoint(TEST_FILE, FIELD);
-
-				result.andExpect(jsonPath("invalidParams[0].constraintParameters[1].name").value("max"))
-						.andExpect(jsonPath("invalidParams[0].constraintParameters[1].value").value("3"));
-			}
-		}
-
-		private ResultActions callEndpoint(MockMultipartFile file, String field) throws Exception {
-			return mockMvc.perform(
-					multipart(BinaryFileController.PATH + "/{vorgangId}/{field}/file", VorgangHeaderTestFactory.ID, field).file(file).with(csrf()));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssemblerTest.java
deleted file mode 100644
index 5696644059884d034dde92770ab23f5025a25e8e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileModelAssemblerTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.springframework.hateoas.IanaLinkRelations;
-
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-
-class BinaryFileModelAssemblerTest {
-
-	@InjectMocks // NOSONAR
-	private BinaryFileModelAssembler modelAssembler;
-
-	@Nested
-	class TestLinksOnModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = modelAssembler.toModel(OzgFileTestFactory.create()).getLink(IanaLinkRelations.SELF_VALUE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(BinaryFileController.PATH + "/" + OzgFileTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveDownloadLink() {
-			var link = modelAssembler.toModel(OzgFileTestFactory.create()).getLink(BinaryFileModelAssembler.REL_DOWNLOAD);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(BinaryFileController.PATH + "/" + OzgFileTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestLinksOnCollectionModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = modelAssembler.toCollectionModel(Stream.of(OzgFileTestFactory.create())).getLink(IanaLinkRelations.SELF_VALUE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(BinaryFileController.PATH);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteServiceTest.java
deleted file mode 100644
index a7452d8cb8cc22106c1fe8e48b0e32a5a84c13a2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileRemoteServiceTest.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.OutputStream;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.google.protobuf.ByteString;
-
-import de.ozgcloud.alfa.common.GrpcCallContextTestFactory;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.common.file.GrpcOzgFileTestFactory;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileMapper;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcFindFilesResponse;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcGetBinaryFileDataRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-import io.grpc.stub.CallStreamObserver;
-
-class BinaryFileRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private BinaryFileRemoteService remoteService;
-	@Mock
-	private BinaryFileServiceBlockingStub serviceStub;
-	@Mock
-	private BinaryFileServiceStub serviceAsyncStub;
-	@Mock
-	private ContextService contextService;
-	@Mock
-	private OzgFileMapper ozgFileMapper;
-	@Mock
-	private FileIdMapper fileIdMapper;
-
-	private GrpcCallContext callContext = GrpcCallContextTestFactory.create();
-
-	@BeforeEach
-	void mockContextService() {
-		lenient().when(contextService.createCallContext()).thenReturn(callContext);
-	}
-
-	@Nested
-	class TestUploadBinaryFile {
-
-		@Mock
-		private CallStreamObserver<GrpcUploadBinaryFileRequest> requestObserver;
-		@Mock
-		private BinaryFileUploadStreamObserver responseObserver;
-		private UploadBinaryFileRequest uploadBinaryFile = UploadBinaryFileTestFactory.create();
-
-		@BeforeEach
-		void initMocks() {
-			when(serviceAsyncStub.uploadBinaryFileAsStream(any())).thenReturn(requestObserver);
-		}
-
-		@Test
-		void shouldCreateStreamObserver() {
-			callService();
-
-			verify(remoteService).createUploadBinaryFileObserver(ArgumentMatchers.<CompletableFuture<FileId>>any(), any());
-			verify(remoteService).buildMetaDataRequest(uploadBinaryFile);
-		}
-
-		@Test
-		void shouldCallUploadBinaryFileOnServiceAsyncStub() {
-			doReturn(responseObserver).when(remoteService).createUploadBinaryFileObserver(any(), any());
-
-			callService();
-
-			verify(serviceAsyncStub).uploadBinaryFileAsStream(responseObserver);
-		}
-
-		private void callService() {
-			remoteService.uploadFile(uploadBinaryFile);
-		}
-	}
-
-	@Nested
-	class TestBuildMetaDataRequest {
-
-		@Test
-		void shouldCallContextService() {
-			callService();
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldContainsVorgangId() {
-			var metaData = callService();
-
-			assertThat(metaData.getVorgangId()).isEqualTo(UploadBinaryFileTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldContainsFieldName() {
-			var metaData = callService();
-
-			assertThat(metaData.getField()).isEqualTo(UploadBinaryFileTestFactory.FIELD);
-		}
-
-		@Test
-		void shouldContainsContentType() {
-			var metaData = callService();
-
-			assertThat(metaData.getContentType()).isEqualTo(OzgFileTestFactory.CONTENT_TYPE);
-
-		}
-
-		@Test
-		void shouldContainsSize() {
-			var metaData = callService();
-
-			assertThat(metaData.getSize()).isEqualTo(OzgFileTestFactory.SIZE);
-		}
-
-		@Test
-		void shouldContainsFileName() {
-			var metaData = callService();
-
-			assertThat(metaData.getFileName()).isEqualTo(OzgFileTestFactory.NAME);
-		}
-
-		private GrpcUploadBinaryFileMetaData callService() {
-			return remoteService.buildMetaDataRequest(UploadBinaryFileTestFactory.create()).getMetadata();
-		}
-	}
-
-	@Nested
-	class TestBuildChunkRequest {
-
-		@Test
-		void shouldContainContent() {
-			var chunkRequest = remoteService.buildChunkRequest(BinaryFileTestFactory.DATA);
-
-			assertThat(chunkRequest.getFileContent()).isEqualTo(ByteString.copyFrom(BinaryFileTestFactory.DATA));
-		}
-	}
-
-	@Nested
-	class TestGetFile {
-
-		private final GrpcFindFilesResponse response = BinaryFileTestFactory.createFindBinaryFilesResponse();
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.findBinaryFilesMetaData(any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			doServiceCall();
-
-			verify(serviceStub).findBinaryFilesMetaData(any());
-		}
-
-		@Test
-		void shouldCallContextService() {
-			doServiceCall();
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldCallMapper() {
-			doServiceCall();
-
-			verify(ozgFileMapper).toFile(GrpcOzgFileTestFactory.create());
-		}
-
-		private OzgFile doServiceCall() {
-			return remoteService.getFile(BinaryFileTestFactory.FILE_ID);
-		}
-	}
-
-	@Nested
-	class TestGetFileData {
-
-		@Mock
-		private OutputStream out;
-		@Mock
-		private BinaryFileDownloadStreamObserver responseObserver;
-		private String fileId = OzgFileTestFactory.ID.toString();
-
-		@BeforeEach
-		void mockStreamObserver() {
-			doReturn(responseObserver).when(remoteService).createDownloadBinaryFileObserver(any(), any());
-			when(fileIdMapper.toString(any())).thenReturn(fileId);
-			doNothing().when(remoteService).waitUntilFutureToComplete(any());
-		}
-
-		@Test
-		void shouldCreateDownloadBinaryFileObserver() {
-			callService();
-
-			verify(remoteService).createDownloadBinaryFileObserver(ArgumentMatchers.<CompletableFuture<Boolean>>any(), eq(out));
-		}
-
-		@Test
-		void shouldCallContextService() {
-			callService();
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldCallFileIdMapper() {
-			callService();
-
-			verify(fileIdMapper).toString(OzgFileTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallGetFileDataOnAsyncServiceStub() {
-			callService();
-
-			verify(serviceAsyncStub).getBinaryFileContent(any(GrpcGetBinaryFileDataRequest.class), eq(responseObserver));
-		}
-
-		@Test
-		void shouldWaitUntilFutureToComplete() {
-			callService();
-
-			verify(remoteService).waitUntilFutureToComplete(any());
-		}
-
-		private void callService() {
-			remoteService.writeFileContent(OzgFileTestFactory.ID, out);
-		}
-	}
-
-	@Nested
-	class TestWaitUntilFutureToComplete {
-
-		@Mock
-		private CompletableFuture<Boolean> streamFuture;
-
-		@Test
-		void shouldNotThrowException() {
-			assertDoesNotThrow(() -> remoteService.waitUntilFutureToComplete(streamFuture));
-		}
-
-		@ParameterizedTest
-		@ValueSource(classes = { InterruptedException.class, ExecutionException.class, TimeoutException.class })
-		void shouldRethrowAsTechnicalException(Class<Exception> exception)
-				throws InterruptedException, ExecutionException, TimeoutException {
-			doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class));
-
-			assertThrows(TechnicalException.class, () -> remoteService.waitUntilFutureToComplete(streamFuture));
-		}
-	}
-
-	@Nested
-	class TestGetFiles {
-
-		private final GrpcFindFilesResponse response = BinaryFileTestFactory.createFindBinaryFilesResponse();
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.findBinaryFilesMetaData(any())).thenReturn(response);
-			when(fileIdMapper.toString(any())).thenReturn(OzgFileTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldCallContextService() {
-			doServiceCall();
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldCallFileIdMapper() {
-			doServiceCall();
-
-			verify(fileIdMapper).toString(any());
-		}
-
-		@Test
-		void shouldCallOzgFileMapper() {
-			var result = doServiceCall();
-
-			result = result.collect(Collectors.toList()).stream();
-
-			verify(ozgFileMapper).toFile(any(GrpcOzgFile.class));
-		}
-
-		private Stream<OzgFile> doServiceCall() {
-			return remoteService.getFiles(List.of(OzgFileTestFactory.ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileServiceTest.java
deleted file mode 100644
index 00a422ad81f1f993ef7d06d4ea76790afb170ff8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileServiceTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-
-class BinaryFileServiceTest {
-
-	@InjectMocks
-	private BinaryFileService service;
-
-	@Mock
-	private BinaryFileRemoteService remoteService;
-
-	@Nested
-	class TestUploadFile {
-
-		@Test
-		void shouldCallRemoteService() throws IOException {
-			var uploadBinaryFile = UploadBinaryFileTestFactory.create();
-
-			service.uploadFile(uploadBinaryFile);
-
-			verify(remoteService).uploadFile(uploadBinaryFile);
-		}
-	}
-
-	@Nested
-	class TestWriteFileContent {
-
-		@Mock
-		private OutputStream out;
-
-		@Test
-		void shouldCallRemotService() {
-			service.writeFileContent(OzgFileTestFactory.ID, out);
-
-			verify(remoteService).writeFileContent(OzgFileTestFactory.ID, out);
-		}
-	}
-
-	@Nested
-	class TestGetFile {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getFile(BinaryFileTestFactory.FILE_ID);
-
-			verify(remoteService).getFile(BinaryFileTestFactory.FILE_ID);
-		}
-	}
-
-	@Nested
-	class TestGetFiles {
-
-		@Test
-		void shouldCallRemotService() {
-			var fileIds = List.of(BinaryFileTestFactory.FILE_ID);
-
-			service.getFiles(fileIds);
-
-			verify(remoteService).getFiles(fileIds);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileTestFactory.java
deleted file mode 100644
index 8728f9d7b93dd2bc701738515c1b5517b7904a23..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileTestFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.UUID;
-
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.util.unit.DataSize;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.file.GrpcOzgFileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcFindFilesResponse;
-
-public class BinaryFileTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final FileId FILE_ID = FileId.from(ID);
-	public static final String NAME = "TestFile";
-	public static final String CONTENT_TYPE = "application/image";
-	public static final byte[] DATA = "juhu, ein bild".getBytes();
-	public static final MockMultipartFile TEST_FILE = new MockMultipartFile("file", NAME, CONTENT_TYPE, DATA);
-	public static final long SIZE = TEST_FILE.getSize();
-
-	public static final String FIELD = "attachment";
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-	static final InputStream STREAM = new ByteArrayInputStream(DATA);
-
-	public static GrpcFindFilesResponse createFindBinaryFilesResponse() {
-		return GrpcFindFilesResponse.newBuilder().addFile(GrpcOzgFileTestFactory.create()).build();
-	}
-
-	public static byte[] createByteOfSize(DataSize size) {
-		var testStr = LoremIpsum.getInstance().getWords(1);
-		var contentSize = (int) size.toBytes();
-		var result = new byte[contentSize];
-
-		System.arraycopy(testStr.getBytes(), 0, result, contentSize - testStr.length(), testStr.length());
-
-		return result;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserverTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserverTest.java
deleted file mode 100644
index 068e00cb85075d1d0317bf04855388eb8602b461..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/BinaryFileUploadStreamObserverTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse;
-
-class BinaryFileUploadStreamObserverTest {
-
-	@InjectMocks
-	private BinaryFileUploadStreamObserver uploadStreamObserver;
-	@Mock
-	private CompletableFuture<FileId> fileIdFuture;
-
-	private final String FIELD_FILE_ID = "fileId";
-
-	@Nested
-	class TestOnNext {
-
-		private GrpcUploadBinaryFileResponse uploadResponse = GrpcUploadBinaryFileResponse.newBuilder()
-				.setFileId(OzgFileTestFactory.ID.toString())
-				.build();
-
-		@Test
-		void shouldSetFileId() {
-			uploadStreamObserver.onNext(uploadResponse);
-
-			assertThat(uploadStreamObserver.getFileId()).isEqualTo(OzgFileTestFactory.ID.toString());
-		}
-	}
-
-	@Nested
-	class TestOnError {
-
-		@Mock
-		private Throwable throwable;
-
-		@Test
-		void shouldCompleteFutureExceptionally() {
-			uploadStreamObserver.onError(throwable);
-
-			verify(fileIdFuture).completeExceptionally(throwable);
-		}
-	}
-
-	@Nested
-	class TestOnCompleted {
-
-		@Test
-		void shouldCompleteWithFileId() {
-			ReflectionTestUtils.setField(uploadStreamObserver, FIELD_FILE_ID, BinaryFileTestFactory.ID);
-
-			uploadStreamObserver.onCompleted();
-
-			verify(fileIdFuture).complete(FileId.from(BinaryFileTestFactory.ID));
-		}
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSenderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSenderTest.java
deleted file mode 100644
index f7f98aaa85639fcd1d0338341893fed0337fb1cb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/ChunkedFileSenderTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.function.Function;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import io.grpc.stub.CallStreamObserver;
-import lombok.SneakyThrows;
-
-class ChunkedFileSenderTest {
-
-	private CallStreamObserver<GrpcUploadBinaryFileRequest> requestObserver = mock(CallStreamObserver.class);
-	private InputStream uploadStream = mock(InputStream.class);
-
-	private int chunkSize = BinaryFileTestFactory.DATA.length;
-	private GrpcUploadBinaryFileRequest uploadBinaryFileRequest = GrpcUploadBinaryFileRequestTestFactory.createDataRequest();
-	private Function<byte[], GrpcUploadBinaryFileRequest> buildUploadBinaryFileRequest = when(mock(Function.class).apply(any()))
-			.thenReturn(uploadBinaryFileRequest).getMock();
-	private GrpcUploadBinaryFileRequest metadataRequest = GrpcUploadBinaryFileRequestTestFactory.createMetadataRequest();
-
-	private ChunkedFileSender<GrpcUploadBinaryFileRequest> streamer = new ChunkedFileSender<>(uploadStream, chunkSize, buildUploadBinaryFileRequest,
-			metadataRequest);
-
-	@Nested
-	class TestSendBinaryFile {
-
-		@Test
-		void shouldNotSendWhenDone() {
-			ReflectionTestUtils.setField(streamer, "hasUploadFile", new AtomicBoolean(false));
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(requestObserver, never()).onNext(any());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCloseUploadStream() {
-			when(uploadStream.readNBytes(anyInt())).thenReturn(new byte[] {});
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(uploadStream).close();
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallOnCompleted() {
-			when(uploadStream.readNBytes(anyInt())).thenReturn(new byte[] {});
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(requestObserver).onCompleted();
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallOnNext() {
-			when(uploadStream.readNBytes(anyInt())).thenReturn(BinaryFileTestFactory.DATA);
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(requestObserver).onNext(uploadBinaryFileRequest);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldThrowException() {
-			doThrow(IOException.class).when(uploadStream).readNBytes(anyInt());
-
-			assertThrows(TechnicalException.class, () -> streamer.sendChunkTo(requestObserver));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldBuildRequest() {
-			when(uploadStream.readNBytes(anyInt())).thenReturn(BinaryFileTestFactory.DATA);
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(buildUploadBinaryFileRequest).apply(BinaryFileTestFactory.DATA);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldSendMetadata() {
-			when(uploadStream.readNBytes(anyInt())).thenReturn(BinaryFileTestFactory.DATA);
-
-			streamer.sendChunkTo(requestObserver);
-
-			verify(requestObserver).onNext(metadataRequest);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAlfaUserTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAlfaUserTestFactory.java
deleted file mode 100644
index 8ae331eaa8f5b6e1ea29901cc1cec42980569172..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAlfaUserTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class DownloadAlfaUserTestFactory {
-
-	static AlfaUserWithFileId create() {
-		return createBuilder().build();
-	}
-
-	static AlfaUserWithFileId.AlfaUserWithFileIdBuilder createBuilder() {
-		return AlfaUserWithFileId.builder().user(UserProfileTestFactory.create()).fileId(BinaryFileTestFactory.FILE_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandlerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandlerTest.java
deleted file mode 100644
index 18e18abf8ffe4d307b2d04aa487fdc4bfc37d692..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/DownloadAuthenticationHandlerTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.oauth2.jwt.Jwt;
-
-class DownloadAuthenticationHandlerTest {
-
-	private DownloadAuthenticationHandler downloadAuthorizationHandler = new DownloadAuthenticationHandler();
-
-	@Nested
-	class TestAuthorizationKeycloak {
-
-		@Mock
-		private Jwt jwt;
-
-		private Authentication authentication = mock(Authentication.class);
-
-		@BeforeEach
-		void init() {
-			when(authentication.isAuthenticated()).thenReturn(Boolean.TRUE);
-			when(authentication.getPrincipal()).thenReturn(jwt);
-		}
-
-		@Test
-		void shouldAuthenticate() {
-			var check = downloadAuthorizationHandler.check(FileId.createNew(), authentication);
-
-			assertThat(check).isTrue();
-		}
-	}
-
-	@Nested
-	class TestAuthorizationUsernamePassword {
-		private FileId fileId = FileId.createNew();
-
-		private Authentication authentication = mock(UsernamePasswordAuthenticationToken.class);
-
-		@BeforeEach
-		void init() {
-			when(authentication.isAuthenticated()).thenReturn(Boolean.TRUE);
-			when(authentication.getPrincipal()).thenReturn(DownloadAlfaUserTestFactory.createBuilder().fileId(fileId).build());
-		}
-
-		@Test
-		void shouldAuthenticate() {
-			var check = downloadAuthorizationHandler.check(fileId, authentication);
-
-			assertThat(check).isTrue();
-		}
-
-		@Test
-		void shouldNotAuthenticateWrongFileId() {
-			var check = downloadAuthorizationHandler.check(FileId.createNew(), authentication);
-
-			assertThat(check).isFalse();
-		}
-
-		@Test
-		void shouldNotAuthenticateNoFileId() {
-			var check = downloadAuthorizationHandler.check(null, authentication);
-
-			assertThat(check).isFalse();
-		}
-
-		@Test
-		void shouldNotAuthenticate() {
-			when(authentication.isAuthenticated()).thenReturn(Boolean.FALSE);
-
-			var check = downloadAuthorizationHandler.check(fileId, authentication);
-
-			assertThat(check).isFalse();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileMetaDataTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileMetaDataTestFactory.java
deleted file mode 100644
index 7be79f98682613818872fb565a3eb82df19f4777..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileMetaDataTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData;
-
-public class GrpcUploadBinaryFileMetaDataTestFactory {
-
-	public static GrpcUploadBinaryFileMetaData create() {
-		return createBuilder().build();
-	}
-
-	private static GrpcUploadBinaryFileMetaData.Builder createBuilder() {
-		return GrpcUploadBinaryFileMetaData.newBuilder()
-				.setVorgangId(UploadBinaryFileTestFactory.VORGANG_ID)
-				.setField(UploadBinaryFileTestFactory.FIELD)
-				.setContentType(OzgFileTestFactory.CONTENT_TYPE)
-				.setSize(OzgFileTestFactory.SIZE)
-				.setFileName(OzgFileTestFactory.NAME);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileRequestTestFactory.java
deleted file mode 100644
index 99ff41ceeb55009751675252628871e18efea6aa..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/GrpcUploadBinaryFileRequestTestFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import com.google.protobuf.ByteString;
-
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest.Builder;
-
-public class GrpcUploadBinaryFileRequestTestFactory {
-
-	public static GrpcUploadBinaryFileRequest createDataRequest() {
-		return createBuilder().setFileContent(ByteString.copyFrom(BinaryFileTestFactory.DATA)).build();
-	}
-
-	public static GrpcUploadBinaryFileRequest createMetadataRequest() {
-		return createBuilder().setMetadata(GrpcUploadBinaryFileMetaDataTestFactory.create()).build();
-	}
-
-	public static Builder createBuilder() {
-		return GrpcUploadBinaryFileRequest.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidatorTest.java
deleted file mode 100644
index 1439fb1c0f11c5851771610d18f171ce803a3ebe..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileContentTypeValidatorTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-import java.util.Map;
-
-import jakarta.validation.ConstraintValidatorContext;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-class UploadBinaryFileContentTypeValidatorTest {
-
-	@Mock
-	private BinaryFileProperties properties;
-	@Spy
-	@InjectMocks
-	private UploadBinaryFileContentTypeValidator validator;
-
-	@Nested
-	class TestIsValid {
-
-		@Mock
-		private ConstraintValidatorContext context;
-
-		@Test
-		void shouldGetConfiguredContentTypes() {
-			callValidator();
-
-			verify(validator).getConfiguredContentTypes(UploadBinaryFileTestFactory.FIELD);
-		}
-
-		@Test
-		void shouldReturnTrueIfConfigurationIsMissing() {
-			var result = callValidator();
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfContentTypeIsNotConfigured() {
-			givenConfiguredContentTypes(List.of("dummy/abc", "dummy/xyz"));
-
-			var result = callValidator();
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldReturnTrueIfContentTypeIsConfigured() {
-			givenConfiguredContentTypes(List.of(BinaryFileTestFactory.CONTENT_TYPE));
-
-			var result = callValidator();
-
-			assertThat(result).isTrue();
-		}
-
-		private void givenConfiguredContentTypes(List<String> contentTypes) {
-			doReturn(contentTypes).when(validator).getConfiguredContentTypes(UploadBinaryFileTestFactory.FIELD);
-		}
-
-		private boolean callValidator() {
-			return validator.isValid(UploadBinaryFileTestFactory.create(), context);
-		}
-	}
-
-	@Nested
-	class TestGetConfiguredContentTypes {
-
-		@Test
-		void shouldReturnEmptyCollection() {
-			var contentTypes = validator.getConfiguredContentTypes(UploadBinaryFileTestFactory.FIELD);
-
-			assertThat(contentTypes).isEmpty();
-		}
-
-		@Test
-		void shouldReturnContentTypes() {
-			var expectedContentTypes = List.of(LoremIpsum.getInstance().getWords(1), LoremIpsum.getInstance().getWords(1));
-			givenConfiguredContentTypes(expectedContentTypes);
-
-			var contentTypes = validator.getConfiguredContentTypes(UploadBinaryFileTestFactory.FIELD);
-
-			assertThat(contentTypes).containsExactlyInAnyOrderElementsOf(expectedContentTypes);
-		}
-
-		private void givenConfiguredContentTypes(List<String> contentTypes) {
-			when(properties.getContentTypes()).thenReturn(Map.of(UploadBinaryFileTestFactory.FIELD, contentTypes));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidatorTest.java
deleted file mode 100644
index 0190e84875fc1e8b0faa009786073b129eae00c6..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileSizeValidatorTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.Map;
-
-import jakarta.validation.ConstraintValidatorContext;
-
-import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorContext;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.util.unit.DataSize;
-
-class UploadBinaryFileSizeValidatorTest {
-
-	@Spy
-	@InjectMocks
-	private UploadBinaryFileSizeValidator validator = new UploadBinaryFileSizeValidator();
-	@Mock
-	private BinaryFileProperties properties;
-
-	@Nested
-	class TestIsValid {
-
-		@Mock
-		private ConstraintValidatorContext context;
-		@Mock
-		private HibernateConstraintValidatorContext unwrappedContext;
-
-		@BeforeEach
-		void mockMaxValidSize() {
-			doReturn(unwrappedContext).when(validator).getUnwrappedContext(any(), any());
-			doReturn(DataSize.ofMegabytes(3)).when(validator).getMaxValidSize(anyString());
-		}
-
-		@Test
-		void shouldCallGetMaxValidSize() {
-			validator.isValid(UploadBinaryFileTestFactory.create(), context);
-
-			verify(validator).getMaxValidSize(UploadBinaryFileTestFactory.FIELD);
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			var result = validator.isValid(UploadBinaryFileTestFactory.create(), context);
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var result = validator.isValid(UploadBinaryFileTestFactory.createBuilder().size(DataSize.ofMegabytes(3).toBytes() + 1).build(), null);
-
-			assertThat(result).isFalse();
-		}
-
-		@Nested
-		class TestDynamicPayload {
-
-			@Captor
-			private ArgumentCaptor<DynamicViolationParameter> captor;
-
-			@Test
-			void shouldSetMaxValue() {
-				validator.isValid(UploadBinaryFileTestFactory.create(), context);
-
-				verify(unwrappedContext).withDynamicPayload(captor.capture());
-				assertThat(String.valueOf(captor.getValue().getMap().get("max"))).isEqualTo("3");
-			}
-		}
-	}
-
-	@Nested
-	class TestGetMaxValidSize {
-
-		@Test
-		void shouldReturnDefaultValueOnEmptyMap() {
-			when(properties.getMaxFileSize()).thenReturn(Collections.emptyMap());
-
-			var maxFileSize = validator.getMaxValidSize(BinaryFileTestFactory.FIELD);
-
-			assertThat(maxFileSize.toBytes()).isEqualTo(DataSize.ofMegabytes(UploadBinaryFileSizeValidator.DEFAULT_MAX_SIZE).toBytes());
-		}
-
-		@Test
-		void shouldReturnDefaultValueOnMissingField() {
-			when(properties.getMaxFileSize()).thenReturn(Map.of("not match", DataSize.ofMegabytes(3)));
-
-			var maxFileSize = validator.getMaxValidSize(BinaryFileTestFactory.FIELD);
-
-			assertThat(maxFileSize.toBytes()).isEqualTo(DataSize.ofMegabytes(UploadBinaryFileSizeValidator.DEFAULT_MAX_SIZE).toBytes());
-		}
-
-		@Test
-		void shouldReturnPropertiesValue() {
-			when(properties.getMaxFileSize()).thenReturn(Map.of(BinaryFileTestFactory.FIELD, DataSize.ofMegabytes(3)));
-
-			var maxFileSize = validator.getMaxValidSize(BinaryFileTestFactory.FIELD);
-
-			assertThat(maxFileSize.toBytes()).isEqualTo(DataSize.ofMegabytes(3).toBytes());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileTestFactory.java
deleted file mode 100644
index 0224fedcd8f78e793877cbae8c08be73d929800e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/binaryfile/UploadBinaryFileTestFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.binaryfile;
-
-import static de.ozgcloud.alfa.common.file.OzgFileTestFactory.*;
-
-import java.io.InputStream;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-public class UploadBinaryFileTestFactory {
-
-	static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-	static final String FIELD = BinaryFileTestFactory.FIELD;
-	static final InputStream UPLOAD_STREAM = BinaryFileTestFactory.STREAM;
-
-	public static UploadBinaryFileRequest create() {
-		return createBuilder().build();
-	}
-
-	public static UploadBinaryFileRequest.UploadBinaryFileRequestBuilder createBuilder() {
-		return UploadBinaryFileRequest.builder()
-				.name(NAME)
-				.vorgangId(VORGANG_ID)
-				.field(FIELD)
-				.size(SIZE)
-				.contentType(CONTENT_TYPE)
-				.uploadStream(UPLOAD_STREAM);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptorTest.java
deleted file mode 100644
index bedbd3fd1379a5f187a947f1dff459e3e9e03f5f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextAttachingInterceptorTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.callcontext.CallContextAttachingInterceptor.CallContextAttachingClientCall;
-import io.grpc.ClientCall;
-import io.grpc.ClientCall.Listener;
-import io.grpc.Metadata;
-
-class CallContextAttachingInterceptorTest<A, B> {
-
-	@InjectMocks
-	private CallContextAttachingInterceptor interceptor;
-	@Mock
-	private ContextService contextService;
-
-	private CallContextAttachingClientCall<A, B> clientCall;
-	@Mock
-	private ClientCall<A, B> delegateCall;
-
-	@Mock
-	private Listener<B> responseListener;
-
-	@Mock
-	private Metadata contextMetadata;
-	@Mock
-	private Metadata inputMetadata;
-
-	@BeforeEach
-	void initClientCall() {
-		clientCall = interceptor.new CallContextAttachingClientCall<A, B>(delegateCall);
-	}
-
-	@BeforeEach
-	void mockContextService() {
-		when(contextService.buildCallContextMetadata()).thenReturn(contextMetadata);
-	}
-
-	@Test
-	void shouldCallUserService() {
-		clientCall.start(responseListener, inputMetadata);
-
-		verify(contextService).buildCallContextMetadata();
-	}
-
-	@Test
-	void shouldMergeMetas() {
-		clientCall.start(responseListener, inputMetadata);
-
-		verify(inputMetadata).merge(contextMetadata);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextTestFactory.java
deleted file mode 100644
index 1e173d64c19cb98a8b4e24efb9d03888b49054e8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/CallContextTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import static de.ozgcloud.alfa.common.callcontext.ContextService.*;
-
-import java.util.Map;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class CallContextTestFactory {
-
-	public static final String CLIENT_NAME = "TEST_CLIENT";
-
-	static Map<String, String> createContextMap() {
-		return Map.of(
-				KEY_USER_ID, UserProfileTestFactory.ID.toString(),
-				KEY_USER_NAME, UserProfileTestFactory.FULLNAME);
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/ContextServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/ContextServiceTest.java
deleted file mode 100644
index 43560b04c7ffb6c1d1a744047b8f4bec8acd4ade..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/callcontext/ContextServiceTest.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.callcontext;
-
-import static de.ozgcloud.alfa.common.callcontext.ContextService.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collection;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.context.ApplicationContext;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.RequestAttributes;
-import de.ozgcloud.alfa.RequestAttributesTestFactory;
-import de.ozgcloud.alfa.common.GrpcUtil;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.ZustaendigeStelleTestFactory;
-import de.ozgcloud.vorgang.grpc.command.GrpcUser;
-
-class ContextServiceTest {
-
-	static final String APPLICATION_ID = LoremIpsum.getInstance().getName();
-
-	@InjectMocks
-	private ContextService service;
-
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private ApplicationContext context;
-	@Spy
-	private RequestAttributes reqAttributes = RequestAttributesTestFactory.create();
-
-	@BeforeEach
-	void initMocks() {
-		when(context.getId()).thenReturn(APPLICATION_ID);
-		when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-	}
-
-	@DisplayName("Get context metas")
-	@Nested
-	class TestGetContextMetas {
-
-		@BeforeEach
-		void mockUserService() {
-			when(userService.hasRole(any())).thenReturn(Boolean.TRUE);
-		}
-
-		@Test
-		void shouldHaveUserId() {
-			var metadata = service.buildCallContextMetadata();
-
-			assertThat(GrpcUtil.getFromHeaders(KEY_USER_ID, metadata)).isEqualTo(UserProfileTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldHaveUserName() {
-			var metadata = service.buildCallContextMetadata();
-
-			assertThat(GrpcUtil.getFromHeaders(KEY_USER_NAME, metadata)).isEqualTo(UserProfileTestFactory.FULLNAME);
-		}
-
-		@Test
-		void shouldHaveClientName() {
-			var metadata = service.buildCallContextMetadata();
-
-			assertThat(GrpcUtil.getFromHeaders(KEY_CLIENT_NAME, metadata)).isEqualTo(APPLICATION_ID);
-		}
-
-		@Test
-		void shouldLimitAccessToOrgaId() {
-			var metadata = service.buildCallContextMetadata();
-			metadata.put(GrpcUtil.createKeyOf(KEY_ACCESS_LIMITED_ORGAID), "orgaid_2".getBytes());
-
-			assertThat(GrpcUtil.getCollection(KEY_ACCESS_LIMITED_ORGAID, metadata)).isInstanceOf(Collection.class).hasSize(2)
-					.contains(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID, "orgaid_2");
-		}
-
-		@DisplayName("access limited")
-		@Nested
-		class TestAccessLimitedByUserRole {
-
-			@Test
-			void shouldHaveTrueOnRoleVerwaltungUser() {
-				when(userService.hasRole(anyString())).thenReturn(Boolean.FALSE);
-
-				var metadata = service.buildCallContextMetadata();
-
-				assertThat(GrpcUtil.getFromHeaders(KEY_ACCESS_LIMITED, metadata)).isEqualTo(Boolean.TRUE.toString());
-			}
-
-			@Test
-			void shouldHaveFalseOnRoleVerwaltungPoststelle() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(Boolean.TRUE);
-
-				var metadata = service.buildCallContextMetadata();
-
-				assertThat(GrpcUtil.getFromHeaders(KEY_ACCESS_LIMITED, metadata)).isEqualTo(Boolean.FALSE.toString());
-			}
-
-			@Test
-			void shouldHaveFalseOnRoleEinheitlicherAnsprechpartner() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(Boolean.FALSE);
-				when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(Boolean.TRUE);
-
-				var metadata = service.buildCallContextMetadata();
-
-				assertThat(GrpcUtil.getFromHeaders(KEY_ACCESS_LIMITED, metadata)).isEqualTo(Boolean.FALSE.toString());
-			}
-		}
-	}
-
-	@Nested
-	class TestCreateCallContest {
-
-		@Test
-		void shouldCallContextGetApplicationName() {
-			service.createCallContext();
-
-			verify(context).getId();
-		}
-
-		@Test
-		void shouldContainClient() {
-			var callContext = service.createCallContext();
-
-			assertThat(callContext.getClient()).isEqualTo(APPLICATION_ID);
-		}
-
-		@Test
-		void shouldCallUserService() {
-			service.createCallContext();
-
-			verify(userService).getUser();
-		}
-
-		@Test
-		void shoultHaveUserId() {
-			var context = service.createCallContext();
-
-			assertThat(context.getUser()).extracting(GrpcUser::getId).isEqualTo(UserProfileTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldHaveFullName() {
-			var context = service.createCallContext();
-
-			assertThat(context.getUser()).extracting(GrpcUser::getName).isEqualTo(UserProfileTestFactory.FULLNAME);
-		}
-
-		@Test
-		void shouldHaveRequestId() {
-			var context = service.createCallContext();
-
-			assertThat(context.getRequestId()).isEqualTo(RequestAttributesTestFactory.REQUEST_ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteServiceTest.java
deleted file mode 100644
index 905ea76189b7249b36091e9ab3b70e132db2567d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeRemoteServiceTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcUpdateClientAttributeRequest;
-
-class ClientAttributeRemoteServiceTest {
-	private final ClientAttribute clientAttribute = ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT;
-	@Spy
-	@InjectMocks
-	private ClientAttributeRemoteService service;
-
-	@Mock
-	private ClientAttributeServiceBlockingStub serviceStub;
-
-	@Mock
-	private GrpcUpdateClientAttributeRequest request;
-
-	@Nested
-	class TestSetBooleanReadOnlyClientAttribute {
-		private final Boolean value = false;
-
-		@BeforeEach
-		void mockBuildRequest() {
-			doReturn(request).when(service).buildRequest(VorgangHeaderTestFactory.ID, clientAttribute, value);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			callService();
-
-			verify(serviceStub).update(request);
-		}
-
-		@Test
-		void shouldCatchFunctionalException() {
-			when(serviceStub.update(any())).thenThrow(new RuntimeException());
-
-			assertDoesNotThrow(() -> callService());
-		}
-
-		private void callService() {
-			service.setBooleanReadOnlyClientAttribute(VorgangHeaderTestFactory.ID, clientAttribute, value);
-		}
-	}
-
-	@Nested
-	class TestBuildRequest {
-		@Test
-		void shouldHaveAttribute() {
-			GrpcUpdateClientAttributeRequest request = callService();
-
-			assertThat(request.getAttribute()).isNotNull();
-		}
-
-		@Test
-		void shouldHaveVorgangId() {
-			GrpcUpdateClientAttributeRequest request = callService();
-
-			assertThat(request.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveAttributeName() {
-			GrpcUpdateClientAttributeRequest request = callService();
-
-			assertThat(request.getAttribute().getAttributeName()).isEqualTo(clientAttribute.getAttributeName());
-		}
-
-		@Test
-		void shouldHaveClientName() {
-			GrpcUpdateClientAttributeRequest request = callService();
-
-			assertThat(request.getAttribute().getClientName()).isEqualTo(clientAttribute.getClientName().toString());
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { true, false })
-		void shouldHaveAttributeValue(boolean value) {
-			GrpcUpdateClientAttributeRequest request = callService(value);
-
-			assertThat(request.getAttribute().getValue()).isNotNull();
-			assertThat(request.getAttribute().getValue().getBoolValue()).isEqualTo(value);
-		}
-
-		private GrpcUpdateClientAttributeRequest callService() {
-			return callService(false);
-		}
-
-		private GrpcUpdateClientAttributeRequest callService(boolean value) {
-			return service.buildRequest(VorgangHeaderTestFactory.ID, clientAttribute, value);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeServiceTest.java
deleted file mode 100644
index 59bd03ddbb440d66be7e8fb1c262cdaa0976692d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeServiceTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class ClientAttributeServiceTest {
-	@Spy
-	@InjectMocks
-	private ClientAttributeService service;
-	@Mock
-	private ClientAttributeRemoteService remoteService;
-
-	@Nested
-	class TestResetNewPostfachNachricht {
-		private final ClientAttribute clientAttribute = ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT;
-
-		@Test
-		void shouldCallRemoteService() {
-			service.resetPostfachNachricht(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).setBooleanReadOnlyClientAttribute(VorgangHeaderTestFactory.ID, clientAttribute, false);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtilsTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtilsTest.java
deleted file mode 100644
index 46a61a4ee166915dbf16f666ac21f85289c68b34..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/ClientAttributeUtilsTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-
-class ClientAttributeUtilsTest {
-	private List<GrpcClientAttribute> attributeList;
-
-	@Nested
-	class TestFind {
-		private GrpcClientAttribute expectedClientAttribute = GrpcClientAttributeTestFactory.create();
-
-		@Test
-		void shouldFindOne() {
-			attributeList = List.of(
-					GrpcClientAttributeTestFactory.createBuilder().setAttributeName("name1").setClientName("client1").build(),
-					GrpcClientAttributeTestFactory.createBuilder().setAttributeName(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT.getAttributeName())
-							.setClientName(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT.getClientName().toString()).build());
-
-			var resultStream = ClientAttributeUtils.findGrpcValue(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, attributeList);
-
-			assertThat(resultStream).contains(expectedClientAttribute.getValue());
-		}
-
-		@Test
-		void shouldNotFindOneDueToClientName() {
-			attributeList = List.of(GrpcClientAttributeTestFactory.createBuilder()
-					.setAttributeName(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT.getAttributeName())
-					.setClientName("client2")
-					.build());
-
-			var resultStream = ClientAttributeUtils.findGrpcValue(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, attributeList);
-
-			assertThat(resultStream).isEmpty();
-		}
-
-		@Test
-		void shouldNotFindOneDueToAttributeName() {
-			attributeList = List.of(GrpcClientAttributeTestFactory.createBuilder()
-					.setAttributeName("name2")
-					.setClientName(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT.getClientName().toString())
-					.build());
-
-			var resultStream = ClientAttributeUtils.findGrpcValue(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, attributeList);
-
-			assertThat(resultStream).isEmpty();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/GrpcClientAttributeTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/GrpcClientAttributeTestFactory.java
deleted file mode 100644
index aa73dd563a41f81f9c1ed38e2f96592771cc7384..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/clientattribute/GrpcClientAttributeTestFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.clientattribute;
-
-import de.ozgcloud.alfa.common.callcontext.CallContextTestFactory;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcAccessPermission;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-
-public class GrpcClientAttributeTestFactory {
-	static final GrpcAccessPermission ACCESS_PERMISSION = GrpcAccessPermission.READ_ONLY;
-	static final GrpcClientAttributeValue ATTRIBUTE_VALUE = GrpcClientAttributeValue.newBuilder().setBoolValue(true).build();
-
-	public static final String ATTRIBUTE_NAME = "testAttribute";
-	public static final String CLIENT_NAME = CallContextTestFactory.CLIENT_NAME;
-
-	public static GrpcClientAttribute create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcClientAttribute.Builder createBuilder() {
-		return GrpcClientAttribute.newBuilder()
-				.setAccess(ACCESS_PERMISSION)
-				.setClientName(CLIENT_NAME)
-				.setAttributeName(ATTRIBUTE_NAME)
-				.setValue(ATTRIBUTE_VALUE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandBodyMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandBodyMapperTest.java
deleted file mode 100644
index ec527fd0837547df369915e2a13ad3c3e149f744..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandBodyMapperTest.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-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.mapstruct.factory.Mappers;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachAddress;
-import de.ozgcloud.alfa.postfach.PostfachAddressTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachMail;
-import de.ozgcloud.alfa.postfach.PostfachMailTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandBody;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandBodyField;
-
-class CommandBodyMapperTest {
-
-	private static final String FIELD = "FIELD";
-	private static final String VALUE = "VALUE";
-
-	@Spy
-	private CommandBodyMapper mapper = Mappers.getMapper(CommandBodyMapper.class);
-
-	@DisplayName("From object to map")
-	@Nested
-	class TestFromObjectToMap {
-
-		@Test
-		void shouldMapAllValues() {
-			var commandAsObject = CommandTestFactory.create();
-
-			var mappedMap = mapper.fromObjectToMap(commandAsObject);
-
-			assertThat(mappedMap)
-					.containsEntry("id", CommandTestFactory.ID)
-					.containsEntry("status", CommandTestFactory.STATUS.name())
-					.containsEntry("order", CommandTestFactory.ORDER)
-					.containsEntry("relationId", CommandTestFactory.RELATION_ID)
-					.containsEntry("vorgangId", CommandTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldNotMapClass() {
-			var commandAsObject = CommandTestFactory.create();
-
-			var mappedMap = mapper.fromObjectToMap(commandAsObject);
-
-			assertThat(mappedMap).doesNotContainKey("class");
-		}
-
-		@Test
-		void shouldMapNullValue() {
-			var commandAsObject = CommandTestFactory.createBuilder().status(null).build();
-
-			var mappedMap = mapper.fromObjectToMap(commandAsObject);
-
-			assertThat(mappedMap).containsEntry("status", null);
-		}
-
-		@Test
-		void shouldNotMapVersion() {
-			var commandAsObject = WiedervorlageTestFactory.create();
-
-			var mappedMap = mapper.fromObjectToMap(commandAsObject);
-
-			assertThat(mappedMap).doesNotContainKey("version");
-		}
-
-		@DisplayName("get value")
-		@Nested
-		class TestGetValue {
-
-			@Test
-			void shouldMapPostfachMailMap() {
-				var postfachMailBody = PostfachMailTestFactory.create();
-
-				var mappedValue = mapper.getValue(postfachMailBody);
-
-				assertThat(mappedValue).usingRecursiveComparison().isEqualTo(PostfachMailTestFactory.create());
-			}
-		}
-	}
-
-	@Nested
-	class TestMapToBody {
-		@Test
-		void shouldReturnEmptyBodyForNull() {
-			var result = mapper.mapToBody(null);
-
-			assertThat(result).isNotNull();
-			assertThat(result.getFieldList()).isEmpty();
-		}
-
-		@Test
-		void shouldReturnBodyWithField() {
-			var result = mapper.mapToBody(buildBodyMap());
-
-			assertThat(result.getFieldList()).hasSize(1);
-			assertThat(result.getFieldList().get(0).getName()).isEqualTo("FIELD");
-			assertThat(result.getFieldList().get(0).getValue()).isEqualTo("VALUE");
-		}
-
-		private Map<String, String> buildBodyMap() {
-			return Map.of(FIELD, VALUE);
-		}
-
-		@Test
-		void shouldFilterEntriesWithNullValue() {
-			var result = mapper.mapToBody(buildBodyMapWithNullValue());
-
-			assertThat(result.getFieldList()).isEmpty();
-		}
-
-		private Map<String, String> buildBodyMapWithNullValue() {
-			HashMap<String, String> bodyMap = new HashMap<>();
-			bodyMap.put(FIELD, null);
-			return bodyMap;
-		}
-	}
-
-	@Nested
-	class TestMapToBodyFields {
-
-		@Captor
-		private ArgumentCaptor<Map<Object, Object>> mapCaptor;
-
-		@Test
-		void shouldReturnEmptyListOnNull() {
-			var result = mapper.mapToBodyFields((CommandBody) null);
-
-			assertThat(result).isEmpty();
-		}
-
-		@Test
-		void shouldContainFields() {
-			var fieldList = mapper.mapToBodyFields(PostfachMailTestFactory.create());
-
-			assertThat(fieldList).hasSize(13);
-		}
-
-		@Test
-		void shouldNOTContainClassEntry() {
-			var fieldList = mapper.mapToBodyFields(PostfachMailTestFactory.create());
-
-			assertThat(fieldList).isNotEmpty().allMatch(field -> !StringUtils.equals(field.getName(), "class"));
-		}
-
-		@Test
-		void shouldReturnField() {
-			var result = mapper.mapToBodyFields(buildBodyMap());
-
-			assertThat(result).hasSize(1);
-			assertThat(result.get(0).getName()).isEqualTo(FIELD);
-			assertThat(result.get(0).getValue()).isEqualTo(VALUE);
-		}
-
-		private Map<Object, Object> buildBodyMap() {
-			return Map.of(FIELD, VALUE);
-		}
-
-		@Test
-		void shouldMapNullAsEmptyValue() {
-			var result = mapper.mapToBodyFields(buildBodyMapWithNullValue());
-
-			assertThat(result).hasSize(1);
-			assertThat(result.get(0).getValue()).isEmpty();
-		}
-
-		private Map<Object, Object> buildBodyMapWithNullValue() {
-			HashMap<Object, Object> bodyMap = new HashMap<>();
-			bodyMap.put(FIELD, null);
-			return bodyMap;
-		}
-	}
-
-	@Nested
-	class TestMap {
-
-		@Test
-		void shouldReturnMap() {
-			var result = mapper
-					.map(GrpcCommandBody.newBuilder().addField(GrpcCommandBodyField.newBuilder().setName(FIELD).setValue(VALUE).build()).build());
-
-			assertThat(result).hasSize(1).containsEntry(FIELD, VALUE);
-		}
-	}
-
-	@DisplayName("map to body map")
-	@Nested
-	class TestMapToBodyMap {
-
-		@DisplayName("for postfachMail")
-		@Nested
-		class TestForPostfachMail {
-
-			private final CommandBody postfachMailCommandBody = PostfachMailTestFactory.create();
-			private final CreateCommand command = CommandTestFactory.createCreateCommandBuilder().body(postfachMailCommandBody).build();
-			private final String itemName = "PostfachMail";
-
-			@SuppressWarnings("unchecked")
-			@Test
-			void shouldMapFields() {
-				var bodyMap = mapToBodyMap();
-
-				var item = (Map<String, Object>) bodyMap.get(CommandBodyMapper.ITEM_PROPERTY);
-				assertThat(item).containsKey(PostfachMail.POSTFACH_ADDRESS_FIELD);
-				var postfachAddressMap = (Map<String, Object>) item.get(PostfachMail.POSTFACH_ADDRESS_FIELD);
-				assertThat((Integer) postfachAddressMap.get(PostfachAddress.TYPE_FIELD)).isEqualTo(PostfachAddressTestFactory.TYPE);
-				assertThat((String) postfachAddressMap.get(PostfachAddress.VERSION_FIELD)).isEqualTo(PostfachAddressTestFactory.VERSION);
-			}
-
-			private Map<String, Object> mapToBodyMap() {
-				return mapper.mapToBodyMap(command, itemName);
-			}
-		}
-
-		@DisplayName("for wiedervorlage")
-		@Nested
-		class TestForWiedervorlage {
-
-			private final CommandBody wiedervorlageCommandBody = WiedervorlageTestFactory.create();
-			private final CreateCommand command = CommandTestFactory.createCreateCommandBuilder().body(wiedervorlageCommandBody).build();
-			private final String itemName = "Wiedervorlage";
-
-			@Test
-			void shouldContainsItemName() {
-				var mappedBody = mapToBodyMap();
-
-				var itemNameEntry = Map.entry(CommandBodyMapper.ITEM_NAME_PROPERTY, itemName);
-				assertThat(mappedBody).contains(itemNameEntry);
-			}
-
-			@Test
-			void shouldContainsVorgangId() {
-				var mappedBody = mapToBodyMap();
-
-				var vorgangIdEntry = Map.entry(CommandBodyMapper.VORGANG_ID_PROPERTY, VorgangHeaderTestFactory.ID);
-				assertThat(mappedBody).contains(vorgangIdEntry);
-			}
-
-			@Nested
-			class CreatedItem {
-
-				@Test
-				void shouldContainsBetreff() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("betreff", WiedervorlageTestFactory.BETREFF));
-				}
-
-				@Test
-				void shouldContainsBeschreibung() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("beschreibung", WiedervorlageTestFactory.BESCHREIBUNG));
-				}
-
-				@Test
-				void shouldContainsFrist() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("frist", WiedervorlageTestFactory.FRIST));
-				}
-
-				@Test
-				void shouldContainsCreatedBy() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("createdBy", WiedervorlageTestFactory.CREATED_BY));
-				}
-
-				@Test
-				void shouldContainsCreatedAt() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("createdAt", WiedervorlageTestFactory.CREATED_AT));
-				}
-
-				@Test
-				void shouldContainsDone() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("done", WiedervorlageTestFactory.DONE));
-				}
-
-				@Test
-				void shouldContainsAttachments() {
-					var mappedItemMap = getMappedItemEntry();
-
-					assertThat(mappedItemMap).contains(Map.entry("attachments", List.of(BinaryFileTestFactory.FILE_ID)));
-				}
-
-				@SuppressWarnings("unchecked")
-				private Map<String, Object> getMappedItemEntry() {
-					return (Map<String, Object>) mapToBodyMap().get(CommandBodyMapper.ITEM_PROPERTY);
-				}
-			}
-
-			private Map<String, Object> mapToBodyMap() {
-				return mapper.mapToBodyMap(command, itemName);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java
deleted file mode 100644
index 5027742b46a0daa8494613b632efb98b411e7b95..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandByRelationControllerTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static de.ozgcloud.alfa.common.command.CommandController.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.nio.charset.StandardCharsets;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-@DisplayName("Command by relation controller")
-class CommandByRelationControllerTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private CommandByRelationController controller;
-	@Mock
-	private CommandService service;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initMockMvc() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	@DisplayName("create Command by Vorgang")
-	class CreateCommandByVorgang {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandCaptor;
-
-		@BeforeEach
-		void initTest() {
-			when(service.createCommand(any(CreateCommand.class), anyLong())).thenReturn(CommandTestFactory.create());
-		}
-
-		@DisplayName("should return CREATED")
-		@Test
-		void returnCreated() throws Exception {
-			doRequest().andExpect(status().isCreated());
-		}
-
-		@DisplayName("should call service")
-		@Test
-		void callService() throws Exception {
-			doRequest();
-
-			verify(service).createCommand(createCommandCaptor.capture(), eq(CommandTestFactory.RELATION_VERSION));
-			assertThat(createCommandCaptor.getValue().getOrder()).isEqualTo(CommandTestFactory.ORDER);
-			assertThat(createCommandCaptor.getValue().getVorgangId()).isEqualTo(CommandTestFactory.VORGANG_ID);
-			assertThat(createCommandCaptor.getValue().getRelationId()).isEqualTo(CommandTestFactory.RELATION_ID);
-			assertThat(createCommandCaptor.getValue().getRelationVersion()).isZero();
-		}
-
-		@DisplayName("should have location header")
-		@Test
-		void locationHeader() throws Exception {
-			doRequest()
-					.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return doRequest(
-					TestUtils.loadTextFile("jsonTemplates/command/createVorgangCommand.json.tmpl", CommandTestFactory.ORDER));
-		}
-
-		private ResultActions doRequest(String content) throws Exception {
-			return mockMvc
-					.perform(post(CommandByRelationController.COMMAND_BY_RELATION_PATH, VorgangHeaderTestFactory.ID, CommandTestFactory.RELATION_ID,
-							CommandTestFactory.RELATION_VERSION)
-									.contentType(MediaType.APPLICATION_JSON)
-									.characterEncoding(StandardCharsets.UTF_8.name())
-									.content(content))
-					.andExpect(status().is2xxSuccessful());
-		}
-	}
-
-	@DisplayName("Create by vorgang with relation id")
-	@Nested
-	class TestCreateByVorgang {
-
-		private final CreateCommand command = CommandTestFactory.createCreateCommand();
-
-		@Test
-		void shouldCallSerice() {
-			controller.createCommand(command);
-
-			verify(service).createCommand(command);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandControllerTest.java
deleted file mode 100644
index 713476ea123bc88ca00e1bbb16b24270e9330d77..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandControllerTest.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static de.ozgcloud.alfa.common.command.CommandController.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
-import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-class CommandControllerTest {
-
-	@InjectMocks // NOSONAR
-	private CommandController controller;
-	@Mock
-	private CommandService service;
-	@Mock
-	private CommandModelAssembler modelAssembler;
-	@Mock
-	private ProblemDetailMapper problemDetailMapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).setControllerAdvice(new ExceptionController(problemDetailMapper)).build();
-	}
-
-	@Nested
-	class TestGetCommand {
-
-		private final Command command = CommandTestFactory.create();
-
-		@BeforeEach
-		void initTest() {
-			when(service.getById(anyString())).thenReturn(command);
-		}
-
-		@Test
-		void shouldReturnOk() throws Exception {
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			doRequest();
-
-			verify(service).getById(CommandTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			doRequest();
-
-			verify(modelAssembler).toModel(command);
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(CommandController.COMMANDS_PATH + "/" + CommandTestFactory.ID)).andExpect(status().is2xxSuccessful());
-		}
-	}
-
-	@Nested
-	@DisplayName("Revoke Command")
-	class TestRevokeCommand {
-
-		@Test
-		void shouldReturnOk() throws Exception {
-			when(service.revoke(anyString())).thenReturn(CommandTestFactory.create());
-
-			doRequest(CommandStatus.REVOKED).andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			when(service.revoke(anyString())).thenReturn(CommandTestFactory.create());
-
-			doRequest(CommandStatus.REVOKED);
-
-			verify(service).revoke(CommandTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnForbiddenForOtherStatus() throws Exception {
-			doRequest(CommandStatus.FINISHED).andExpect(status().isForbidden());
-		}
-
-		private ResultActions doRequest(CommandStatus statusToPatch) throws Exception {
-			return mockMvc.perform(patch(COMMANDS_PATH + "/" + CommandTestFactory.ID).contentType(MediaType.APPLICATION_JSON)
-					.content(TestUtils.loadTextFile("jsonTemplates/command/patchStatus.json", statusToPatch.name())));
-
-		}
-	}
-
-	@Nested
-	class TestExistsPendingCommands {
-
-		@Test
-		void shouldCallService() {
-			controller.existsPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(service).existsPendingCommands(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetPendingCommands {
-
-		private final Command command = CommandTestFactory.create();
-		private final Stream<Command> pendingCommands = Stream.of(command);
-
-		@BeforeEach
-		void initTest() {
-			when(service.getPendingCommands(anyString())).thenReturn(pendingCommands);
-		}
-
-		@Test
-		void shouldReturnOk() throws Exception {
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			doRequest();
-
-			verify(service).getPendingCommands(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			doRequest();
-
-			verify(modelAssembler).toCollectionModel(pendingCommands);
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(CommandController.COMMANDS_PATH)
-							.param(CommandController.PARAM_PENDING, Boolean.toString(true))
-							.param(CommandController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID))
-					.andExpect(status().is2xxSuccessful());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java
deleted file mode 100644
index d6cb0b73c7bd7d7108e61664307d81694bc560b8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandITCase.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachMailTestFactory;
-import de.ozgcloud.alfa.vorgang.RedirectRequestTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import de.ozgcloud.common.test.TestUtils;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-public class CommandITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-	@MockBean
-	private CommandRemoteService commandRemoteService;
-	@MockBean
-	private VorgangController vorgangController;
-
-	@Nested
-	@WithMockUser
-	class TestAssignUser {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> commandCaptor;
-
-		@BeforeEach
-		void initTests() {
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@Test
-		void shouldExtractUserId() throws Exception {
-			createCommand();
-
-			verify(commandRemoteService).createCommand(commandCaptor.capture());
-			assertThat(commandCaptor.getValue().getBody()).hasFieldOrPropertyWithValue("assignedTo", UserProfileTestFactory.ID);
-		}
-
-		private void createCommand() throws Exception {
-			mockMvc.perform(post(buildUrl()).with(csrf()).content(createContent()).contentType(MediaType.APPLICATION_JSON))
-					.andExpect(status().isCreated());
-		}
-
-		private String createContent() {
-			return CommandTestFactory.buildCreateCommandWithBodyContent(CommandOrder.ASSIGN_USER,
-					TestUtils.loadTextFile("jsonTemplates/command/commandAssignedToBody",
-							TestUtils.addQuote("/api/users/" + UserProfileTestFactory.ID.toString())));
-		}
-
-		private String buildUrl() {
-			return String.format("/api/vorgangs/%s/relations/%s/%d/commands", VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID,
-					VorgangHeaderTestFactory.VERSION);
-		}
-	}
-
-	@DisplayName("Validation")
-	@Nested
-	class TestValidation {
-
-		@DisplayName("of forwarding request")
-		@WithMockUser
-		@Nested
-		class TestRedirectRequest {
-
-			@DisplayName("with null/empty email")
-			@WithMockUser
-			@Nested
-			class TestOnNullOrEmptyEmail {
-
-				@Test
-				void shouldThrowErrorForEmailOnly() throws Exception {
-					var requestContent = buildRedirectRequest(RedirectRequestTestFactory.createBuilder()
-							.password(ArrayUtils.EMPTY_CHAR_ARRAY)
-							.email(null).build());
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.redirectRequest.email"))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-				}
-			}
-
-			@DisplayName("with invalid email and password")
-			@WithMockUser
-			@Nested
-			class TestOnInvalidEmailAndPassword {
-
-				@Test
-				void shouldThrowExceptionForEachOne() throws Exception {
-					var requestContent = buildRedirectRequest(RedirectRequestTestFactory.createBuilder()
-							.password(ArrayUtils.EMPTY_CHAR_ARRAY)
-							.email("local@@domain.com")
-							.build());
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(2));
-				}
-			}
-
-			@WithMockUser
-			@Nested
-			class TestEmail {
-
-				private static final String FIELD = "email";
-
-				@Test
-				void shouldReturnErrorOnNullEMail() throws Exception {
-					var requestContent = buildRedirectRequestWithEmail(null);
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.redirectRequest." + FIELD))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-				}
-
-				@Test
-				void shouldReturnErrorOnInvalidEMail() throws Exception {
-					var requestContent = buildRedirectRequestWithEmail("local@@domain.com");
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.redirectRequest." + FIELD))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_INVALID));
-				}
-
-				private String buildRedirectRequestWithEmail(String eMail) {
-					return buildRedirectRequest(RedirectRequestTestFactory.createBuilder().email(eMail).build());
-				}
-			}
-
-			@WithMockUser
-			@Nested
-			class TestPassword {
-
-				private final String FIELD = "password";
-
-				@Test
-				void shouldReturnErrorOnToShortPassword() throws Exception {
-					var requestContent = buildRedirectRequestWithPassword(RandomStringUtils.randomAlphabetic(7));
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.redirectRequest." + FIELD))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_SIZE))
-							.andExpect(jsonPath("$.invalidParams[0].constraintParameters[0].name").value("min"))
-							.andExpect(jsonPath("$.invalidParams[0].constraintParameters[0].value").value(8))
-							.andExpect(jsonPath("$.invalidParams[0].constraintParameters[1].name").value("max"))
-							.andExpect(jsonPath("$.invalidParams[0].constraintParameters[1].value").value(40));
-				}
-
-				@Test
-				void shouldReturnErrorOnToLongPassword() throws Exception {
-					var requestContent = buildRedirectRequestWithPassword(RandomStringUtils.randomAlphabetic(41));
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.redirectRequest." + FIELD))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_SIZE));
-				}
-
-				private String buildRedirectRequestWithPassword(String password) {
-					return buildRedirectRequest(RedirectRequestTestFactory.createBuilder().password(password.toCharArray()).build());
-				}
-			}
-
-			private String buildRedirectRequest(RedirectRequest request) {
-				return RedirectRequestTestFactory
-						.createRedirectRequestContent(CommandTestFactory.createCreateCommandBuilder().redirectRequest(request).build());
-			}
-		}
-
-		@WithMockUser
-		@Nested
-		class TestPostfachMail {
-
-			@BeforeEach
-			void mockVorgangController() {
-				when(vorgangController.getVorgang(anyString())).thenReturn(VorgangWithEingangTestFactory.create());
-			}
-
-			@WithMockUser
-			@Nested
-			class TestSubject {
-
-				@BeforeEach
-				void initMockCommand() {
-					when(commandRemoteService.createCommand(any(CreateCommand.class))).thenReturn(CommandTestFactory.create());
-				}
-
-				@Test
-				void shouldReturnErrorOnNullSubject() throws Exception {
-					var requestContent = PostfachMailTestFactory
-							.buildSendPostfachMailContent(PostfachMailTestFactory.createBuilder().subject(null).build());
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.body.subject"))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-				}
-
-				@Test
-				void shouldReturnErrorOnTooLongSubject() throws Exception {
-					var requestContent = PostfachMailTestFactory
-							.buildSendPostfachMailContent(
-									PostfachMailTestFactory.createBuilder().subject(RandomStringUtils.randomAlphanumeric(71)).build());
-
-					doRequest(requestContent).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.body.subject"))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_MAX_SIZE));
-				}
-
-				@Test
-				void shouldProceedOnValidSubject() throws Exception {
-					var requestContent = PostfachMailTestFactory.buildSendPostfachMailContent();
-
-					doRequest(requestContent).andExpect(status().isCreated());
-				}
-			}
-
-			@WithMockUser
-			@Nested
-			class TestMailBody {
-
-				@Test
-				void shouldReturnErrorOnNull() throws Exception {
-					var request = PostfachMailTestFactory
-							.buildSendPostfachMailContent(PostfachMailTestFactory.createBuilder().mailBody(null).build());
-
-					doRequest(request).andExpect(status().isUnprocessableEntity())
-							.andExpect(jsonPath("$.invalidParams.length()").value(1))
-							.andExpect(jsonPath("$.invalidParams[0].name").value("createCommand.command.body.mailBody"))
-							.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-				}
-
-				@Test
-				void shouldProceedOnValidInput() throws Exception {
-					when(commandRemoteService.createCommand(any(CreateCommand.class))).thenReturn(CommandTestFactory.create());
-
-					var content = PostfachMailTestFactory.buildSendPostfachMailContent();
-
-					doRequest(content).andExpect(status().isCreated());
-				}
-			}
-		}
-
-		ResultActions doRequest(String content) throws Exception {
-			return mockMvc.perform(post("/api/vorgangs/" + CommandTestFactory.VORGANG_ID + "/relations/" + CommandTestFactory.RELATION_ID + "/"
-					+ CommandTestFactory.RELATION_VERSION + "/commands")
-							.with(csrf())
-							.contentType(MediaType.APPLICATION_JSON)
-							.content(content));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandMapperTest.java
deleted file mode 100644
index 4cf5ef1cdaaabf01716b0b2c73a8f961ca151930..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandMapperTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.TimeMapper;
-import de.ozgcloud.alfa.common.callcontext.CallContextMapper;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.RedirectRequestTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
-import de.ozgcloud.vorgang.grpc.command.GrpcRedirectRequest;
-
-class CommandMapperTest {
-
-	@InjectMocks
-	private CommandMapper mapper = Mappers.getMapper(CommandMapper.class);
-	@Mock
-	private UserIdMapper userIdMapper;
-	@Mock
-	private GrpcObjectMapper grpcObjectMapper;
-	@Mock
-	private CommandBodyMapper bodyMapper;
-	@Mock
-	private TimeMapper timeMapper;
-	@Mock
-	private CallContextMapper callContextMapper;
-
-	@Test
-	void shouldMapNonEnumOrder() {
-		var command = mapper.toCommand(GrpcCommandTestFactory.createBuilder()
-				.setOrderString(CommandOrder.SEND_POSTFACH_NACHRICHT.name())
-				.build());
-
-		assertThat(command.getCommandOrder()).isEqualTo(CommandOrder.SEND_POSTFACH_NACHRICHT);
-	}
-
-	@DisplayName("Map from grpc to command")
-	@Nested
-	class TestToCommand {
-
-		@DisplayName("redirect request")
-		@Nested
-		class TestRedirectRequest {
-
-			@Test
-			void shouldMapPasswordIfExists() {
-				var command = mapper.toCommand(GrpcCommandTestFactory.createBuilder()
-						.setRedirectRequest(GrpcRedirectRequest.newBuilder()
-								.setPassword(RedirectRequestTestFactory.PASSWORD_AS_STR)
-								.setEmail(RedirectRequestTestFactory.EMAIL)
-								.build())
-						.build());
-
-				assertThat(command.getRedirectRequest().getPassword()).isEqualTo(RedirectRequestTestFactory.PASSWORD);
-				assertThat(command.getRedirectRequest().getEmail()).isEqualTo(RedirectRequestTestFactory.EMAIL);
-			}
-
-			@Test
-			void shouldNotMapPasswordIfEmpty() {
-				var command = mapper.toCommand(GrpcCommandTestFactory.createBuilder()
-						.setRedirectRequest(GrpcRedirectRequest.newBuilder()
-								.setEmail(RedirectRequestTestFactory.EMAIL)
-								.build())
-						.build());
-
-				assertThat(command.getRedirectRequest().getPassword()).isNull();
-				assertThat(command.getRedirectRequest().getEmail()).isEqualTo(RedirectRequestTestFactory.EMAIL);
-			}
-		}
-	}
-
-	@DisplayName("Map Body")
-	@Nested
-	class TestMapBody {
-
-		private GrpcCommand command = GrpcCommandTestFactory.create();
-
-		@DisplayName("on existing body object at command")
-		@Nested
-		class TestOnExistingBodyObject {
-
-			@Test
-			void shouldCallGrpcObjectMapper() {
-				mapper.mapBody(command);
-
-				verify(grpcObjectMapper).mapFromGrpc(command.getBodyObj());
-			}
-
-			@Test
-			void shouldMapFromCommandBodyObject() {
-				var bodyObjectMap = Map.<String, Object>of("test-key", "test-value");
-				when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(bodyObjectMap);
-
-				var result = mapper.mapBody(command);
-
-				assertThat(result).isEqualTo(bodyObjectMap);
-			}
-		}
-
-		@DisplayName("on empty body object at command")
-		@Nested
-		class TestOnEmptyBodyObject {
-
-			private Map<String, String> mappedBody = Map.of("test-key", "test-value");
-
-			@BeforeEach
-			void mockMapper() {
-				when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(Collections.emptyMap());
-				when(bodyMapper.map(any())).thenReturn(mappedBody);
-			}
-
-			@Test
-			void shouldCallBodyMapper() {
-				mapper.mapBody(command);
-
-				verify(bodyMapper).map(command.getBody());
-			}
-
-			@Test
-			void shouldReturnMappedResult() {
-				var result = mapper.mapBody(command);
-
-				assertThat(result).isEqualTo(mappedBody);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
deleted file mode 100644
index 01567b0ff4b2aadac73038fcec78b3ba327a479c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandModelAssemblerTest.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static de.ozgcloud.alfa.common.command.CommandModelAssembler.*;
-import static de.ozgcloud.alfa.common.command.CommandTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class CommandModelAssemblerTest {
-
-	private static final String COMMAND_SINGLE_PATH = "/api/commands/" + CommandTestFactory.ID;
-
-	@InjectMocks
-	private CommandModelAssembler modelAssembler;
-
-	@BeforeEach
-	void init() {
-		var applicationContext = mock(ApplicationContext.class);
-		lenient().when(applicationContext.getEnvironment()).thenReturn(mock(Environment.class));
-		new UserProfileUrlProvider().setApplicationContext(applicationContext);
-	}
-
-	@Test
-	void shouldHaveSelfLink() {
-		var model = modelAssembler.toModel(CommandTestFactory.create());
-
-		assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref).isEqualTo(COMMAND_SINGLE_PATH);
-	}
-
-	@Nested
-	@DisplayName("Link to effected Resource")
-	class TestEffectedResourceLink {
-
-		@DisplayName("on vorgang")
-		@Nested
-		class TestOnVorgang {
-
-			private static final String VORGANG_URL = "/api/vorgangs/" + RELATION_ID;
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "FINISHED", "REVOKED" })
-			void shouldBePresentOnStatus(CommandStatus status) {
-				var model = toModelWithStatus(status);
-
-				assertThat(model.getLink(REL_EFFECTED_RESOURCE)).isPresent().get().extracting(Link::getHref).isEqualTo(VORGANG_URL);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "FINISHED", "REVOKED", "ERROR" })
-			void shouldNOTbePresentOtherWise(CommandStatus status) {
-				var model = toModelWithStatus(status);
-
-				assertThat(model.getLink(REL_EFFECTED_RESOURCE)).isEmpty();
-			}
-
-			private EntityModel<Command> toModelWithStatus(CommandStatus status) {
-				return modelAssembler.toModel(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ANNEHMEN.name()).status(status).build());
-			}
-		}
-
-		@DisplayName("on forwarding")
-		@Nested
-		class TestOnForwarding {
-
-			private static final String FORWARDING_URL = "/api/forwardings?vorgangId=" + VorgangHeaderTestFactory.ID;
-
-			@ParameterizedTest
-			@ValueSource(strings = { "FORWARD_SUCCESSFULL", "FORWARD_FAILED", "REDIRECT_VORGANG" })
-			void shouldHaveLinkToForwarding(String order) {
-				var model = toModelWithOrder(order);
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(FORWARDING_URL);
-			}
-		}
-
-		@DisplayName("on postfach")
-		@Nested
-		class TestOnPostfach {
-
-			private static final String POSTFACH_URL = "/api/postfachMails?vorgangId=" + VorgangHeaderTestFactory.ID;
-
-			@ParameterizedTest
-			@ValueSource(strings = { "SEND_POSTFACH_MAIL" })
-			void shouldHaveLinkToPostfach(String order) {
-				var model = toModelWithOrder(order);
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(POSTFACH_URL);
-			}
-		}
-
-		@DisplayName("on bescheid")
-		@Nested
-		class TestOnBescheid {
-
-			private static final String BESCHEID_URL = "/api/bescheids?vorgangId=" + VorgangHeaderTestFactory.ID;
-
-			@ParameterizedTest
-			@ValueSource(strings = { "CREATE_BESCHEID", "UPDATE_BESCHEID" })
-			void shouldHaveLinkToBescheidDokument(String order) {
-				var model = modelAssembler
-						.toModel(CommandTestFactory.createBuilder().order(order).createdResource(RELATION_ID).build());
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(BESCHEID_URL);
-			}
-		}
-
-		@DisplayName("on document")
-		@Nested
-		class TestOnDocument {
-
-			private static final String DOCUMENT_URL = "/api/bescheids/documents/" + RELATION_ID;
-
-			@Test
-			void shouldHaveLinkToBescheidDokument() {
-				var model = modelAssembler.toModel(
-						CommandTestFactory.createBuilder().order(CommandOrder.CREATE_BESCHEID_DOCUMENT_FROM_FILE.name())
-								.createdResource(RELATION_ID)
-								.build());
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(DOCUMENT_URL);
-			}
-		}
-
-		@DisplayName("on collaboration")
-		@Nested
-		class TestOnCollaboration {
-
-			private static final String COLLABORATIONS_URL = "/api/vorgangs/" + VORGANG_ID + "/collaborations";
-
-			@Test
-			void shouldHaveLinkToCollaborations() {
-				var model = toModelWithOrder("CREATE_COLLABORATION_REQUEST");
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(COLLABORATIONS_URL);
-			}
-		}
-
-		@DisplayName("on unknown Order")
-		@Nested
-		class TestOnUnknownOrder {
-			@Test
-			void shouldNotAddEffectedResourceLink() {
-				var model = modelAssembler.toModel(
-						CommandTestFactory.createBuilder().order("UnknownOrder")
-								.createdResource(RELATION_ID)
-								.build());
-
-				assertThat(model.getLink(CommandModelAssembler.REL_EFFECTED_RESOURCE)).isNotPresent();
-			}
-
-			@Nested
-			class TestEffectedResourceLinkByOrderType {
-				@Test
-				void shouldThrowIllegalArgumentException() {
-					var command = CommandTestFactory.createBuilder().order("UnknownOrder")
-							.createdResource(RELATION_ID)
-							.build();
-
-					assertThrows(IllegalArgumentException.class, () -> modelAssembler.effectedResourceLinkByOrderType(command));
-				}
-			}
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "UNBEKANNT" })
-		void shouldBeAbleToBuildLinkForEveryOrder(CommandOrder order) {
-			var link = modelAssembler.effectedResourceLinkByOrderType(CommandTestFactory.createBuilder().order(order.name()).build());
-
-			assertThat(link).isNotNull();
-		}
-
-		@Test
-		void shouldAddLinkForTypeVORGANG_LIST() {
-			var link = modelAssembler
-					.effectedResourceLinkByOrderType(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_LOESCHEN.name()).build());
-
-			assertThat(link.getHref()).isEqualTo("/api/vorgangs");
-		}
-	}
-
-	@DisplayName("Revoke link")
-	@Nested
-	class TestRevokeLink {
-
-		@DisplayName("related to command")
-		@Nested
-		class TestRelatedToCommand {
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "REDIRECT_VORGANG", "FORWARD_SUCCESSFULL",
-					"FORWARD_FAILED", "ASSIGN_USER", "SEND_POSTFACH_MAIL", "SEND_POSTFACH_NACHRICHT", "RESEND_POSTFACH_MAIL", "CREATE_ATTACHED_ITEM",
-					"UPDATE_ATTACHED_ITEM", "PATCH_ATTACHED_ITEM", "RECEIVE_POSTFACH_NACHRICHT", "VORGANG_LOESCHEN", "DELETE_ATTACHED_ITEM",
-					"VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN", "CREATE_BESCHEID", "PROCESS_VORGANG", "SET_AKTENZEICHEN",
-					"DELETE_BESCHEID", "UPDATE_BESCHEID", "CREATE_BESCHEID_DOCUMENT_FROM_FILE", "CREATE_BESCHEID_DOCUMENT", "SEND_BESCHEID",
-					"UNBEKANNT", "CREATE_COLLABORATION_REQUEST" })
-			void shouldBePresentOnOrder(CommandOrder order) {
-				var model = toModelWithOrder(order.name());
-
-				assertThat(model.getLink(REL_REVOKE)).isPresent().get().extracting(Link::getHref).isEqualTo(COMMAND_SINGLE_PATH);
-			}
-		}
-
-		@DisplayName("related to loeschAnforderung")
-		@Nested
-		class TestRelatedToLoeschAnforderung {
-
-			@ParameterizedTest
-			@ValueSource(strings = { "VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN" })
-			void shouldNotBePresentOnOrder(String order) {
-				var model = toModelWithOrder(order);
-
-				assertThat(model.getLink(REL_REVOKE)).isNotPresent();
-			}
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "VORGANG_ANNEHMEN", "VORGANG_VERWERFEN", "VORGANG_ZURUECKHOLEN", "VORGANG_BEARBEITEN",
-				"VORGANG_BESCHEIDEN", "VORGANG_ZURUECKSTELLEN", "VORGANG_ABSCHLIESSEN", "VORGANG_WIEDEREROEFFNEN", "VORGANG_ZUM_LOESCHEN_MARKIEREN",
-				"LOESCH_ANFORDERUNG_ZURUECKNEHMEN" })
-		void shouldNOTBePresentOnOrder(CommandOrder order) {
-			var model = toModelWithOrder(order.name());
-
-			assertThat(model.getLink(REL_REVOKE)).isNotPresent();
-		}
-
-		@Test
-		void shouldNotHaveLinkIfCommandFailed() {
-			var command = CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ANNEHMEN.name()).status(CommandStatus.ERROR).build();
-			var model = modelAssembler.toModel(command);
-
-			assertThat(model.getLink(REL_REVOKE)).isNotPresent();
-		}
-	}
-
-	private EntityModel<Command> toModelWithOrder(String order) {
-		return modelAssembler.toModel(CommandTestFactory.createBuilder().order(order).build());
-	}
-
-	@DisplayName("Update link")
-	@Nested
-	class TestUpdateLink {
-
-		@ParameterizedTest
-		@EnumSource(names = { "PENDING", "REVOKE_PENDING" })
-		void shouldHave(CommandStatus status) {
-			var model = modelAssembler.toModel(CommandTestFactory.createBuilder().status(status).build());
-
-			assertThat(model.getLink(REL_UPDATE)).isPresent().get().extracting(Link::getHref).isEqualTo(COMMAND_SINGLE_PATH);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "PENDING", "REVOKE_PENDING" })
-		void shouldNotHaveLink(CommandStatus status) {
-			var model = modelAssembler.toModel(CommandTestFactory.createBuilder().status(status).build());
-
-			assertThat(model.getLink(REL_UPDATE)).isNotPresent();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandOrderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandOrderTest.java
deleted file mode 100644
index 6f047c1566a1a68dce2883ad810f91b48c69f345..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandOrderTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-
-class CommandOrderTest {
-	@Nested
-	class TestGetOrder {
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "UNBEKANNT" })
-		void shouldReturnCommandOrder(CommandOrder order) {
-			var resultOrder = CommandOrder.fromOrder(order.name());
-
-			assertThat(resultOrder).isEqualTo(order);
-		}
-
-		@Test
-		void shouldReturnUnknown() {
-			var resultOrder = CommandOrder.fromOrder("SOME_UNKNOWN_ORDER");
-
-			assertThat(resultOrder).isEqualTo(CommandOrder.UNBEKANNT);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandRemoteServiceTest.java
deleted file mode 100644
index 459c21226fe0334d1eed41b9212b054ba289de45..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandRemoteServiceTest.java
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.ArrayUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.vorgang.RedirectRequestTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectTestFactory;
-import de.ozgcloud.vorgang.grpc.command.CommandServiceGrpc.CommandServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandResponse;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandsResponse;
-import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcExistsPendingCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcExistsPendingCommandsResponse;
-import de.ozgcloud.vorgang.grpc.command.GrpcFindCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcGetCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcGetPendingCommandsRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcGetPendingCommandsResponse;
-import de.ozgcloud.vorgang.grpc.command.GrpcRevokeCommandRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcSetCommandExecutedRequest;
-
-class CommandRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private CommandRemoteService service;
-	@Mock
-	private CommandServiceBlockingStub commandServiceStub;
-	@Mock
-	private CommandMapper mapper;
-	@Mock
-	private CommandBodyMapper bodyMapper;
-	@Mock
-	private GrpcObjectMapper grpcObjectMapper;
-	@Mock
-	private ContextService contextService;
-
-	private GrpcCallContext grpcCallContext = GrpcCallContext.newBuilder().build();
-
-	@Nested
-	@DisplayName("Create CreateCommand")
-	class TestCreateCommand {
-
-		private GrpcCreateCommandRequest request = GrpcCreateCommandRequest.newBuilder().build();
-		private CreateCommand createCommand = CommandTestFactory.createCreateCommand();
-
-		@Nested
-		class CallGrpcEndpoint {
-
-			private Command resultCommand = CommandTestFactory.create();
-
-			@BeforeEach
-			void initTest() {
-				doReturn(request).when(service).buildCreateCommandRequest(any());
-				when(commandServiceStub.createCommand(any())).thenReturn(GrpcCommandResponse.newBuilder().build());
-				when(mapper.toCommand(any())).thenReturn(resultCommand);
-			}
-
-			@Test
-			void shouldCreateRequest() {
-				service.createCommand(createCommand);
-
-				verify(service).buildCreateCommandRequest(createCommand);
-			}
-
-			@Test
-			void shouldCallServiceStub() {
-				service.createCommand(createCommand);
-
-				verify(commandServiceStub).createCommand(request);
-			}
-
-			@Test
-			void shouldReturnResultCommand() {
-				var result = service.createCommand(createCommand);
-
-				assertThat(result).isSameAs(resultCommand);
-			}
-		}
-
-		@DisplayName("build request")
-		@Nested
-		class TestBuildRequest {
-
-			@BeforeEach
-			void initTest() {
-				when(contextService.createCallContext()).thenReturn(grpcCallContext);
-				when(grpcObjectMapper.fromMap(any())).thenReturn(GrpcObjectTestFactory.create());
-			}
-
-			@Test
-			void shouldCreateRequest() {
-				var request = buildRequest();
-
-				assertThat(request).isNotNull();
-			}
-
-			@Test
-			void shouldHaveOrderString() {
-				var request = buildRequest();
-
-				assertThat(request.getOrderString()).isEqualTo(CommandTestFactory.ORDER);
-			}
-
-			@Test
-			void shouldHaveCallContext() {
-				var request = buildRequest();
-
-				assertThat(request.getCallContext()).isSameAs(grpcCallContext);
-			}
-
-			@Test
-			void shouldHaveRelationId() {
-				var request = buildRequest();
-
-				assertThat(request.getRelationId()).isEqualTo(CommandTestFactory.RELATION_ID);
-			}
-
-			@Test
-			void shouldHaveVorgangId() {
-				var request = buildRequest();
-
-				assertThat(request.getVorgangId()).isEqualTo(CommandTestFactory.VORGANG_ID);
-			}
-
-			@Test
-			void shouldCallBodyMapper() {
-				buildRequest();
-
-				verify(bodyMapper).fromObjectToMap(any(CommandBody.class));
-			}
-
-			@Test
-			void shouldCallObjectMapper() {
-				buildRequest();
-
-				verify(grpcObjectMapper).fromMap(any());
-			}
-
-			@Test
-			void shouldHaveVersion() {
-				var request = buildRequest();
-
-				assertThat(request.getRelationVersion()).isEqualTo(CommandTestFactory.RELATION_VERSION);
-			}
-
-			@Test
-			void shouldHaveRedirectRequest() {
-				var command = CommandTestFactory.createCreateCommandBuilder().body(null).redirectRequest(RedirectRequestTestFactory.create()).build();
-
-				var request = service.buildCreateCommandRequest(command);
-
-				assertThat(request.getRedirectRequest().getPassword()).isEqualTo(RedirectRequestTestFactory.PASSWORD_AS_STR);
-				assertThat(request.getRedirectRequest().getEmail()).isEqualTo(RedirectRequestTestFactory.EMAIL);
-			}
-
-			@ParameterizedTest
-			@EnumSource
-			void shouldHaveOrder(CommandOrder order) {
-				var request = service.buildCreateCommandRequest(CommandTestFactory.createCreateCommandBuilder().order(order.name()).build());
-
-				assertThat(request.getOrderString()).isEqualTo(order.name());
-			}
-
-			private GrpcCreateCommandRequest buildRequest() {
-				return service.buildCreateCommandRequest(
-						CommandTestFactory.createCreateCommandBuilder().body(WiedervorlageTestFactory.create()).build());
-			}
-		}
-
-		@DisplayName("build forward request")
-		@Nested
-		class TestBuildForwardRequest {
-
-			@Test
-			void shouldNotSetPassword() {
-				var request = RedirectRequestTestFactory.createBuilder().password(ArrayUtils.EMPTY_CHAR_ARRAY).build();
-
-				var result = service.buildForwardRequest(request);
-
-				assertThat(result.getPassword()).isBlank();
-			}
-
-			@Test
-			void shouldSetPassword() {
-				var request = RedirectRequestTestFactory.createBuilder().password(RedirectRequestTestFactory.PASSWORD).build();
-
-				var result = service.buildForwardRequest(request);
-
-				assertThat(result.getPassword()).isEqualTo(RedirectRequestTestFactory.PASSWORD_AS_STR);
-			}
-
-			@Test
-			void shouldSetEmail() {
-				var request = RedirectRequestTestFactory.create();
-
-				var result = service.buildForwardRequest(request);
-
-				assertThat(result.getEmail()).isEqualTo(RedirectRequestTestFactory.EMAIL);
-			}
-		}
-	}
-
-	@Nested
-	@DisplayName("Revoke Command")
-	class TestRevokeCommand {
-
-		@Nested
-		class CreateRequest {
-
-			@BeforeEach
-			void initTest() {
-				when(contextService.createCallContext()).thenReturn(grpcCallContext);
-			}
-
-			@Test
-			void shouldReturnRequest() {
-				var request = service.createRevokeRequest(CommandTestFactory.ID);
-
-				assertThat(request).isNotNull().isInstanceOf(GrpcRevokeCommandRequest.class);
-			}
-
-			@Test
-			void shouldHaveCallContext() {
-				var request = service.createRevokeRequest(CommandTestFactory.ID);
-
-				assertThat(request.getContext()).isNotNull().isSameAs(grpcCallContext);
-				verify(contextService).createCallContext();
-			}
-
-			@Test
-			void shouldHaveCommandId() {
-				var request = service.createRevokeRequest(CommandTestFactory.ID);
-
-				assertThat(request.getId()).isEqualTo(CommandTestFactory.ID);
-			}
-		}
-
-		@Nested
-		class SendRequest {
-
-			private GrpcRevokeCommandRequest request = GrpcRevokeCommandRequest.newBuilder().build();
-
-			@BeforeEach
-			void initTest() {
-				doReturn(request).when(service).createRevokeRequest(anyString());
-				when(commandServiceStub.revokeCommand(any())).thenReturn(GrpcCommandResponse.newBuilder().build());
-			}
-
-			@Test
-			void shouldCreateRequest() {
-				service.revokeCommand(CommandTestFactory.ID);
-
-				verify(service).createRevokeRequest(CommandTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallGrpc() {
-				service.revokeCommand(CommandTestFactory.ID);
-
-				verify(commandServiceStub).revokeCommand(request);
-			}
-
-			@Test
-			void shouldMapCommand() {
-				service.revokeCommand(CommandTestFactory.ID);
-
-				verify(mapper).toCommand(any());
-			}
-		}
-	}
-
-	@Nested
-	@DisplayName("Get command")
-	class TestGetCommand {
-
-		@Nested
-		class CreateRequest {
-
-			@BeforeEach
-			void initTest() {
-				when(contextService.createCallContext()).thenReturn(grpcCallContext);
-			}
-
-			@Test
-			void shouldReturnRequest() {
-				var request = service.createGetCommandRequest(CommandTestFactory.ID);
-
-				assertThat(request).isNotNull().isInstanceOf(GrpcGetCommandRequest.class);
-			}
-
-			@Test
-			void shouldHaveCallContext() {
-				var request = service.createGetCommandRequest(CommandTestFactory.ID);
-
-				assertThat(request.getContext()).isNotNull().isSameAs(grpcCallContext);
-				verify(contextService).createCallContext();
-			}
-
-			@Test
-			void shouldHaveCommandId() {
-				var request = service.createGetCommandRequest(CommandTestFactory.ID);
-
-				assertThat(request.getId()).isEqualTo(CommandTestFactory.ID);
-			}
-		}
-
-		@DisplayName("send request")
-		@Nested
-		class SendRequest {
-
-			private GrpcGetCommandRequest request = GrpcGetCommandRequest.newBuilder().build();
-
-			@BeforeEach
-			void initTest() {
-				doReturn(request).when(service).createGetCommandRequest(anyString());
-				when(commandServiceStub.getCommand(any())).thenReturn(GrpcCommand.newBuilder().build());
-			}
-
-			@Test
-			void shouldCreateRequest() {
-				service.getCommand(CommandTestFactory.ID);
-
-				verify(service).createGetCommandRequest(CommandTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallGrpc() {
-				service.getCommand(CommandTestFactory.ID);
-
-				verify(commandServiceStub).getCommand(request);
-			}
-
-			@Test
-			void shouldMapCommand() {
-				service.getCommand(CommandTestFactory.ID);
-
-				verify(mapper).toCommand(any());
-			}
-		}
-	}
-
-	@Nested
-	class TestExistsPendingCommands {
-
-		private final GrpcExistsPendingCommandsRequest request = GrpcExistsPendingCommandsRequest.newBuilder()
-				.setContext(grpcCallContext)
-				.setVorgangId(VorgangHeaderTestFactory.ID).build();
-
-		@BeforeEach
-		void mockServiceStub() {
-			when(commandServiceStub.existsPendingCommands(any()))
-					.thenReturn(GrpcExistsPendingCommandsResponse.newBuilder().setExistsPendingCommands(true).build());
-
-			when(contextService.createCallContext()).thenReturn(grpcCallContext);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			service.existsPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(commandServiceStub).existsPendingCommands(request);
-		}
-
-		@Test
-		void shouldCallContextService() {
-			service.existsPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldReturnValue() {
-			var result = service.existsPendingCommands(VorgangHeaderTestFactory.ID);
-
-			assertThat(result).isTrue();
-		}
-	}
-
-	@Nested
-	class TestFindCommands {
-
-		private final GrpcCommand grpcCommand = GrpcCommand.newBuilder().build();
-		private final GrpcCommandsResponse response = GrpcCommandsResponse.newBuilder().addAllCommand(Collections.singleton(grpcCommand)).build();
-
-		@Captor // NOSONAR
-		private ArgumentCaptor<GrpcFindCommandsRequest> requestCaptor;
-
-		@BeforeEach
-		void init() {
-			when(commandServiceStub.findCommands(any())).thenReturn(response);
-			when(contextService.createCallContext()).thenReturn(grpcCallContext);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			service.findCommands(VorgangHeaderTestFactory.ID, Optional.empty(), Optional.empty());
-
-			verify(commandServiceStub).findCommands(notNull());
-		}
-
-		@Test
-		void shouldRequestWithVorgangId() {
-			service.findCommands(VorgangHeaderTestFactory.ID, Optional.empty(), Optional.empty());
-
-			verify(commandServiceStub).findCommands(requestCaptor.capture());
-
-			assertThat(requestCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldRequestWithStatus() {
-			service.findCommands(VorgangHeaderTestFactory.ID, Optional.of(CommandStatus.FINISHED), Optional.empty());
-
-			verify(commandServiceStub).findCommands(requestCaptor.capture());
-
-			assertThat(requestCaptor.getValue().getStatusList()).contains(CommandStatus.FINISHED.name());
-		}
-
-		@Test
-		void shouldRequestWithOrder() {
-			service.findCommands(VorgangHeaderTestFactory.ID, Optional.empty(), Optional.of(CommandOrder.REDIRECT_VORGANG.name()));
-
-			verify(commandServiceStub).findCommands(requestCaptor.capture());
-
-			assertThat(requestCaptor.getValue().getOrderString()).isEqualTo(CommandOrder.REDIRECT_VORGANG.name());
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.findCommands(VorgangHeaderTestFactory.ID, Optional.empty(), Optional.empty()).toList();
-
-			verify(mapper).toCommand(grpcCommand);
-		}
-	}
-
-	@Nested
-	class TestGetPendingCommands {
-
-		private final GrpcGetPendingCommandsRequest request = GrpcGetPendingCommandsRequest.newBuilder()
-				.setContext(grpcCallContext)
-				.setVorgangId(VorgangHeaderTestFactory.ID).build();
-		private final GrpcCommand grpcCommand = GrpcCommand.newBuilder().build();
-		private final Set<GrpcCommand> commandList = Collections.singleton(grpcCommand);
-		private final GrpcGetPendingCommandsResponse response = GrpcGetPendingCommandsResponse.newBuilder().addAllCommand(commandList).build();
-		private final Command command = CommandTestFactory.create();
-
-		@BeforeEach
-		void mockServiceStub() {
-			when(commandServiceStub.getPendingCommands(any())).thenReturn(response);
-			when(contextService.createCallContext()).thenReturn(grpcCallContext);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			service.getPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(commandServiceStub).getPendingCommands(request);
-		}
-
-		@Test
-		void shouldCallContextService() {
-			service.getPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldCallMapper() {
-			var result = service.getPendingCommands(VorgangHeaderTestFactory.ID);
-			forceStreamOperationsDone(result);
-
-			verify(mapper).toCommand(grpcCommand);
-		}
-
-		@Test
-		void shouldReturnValue() {
-			when(mapper.toCommand(any())).thenReturn(command);
-
-			var result = service.getPendingCommands(VorgangHeaderTestFactory.ID);
-
-			assertThat(result.toList().get(0)).isEqualTo(command);
-		}
-
-		private void forceStreamOperationsDone(Stream<Command> stream) {
-			stream.collect(Collectors.toList()).stream();
-		}
-	}
-
-	@DisplayName("Finish command")
-	@Nested
-	class TestFinishCommand {
-
-		@Test
-		void shouldCallServiceStub() {
-			var request = GrpcSetCommandExecutedRequest.newBuilder().setCommandId(CommandTestFactory.ID).build();
-
-			service.finishCommand(CommandTestFactory.ID);
-
-			verify(commandServiceStub).setCommandExecuted(request);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java
deleted file mode 100644
index 10a51f8f48f414160e9090155affc6b64ea45915..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandServiceTest.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class CommandServiceTest {
-
-	@Spy
-	@InjectMocks
-	private CommandService service;
-	@Mock
-	private CommandRemoteService remoteService;
-
-	@Captor
-	private ArgumentCaptor<CreateCommand> createCommandCaptor;
-
-	@Nested
-	class TestCreateCommand {
-
-		private final CreateCommand command = CommandTestFactory.createCreateCommand();
-
-		@Nested
-		class TestWithCreateCommandOnly {
-
-			@Test
-			void shouldCallRemoteService() {
-				service.createCommandDeprecated(command);
-
-				verify(remoteService).createCommand(any(CreateCommand.class));
-			}
-
-			@Test
-			void shouldHaveSetRelationVersion() {
-				service.createCommandDeprecated(command);
-
-				verify(remoteService).createCommand(createCommandCaptor.capture());
-				assertThat(createCommandCaptor.getValue().getRelationVersion()).isEqualTo(CommandService.NO_RELATION_VERSION);
-			}
-		}
-
-		@Nested
-		class TestWithRelationVersion {
-
-			@Test
-			void shouldCallRemoteService() {
-				service.createCommand(command, CommandTestFactory.RELATION_VERSION);
-
-				verify(remoteService).createCommand(any(CreateCommand.class));
-			}
-
-			@Test
-			void shouldHaveSetRelationVersion() {
-				service.createCommand(command, CommandTestFactory.RELATION_VERSION);
-
-				verify(remoteService).createCommand(createCommandCaptor.capture());
-				assertThat(createCommandCaptor.getValue().getRelationVersion()).isEqualTo(CommandTestFactory.RELATION_VERSION);
-			}
-		}
-	}
-
-	@Nested
-	class TestCreateCommandWithItemName {
-
-		private final CreateCommand command = CommandTestFactory.createCreateCommand();
-
-		@Nested
-		class WithoutValidation {
-
-			@Test
-			void shouldCallRemoteService() {
-				service.createCommand(command, CommandTestFactory.RELATION_VERSION);
-
-				verify(remoteService).createCommand(any(CreateCommand.class));
-			}
-
-			@Test
-			void shouldHaveSetRelationVersion() {
-				service.createCommand(command, CommandTestFactory.RELATION_VERSION);
-
-				verify(remoteService).createCommand(createCommandCaptor.capture());
-				assertThat(createCommandCaptor.getValue().getRelationVersion()).isEqualTo(CommandTestFactory.RELATION_VERSION);
-			}
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		@BeforeEach
-		void init() {
-			when(remoteService.getCommand(CommandTestFactory.ID)).thenReturn(CommandTestFactory.create());
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(CommandTestFactory.ID);
-
-			verify(remoteService).getCommand(CommandTestFactory.ID);
-			verify(service, never()).handleDeleteLoeschAnforderung(any());
-		}
-
-		@DisplayName("As deleteLoeschAnforderung")
-		@Nested
-		class TestAsDeleteLoeschAnforderungCommand {
-
-			private final Command command = CommandTestFactory.createBuilder().order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name())
-					.build();
-
-			@BeforeEach
-			void init() {
-				when(remoteService.getCommand(CommandTestFactory.ID)).thenReturn(command);
-			}
-
-			@Test
-			void shouldMarkAsDone() {
-				doNothing().when(service).handleDeleteLoeschAnforderung(any());
-
-				service.getById(CommandTestFactory.ID);
-
-				verify(service).handleDeleteLoeschAnforderung(command);
-			}
-		}
-	}
-
-	@DisplayName("Handle deleteLoeschAnforderung")
-	@Nested
-	class TestHandleDeleteLoeschAnforderung {
-
-		private final Command command = CommandTestFactory.create();
-
-		@Test
-		void shouldCallIsDeletedAttachedItemCommandDone() {
-			doReturn(false).when(service).isDeleteAttachedItemCommandFinished(any());
-
-			service.handleDeleteLoeschAnforderung(command);
-
-			verify(service).isDeleteAttachedItemCommandFinished(command);
-		}
-
-		@Test
-		void shouldCallIsChangeStatusCommandDone() {
-			doReturn(true).when(service).isDeleteAttachedItemCommandFinished(any());
-			doReturn(false).when(service).isChangeStatusCommandFinished(any());
-
-			service.handleDeleteLoeschAnforderung(command);
-
-			verify(service).isChangeStatusCommandFinished(command);
-		}
-
-		@Test
-		void shouldCallRemoteServiceIfCommandsFinisihed() {
-			doReturn(true).when(service).isDeleteAttachedItemCommandFinished(any());
-			doReturn(true).when(service).isChangeStatusCommandFinished(any());
-
-			service.handleDeleteLoeschAnforderung(command);
-
-			verify(remoteService).finishCommand(command.getId());
-		}
-
-		@DisplayName("Is deleteAttachedItemCommand finished")
-		@Nested
-		class TestIsDeletedAttachedItemCommandFinished {
-
-			private final String deleteAttachedItemCommandId = UUID.randomUUID().toString();
-			private final Command command = CommandTestFactory.createBuilder()
-					.body(Map.of(DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD, deleteAttachedItemCommandId)).build();
-
-			@Test
-			void shouldGetCommandById() {
-				when(remoteService.getCommand(any())).thenReturn(CommandTestFactory.create());
-
-				service.isDeleteAttachedItemCommandFinished(command);
-
-				verify(remoteService).getCommand(deleteAttachedItemCommandId);
-			}
-
-			@Test
-			void shouldReturnTrueIfCommandIsFinished() {
-				when(remoteService.getCommand(any())).thenReturn(CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build());
-
-				var isFinished = service.isDeleteAttachedItemCommandFinished(command);
-
-				assertThat(isFinished).isTrue();
-			}
-		}
-
-		@DisplayName("Is changeStatusCommand finished")
-		@Nested
-		class TestIsChangeStatusCommandFinished {
-
-			private final String changeStatusCommandId = UUID.randomUUID().toString();
-			private final Command command = CommandTestFactory.createBuilder()
-					.body(Map.of(DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, changeStatusCommandId)).build();
-
-			@Test
-			void shouldGetCommandById() {
-				when(remoteService.getCommand(any())).thenReturn(CommandTestFactory.create());
-
-				service.isChangeStatusCommandFinished(command);
-
-				verify(remoteService).getCommand(changeStatusCommandId);
-			}
-
-			@Test
-			void shouldReturnTrueIfCommandIsFinished() {
-				when(remoteService.getCommand(any())).thenReturn(CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build());
-
-				var isFinished = service.isChangeStatusCommandFinished(command);
-
-				assertThat(isFinished).isTrue();
-			}
-		}
-	}
-
-	@Nested
-	class TestRevoke {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.revoke(CommandTestFactory.RELATION_ID);
-
-			verify(remoteService).revokeCommand(CommandTestFactory.RELATION_ID);
-		}
-	}
-
-	@Nested
-	class TestExistsPendingCommands {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.existsPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).existsPendingCommands(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetPendingCommands {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getPendingCommands(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).getPendingCommands(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Find finished commands")
-	@Nested
-	class TestFindFinishedCommands {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findFinishedCommands(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findCommands(VorgangHeaderTestFactory.ID, Optional.of(CommandStatus.FINISHED), Optional.empty());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTestFactory.java
deleted file mode 100644
index 86f7d8b1248c0a5510627998093a2972fc419727..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTestFactory.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.time.ZonedDateTime;
-import java.util.Random;
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-public class CommandTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-	public static final String RELATION_ID = UUID.randomUUID().toString();
-	private static final ZonedDateTime CREATED_AT = ZonedDateTime.now();
-	public static final CommandStatus STATUS = CommandStatus.FINISHED;
-	public static final String ORDER = LoremIpsum.getInstance().getWords(1);
-
-	public static final long RELATION_VERSION = new Random().nextLong();
-
-	public static Command create() {
-		return createBuilder().build();
-	}
-
-	public static Command.CommandBuilder createBuilder() {
-		return Command.builder()
-				.id(ID)
-				.vorgangId(VORGANG_ID)
-				.relationId(RELATION_ID)
-				.createdAt(CREATED_AT)
-				.status(STATUS)
-				.order(ORDER)
-				.createdBy(UserProfileTestFactory.ID)
-				.createdByName(UserProfileTestFactory.FULLNAME);
-	}
-
-	public static CreateCommand createCreateCommand() {
-		return createCreateCommandBuilder().build();
-	}
-
-	public static CreateCommand.CreateCommandBuilder createCreateCommandBuilder() {
-		return CreateCommand.builder()
-				.vorgangId(VORGANG_ID)
-				.relationId(RELATION_ID)
-				.relationVersion(RELATION_VERSION)
-				.order(ORDER);
-	}
-
-	public static String buildStatusPatchContent(CommandStatus status) {
-		return TestUtils.loadTextFile("jsonTemplates/command/statusPatch.json.tmpl", status.name());
-	}
-
-	public static String buildCreateVorgangCommandContent(String order) {
-		return TestUtils.loadTextFile("jsonTemplates/command/createVorgangCommand.json.tmpl", order);
-	}
-
-	public static String buildCreateCommandContent(CommandOrder order) {
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithBody.json.tmpl",
-				order.name(),
-				null);
-
-	}
-
-	public static String buildCreateCommandWithBodyContent(CommandOrder order, String body) {
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithBody.json.tmpl",
-				order.name(),
-				body);
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandResponseTestFactory.java
deleted file mode 100644
index f0ee57a7b9c32a1946ae0c58bc374af9381d0437..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandResponseTestFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommandResponse;
-
-public class GrpcCommandResponseTestFactory {
-
-	public static final String COMMAND_ID = CommandTestFactory.ID;
-	public static final CommandStatus COMMAND_STATUS = CommandStatus.PENDING;
-
-	public static GrpcCommandResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcCommandResponse.Builder createBuilder() {
-		return GrpcCommandResponse.newBuilder()
-				.setCommand(createGrpcCommand());
-	}
-
-	public static GrpcCommand createGrpcCommand() {
-		return GrpcCommand.newBuilder()
-				.setId(COMMAND_ID)
-				.setStatus(COMMAND_STATUS.name())
-				.build();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandTestFactory.java
deleted file mode 100644
index 7c4735289e3826524661c05ca1d66a22e78f9a67..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcCommandTestFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.GrpcCallContextTestFactory;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
-import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
-
-public class GrpcCommandTestFactory {
-
-	private static final String RELATION_ID = UUID.randomUUID().toString();
-	private static final CommandStatus STATUS = CommandStatus.PENDING;
-	private static final String ORDER = LoremIpsum.getInstance().getWords(1);
-	private static final GrpcCallContext CALL_CONTEXT = GrpcCallContextTestFactory.create();
-
-	public static GrpcCommand create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcCommand.Builder createBuilder() {
-		return GrpcCommand.newBuilder()
-				.setStatus(STATUS.name())
-				.setRelationId(RELATION_ID)
-				.setOrderString(ORDER);
-	}
-
-	public static GrpcCreateCommandRequest createCommandRequest() {
-		return createCommandRequestBuilder().build();
-	}
-
-	public static GrpcCreateCommandRequest.Builder createCommandRequestBuilder() {
-		return GrpcCreateCommandRequest.newBuilder()
-				.setCallContext(CALL_CONTEXT)
-				.setRelationId(RELATION_ID)
-				.setOrderString(ORDER);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcPostfachCommandTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcPostfachCommandTestFactory.java
deleted file mode 100644
index d36003abe00beb33820bed0c5abff2cc455726d6..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/GrpcPostfachCommandTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import de.ozgcloud.alfa.common.GrpcCallContextTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachMailTestFactory;
-import de.ozgcloud.nachrichten.postfach.GrpcResendPostfachMailRequest;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-
-public class GrpcPostfachCommandTestFactory {
-
-	private static final String POSTFACH_ID = PostfachMailTestFactory.ID;
-	private static final String COMMAND_ID = CommandTestFactory.ID;
-	private static final GrpcCallContext CALL_CONTEXT = GrpcCallContextTestFactory.create();
-
-	public static GrpcResendPostfachMailRequest createResendPostfachMailRequest() {
-		return createResendPostfachMailRequestBuilder().build();
-	}
-
-	public static GrpcResendPostfachMailRequest.Builder createResendPostfachMailRequestBuilder() {
-		return GrpcResendPostfachMailRequest.newBuilder()
-				.setContext(CALL_CONTEXT)
-				.setPostfachMailId(POSTFACH_ID)
-				.setCommandId(COMMAND_ID);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/RequiredOrderValidatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/RequiredOrderValidatorTest.java
deleted file mode 100644
index b26e6739dfdd625a3738dee1699b5be559d17782..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/RequiredOrderValidatorTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import jakarta.validation.ConstraintValidatorContext;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-
-class RequiredOrderValidatorTest {
-
-	private final RequiredOrderValidator validator = new RequiredOrderValidator();
-
-	@Mock
-	private RequiredOrder requiredOrder;
-
-	@Mock
-	private ConstraintValidatorContext constraintValidatorContext;
-
-	@Nested
-	class TestIsValid {
-		private CommandOrder commandOrder = CommandOrder.VORGANG_ANNEHMEN;
-
-		@BeforeEach
-		void init() {
-			when(requiredOrder.value()).thenReturn(commandOrder);
-			validator.initialize(requiredOrder);
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			var validationResult = validator.isValid(CommandTestFactory.createCreateCommandBuilder().order(commandOrder.name()).build(),
-					constraintValidatorContext);
-
-			assertThat(validationResult).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var validationResult = validator.isValid(
-					CommandTestFactory.createCreateCommandBuilder().order(CommandOrder.ASSIGN_USER.name()).build(),
-					constraintValidatorContext);
-
-			assertThat(validationResult).isFalse();
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterITCase.java
deleted file mode 100644
index 764bc5f39eb114bbc834886d62ebd898572fb892..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterITCase.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.SpyBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-@SpringBootTest
-@AutoConfigureMockMvc
-@WithMockUser
-class DownloadTokenAuthenticationFilterITCase {
-
-	@SpyBean
-	private DownloadTokenAuthenticationFilter filter;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@Autowired
-	private DownloadTokenProperties downloadTokenProperties;
-
-	@Test
-	void shouldNotCallFilter() throws Exception {
-		performRequest(DownloadTokenController.DOWNLOAD_TOKEN_PATH).andExpect(status().isBadRequest());
-
-		verify(filter, never()).doFilterInternal(any(), any(), any());
-	}
-
-	@Test
-	void shouldCallFilter() throws Exception {
-		String token = DownloadTokenTestFactory.createToken(downloadTokenProperties.getSecret(), downloadTokenProperties.getValidity());
-
-		performRequest(DownloadTokenController.DOWNLOAD_TOKEN_PATH + "?" + DownloadTokenController.PARAM_TOKEN + "=" + token)
-				.andExpect(status().isOk());
-
-		verify(filter).doFilterInternal(any(), any(), any());
-	}
-
-	@Test
-	void shouldCallFilterWhenNoOrganisationseinheitIds() throws Exception {
-		String token = DownloadTokenTestFactory.createTokenBuilder(downloadTokenProperties.getSecret(), downloadTokenProperties.getValidity())
-				.setClaims(DownloadTokenTestFactory.CLAIMS_WITHOUT_ORGANSIATIONSEINHEIT_IDS).compact();
-
-		performRequest(DownloadTokenController.DOWNLOAD_TOKEN_PATH + "?" + DownloadTokenController.PARAM_TOKEN + "=" + token)
-				.andExpect(status().isOk());
-
-		verify(filter).doFilterInternal(any(), any(), any());
-	}
-
-	@Test
-	void shouldReturnUnauthorised() throws Exception {
-		String token = DownloadTokenTestFactory.createToken("badSecret".repeat(8), downloadTokenProperties.getValidity());
-
-		performRequest(DownloadTokenController.DOWNLOAD_TOKEN_PATH + "?" + DownloadTokenController.PARAM_TOKEN + "=" + token)
-				.andExpect(status().isUnauthorized());
-	}
-
-	ResultActions performRequest(String path) throws Exception {
-		return mockMvc.perform(get(path));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterTest.java
deleted file mode 100644
index c03ae28b69492afb7463e0694c0b0d51a6160868..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenAuthenticationFilterTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.util.UUID;
-
-import jakarta.servlet.FilterChain;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-class DownloadTokenAuthenticationFilterTest {
-
-	@InjectMocks
-	private DownloadTokenAuthenticationFilter filter;
-	@Mock
-	private FilterChain filterChain;
-	@Mock
-	private HttpServletRequest request;
-	@Mock
-	private HttpServletResponse response;
-	@Mock
-	private DownloadTokenService downloadTokenService;
-
-	@Test
-	void shouldCallDoFilter() throws IOException, ServletException {
-		doFilterInternal();
-
-		verify(filterChain).doFilter(request, response);
-	}
-
-	@Nested
-	class TestWithTokenParamter {
-
-		final String TOKEN = UUID.randomUUID().toString();
-
-		@BeforeEach
-		void mockRequestParameter() {
-			when(request.getParameter(anyString())).thenReturn(TOKEN);
-		}
-
-		@Test
-		void shouldVerifyTokenIfPresent() throws Exception {
-			doFilterInternal();
-
-			verify(downloadTokenService).handleToken(request, TOKEN);
-		}
-	}
-
-	private void doFilterInternal() throws ServletException, IOException {
-		filter.doFilterInternal(request, response, filterChain);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenControllerTest.java
deleted file mode 100644
index 4dfa24de9f5a5ea9511f6103a0e18752b4139f70..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenControllerTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.UUID;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-class DownloadTokenControllerTest {
-
-	@InjectMocks // NOSONAR
-	private DownloadTokenController controller;
-	@Mock
-	private DownloadTokenService service;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	final static String TOKEN = UUID.randomUUID().toString();
-
-	@BeforeEach
-	void mock() {
-		when(service.createToken(any())).thenReturn(TOKEN);
-	}
-
-	@Test
-	void shouldGenerateToken() throws Exception {
-		callEndpoint(createRequest(BinaryFileTestFactory.ID));
-
-		verify(service).createToken(any());
-	}
-
-	@Test
-	void shouldGenerateTokenWhenNoFileId() throws Exception {
-		callEndpoint(createRequest(StringUtils.EMPTY));
-
-		verify(service).createToken(any());
-	}
-
-	@Test
-	void shouldHaveReponse() throws Exception {
-		callEndpoint(createRequest(BinaryFileTestFactory.ID))
-				.andExpect(header().string("Location", "http://localhost" + DownloadTokenController.DOWNLOAD_TOKEN_PATH + "?"
-						+ DownloadTokenController.PARAM_TOKEN + "=" + TOKEN));
-	}
-
-	private ResultActions callEndpoint(String content) throws Exception {
-		return mockMvc.perform(
-				post(DownloadTokenController.DOWNLOAD_TOKEN_PATH)
-						.contentType(MediaType.APPLICATION_JSON)
-						.content(content))
-				.andExpect(status().isCreated());
-	}
-
-	private String createRequest(String fileId) {
-		return TestUtils.loadTextFile("jsonTemplates/downloadTokenRequest.json.tmpl", fileId);
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenServiceTest.java
deleted file mode 100644
index 803c3d6915a147440840eefdb4d407eb549c11fb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenServiceTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static de.ozgcloud.alfa.JwtTokenUtil.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import com.auth0.jwt.exceptions.JWTVerificationException;
-
-import de.ozgcloud.alfa.JwtTokenUtil;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import io.jsonwebtoken.Claims;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-class DownloadTokenServiceTest {
-
-	@InjectMocks
-	private DownloadTokenService service;
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private JwtTokenUtil jwtTokenUtil;
-	@Mock
-	private HttpServletRequest request;
-	@Mock
-	private HttpServletResponse response;
-
-	private final static String FAKE_TOKEN = "xxx";
-	private final static Collection<String> ORGE_IDS = List.of("258994");
-
-	@Nested
-	class TestCreateToken {
-
-		final FileId fileId = FileId.createNew();
-
-		final UserProfile user = UserProfileTestFactory.create();
-
-		@BeforeEach
-		void mockUserService() {
-			when(userService.getUser()).thenReturn(user);
-		}
-
-		@Test
-		void shouldCallUserService() {
-			service.createToken(fileId);
-
-			verify(userService).getUser();
-		}
-
-		@Test
-		void shouldCallJwtTokenUtil() {
-			service.createToken(fileId);
-
-			verify(jwtTokenUtil).generateToken(fileId, user);
-		}
-	}
-
-	@Nested
-	class TestHandleToken {
-
-		@Test
-		void shouldVerifyTokenIfPresent() throws Exception {
-			mockClaims(FIRSTNAME_CLAIM, LASTNAME_CLAIM);
-
-			handleToken();
-
-			verify(jwtTokenUtil).verifyToken(FAKE_TOKEN);
-		}
-
-		@Test
-		void shouldGetUserFromTokenWithoutUserFirstname() {
-			mockClaims(null, FIRSTNAME_CLAIM);
-
-			UserProfile user = service.getUserFromToken(FAKE_TOKEN).getUser();
-
-			assertThat(user).isNotNull();
-		}
-
-		@Test
-		void shouldGetUserFromTokenWithoutUserLastname() {
-			mockClaims(FIRSTNAME_CLAIM, null);
-
-			UserProfile user = service.getUserFromToken(FAKE_TOKEN).getUser();
-
-			assertThat(user).isNotNull();
-		}
-
-		@Test
-		void shouldGetOrganisationseinheitIdsFromToken() {
-			mockClaims(FIRSTNAME_CLAIM, LASTNAME_CLAIM);
-
-			UserProfile user = service.getUserFromToken(FAKE_TOKEN).getUser();
-
-			assertThat(user.getOrganisationseinheitIds()).isEqualTo(ORGE_IDS);
-		}
-
-		private void mockClaims(String firstnameClaim, String lastnameClaim) {
-			Claims claims = mock(Claims.class);
-
-			when(claims.get(FIRSTNAME_CLAIM, String.class)).thenReturn(firstnameClaim);
-			when(claims.get(LASTNAME_CLAIM, String.class)).thenReturn(lastnameClaim);
-			when(claims.get(USERID_CLAIM, String.class)).thenReturn(UserProfileTestFactory.ID.toString());
-
-			when(jwtTokenUtil.getOrganisationseinheitIdsFromToken(any())).thenReturn(ORGE_IDS);
-			when(jwtTokenUtil.getAllClaimsFromToken(any())).thenReturn(Optional.of(claims));
-		}
-
-		@Test
-		void shouldThrowExceptionOnInvalidToken() throws Exception {
-			doThrow(JWTVerificationException.class).when(jwtTokenUtil).verifyToken(anyString());
-
-			assertThrows(TechnicalException.class, () -> handleToken());
-		}
-
-		@Test
-		void shouldNotFilterOnInvalidToken() throws Exception {
-			doThrow(JWTVerificationException.class).when(jwtTokenUtil).verifyToken(anyString());
-
-			assertThrows(TechnicalException.class, () -> handleToken());
-		}
-
-	}
-
-	void handleToken() {
-		service.handleToken(request, FAKE_TOKEN);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenTestFactory.java
deleted file mode 100644
index 321dbca828695ddfa88c06a1cda81809eaab0cac..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/downloadtoken/DownloadTokenTestFactory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.downloadtoken;
-
-import static de.ozgcloud.alfa.JwtTokenUtil.*;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import io.jsonwebtoken.JwtBuilder;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-
-public class DownloadTokenTestFactory {
-	static final String TYP = "typ";
-	static final String SUBJECT = "subject";
-	static final String FIRSTNAME_CLAIM_VALUE = UserProfileTestFactory.FIRSTNAME;
-	static final String LASTNAME_CLAIM_VALUE = UserProfileTestFactory.LASTNAME;
-	final static Collection<String> ORGE_IDS = List.of("258994");
-	static final List<?> ROLE_CLAIM_VALUE = List.of();
-	static final long VALIDITY = 5000;
-	static final Map<String, Object> CLAIMS = new HashMap<>(Map.of(
-			FIRSTNAME_CLAIM, FIRSTNAME_CLAIM_VALUE,
-			LASTNAME_CLAIM, LASTNAME_CLAIM_VALUE,
-			ROLE_CLAIM, ROLE_CLAIM_VALUE,
-			ORGANSIATIONSEINHEIT_IDS_CLAIM, ORGE_IDS));
-	static final Map<String, Object> CLAIMS_WITHOUT_ORGANSIATIONSEINHEIT_IDS = new HashMap<>(Map.of(
-			FIRSTNAME_CLAIM, FIRSTNAME_CLAIM_VALUE,
-			LASTNAME_CLAIM, LASTNAME_CLAIM_VALUE,
-			ROLE_CLAIM, ROLE_CLAIM_VALUE));
-
-	public static String createToken(String secret, long validity) {
-		return createTokenBuilder(secret, validity).compact();
-	}
-
-	public static JwtBuilder createTokenBuilder(String secret, long validity) {
-		return Jwts.builder()
-				.setClaims(CLAIMS)
-				.setSubject(SUBJECT)
-				.setHeaderParam(TYP, TOKEN_TYPE)
-				.setIssuer(TOKEN_ISSUER).setIssuedAt(new Date(System.currentTimeMillis()))
-				.setExpiration(new Date(System.currentTimeMillis() + validity))
-				.setAudience(TOKEN_AUDIENCE)
-				.signWith(SignatureAlgorithm.HS512, secret.getBytes());
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionControllerTest.java
deleted file mode 100644
index 63d45e7d6156f69437713000a6728a438acdb551..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionControllerTest.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-
-import jakarta.validation.ConstraintViolationException;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ProblemDetail;
-import org.springframework.security.access.AccessDeniedException;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-class ExceptionControllerTest {
-
-	@Spy
-	@InjectMocks
-	private ExceptionController exceptionController;
-
-	@Mock
-	private ProblemDetailMapper problemDetailMapper;
-
-	@Nested
-	class TestHandleFunctionalException {
-
-		private final FunctionalException exception = new FunctionalException(() -> ExceptionTestFactory.MESSAGE_CODE);
-
-		@Test
-		void shouldHaveMessageCode() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessageCode()).isEqualTo(ExceptionTestFactory.MESSAGE_CODE);
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessage()).isEqualTo(exception.getMessage());
-			assertThat(error.getIssues().get(0).getMessage()).contains(exception.getExceptionId());
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getExceptionId()).isEqualTo(exception.getExceptionId());
-		}
-
-		private ApiError handleException() {
-			return exceptionController.handleFunctionalException(exception);
-		}
-	}
-
-	@Nested
-	class TestHandleAccessDeniedException {
-
-		private final AccessDeniedException exception = new AccessDeniedException(ExceptionTestFactory.MESSAGE);
-
-		@BeforeEach
-		void mockExceptionId() {
-			doReturn(ExceptionTestFactory.EXCEPTION_ID).when(exceptionController).createExceptionId();
-		}
-
-		@Test
-		void shouldHaveMessageCode() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessageCode()).isEqualTo(ExceptionController.ACCESS_DENIED_MESSAGE_CODE);
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessage()).contains(exception.getMessage());
-			assertThat(error.getIssues().get(0).getMessage()).contains(ExceptionTestFactory.EXCEPTION_ID);
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getExceptionId()).isEqualTo(ExceptionTestFactory.EXCEPTION_ID);
-		}
-
-		private ApiError handleException() {
-			return exceptionController.handleAccessDeniedException(exception);
-		}
-	}
-
-	@Nested
-	class TestHandleResourceNotFoundException {
-
-		private final ResourceNotFoundException exception = new ResourceNotFoundException(String.class, 42L);
-
-		@Test
-		void shouldHaveMessageCode() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessageCode()).isEqualTo(ExceptionController.RESOURCE_NOT_FOUNT_MESSAGE_CODE);
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessage()).isEqualTo(exception.getMessage());
-			assertThat(error.getIssues().get(0).getMessage()).contains(exception.getExceptionId());
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getExceptionId()).isEqualTo(exception.getExceptionId());
-		}
-
-		private ApiError handleException() {
-			return exceptionController.handleResourceNotFoundException(exception);
-		}
-	}
-
-	@Nested
-	class TestContraintValidationException {
-
-		@Nested
-		class TestHandleConstraintViolationException {
-			private final String exceptionMessage = LoremIpsum.getInstance().getWords(5);
-
-			private final ConstraintViolationException exception = new ConstraintViolationException(exceptionMessage,
-					Collections.singleton(ExceptionTestFactory.buildMockedConstraintViolation()));
-
-			@Test
-			void shouldGetMessageWithExceptionId() {
-				handleException();
-
-				verify(problemDetailMapper).buildMessageWithExceptionId(exception);
-			}
-
-			@Test
-			void shouldBuildConstraintViolationProblemDetail() {
-				handleException();
-
-				verify(problemDetailMapper).fromConstraintViolationException(exception);
-			}
-
-			@Test
-			void shouldReturnBuiltProblemDetail() {
-				var expectedProblemDetail = ProblemDetail.forStatusAndDetail(HttpStatus.UNPROCESSABLE_ENTITY, exceptionMessage);
-				when(problemDetailMapper.fromConstraintViolationException(exception)).thenReturn(expectedProblemDetail);
-
-				var problemDetail = handleException();
-
-				assertThat(problemDetail).isEqualTo(expectedProblemDetail);
-			}
-
-			private ProblemDetail handleException() {
-				return exceptionController.handleConstraintViolationException(exception);
-			}
-		}
-
-	}
-
-	@Nested
-	class TestHandleTechnicalException {
-
-		private final TechnicalException exception = new TechnicalException(ExceptionTestFactory.MESSAGE, new Throwable());
-
-		@Test
-		void shouldHaveMessageCode() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessageCode()).isEqualTo(ExceptionController.RUNTIME_MESSAGE_CODE);
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessage()).isEqualTo(exception.getMessage());
-			assertThat(error.getIssues().get(0).getMessage()).contains(exception.getExceptionId());
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getExceptionId()).isEqualTo(exception.getExceptionId());
-		}
-
-		private ApiError handleException() {
-			return exceptionController.handleTechnicalException(exception);
-		}
-	}
-
-	@Nested
-	class TestHandleRuntimeException {
-
-		private final RuntimeException exception = new RuntimeException(ExceptionTestFactory.MESSAGE);
-
-		@BeforeEach
-		void mockExceptionId() {
-			doReturn(ExceptionTestFactory.EXCEPTION_ID).when(exceptionController).createExceptionId();
-		}
-
-		@Test
-		void shouldHaveMessageCode() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessageCode()).isEqualTo(ExceptionController.RUNTIME_MESSAGE_CODE);
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getMessage()).contains(exception.getMessage());
-			assertThat(error.getIssues().get(0).getMessage()).contains(ExceptionTestFactory.EXCEPTION_ID);
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var error = handleException();
-
-			assertThat(error.getIssues()).hasSize(1);
-			assertThat(error.getIssues().get(0).getExceptionId()).isEqualTo(ExceptionTestFactory.EXCEPTION_ID);
-		}
-
-		private ApiError handleException() {
-			return exceptionController.handleRuntimeException(exception);
-		}
-	}
-
-	@DisplayName("Handle OrderNotAllowedException")
-	@Nested
-	class TestOrderNotAllowedException {
-
-		private final OrderNotAllowedException exception = new OrderNotAllowedException(LegacyOrder.EDIT_WIEDERVORLAGE);
-
-		@Test
-		void shouldHaveMessage() {
-			var apiError = exceptionController.handleFunctionalException(exception);
-
-			var messageString = "Order 'EDIT_WIEDERVORLAGE' is not allowed. Expected 'VORGANG_LOESCHEN or LOESCH_ANFORDERUNG_ZURUECKNEHMEN'.";
-			assertThat(apiError.getIssues().get(0).getMessage()).contains(messageString);
-		}
-
-		@Test
-		void shouldHaveExceptionId() {
-			var apiError = exceptionController.handleFunctionalException(exception);
-
-			assertThat(apiError.getIssues()).hasSize(1).first().extracting(Issue::getExceptionId)
-					.isEqualTo(exception.getExceptionId());
-		}
-
-		@Test
-		void shouldHaveMessageCode() {
-			var apiError = exceptionController.handleFunctionalException(exception);
-
-			var messageCode = "loeschanforderung.order_not_allowed";
-			assertThat(apiError.getIssues()).hasSize(1).first().extracting(Issue::getMessageCode).isEqualTo(messageCode);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionTestFactory.java
deleted file mode 100644
index 8c1926b0b8ec797eabd43df8bdce9dd06fd5ee19..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ExceptionTestFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Map;
-import java.util.UUID;
-
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.Path;
-import jakarta.validation.metadata.ConstraintDescriptor;
-
-import org.hibernate.validator.engine.HibernateConstraintViolation;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.DynamicViolationParameter;
-
-public class ExceptionTestFactory {
-
-	static final String EXCEPTION_ID = UUID.randomUUID().toString();
-
-	static final String PARAM_NAME = "param";
-	static final String PARAM_VALUE = "3";
-	static final String PARAM_DYNAMIC_VALUE = "20";
-	static final String MESSAGE = LoremIpsum.getInstance().getWords(5);
-	static final String MESSAGE_CODE = "message.code";
-	private static final String PATH_PREFIX = "createCommandByRelation";
-	static final String PATH_FIELD = "command.wiedervorlage.betreff";
-	public static final String PATH = PATH_PREFIX + "." + PATH_FIELD;
-
-	public static ConstraintViolation<?> buildMockedConstraintViolation() {
-		return ExceptionTestFactory.buildMockedConstraintViolationWithDynamicPayload(null);
-	}
-
-	@SuppressWarnings({ "unchecked" })
-	public static <T> ConstraintViolation<T> buildMockedConstraintViolationWithDynamicPayload(DynamicViolationParameter dynamicViolationParameter) {
-		var violation = mock(ConstraintViolation.class);
-		var hibernateViolation = mock(HibernateConstraintViolation.class);
-		var constraintDescriptor = mock(ConstraintDescriptor.class);
-
-		var path = mock(Path.class);
-		when(path.toString()).thenReturn(PATH);
-		when(violation.getPropertyPath()).thenReturn(path);
-		when(violation.getMessage()).thenReturn(MESSAGE);
-		when(violation.getConstraintDescriptor()).thenReturn(constraintDescriptor);
-		when(violation.getInvalidValue()).thenReturn(PARAM_VALUE);
-		when(constraintDescriptor.getAttributes()).thenReturn(Map.of(PARAM_NAME, PARAM_DYNAMIC_VALUE));
-		when(violation.unwrap(any())).thenReturn(hibernateViolation);
-		when(hibernateViolation.getDynamicPayload(any())).thenReturn(dynamicViolationParameter);
-
-		return violation;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/FunctionalExceptionTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/FunctionalExceptionTest.java
deleted file mode 100644
index 759c8397b04ddab4abceff70cb4bec0d30a70f1f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/FunctionalExceptionTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.Test;
-
-class FunctionalExceptionTest {
-
-	@Test
-	void shouldIncludeExceptionId() {
-		var exception = new FunctionalException(() -> StringUtils.EMPTY);
-
-		assertThat(exception.getMessage()).contains(exception.getExceptionId());
-		assertThat(exception.getExceptionId()).isNotNull();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionControllerTest.java
deleted file mode 100644
index aa1200ad64f51c406d55bff42fcc395f959f1a64..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionControllerTest.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import io.grpc.Metadata;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-
-class GrpcExceptionControllerTest {
-
-	@InjectMocks
-	private GrpcExceptionController grpcExceptionController;
-
-	@Nested
-	class TestNotFoundStatusException {
-
-		private final StatusRuntimeException notFoundException = GrpcExceptionTestFactory.createGrpcNotFoundStatusRuntimeException();
-
-		@Test
-		void shouldHaveMessageCode() {
-			var response = grpcExceptionController.handleStatusRuntimeException(notFoundException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessageCode())
-					.isEqualTo(GrpcExceptionController.GRPC_NOT_FOUND_ERROR_CODE_KEY.getErrorCode());
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var response = grpcExceptionController.handleStatusRuntimeException(notFoundException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessage()).isEqualTo("NOT_FOUND: " + GrpcExceptionTestFactory.NOT_FOUND_DESCRIPTION);
-		}
-
-		@Test
-		void shouldHaveHttpStatusCode() {
-			var response = grpcExceptionController.handleStatusRuntimeException(notFoundException);
-
-			assertThat(response.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
-		}
-
-		@Test
-		void shouldNotHaveExceptionId() {
-			var response = grpcExceptionController.handleStatusRuntimeException(notFoundException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getExceptionId()).isNull();
-		}
-
-		@Nested
-		class TestWithMetaData {
-
-			private final StatusRuntimeException notFoundExceptionWithMetadata = GrpcExceptionTestFactory
-					.createGrpcNotFoundStatusException(GrpcExceptionTestFactory.createMetaData());
-
-			@Test
-			void shouldHaveExceptionId() {
-				var response = grpcExceptionController.handleStatusRuntimeException(notFoundExceptionWithMetadata);
-
-				assertThat(response.getBody().getIssues()).hasSize(1);
-				assertThat(response.getBody().getIssues().get(0).getExceptionId()).isEqualTo(GrpcExceptionTestFactory.METADATA_EXCEPTION_ID_VALUE);
-			}
-		}
-	}
-
-	@Nested
-	class TestInternalStatusException {
-
-		private final StatusRuntimeException internalException = GrpcExceptionTestFactory.createGrpcInternalStatusException();
-
-		@Test
-		void shouldHaveMessageCode() {
-			var response = grpcExceptionController.handleStatusRuntimeException(internalException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessageCode())
-					.isEqualTo(GrpcExceptionController.GRPC_INTERNAL_ERROR_CODE_KEY.getErrorCode());
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var response = grpcExceptionController.handleStatusRuntimeException(internalException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessage()).isEqualTo("INTERNAL: " + GrpcExceptionTestFactory.TECHNICAL_DESCRIPTION);
-		}
-
-		@Test
-		void shouldHaveHttpStatusCode() {
-			var response = grpcExceptionController.handleStatusRuntimeException(internalException);
-
-			assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-
-		@Test
-		void shouldNotHaveExceptionId() {
-			var response = grpcExceptionController.handleStatusRuntimeException(internalException);
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getExceptionId()).isNull();
-		}
-
-		@Nested
-		class TestWithMetaData {
-
-			private final StatusRuntimeException internalExceptionWithMetadata = GrpcExceptionTestFactory
-					.createGrpcInternalStatusException(GrpcExceptionTestFactory.createMetaData());
-
-			@Test
-			void shouldHaveErrorCodeAsMessageCode() {
-				var response = grpcExceptionController.handleStatusRuntimeException(internalExceptionWithMetadata);
-
-				assertThat(response.getBody().getIssues()).hasSize(1);
-				assertThat(response.getBody().getIssues().get(0).getMessageCode()).isEqualTo(GrpcExceptionTestFactory.METADATA_ERROR_CODE_VALUE);
-			}
-
-			@Test
-			void shouldHaveExceptionId() {
-				var response = grpcExceptionController.handleStatusRuntimeException(internalExceptionWithMetadata);
-
-				assertThat(response.getBody().getIssues()).hasSize(1);
-				assertThat(response.getBody().getIssues().get(0).getExceptionId()).isEqualTo(GrpcExceptionTestFactory.METADATA_EXCEPTION_ID_VALUE);
-			}
-		}
-	}
-
-	@Nested
-	class TestStatusUnavailableException {
-
-		private final StatusRuntimeException unavailableException = GrpcExceptionTestFactory.createGrpcUnavailableStatusException();
-
-		@Test
-		void shouldHaveMessageCode() {
-			var response = handleUnavailableException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessageCode())
-					.isEqualTo(GrpcExceptionController.GRPC_INTERNAL_ERROR_CODE_KEY.getErrorCode());
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var response = handleUnavailableException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessage()).isEqualTo("UNAVAILABLE");
-		}
-
-		@Test
-		void shouldHaveHttpStatusCode() {
-			var response = handleUnavailableException();
-
-			assertThat(response.getStatusCode()).isEqualTo(HttpStatus.SERVICE_UNAVAILABLE);
-		}
-
-		@Test
-		void shouldNotHaveExceptionId() {
-			var response = handleUnavailableException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getExceptionId()).isNotNull();
-		}
-
-		private ResponseEntity<ApiError> handleUnavailableException() {
-			return handleException(unavailableException);
-		}
-
-		@Nested
-		class TestWithMetadata {
-
-			private final StatusRuntimeException unavailableExceptionWithMetadata = GrpcExceptionTestFactory
-					.createGrpcUnavailableStatusException(GrpcExceptionTestFactory.createMetaData());
-
-			@Test
-			void shouldNotHaveExceptionId() {
-				var response = handleUnavailableException();
-
-				assertThat(response.getBody().getIssues()).hasSize(1);
-				assertThat(response.getBody().getIssues().get(0).getExceptionId()).isEqualTo(GrpcExceptionTestFactory.METADATA_EXCEPTION_ID_VALUE);
-			}
-
-			private ResponseEntity<ApiError> handleUnavailableException() {
-				return handleException(unavailableExceptionWithMetadata);
-			}
-		}
-	}
-
-	@Nested
-	class TestPermissionDeniedException {
-
-		private final StatusRuntimeException permissionDeniedException = GrpcExceptionTestFactory.createGrpcPermissionDeniedStatusException();
-
-		@Test
-		void shouldHaveMessageCode() {
-			var response = handlePermissionDeniedException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessageCode())
-					.isEqualTo(GrpcExceptionController.GRPC_PERMISSION_DENIED_CODE_KEY.getErrorCode());
-		}
-
-		@Test
-		void shouldHaveMessage() {
-			var response = handlePermissionDeniedException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getMessage())
-					.isEqualTo("PERMISSION_DENIED: " + GrpcExceptionTestFactory.PERMISSION_DENIED_DESCRIPTION);
-		}
-
-		@Test
-		void shouldHaveHttpStatusCode() {
-			var response = handlePermissionDeniedException();
-
-			assertThat(response.getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
-		}
-
-		@Test
-		void shouldNotHaveExceptionId() {
-			var response = handlePermissionDeniedException();
-
-			assertThat(response.getBody().getIssues()).hasSize(1);
-			assertThat(response.getBody().getIssues().get(0).getExceptionId()).isNotNull();
-		}
-
-		private ResponseEntity<ApiError> handlePermissionDeniedException() {
-			return handleException(permissionDeniedException);
-		}
-	}
-
-	private ResponseEntity<ApiError> handleException(StatusRuntimeException exception) {
-		return grpcExceptionController.handleStatusRuntimeException(exception);
-	}
-
-	@Nested
-	class TestMapToIssueParams {
-
-		@Test
-		void shouldMapParams() {
-			var params = grpcExceptionController.mapToIssueParams(
-					GrpcExceptionTestFactory.createMetaDataWithSingleEntry("param_key", "param_value"));
-
-			assertThat(params).hasSize(1);
-			assertThat(params.get(0).getName()).isEqualTo("param_key");
-			assertThat(params.get(0).getValue()).isEqualTo("param_value");
-		}
-
-		@Test
-		void shouldNotMapErrorCode() {
-			var metadata = GrpcExceptionTestFactory.createMetaDataWithSingleEntry(
-					GrpcExceptionController.KEY_ERROR_CODE, GrpcExceptionTestFactory.METADATA_ERROR_CODE_VALUE);
-
-			var params = grpcExceptionController.mapToIssueParams(metadata);
-
-			assertThat(params).isEmpty();
-		}
-
-		@Test
-		void shouldNotMapExceptionId() {
-			var metadata = GrpcExceptionTestFactory.createMetaDataWithSingleEntry(
-					GrpcExceptionController.KEY_EXCEPTION_ID, GrpcExceptionTestFactory.METADATA_EXCEPTION_ID_VALUE);
-
-			var params = grpcExceptionController.mapToIssueParams(metadata);
-
-			assertThat(params).isEmpty();
-		}
-	}
-
-	@DisplayName("Get message code")
-	@Nested
-	class TestGetMessageCode {
-
-		@Test
-		void shouldReturnErrorCode() {
-			var messageCodeValue = "ErrorCode";
-
-			var messageCode = getMessageCode(
-					new StatusRuntimeException(Status.UNKNOWN, createMetadata(GrpcExceptionController.KEY_ERROR_CODE, messageCodeValue)));
-
-			assertThat(messageCode).isEqualTo(messageCodeValue);
-		}
-
-		@Test
-		void shouldReturnServiceCode() {
-			var messageCodeValue = "ServiceCode";
-
-			var messageCode = getMessageCode(new StatusRuntimeException(Status.UNKNOWN, createMetadata(GrpcUtil.SERVICE_KEY, messageCodeValue)));
-
-			assertThat(messageCode).isEqualTo(messageCodeValue);
-		}
-
-		@Test
-		void shouldReturnDefault() {
-			var messageCode = getMessageCode(new StatusRuntimeException(Status.UNKNOWN));
-
-			assertThat(messageCode).isEqualTo(GrpcExceptionController.GRPC_INTERNAL_ERROR_CODE_KEY.getErrorCode());
-		}
-
-		private String getMessageCode(StatusRuntimeException exception) {
-			return grpcExceptionController.getMessageCode(exception);
-		}
-
-		private Metadata createMetadata(String key, String value) {
-			var metadata = new Metadata();
-			metadata.put(GrpcUtil.keyOfString(key), value);
-			return metadata;
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionTestFactory.java
deleted file mode 100644
index a843d05257bba5780a46c57e8b1d39b28939fe5e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/GrpcExceptionTestFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import org.springframework.security.access.AccessDeniedException;
-
-import de.ozgcloud.alfa.common.GrpcUtil;
-import io.grpc.Metadata;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-
-public class GrpcExceptionTestFactory {
-
-	public static final String NOT_FOUND_DESCRIPTION = "Not Found Exception message";
-	public static final String TECHNICAL_DESCRIPTION = "Technical Exception message";
-	public static final String PERMISSION_DENIED_DESCRIPTION = "PermissionsDenied Exception message";
-	public static final String PERMISSION_DENIED_CAUSE_MSG = "AccessDenied cause message";
-
-	public static final String METADATA_ERROR_CODE_VALUE = "Error_Code";
-	public static final String METADATA_EXCEPTION_ID_VALUE = "42";
-
-	public static StatusRuntimeException createGrpcUnavailableStatusException(Metadata metadata) {
-		return new StatusRuntimeException(buildUnavailableStatus(), metadata);
-	}
-
-	public static StatusRuntimeException createGrpcUnavailableStatusException() {
-		return new StatusRuntimeException(buildUnavailableStatus());
-	}
-
-	public static Status buildUnavailableStatus() {
-		return Status.UNAVAILABLE.withCause(new RuntimeException());
-	}
-
-	public static StatusRuntimeException createGrpcNotFoundStatusException(Metadata metadata) {
-		return new StatusRuntimeException(buildNotFoundStatus(), metadata);
-	}
-
-	public static StatusRuntimeException createGrpcNotFoundStatusRuntimeException() {
-		return new StatusRuntimeException(buildNotFoundStatus());
-	}
-
-	private static Status buildNotFoundStatus() {
-		return Status.NOT_FOUND.withDescription(NOT_FOUND_DESCRIPTION).withCause(new RuntimeException());
-	}
-
-	public static StatusRuntimeException createGrpcInternalStatusException(Metadata metaData) {
-		return new StatusRuntimeException(buildInternalStatus(), metaData);
-	}
-
-	public static StatusRuntimeException createGrpcInternalStatusException() {
-		return new StatusRuntimeException(buildInternalStatus());
-	}
-
-	private static Status buildInternalStatus() {
-		return Status.INTERNAL.withDescription(TECHNICAL_DESCRIPTION).withCause(new RuntimeException());
-	}
-
-	public static StatusRuntimeException createGrpcPermissionDeniedStatusException() {
-		return new StatusRuntimeException(buildPermissionDeniedStatus());
-	}
-
-	public static Status buildPermissionDeniedStatus() {
-		return Status.PERMISSION_DENIED.withDescription(PERMISSION_DENIED_DESCRIPTION)
-				.withCause(new AccessDeniedException(PERMISSION_DENIED_CAUSE_MSG));
-	}
-
-	public static Metadata createMetaData() {
-		Metadata data = new Metadata();
-		data.put(GrpcUtil.keyOfString(GrpcExceptionController.KEY_ERROR_CODE), METADATA_ERROR_CODE_VALUE);
-		data.put(GrpcUtil.keyOfString(GrpcExceptionController.KEY_EXCEPTION_ID), METADATA_EXCEPTION_ID_VALUE);
-		return data;
-	}
-
-	public static Metadata createMetaDataWithSingleEntry(String key, String value) {
-		Metadata data = new Metadata();
-		data.put(GrpcUtil.keyOfString(key), value);
-		return data;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/IssueParamTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/IssueParamTestFactory.java
deleted file mode 100644
index 1f4c3848694a0d850b87d87bec291b6907af26a5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/IssueParamTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import de.ozgcloud.alfa.common.errorhandling.IssueParam.IssueParamBuilder;
-
-public class IssueParamTestFactory {
-	public static final String PARAM_NAME = ExceptionTestFactory.PARAM_NAME;
-	public static final String PARAM_DYNAMIC_VALUE = ExceptionTestFactory.PARAM_DYNAMIC_VALUE;
-
-	public static IssueParam create() {
-		return createBuilder()
-				.build();
-	}
-
-	public static IssueParamBuilder createBuilder() {
-		return IssueParam.builder().name(PARAM_NAME).value(PARAM_DYNAMIC_VALUE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapperTest.java
deleted file mode 100644
index 0770ff9b4f78e4b17a45fda538b888f270802bdd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/errorhandling/ProblemDetailMapperTest.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.errorhandling;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.AbstractMap.SimpleEntry;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.ConstraintViolationException;
-import jakarta.validation.metadata.ConstraintDescriptor;
-
-import org.hibernate.validator.engine.HibernateConstraintViolation;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ProblemDetail;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.DynamicViolationParameter;
-import de.ozgcloud.common.errorhandling.ExceptionUtil;
-
-class ProblemDetailMapperTest {
-
-	@Spy
-	private ProblemDetailMapper mapper;
-
-	@Nested
-	class TestFromConstraintViolationException {
-		private final String exceptionMessage = LoremIpsum.getInstance().getWords(5);
-		private final Set<ConstraintViolation<?>> violations = Collections.singleton(ExceptionTestFactory.buildMockedConstraintViolation());
-		private final ConstraintViolationException exception = new ConstraintViolationException(exceptionMessage, violations);
-		private final String message = LoremIpsum.getInstance().getWords(5);
-
-		@BeforeEach
-		void mockMapper() {
-			doReturn(message).when(mapper).buildMessageWithExceptionId(exception);
-		}
-
-		@Test
-		void shouldGetMessageWithExcpetionId() {
-			callMapper();
-
-			verify(mapper).buildMessageWithExceptionId(exception);
-		}
-
-		@Test
-		void shouldHaveStatusUnprocessableEntity() {
-			var problemDetail = callMapper();
-
-			assertThat(problemDetail.getStatus()).isEqualTo(HttpStatus.UNPROCESSABLE_ENTITY.value());
-		}
-
-		@Test
-		void shouldHaveMessageInDetail() {
-			var problemDetail = callMapper();
-
-			assertThat(problemDetail.getDetail()).contains(message);
-		}
-
-		@Test
-		void shouldGetDetailedViolationList() {
-			callMapper();
-
-			verify(mapper).buildInvalidParams(violations);
-		}
-
-		@Test
-		void shouldSetPropertyInvalidParams() {
-			var expectedInvalidParamsValue = Map.of();
-			doReturn(Stream.of(expectedInvalidParamsValue)).when(mapper).buildInvalidParams(violations);
-
-			var problemDetail = callMapper();
-
-			assertThat(problemDetail.getProperties())
-					.containsExactly(new SimpleEntry<String, Object>(ProblemDetailMapper.INVALID_PARAMS, List.of(expectedInvalidParamsValue)));
-		}
-
-		private ProblemDetail callMapper() {
-			return mapper.fromConstraintViolationException(exception);
-		}
-	}
-
-	@Nested
-	class TestBuildMessageWithExceptionId {
-
-		private final String exceptionMessage = LoremIpsum.getInstance().getWords(5);
-		private final String exceptionId = UUID.randomUUID().toString();
-		private final ConstraintViolationException exception = new ConstraintViolationException(exceptionMessage, null);
-
-		@BeforeEach
-		void mockCreateExcpetionId() {
-			doReturn(exceptionId).when(mapper).createExceptionId();
-		}
-
-		@Test
-		void shouldCreateExceptionId() {
-			callMapper();
-
-			verify(mapper).createExceptionId();
-		}
-
-		@Test
-		void shouldFormatMessageWithExceptionId() {
-			var messageWithId = callMapper();
-
-			assertThat(messageWithId).isEqualTo(ExceptionUtil.formatMessageWithExceptionId(exceptionMessage, exceptionId));
-		}
-
-		private String callMapper() {
-			return mapper.buildMessageWithExceptionId(exception);
-		}
-	}
-
-	@Nested
-	class TestBuildInvalidParams {
-
-		@Nested
-		class OnViolations {
-			private final Set<ConstraintViolation<?>> violations = Set.of(ExceptionTestFactory.buildMockedConstraintViolation(),
-					ExceptionTestFactory.buildMockedConstraintViolation());
-
-			@Test
-			void shouldCallBuildDetailedViolation() {
-				callMapper().toList();
-
-				violations.forEach(violation -> verify(mapper).buildDetailedViolation(violation));
-			}
-
-			@Test
-			void shouldReturnListWithDetailedViolations() {
-				Map<String, Object> detailsMap = Map.of(LoremIpsum.getInstance().getWords(1), LoremIpsum.getInstance().getWords(1));
-				violations.forEach(violation -> doReturn(detailsMap).when(mapper).buildDetailedViolation(violation));
-
-				var detailedViolations = callMapper();
-
-				assertThat(detailedViolations).containsExactly(detailsMap, detailsMap);
-			}
-
-			private Stream<Map<String, Object>> callMapper() {
-				return mapper.buildInvalidParams(violations);
-			}
-		}
-
-		@Nested
-		class OnEmptyViolations {
-			private final Set<ConstraintViolation<?>> violations = Collections.emptySet();
-
-			@Test
-			void shouldCallNotBuildDetailedViolation() {
-				callMapper();
-
-				verify(mapper, never()).buildDetailedViolation(any());
-			}
-
-			@Test
-			void shouldReturnListWithDetailedViolations() {
-				var detailedViolations = callMapper();
-
-				assertThat(detailedViolations).isEmpty();
-			}
-
-			private Stream<Map<String, Object>> callMapper() {
-				return mapper.buildInvalidParams(violations);
-			}
-		}
-	}
-
-	@Nested
-	class TestBuildDetailedViolation {
-		private final ConstraintViolation<?> violation = ExceptionTestFactory.buildMockedConstraintViolation();
-
-		@Test
-		void shouldContainFieldName() {
-			var expectedEntry = new SimpleEntry<>(ProblemDetailMapper.INVALID_PARAMS_KEY_NAME, ExceptionTestFactory.PATH);
-
-			var detailedViolation = callMapper();
-
-			assertThat(detailedViolation).contains(expectedEntry);
-		}
-
-		@Test
-		void shouldContainValue() {
-			var expectedEntry = new SimpleEntry<>(ProblemDetailMapper.INVALID_PARAMS_KEY_VALUE, ExceptionTestFactory.PARAM_VALUE);
-
-			var detailedViolation = callMapper();
-
-			assertThat(detailedViolation).contains(expectedEntry);
-		}
-
-		@Test
-		void shouldHandleNullValue() {
-			when(violation.getInvalidValue()).thenReturn(null);
-			var expectedEntry = new SimpleEntry<>(ProblemDetailMapper.INVALID_PARAMS_KEY_VALUE,
-					ProblemDetailMapper.PROVIDED_VALUE_WAS_NULL);
-
-			var detailedViolation = callMapper();
-
-			assertThat(detailedViolation).contains(expectedEntry);
-		}
-
-		@Test
-		void shouldContainReason() {
-			var expectedEntry = new SimpleEntry<>(ProblemDetailMapper.INVALID_PARAMS_KEY_REASON, ExceptionTestFactory.MESSAGE);
-
-			var detailedViolation = callMapper();
-
-			assertThat(detailedViolation).contains(expectedEntry);
-		}
-
-		@Test
-		void shouldBuildParameters() {
-			callMapper();
-
-			verify(mapper).buildParameters(violation);
-		}
-
-		@Test
-		void shouldContainConstraintParameters() {
-			var issueParameter = IssueParamTestFactory.create();
-			doReturn(Stream.of(issueParameter)).when(mapper).buildParameters(violation);
-			var expectedEntry = new SimpleEntry<String, Object>(ProblemDetailMapper.INVALID_PARAMS_KEY_CONSTRAINT_PARAMETERS,
-					List.of(issueParameter));
-
-			var detailedViolation = callMapper();
-
-			assertThat(detailedViolation).contains(expectedEntry);
-		}
-
-		private Map<String, Object> callMapper() {
-			return mapper.buildDetailedViolation(violation);
-		}
-	}
-
-	@Nested
-	class TestBuildParameters {
-
-		@Mock
-		private ConstraintViolation<?> violation;
-
-		@Mock
-		@SuppressWarnings("rawtypes")
-		private ConstraintDescriptor constraintDescriptor;
-
-		@Mock
-		@SuppressWarnings("rawtypes")
-		private HibernateConstraintViolation hibernateConstraintViolation;
-
-		@SuppressWarnings("unchecked")
-		@BeforeEach
-		void setUpViolationMocks() {
-			when(violation.getConstraintDescriptor()).thenReturn(constraintDescriptor);
-			when(violation.unwrap(HibernateConstraintViolation.class)).thenReturn(hibernateConstraintViolation);
-			when(constraintDescriptor.getAttributes())
-					.thenReturn(Map.of(ExceptionTestFactory.PARAM_NAME, ExceptionTestFactory.PARAM_DYNAMIC_VALUE));
-		}
-
-		@Nested
-		class OnNonDynamicPayload {
-
-			@Test
-			void shouldBuildIssueParam() {
-				var issueParams = mapper.buildParameters(violation);
-
-				assertThat(issueParams).usingRecursiveFieldByFieldElementComparator().contains(IssueParamTestFactory.create());
-			}
-
-		}
-
-		@Nested
-		class TestWithDynamicPayload {
-
-			@SuppressWarnings("unchecked")
-			@Test
-			void shouldHaveReplacedIssueParameterName() {
-				var dynamicValue = LoremIpsum.getInstance().getWords(1);
-				var dynamicViolationParameter = DynamicViolationParameter.builder()
-						.map(Map.of(ExceptionTestFactory.PARAM_NAME, dynamicValue))
-						.build();
-				when(hibernateConstraintViolation.getDynamicPayload(DynamicViolationParameter.class)).thenReturn(dynamicViolationParameter);
-				var expectedIssueParam = IssueParamTestFactory.createBuilder().value(dynamicValue).build();
-
-				var issueParams = mapper.buildParameters(violation);
-
-				assertThat(issueParams).usingRecursiveFieldByFieldElementComparator().contains(expectedIssueParam);
-			}
-
-			@SuppressWarnings("unchecked")
-			@Test
-			void shouldIgnoreKeyNotPresentInEntry() {
-				var dynamicViolationParameter = DynamicViolationParameter.builder()
-						.map(Map.of(LoremIpsum.getInstance().getWords(1), LoremIpsum.getInstance().getWords(1)))
-						.build();
-				when(hibernateConstraintViolation.getDynamicPayload(DynamicViolationParameter.class)).thenReturn(dynamicViolationParameter);
-				var expectedIssueParam = IssueParamTestFactory.create();
-
-				var issueParams = mapper.buildParameters(violation);
-
-				assertThat(issueParams).usingRecursiveFieldByFieldElementComparator().contains(expectedIssueParam);
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/GrpcOzgFileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/GrpcOzgFileTestFactory.java
deleted file mode 100644
index f0da6a2f9b239557cbc893698ff23a90f8bfe3f4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/GrpcOzgFileTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-
-public class GrpcOzgFileTestFactory {
-
-	static final String ID = OzgFileTestFactory.ID.toString();
-	static final String NAME = OzgFileTestFactory.NAME;
-	static final long SIZE = OzgFileTestFactory.SIZE;
-
-	public static GrpcOzgFile create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcOzgFile.Builder createBuilder() {
-		return GrpcOzgFile.newBuilder()
-				.setId(ID)
-				.setName(NAME)
-				.setSize(SIZE)
-				.setContentType(OzgFileTestFactory.CONTENT_TYPE);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileMapperTest.java
deleted file mode 100644
index 844e676bcaabb1f22122472cf25339ef52e77ec6..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileMapperTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class OzgFileMapperTest {
-
-	private final OzgFileMapper mapper = Mappers.getMapper(OzgFileMapper.class);
-
-	@Test
-	void shouldMap() {
-		var file = mapper.toFile(GrpcOzgFileTestFactory.create());
-
-		assertThat(file).isNotNull().usingRecursiveComparison().isEqualTo(OzgFileTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileRemoteServiceTest.java
deleted file mode 100644
index 92c9d8bd0ebae27ccd777fd4d65225ddd659e564..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileRemoteServiceTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.attachment.GrpcGetAttachmentsResponseTestFactory;
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.representation.GrpcGetRepresentationsResponseTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.grpc.file.FileServiceGrpc.FileServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetAttachmentsRequest;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetAttachmentsResponse;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetRepresentationsRequest;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetRepresentationsResponse;
-
-class OzgFileRemoteServiceTest {
-
-	@InjectMocks
-	private OzgFileRemoteService remoteService;
-	@Mock
-	private FileServiceBlockingStub serviceStub;
-	@Mock
-	private OzgFileMapper mapper;
-	@Mock
-	private ContextService contextService;
-
-	@Nested
-	class TestGetAttachments {
-
-		private final GrpcGetAttachmentsResponse response = GrpcGetAttachmentsResponseTestFactory.create();
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.getAttachments(any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldCallFileStub() {
-			doServiceCall();
-
-			verify(serviceStub).getAttachments(any(GrpcGetAttachmentsRequest.class));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			var ozgFileAsStream = doServiceCall();
-			ozgFileAsStream = forceActionsDone(ozgFileAsStream);
-
-			verify(mapper).toFile(GrpcOzgFileTestFactory.create());
-		}
-
-		private Stream<OzgFile> forceActionsDone(Stream<OzgFile> stream) {
-			return stream.toList().stream();
-		}
-
-		private Stream<OzgFile> doServiceCall() {
-			return remoteService.getAttachments(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetRepresentations {
-
-		private final GrpcGetRepresentationsResponse response = GrpcGetRepresentationsResponseTestFactory.create();
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.getRepresentations(any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldCallFileStub() {
-			doServiceCall();
-
-			verify(serviceStub).getRepresentations(any(GrpcGetRepresentationsRequest.class));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			var ozgFileAsStream = doServiceCall();
-			ozgFileAsStream = forceActionsDone(ozgFileAsStream);
-
-			verify(mapper).toFile(GrpcOzgFileTestFactory.create());
-		}
-
-		private Stream<OzgFile> forceActionsDone(Stream<OzgFile> stream) {
-			return stream.toList().stream();
-		}
-
-		private Stream<OzgFile> doServiceCall() {
-			return remoteService.getRepresentations(VorgangHeaderTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileServiceTest.java
deleted file mode 100644
index 6aa99519c133ebecd604de9b85fc177950fb4c4d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileServiceTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class OzgFileServiceTest {
-
-	@InjectMocks
-	private OzgFileService service;
-	@Mock
-	private OzgFileRemoteService remoteService;
-
-	@Nested
-	class TestGetAttachments {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getAttachments(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).getAttachments(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetRepresentations {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getRepresentations(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).getRepresentations(VorgangHeaderTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileTestFactory.java
deleted file mode 100644
index 1e6c0db94bbb66d3db40251b2ca1f170dc271fb1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/file/OzgFileTestFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.file;
-
-import static de.ozgcloud.alfa.common.AlfaTestUtils.*;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-
-public class OzgFileTestFactory {
-
-	public static final FileId ID = FileId.from(createMongoDbObjectId());
-	public static final String NAME = BinaryFileTestFactory.NAME;
-	public static final long SIZE = BinaryFileTestFactory.SIZE;
-	public static final String CONTENT_TYPE = BinaryFileTestFactory.CONTENT_TYPE;
-
-	public static OzgFile create() {
-		return createBuilder().build();
-	}
-
-	public static OzgFile createWithUniqueId() {
-		return createBuilder()
-				.id(FileId.from(createMongoDbObjectId()))
-				.build();
-	}
-
-	public static OzgFile.OzgFileBuilder createBuilder() {
-		return OzgFile.builder()
-				.id(ID)
-				.name(NAME)
-				.size(SIZE)
-				.contentType(CONTENT_TYPE);
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserHelperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserHelperTest.java
deleted file mode 100644
index 724e34a13c49a515b4a0e99f4ba02af68dc9cccb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserHelperTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-class CurrentUserHelperTest {
-
-	@DisplayName("Prepare role for check")
-	@Nested
-	class TestPrepareRoleForCheck {
-
-		@Test
-		void shouldAddPrefixIfMissing() {
-			var roleWithoutPrefix = UserRole.VERWALTUNG_USER;
-
-			var role = CurrentUserHelper.prepareRoleForCheck(roleWithoutPrefix);
-
-			assertThat(role).isEqualTo(String.format("%s%s", CurrentUserHelper.ROLE_PREFIX, UserRole.VERWALTUNG_USER));
-		}
-
-		@Test
-		void shouldReturnRoleIfPrefixAlreadyExists() {
-			var roleWithPrefix = String.format("ROLE_%s", UserRole.VERWALTUNG_USER);
-
-			var role = CurrentUserHelper.prepareRoleForCheck(roleWithPrefix);
-
-			assertThat(role).isEqualTo(roleWithPrefix);
-		}
-
-		@Test
-		void shouldReturnPassingRoleIfNonNull() {
-			var role = CurrentUserHelper.prepareRoleForCheck(null);
-
-			assertThat(role).isNull();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceITCase.java
deleted file mode 100644
index 80a08bf7c33db35bf74799f581223be7ff3ee3ee..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceITCase.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.test.context.support.WithMockUser;
-
-import de.ozgcloud.common.test.ITCase;
-
-@ITCase
-class CurrentUserServiceITCase {
-
-	@Autowired
-	private CurrentUserService service;
-
-	@Nested
-	class TestHasRole {
-
-		@WithMockUser(roles = "VERWALTUNG_LOESCHEN")
-		@Test
-		void shouldHaveUserRole() {
-			var result = service.hasRole(UserRole.VERWALTUNG_USER);
-
-			assertThat(result).isTrue();
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceTest.java
deleted file mode 100644
index a340011edd71d088e89383d2fe5b77f5ac890dd2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/CurrentUserServiceTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
-import org.springframework.security.oauth2.jwt.Jwt;
-
-import de.ozgcloud.alfa.JwtTestFactory;
-
-class CurrentUserServiceTest {
-
-	@Spy
-	@InjectMocks
-	private CurrentUserService service;
-	@Mock
-	private UserService userService;
-	@Mock
-	private RoleHierarchy roleHierarchy;
-
-	@Nested
-	class TestGetOrganisationseinheit {
-
-		@Mock
-		private Jwt jwt;
-
-		@Test
-		void shouldReturnOrganisationseinheitIdsFromMap() {
-			when(jwt.getClaim(CurrentUserService.USER_ATTRIBUTE_ORGANISATIONSEINHEIT_ID)).thenReturn(List.of("1", "2"));
-
-			var result = service.getOrganisationsEinheitIds(jwt);
-
-			assertThat(result).containsExactly("1", "2");
-		}
-
-		@Test
-		void shouldReturnOrgaIdAsString() {
-			when(jwt.getClaim(CurrentUserService.USER_ATTRIBUTE_ORGANISATIONSEINHEIT_ID)).thenReturn(List.of("1", 2));
-
-			var result = service.getOrganisationsEinheitIds(jwt);
-
-			assertThat(result).containsExactly("1", "2");
-		}
-
-		@Test
-		void shouldReturnEmptyList() {
-			when(jwt.getClaim(CurrentUserService.USER_ATTRIBUTE_ORGANISATIONSEINHEIT_ID)).thenReturn(Collections.emptyList());
-
-			var result = service.getOrganisationsEinheitIds(jwt);
-
-			assertThat(result).isEmpty();
-		}
-
-		@Test
-		void shouldReturnEmptyListIfNotExists() {
-			var result = service.getOrganisationsEinheitIds(null);
-
-			assertThat(result).isEmpty();
-		}
-	}
-
-	@Nested
-	class TestGetUserId {
-
-		@Test
-		void shouldReturnValueFromClaim() {
-			doReturn(Optional.of(UserProfileTestFactory.ID.toString())).when(service).getSingleClaimValue(any());
-
-			var id = service.getUserId();
-
-			assertThat(id).isEqualTo(UserProfileTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Get single claim value")
-	@Nested
-	class TestGetSingleClaimValue {
-
-		@DisplayName("on existing claim")
-		@Nested
-		class TestOnExistingClaim {
-
-			private static final String ATTRIBUTE_NAME = "userId";
-			private static final String ATTRIBUTE_VALUE = "deadbeef";
-			private static final Map<String, Object> CLAIMS = Map.of(ATTRIBUTE_NAME, ATTRIBUTE_VALUE);
-
-			@Test
-			void shouldReturnUserAttribute() {
-				doReturn(Optional.of(JwtTestFactory.create(CLAIMS))).when(service).getCurrentSecurityToken();
-
-				var attribute = service.getSingleClaimValue(ATTRIBUTE_NAME);
-
-				assertThat(attribute).isPresent().hasValue(ATTRIBUTE_VALUE);
-			}
-		}
-
-		@DisplayName("on missing claim")
-		@Nested
-		class TestOnMissingClaim {
-
-			private static final String ATTRIBUTE_NAME = "non_existing_claim";
-			private static final Map<String, Object> CLAIMS = Collections.<String, Object>singletonMap("dummyClaim", "DummyClaimValue");
-
-			@Test
-			void shouldReturnEmpty() {
-				doReturn(Optional.of(JwtTestFactory.create(CLAIMS))).when(service).getCurrentSecurityToken();
-
-				var attribute = service.getSingleClaimValue(ATTRIBUTE_NAME);
-
-				assertThat(attribute).isEmpty();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserProfileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserProfileTestFactory.java
deleted file mode 100644
index fef21518ab0a5d372995818e2718ec04157d7f1b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserProfileTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
-import de.ozgcloud.user.userprofile.GrpcGetUserProfileResponse;
-import de.ozgcloud.user.userprofile.GrpcUserProfile;
-
-public class GrpcUserProfileTestFactory {
-
-	public static GrpcGetUserProfileRequest createGetUserProfileRequest() {
-		return GrpcGetUserProfileRequest.newBuilder().setUserId(UserProfileTestFactory.ID.toString()).build();
-	}
-
-	public static GrpcGetUserProfileResponse createGetUserProfileResponse() {
-		return GrpcGetUserProfileResponse.newBuilder().setUserProfile(create()).build();
-	}
-
-	public static GrpcUserProfile create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcUserProfile.Builder createBuilder() {
-		return GrpcUserProfile.newBuilder()
-				.setId(UserProfileTestFactory.ID.toString())
-				.setFirstName(UserProfileTestFactory.FIRSTNAME)
-				.setLastName(UserProfileTestFactory.LASTNAME);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserTestFactory.java
deleted file mode 100644
index 55db0f6e8200c606c86c9bb4684afe036c71ac3e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/GrpcUserTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import de.ozgcloud.vorgang.grpc.command.GrpcUser;
-
-public class GrpcUserTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String NAME = UserProfileTestFactory.FULLNAME;
-	public static final String ROLE = UserProfileTestFactory.ROLE;
-
-	public static GrpcUser create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcUser.Builder createBuilder() {
-		return GrpcUser.newBuilder()
-				.setId(ID)
-				.setName(NAME)
-				.addAllRoles(Collections.singleton(ROLE));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerPropertiesTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerPropertiesTestFactory.java
deleted file mode 100644
index 336fa4919da926c7b3f4e2754327f5805218faf3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerPropertiesTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-public class UserManagerPropertiesTestFactory {
-
-	public static final String PROFILE_TEMPLATE = "profile template";
-
-	public static UserManagerProperties create() {
-		var properties = new UserManagerProperties();
-
-		properties.setProfileTemplate(PROFILE_TEMPLATE);
-
-		return properties;
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerUrlProviderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerUrlProviderTest.java
deleted file mode 100644
index 0e97b04d902975b88fb2b6b3d28d8b5c537f7a3e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserManagerUrlProviderTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-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.InjectMocks;
-import org.mockito.Mock;
-
-class UserManagerUrlProviderTest {
-
-	private static final String DUMMY_URL = "dummyUrl/";
-	private static final String DUMMY_PROFILE_TEMPLATE = "dummyProfileTemplate";
-	private static final String DUMMY_PROFILE_SEARCH_TEMPLATE = "dummyProfileSearchTemplate";
-
-	@InjectMocks
-	private UserManagerUrlProvider urlProvider;
-	@Mock
-	private UserManagerProperties userManagerProperties;
-
-	@DisplayName("Get user profile template")
-	@Nested
-	class TestGetUserProfileTemplate {
-
-		@Test
-		void shouldGetUrlFromProperties() {
-			urlProvider.getUserProfileTemplate();
-
-			verify(userManagerProperties).getUrl();
-		}
-
-		@Test
-		void shouldGetUserProfileTemplateFromProperties() {
-			urlProvider.getUserProfileTemplate();
-
-			verify(userManagerProperties).getProfileTemplate();
-		}
-
-		@Test
-		void shouldReturnValue() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getProfileTemplate()).thenReturn(DUMMY_PROFILE_TEMPLATE);
-
-			var profileTemplate = urlProvider.getUserProfileTemplate();
-
-			assertThat(profileTemplate).isEqualTo("dummyUrl/dummyProfileTemplate");
-		}
-	}
-
-	@DisplayName("Get user profile search template")
-	@Nested
-	class TestGetUserProfileSearchTemplate {
-
-		@Test
-		void shouldGetUrlFromProperties() {
-			urlProvider.getSearchUserProfilesTemplate();
-
-			verify(userManagerProperties).getUrl();
-		}
-
-		@Test
-		void shouldGetUserProfileSearchTemplateFromProperties() {
-			urlProvider.getSearchUserProfilesTemplate();
-
-			verify(userManagerProperties).getSearchTemplate();
-		}
-
-		@Test
-		void shouldReturnValue() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getSearchTemplate()).thenReturn(DUMMY_PROFILE_SEARCH_TEMPLATE);
-
-			var profileTemplate = urlProvider.getSearchUserProfilesTemplate();
-
-			assertThat(profileTemplate.toUriString()).isEqualTo("dummyUrl/dummyProfileSearchTemplate");
-		}
-	}
-
-	@DisplayName("Is configured for user profile")
-	@Nested
-	class TestIsConfiguredForUserProfile {
-
-		@Test
-		void shouldGetUserManagerPropertiesUrl() {
-			urlProvider.isConfiguredForUserProfile();
-
-			verify(userManagerProperties).getUrl();
-		}
-
-		@Test
-		void shouldGetUserManagerPropertiesProfileTemplate() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-
-			urlProvider.isConfiguredForUserProfile();
-
-			verify(userManagerProperties).getProfileTemplate();
-		}
-
-		@Test
-		void shouldReturnTrueIfUrlAndProfileTemplateExists() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getProfileTemplate()).thenReturn(DUMMY_PROFILE_TEMPLATE);
-
-			var isConfigured = urlProvider.isConfiguredForUserProfile();
-
-			assertThat(isConfigured).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfUrlNotExists() {
-			when(userManagerProperties.getUrl()).thenReturn(StringUtils.EMPTY);
-
-			var isConfigured = urlProvider.isConfiguredForUserProfile();
-
-			assertThat(isConfigured).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfProfileTemplateNotExists() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getProfileTemplate()).thenReturn(StringUtils.EMPTY);
-
-			var isConfigured = urlProvider.isConfiguredForUserProfile();
-
-			assertThat(isConfigured).isFalse();
-		}
-	}
-
-	@DisplayName("Is configured for search user profile")
-	@Nested
-	class TestIsConfiguredForSearchUserProfile {
-
-		@Test
-		void shouldGetUserManagerPropertiesUrl() {
-			urlProvider.isConfiguredForSearchUserProfile();
-
-			verify(userManagerProperties).getUrl();
-		}
-
-		@Test
-		void shouldGetUserManagerPropertiesSearchTemplate() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-
-			urlProvider.isConfiguredForSearchUserProfile();
-
-			verify(userManagerProperties).getSearchTemplate();
-		}
-
-		@Test
-		void shouldReturnTrueIfUrlAndSearchTemplateExists() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getSearchTemplate()).thenReturn(DUMMY_PROFILE_SEARCH_TEMPLATE);
-
-			var isConfigured = urlProvider.isConfiguredForSearchUserProfile();
-
-			assertThat(isConfigured).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfUrlNotExists() {
-			when(userManagerProperties.getUrl()).thenReturn(StringUtils.EMPTY);
-
-			var isConfigured = urlProvider.isConfiguredForSearchUserProfile();
-
-			assertThat(isConfigured).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfProfileTemplateNotExists() {
-			when(userManagerProperties.getUrl()).thenReturn(DUMMY_URL);
-			when(userManagerProperties.getSearchTemplate()).thenReturn(StringUtils.EMPTY);
-
-			var isConfigured = urlProvider.isConfiguredForSearchUserProfile();
-
-			assertThat(isConfigured).isFalse();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileMapperTest.java
deleted file mode 100644
index 4a8edec1e369fc32eaf1244d286cc64122dcf07d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileMapperTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-import de.ozgcloud.user.userprofile.GrpcUserProfile;
-
-class UserProfileMapperTest {
-
-	private UserProfileMapper mapper = Mappers.getMapper(UserProfileMapper.class);
-
-	@DisplayName("Map from")
-	@Nested
-	class TestMapFrom {
-
-		@Test
-		void shouldMapFirstName() {
-			var userProfile = map();
-
-			assertThat(userProfile.getFirstName()).isEqualTo(UserProfileTestFactory.FIRSTNAME);
-		}
-
-		@Test
-		void shouldMapLastName() {
-			var userProfile = map();
-
-			assertThat(userProfile.getLastName()).isEqualTo(UserProfileTestFactory.LASTNAME);
-		}
-
-		@Test
-		void shouldMapId() {
-			var userProfile = map();
-
-			assertThat(userProfile.getId()).isEqualTo(UserProfileTestFactory.ID);
-		}
-
-		@Test
-		void shouldProceedWithNull() {
-			Assertions.assertDoesNotThrow(() -> mapper.mapFrom(GrpcUserProfile.newBuilder().build()));
-		}
-
-		private UserProfile map() {
-			return mapper.mapFrom(GrpcUserProfileTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileTestFactory.java
deleted file mode 100644
index 901d7bbbde457d357b0e0764ab5282c2dfd8dbf0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserProfileTestFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import java.util.Collections;
-import java.util.UUID;
-
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-
-import de.ozgcloud.alfa.vorgang.ZustaendigeStelleTestFactory;
-
-public class UserProfileTestFactory {
-
-	public static final UserId EXTERNAL_ID = UserId.from(UUID.randomUUID().toString());
-	public static final UserId INTERNAL_ID = UserId.from(UUID.randomUUID().toString());
-	public static final UserId ID = INTERNAL_ID;
-	public static final String FIRSTNAME = "Vaneßa";
-	public static final String LASTNAME = "Täst";
-	public static final String FULLNAME = String.format("%s %s", FIRSTNAME, LASTNAME);
-	public static final String ROLE = "TEST_USER";
-	public static final GrantedAuthority AUTHORITY = new SimpleGrantedAuthority(ROLE);
-
-	public static final String SYSTEM_USER = "system_user_example";
-
-	public static UserProfile create() {
-		return createBuilder().build();
-	}
-
-	public static UserProfile.UserProfileBuilder createBuilder() {
-		return UserProfile.builder()
-				.id(ID)
-				.firstName(FIRSTNAME)
-				.lastName(LASTNAME)
-				.organisationseinheitId(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID)
-				.authorities(Collections.singleton(AUTHORITY));
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserRemoteServiceTest.java
deleted file mode 100644
index 8074182a6cb3e43a27e962badedf85697265a3ee..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserRemoteServiceTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.user.grpc.userprofile.UserProfileServiceGrpc.UserProfileServiceBlockingStub;
-import de.ozgcloud.user.userprofile.GrpcGetUserProfileRequest;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-
-class UserRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private UserRemoteService service;
-	@Mock
-	private UserProfileServiceBlockingStub serviceStub;
-	@Mock
-	private UserProfileMapper mapper;
-
-	@BeforeEach
-	void prepareStub() {
-		doReturn(serviceStub).when(service).getUserProfileServiceStub();
-	}
-
-	@DisplayName("Find by id")
-	@Nested
-	class TestFindById {
-
-		@Captor
-		private ArgumentCaptor<GrpcGetUserProfileRequest> requestCaptor;
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.getById(any())).thenReturn(GrpcUserProfileTestFactory.createGetUserProfileResponse());
-			when(mapper.mapFrom(any())).thenReturn(UserProfileTestFactory.create());
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(UserProfileTestFactory.ID);
-
-			verify(serviceStub).getById(requestCaptor.capture());
-			assertThat(requestCaptor.getValue().getUserId()).isEqualTo(UserProfileTestFactory.ID.toString());
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.getById(UserProfileTestFactory.ID);
-
-			verify(mapper).mapFrom(GrpcUserProfileTestFactory.create());
-		}
-
-		@Test
-		void shouldReturnValue() {
-			var userProfile = service.getById(UserProfileTestFactory.ID);
-
-			assertThat(userProfile).usingRecursiveComparison().isEqualTo(UserProfileTestFactory.create());
-		}
-	}
-
-	@DisplayName("Find by externalId")
-	@Nested
-	class TestFindByExternalId {
-		@Test
-		void shouldHandleNotFound() {
-			when(serviceStub.getByExternalId(any())).thenThrow(new StatusRuntimeException(Status.NOT_FOUND));
-
-			var result = service.getByExternalId(UserProfileTestFactory.EXTERNAL_ID);
-
-			assertThat(result).isEmpty();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserServiceTest.java
deleted file mode 100644
index a74a98b172e360e4bc45681dedea8efb99e697e9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/user/UserServiceTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.user;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import io.grpc.Metadata;
-import io.grpc.Status;
-import io.grpc.StatusRuntimeException;
-
-class UserServiceTest {
-
-	@InjectMocks
-	private UserService service;
-	@Mock
-	private UserRemoteService remoteService;
-
-	@DisplayName("Get by id")
-	@Nested
-	class TestGetById {
-
-		@Test
-		void shouldCallRemoteService() {
-			getById();
-
-			verify(remoteService).getById(UserProfileTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnNullOnNotFoundException() {
-			when(remoteService.getById(any())).thenThrow(new StatusRuntimeException(Status.NOT_FOUND));
-
-			var userProfile = getById();
-
-			assertThat(userProfile).isNull();
-		}
-
-		@SuppressWarnings("null")
-		@DisplayName("should throw unavailable exception if exception is other than not found")
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "NOT_FOUND" })
-		void shouldThrowServiceUnavailableException(Status.Code status) {
-			when(remoteService.getById(any())).thenThrow(new StatusRuntimeException(Status.fromCode(status), new Metadata()));
-
-			assertThatThrownBy(() -> getById()).isInstanceOf(UserManagerUnavailableException.class);
-		}
-
-		private UserProfile getById() {
-			return service.getById(UserProfileTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Get internalId")
-	@Nested
-	class TestGetInternalId {
-
-		@Test
-		void shouldCallRemoteService() {
-			when(remoteService.getByExternalId(any())).thenReturn(Optional.of(UserProfileTestFactory.create()));
-
-			getInternalId();
-
-			verify(remoteService).getByExternalId(UserProfileTestFactory.EXTERNAL_ID);
-		}
-
-		private Optional<UserId> getInternalId() {
-			return service.getInternalId(UserProfileTestFactory.EXTERNAL_ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadServiceTest.java
deleted file mode 100644
index d99563514593561d1d90c7ef96f61cf00c3e3109..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/zipdownload/ZipDownloadServiceTest.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.common.zipdownload;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockedConstruction;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.SneakyThrows;
-
-public class ZipDownloadServiceTest {
-
-	@Spy
-	@InjectMocks
-	private ZipDownloadService service;
-
-	@Mock
-	private BinaryFileService binaryFileService;
-
-	@Nested
-	class TestWrite {
-		private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-		private final List<OzgFile> ozgFiles = List.of(OzgFileTestFactory.create());
-		@Mock
-		private File zipFile;
-
-		@Test
-		void shouldCreateZipFile() {
-			callService();
-
-			verify(service).createZipFile(ozgFiles);
-		}
-
-		@Test
-		void shouldWriteZipFileContent() {
-			doReturn(zipFile).when(service).createZipFile(ozgFiles);
-			doNothing().when(service).writeZipFileContent(zipFile, outputStream);
-
-			callService();
-
-			verify(service).writeZipFileContent(zipFile, outputStream);
-		}
-
-		private void callService() {
-			service.write(ozgFiles, outputStream);
-		}
-	}
-
-	@Nested
-	class TestCreateZipFile {
-		private final OzgFile file1 = OzgFileTestFactory.createWithUniqueId();
-		private final OzgFile file2 = OzgFileTestFactory.createWithUniqueId();
-		private final List<OzgFile> ozgFiles = List.of(file1, file2);
-
-		private MockedConstruction<FileOutputStream> mockFileOutputStream;
-		private MockedConstruction<ZipOutputStream> mockZipOutputStream;
-		private File file;
-		private FileOutputStream fileOutputStream;
-
-		@BeforeEach
-		void setUpMocks() {
-			mockFileOutputStream = mockConstruction(FileOutputStream.class,
-					(mock, context) -> {
-						file = (File) context.arguments().get(0);
-					});
-			mockZipOutputStream = mockConstruction(ZipOutputStream.class,
-					(mock, context) -> {
-						fileOutputStream = (FileOutputStream) context.arguments().get(0);
-					});
-		}
-
-		@AfterEach
-		void cleanUp() {
-			mockFileOutputStream.close();
-			mockZipOutputStream.close();
-		}
-
-		@Test
-		void shouldCreateZipOutputStream() {
-			callService();
-
-			assertThat(mockZipOutputStream.constructed()).hasSize(1);
-			assertThat(fileOutputStream).isEqualTo(mockFileOutputStream.constructed().get(0));
-		}
-
-		@Test
-		void shouldAddOzgFilesToZip() {
-			callService();
-
-			verify(service).addOzgFileToZip(file1, mockZipOutputStream.constructed().get(0));
-			verify(service).addOzgFileToZip(file2, mockZipOutputStream.constructed().get(0));
-		}
-
-		@Test
-		void shouldReturnFile() {
-			var resultFile = callService();
-
-			assertThat(resultFile).isEqualTo(file);
-		}
-
-		@Test
-		void shouldThrowTechnicalException() {
-			doThrow(TechnicalException.class).when(service).addOzgFileToZip(any(), any());
-
-			assertThrows(TechnicalException.class, this::callService);
-		}
-
-		private File callService() {
-			return service.createZipFile(ozgFiles);
-		}
-	}
-
-	@Nested
-	class TestAddOzgFileToZip {
-		private final OzgFile ozgFile = OzgFileTestFactory.create();
-
-		@Mock
-		private ZipOutputStream zipOutputStream;
-
-		private MockedConstruction<ZipEntry> mockZipEntry;
-		private String entryName;
-
-		@BeforeEach
-		void setUpMocks() {
-			mockZipEntry = mockConstruction(ZipEntry.class,
-					(mock, context) -> {
-						entryName = (String) context.arguments().get(0);
-					});
-		}
-
-		@AfterEach
-		void cleanUp() {
-			mockZipEntry.close();
-		}
-
-		@Test
-		void shouldCreateZipEntry() {
-			callService();
-
-			assertThat(mockZipEntry.constructed()).hasSize(1);
-		}
-
-		@Test
-		void shouldSetZipEntryName() {
-			callService();
-
-			assertThat(entryName).isEqualTo(ozgFile.getName());
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldPutNextEntry() {
-			callService();
-
-			verify(zipOutputStream).putNextEntry(mockZipEntry.constructed().get(0));
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldWriteContent() {
-			callService();
-
-			verify(binaryFileService).writeFileContent(ozgFile.getId(), zipOutputStream);
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldCloseEntry() {
-			callService();
-
-			verify(zipOutputStream).closeEntry();
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldThrowTechnicalException() {
-			doThrow(IOException.class).when(zipOutputStream).putNextEntry(any());
-
-			assertThrows(TechnicalException.class, this::callService);
-		}
-
-		private void callService() {
-			service.addOzgFileToZip(ozgFile, zipOutputStream);
-		}
-	}
-
-	@Nested
-	class TestWriteZipFileContent {
-		private MockedConstruction<FileInputStream> mockFileInputStream;
-
-		private File argumentFile;
-		@Mock
-		private File file;
-
-		@Mock
-		private FileOutputStream fileOutputStream;
-
-		@AfterEach
-		void cleanUp() {
-			mockFileInputStream.close();
-		}
-
-		@Test
-		void shouldCreateFileInputStreamWithFileArgument() {
-			mockFileInputStream = mockConstruction(FileInputStream.class,
-					(mock, context) -> {
-						argumentFile = (File) context.arguments().get(0);
-					});
-
-			callService();
-
-			assertThat(mockFileInputStream.constructed()).hasSize(1);
-			assertThat(argumentFile).isEqualTo(file);
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldTransferToOutputStream() {
-			mockFileInputStream = mockConstruction(FileInputStream.class);
-
-			callService();
-
-			verify(mockFileInputStream.constructed().get(0)).transferTo(fileOutputStream);
-		}
-
-		@Test
-		void shouldThrowTechnicalException() {
-			mockFileInputStream = mockConstruction(FileInputStream.class,
-					(mock, context) -> {
-						when(mock.transferTo(fileOutputStream)).thenThrow(IOException.class);
-					});
-
-			assertThrows(TechnicalException.class, this::callService);
-		}
-
-		private void callService() {
-			service.writeZipFileContent(file, fileOutputStream);
-		}
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportRemoteServiceTest.java
deleted file mode 100644
index 7fceec25122e3a12cd7d85ff26b05ea071436658..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportRemoteServiceTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Iterator;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.archive.grpc.export.ExportServiceGrpc.ExportServiceBlockingStub;
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangRequest;
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
-
-class ExportRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private ExportRemoteService service;
-	@Mock
-	private ExportServiceBlockingStub exportServiceStub;
-
-	@Nested
-	class TestExportVorgang {
-
-		public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-		private static final ArgumentMatcher<GrpcExportVorgangRequest> HAS_VORGANG_ID = request -> request.getVorgangId().equals(VorgangHeaderTestFactory.ID);
-
-		@Mock
-		private Iterator<GrpcExportVorgangResponse> responseIterator;
-		private MockedStatic<StreamedExportedVorgangFile> mockedStaticExportedFile;
-
-		@BeforeEach
-		void init() {
-			mockedStaticExportedFile = mockStatic(StreamedExportedVorgangFile.class);
-			mockedStaticExportedFile.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
-			when(exportServiceStub.exportVorgang(any(GrpcExportVorgangRequest.class))).thenReturn(responseIterator);
-		}
-
-		@AfterEach
-		void cleanup() {
-			mockedStaticExportedFile.close();
-		}
-
-		@Test
-		void shouldExportVorgang() {
-			service.exportVorgang(VORGANG_ID);
-
-			verify(exportServiceStub).exportVorgang(argThat(HAS_VORGANG_ID));
-		}
-
-		@Test
-		void shouldReturnExportedVorgangFile() {
-			var exportedVorgangFile = service.exportVorgang(VORGANG_ID);
-
-			assertThat(exportedVorgangFile).isInstanceOf(StreamedExportedVorgangFile.class).extracting("responseIterator").isEqualTo(responseIterator);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangControllerTest.java
deleted file mode 100644
index 9dcbfaa1b949c077a24d281c7369ffd2353d912c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangControllerTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.io.OutputStream;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class ExportVorgangControllerTest {
-
-	@Spy
-	@InjectMocks
-	private ExportVorgangController controller;
-	@Mock
-	private ExportRemoteService exportRemoteService;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestExportVorgang {
-
-		public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-		public static final String EXPORTED_VORGANG_FILENAME = UUID.randomUUID().toString();
-
-		@Mock
-		private ExportedVorgangFile exportedVorgangFile;
-
-		@BeforeEach
-		void init() {
-			when(exportedVorgangFile.getFileName()).thenReturn(EXPORTED_VORGANG_FILENAME);
-			when(exportRemoteService.exportVorgang(VORGANG_ID)).thenReturn(exportedVorgangFile);
-		}
-
-		@Test
-		void shouldExportVorgang() throws Exception {
-			doRequest();
-
-			verify(exportRemoteService).exportVorgang(VORGANG_ID);
-		}
-
-		@Test
-		void shouldHaveContentDispositonHeader() throws Exception {
-			doRequest().andExpect(header().string(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + EXPORTED_VORGANG_FILENAME));
-		}
-
-		@Test
-		void shouldHaveContentTypeHeader() throws Exception {
-			doRequest().andExpect(header().string(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM.toString()));
-		}
-
-		@Test
-		void shouldWriteFileToOutputStream() throws Exception {
-			doRequest();
-
-			verify(exportedVorgangFile).writeToOutputStream(any(OutputStream.class));
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(asyncDispatch(
-							mockMvc.perform(get(ExportVorgangController.PATH + "/" + VorgangHeaderTestFactory.ID)
-									.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_OCTET_STREAM_VALUE)).andReturn()))
-					.andExpect(status().isOk());
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java
deleted file mode 100644
index 756653dc959487e3fcc444bc110304ca08477e4e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.UriTemplate;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class ExportVorgangProcessorTest {
-
-	@InjectMocks
-	private ExportVorgangProcessor processor;
-	@Mock
-	private DmsProperties dmsProperties;
-	@Mock
-	private VorgangController vorgangController;
-
-	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@Nested
-	class TestProcess {
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@DisplayName("Export link")
-		@Nested
-		class TestExportLink {
-
-			@Test
-			void shouldAddLink() {
-				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
-				givenVorgangIsEditable(vorgang);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo(ExportVorgangController.PATH + "/" + VorgangHeaderTestFactory.ID);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ABGESCHLOSSEN")
-			void shouldNotAddLinkWhenVorgangIsNotAbgeschlossen(VorgangStatus status) {
-				var vorgang = vorgangInStatus(status);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty();
-			}
-
-			@Test
-			void shouldNotAddLinkWhenVorgangIsNotEditable() {
-				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
-				givenVorgangIsNotEditable(vorgang);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestArchiveLink {
-
-			@Test
-			void shouldAddLink() {
-				givenDmsIsEnabled();
-				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
-				givenVorgangIsEditable(vorgang);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo(UriTemplate.of(CommandByRelationController.COMMAND_BY_RELATION_PATH)
-								.expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString());
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ABGESCHLOSSEN")
-			void shouldNotAddLinkWhenVorgangIsNotAbgeschlossen(VorgangStatus status) {
-				var vorgang = vorgangInStatus(status);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isEmpty();
-			}
-
-			@Test
-			void shouldNotAddLinkWhenDmsIsNotEnabled() {
-				givenDmsIsNotEnabled();
-				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isEmpty();
-			}
-
-			@Test
-			void shouldNotAddLinkWhenVorgangIsNotEditable() {
-				givenDmsIsEnabled();
-				var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
-				givenVorgangIsNotEditable(vorgang);
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(ExportVorgangProcessor.REL_ARCHIVE)).isEmpty();
-			}
-
-			void givenDmsIsEnabled() {
-				when(dmsProperties.isEnabled()).thenReturn(true);
-			}
-
-			void givenDmsIsNotEnabled() {
-				when(dmsProperties.isEnabled()).thenReturn(false);
-			}
-		}
-
-		void givenVorgangIsEditable(VorgangWithEingang vorgang) {
-			when(vorgangController.isEditable(vorgang)).thenReturn(true);
-		}
-
-		void givenVorgangIsNotEditable(VorgangWithEingang vorgang) {
-			when(vorgangController.isEditable(vorgang)).thenReturn(false);
-		}
-
-		private VorgangWithEingang vorgangInStatus(VorgangStatus status) {
-			return VorgangWithEingangTestFactory.createBuilder().status(status).build();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcExportVorgangResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcExportVorgangResponseTestFactory.java
deleted file mode 100644
index 7daa54d2d59df5c99390d29372bb44090136574c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcExportVorgangResponseTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
-import de.ozgcloud.archive.grpc.export.GrpcFile;
-
-class GrpcExportVorgangResponseTestFactory {
-
-	public static final GrpcFile VORGANG_FILE_WITH_NAME = GrpcFileTestFactory.createWithName();
-	public static final GrpcFile VORGANG_FILE_WITH_CONTENT = GrpcFileTestFactory.createWithContent();
-
-	public static GrpcExportVorgangResponse createWithName() {
-		return createBuilder().setVorgangFile(VORGANG_FILE_WITH_NAME).build();
-	}
-
-	public static GrpcExportVorgangResponse createWithContent() {
-		return createBuilder().setVorgangFile(VORGANG_FILE_WITH_CONTENT).build();
-	}
-
-	public static GrpcExportVorgangResponse.Builder createBuilder() {
-		return GrpcExportVorgangResponse.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcFileTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcFileTestFactory.java
deleted file mode 100644
index 1e006b43360a1a9ec8cd54f80baa3e8e9a6a587c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/GrpcFileTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import com.google.protobuf.ByteString;
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.archive.grpc.export.GrpcFile;
-
-class GrpcFileTestFactory {
-
-	public static final String FILE_NAME = LoremIpsum.getInstance().getName();
-	public static final ByteString FILE_CONTENT = ByteString.copyFromUtf8(LoremIpsum.getInstance().getWords(10));
-
-	public static GrpcFile createWithName() {
-		return createBuilder().setFileName(FILE_NAME).build();
-	}
-
-	public static GrpcFile createWithContent() {
-		return createBuilder().setFileContent(FILE_CONTENT).build();
-	}
-
-	public static GrpcFile.Builder createBuilder() {
-		return GrpcFile.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java
deleted file mode 100644
index d02b5d5c63593e94101655bc86787d7ae73e515c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/export/StreamedExportedVorgangFileTest.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.export;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Iterator;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-
-import com.google.protobuf.ByteString;
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.archive.grpc.export.GrpcExportVorgangResponse;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-class StreamedExportedVorgangFileTest {
-
-	@Mock
-	private Iterator<GrpcExportVorgangResponse> responseIterator;
-
-	@Nested
-	class TestContructor {
-
-		private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
-
-		@BeforeEach
-		void init() {
-			mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
-			mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
-		}
-
-		@AfterEach
-		void cleanup() {
-			mockedStatic.close();
-		}
-
-		@Test
-		void shouldGetFileNameFromResponseIterator() {
-			new StreamedExportedVorgangFile(responseIterator);
-
-			mockedStatic.verify(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator));
-		}
-
-		@Test
-		void shouldSetFileName() {
-			var exportedVorgangFile = new StreamedExportedVorgangFile(responseIterator);
-
-			assertThat(exportedVorgangFile.getFileName()).isEqualTo(GrpcFileTestFactory.FILE_NAME);
-		}
-	}
-
-	@Nested
-	class TestGetFileNameFrom {
-
-		@Nested
-		class OnEmptyResponse {
-
-			@BeforeEach
-			void init() {
-				when(responseIterator.hasNext()).thenReturn(false);
-			}
-
-			@Test
-			void shouldThrowException() {
-				assertThatExceptionOfType(TechnicalException.class).isThrownBy(TestGetFileNameFrom.this::callTestedMethod);
-			}
-		}
-
-		@Nested
-		class OnNotEmptyResponse {
-
-			@BeforeEach
-			void init() {
-				when(responseIterator.hasNext()).thenReturn(true);
-				when(responseIterator.next()).thenReturn(GrpcExportVorgangResponseTestFactory.createWithName());
-			}
-
-			@Test
-			void shouldCallHasNext() {
-				callTestedMethod();
-
-				verify(responseIterator).hasNext();
-			}
-
-			@Test
-			void shouldCallNextOnce() {
-				callTestedMethod();
-
-				verify(responseIterator, times(1)).next();
-			}
-
-			@Test
-			void shouldReturnFileName() {
-				var fileName = callTestedMethod();
-
-				assertThat(fileName).isEqualTo(GrpcFileTestFactory.FILE_NAME);
-			}
-		}
-
-		private String callTestedMethod() {
-			return StreamedExportedVorgangFile.getFileNameFrom(responseIterator);
-		}
-	}
-
-	@Nested
-	class TestWriteToOutputStream {
-
-		public static final ByteString FILE_CONTENT_1 = GrpcFileTestFactory.FILE_CONTENT;
-		public static final ByteString FILE_CONTENT_2 = ByteString.copyFromUtf8(LoremIpsum.getInstance().getWords(8));
-
-		@Mock
-		private OutputStream outputStream;
-
-		private MockedStatic<StreamedExportedVorgangFile> mockedStatic;
-
-		@BeforeEach
-		void init() {
-			mockedStatic = mockStatic(StreamedExportedVorgangFile.class);
-			mockedStatic.when(() -> StreamedExportedVorgangFile.getFileNameFrom(responseIterator)).thenReturn(GrpcFileTestFactory.FILE_NAME);
-			when(responseIterator.hasNext())
-					.thenReturn(true)
-					.thenReturn(true)
-					.thenReturn(false);
-			when(responseIterator.next())
-					.thenReturn(GrpcExportVorgangResponseTestFactory.createWithContent())
-					.thenReturn(GrpcExportVorgangResponseTestFactory.createBuilder().setVorgangFile(
-							GrpcFileTestFactory.createBuilder().setFileContent(FILE_CONTENT_2).build()
-					).build());
-		}
-
-		@AfterEach
-		void cleanup() {
-			mockedStatic.close();
-		}
-
-		@Test
-		void shouldWriteFileContentInOrder() throws IOException {
-			var orderVerifier = inOrder(outputStream);
-
-			new StreamedExportedVorgangFile(responseIterator).writeToOutputStream(outputStream);
-
-			orderVerifier.verify(outputStream).write(FILE_CONTENT_1.toByteArray());
-			orderVerifier.verify(outputStream).write(FILE_CONTENT_2.toByteArray());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintControllerTest.java
deleted file mode 100644
index 65db36cca744c8fcbba14522d3d3279e952dacad..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintControllerTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import lombok.SneakyThrows;
-
-class HintControllerTest {
-
-	@InjectMocks
-	private HintController controller;
-	@Mock
-	private HintService service;
-	@Mock
-	private HintModelAssembler modelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("GetAll")
-	@Nested
-	class TestGetAl {
-
-		private List<Hint> hints = List.of(HintTestFactory.create());
-
-		@BeforeEach
-		void mockService() {
-			when(service.findHints()).thenReturn(hints);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnStatusOk() {
-			callEndpoint().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() {
-			callEndpoint();
-
-			verify(service).findHints();
-		}
-
-		@Test
-		void shouldCallModelAssembler() {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(hints);
-		}
-
-		@SneakyThrows
-		private ResultActions callEndpoint() {
-			return mockMvc.perform(get(HintController.PATH));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintModelAssemblerTest.java
deleted file mode 100644
index b053f76bf7c092364e3b9f337b7a3eb4207bde2d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintModelAssemblerTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-class HintModelAssemblerTest {
-
-	private HintModelAssembler modelAssembler = new HintModelAssembler();
-
-	@DisplayName("To collectionModel")
-	@Nested
-	class TestToCollectionModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var collectionModel = modelAssembler.toCollectionModel(List.of(HintTestFactory.create()));
-
-			assertThat(collectionModel.getLink(IanaLinkRelations.SELF)).isPresent()
-					.get().extracting(Link::getHref).isEqualTo(HintController.PATH);
-		}
-	}
-
-	@DisplayName("To model")
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = modelAssembler.toModel(HintTestFactory.create());
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(String.format("%s/%s", HintController.PATH, HintTestFactory.CODE));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintRootResourceProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintRootResourceProcessorTest.java
deleted file mode 100644
index 5bc261f2eb1956a811d3d122e1096bae0d78dd76..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintRootResourceProcessorTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.RootTestFactory;
-
-class HintRootResourceProcessorTest {
-
-	@InjectMocks
-	private HintRootResourceProcessor processor;
-	@Mock
-	private HintService hintService;
-
-	@DisplayName("HintsLink")
-	@Nested
-	class TestHintsLink {
-
-		@Test
-		void shouldCallHintService() {
-			processor.process(EntityModel.of(RootTestFactory.create()));
-
-			verify(hintService).hasHints();
-		}
-
-		@Test
-		void shouldBePresentIfHintsExists() {
-			when(hintService.hasHints()).thenReturn(true);
-
-			var model = processor.process(EntityModel.of(RootTestFactory.create()));
-
-			assertThat(model.getLink(HintRootResourceProcessor.HINTS_RELATION)).get().extracting(Link::getHref).isEqualTo(HintController.PATH);
-		}
-
-		@Test
-		void shouldNotBePresentIfHintsExists() {
-			when(hintService.hasHints()).thenReturn(false);
-
-			var model = processor.process(EntityModel.of(RootTestFactory.create()));
-
-			assertThat(model.getLink(HintRootResourceProcessor.HINTS_RELATION)).isNotPresent();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintServiceTest.java
deleted file mode 100644
index 45fc769c70501ce53a26d4feffbdb728c7d23586..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintServiceTest.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.ZustaendigeStelleTestFactory;
-
-class HintServiceTest {
-
-	@Spy
-	@InjectMocks
-	private HintService service;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@DisplayName("Find hints")
-	@Nested
-	class TestFindHints {
-
-		@Test
-		void shouldCallGetHasUserNoOrganisationsEinheitIdHint() {
-			doReturn(Optional.empty()).when(service).getHasUserNoOrganisationsEinheitIdHint();
-
-			service.findHints();
-
-			verify(service).getHasUserNoOrganisationsEinheitIdHint();
-		}
-
-		@Test
-		void shouldReturnHintsIfPresent() {
-			var hint = HintTestFactory.create();
-			doReturn(Optional.of(hint)).when(service).getHasUserNoOrganisationsEinheitIdHint();
-
-			var hints = service.findHints();
-
-			assertThat(hints).containsExactly(hint);
-		}
-
-		@Test
-		void shouldReturnEmptyListIfPresent() {
-			doReturn(Optional.empty()).when(service).getHasUserNoOrganisationsEinheitIdHint();
-
-			var hints = service.findHints();
-
-			assertThat(hints).isEmpty();
-		}
-	}
-
-	@DisplayName("GetHasUserNoOrganisationsEinheitIdHint")
-	@Nested
-	class TestGetHasNoOrganisationsEinheitIdHint {
-
-		@Test
-		void shouldCallHasOrganisationsEinheitId() {
-			doReturn(Collections.emptyList()).when(service).getOrganisationsEinheitIds();
-
-			service.getHasUserNoOrganisationsEinheitIdHint();
-
-			verify(service).getOrganisationsEinheitIds();
-		}
-
-		@Test
-		void shouldCallIsMissingMinimumRoles() {
-			doReturn(Collections.emptyList()).when(service).getOrganisationsEinheitIds();
-
-			service.getHasUserNoOrganisationsEinheitIdHint();
-
-			verify(service).hasOrganisationsEinheitIdRequiredRole();
-		}
-
-		@Test
-		void shouldReturnHintIfConditionMatch() {
-			doReturn(Collections.emptyList()).when(service).getOrganisationsEinheitIds();
-			doReturn(true).when(service).hasOrganisationsEinheitIdRequiredRole();
-
-			var hint = service.getHasUserNoOrganisationsEinheitIdHint();
-
-			assertThat(hint).isPresent().get().extracting(Hint::getCode).isEqualTo(HintService.USER_NO_ORGANISATIONS_EINHEIT_ID_CODE);
-		}
-
-		@Test
-		void shouldReturnEmptyIsConditionNotMatched() {
-			doReturn(List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID)).when(service).getOrganisationsEinheitIds();
-
-			var hint = service.getHasUserNoOrganisationsEinheitIdHint();
-
-			assertThat(hint).isNotPresent();
-		}
-
-		@DisplayName("Has OrganisationsEinheitId")
-		@Nested
-		class TestHasOrganisationsEinheitId {
-
-			@BeforeEach
-			void mockUser() {
-				when(currentUserService.getUser()).thenReturn(UserProfileTestFactory.create());
-			}
-
-			@Test
-			void shouldGetUser() {
-				service.getOrganisationsEinheitIds();
-
-				verify(currentUserService).getUser();
-			}
-
-			@Test
-			void shouldReturnTrueIfIsNotEmpty() {
-				var hasOrganisationsEinheitId = service.getOrganisationsEinheitIds();
-
-				assertThat(hasOrganisationsEinheitId).isEqualTo(List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID));
-
-			}
-
-			@Test
-			void shouldReturnFalseIfIsEmpty() {
-				when(currentUserService.getUser()).thenReturn(UserProfileTestFactory.createBuilder().clearOrganisationseinheitIds().build());
-
-				var hasOrganisationsEinheitId = service.getOrganisationsEinheitIds();
-
-				assertThat(hasOrganisationsEinheitId).isEmpty();
-			}
-		}
-
-		@DisplayName("Has organisationsEinheitId required role")
-		@Nested
-		class TestHasOrganisationsEinheitIdRelatedRole {
-
-			@Test
-			void shouldCheckEinheitlicherAnsprechpartnerRole() {
-				service.hasOrganisationsEinheitIdRequiredRole();
-
-				verify(currentUserService).hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
-			}
-
-			@Test
-			void shouldCheckVerwaltungPoststelleRole() {
-				when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-
-				service.hasOrganisationsEinheitIdRequiredRole();
-
-				verify(currentUserService).hasRole(UserRole.VERWALTUNG_POSTSTELLE);
-			}
-
-			@Test
-			void shouldReturnFalseOnVerwaltungPoststelle() {
-				when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-				when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-
-				var hasRequiredRole = service.hasOrganisationsEinheitIdRequiredRole();
-
-				assertThat(hasRequiredRole).isFalse();
-			}
-
-			@Test
-			void shouldReturnFalseOnEinheitlicherAnsprechpartner() {
-				when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-
-				var hasRequiredRole = service.hasOrganisationsEinheitIdRequiredRole();
-
-				assertThat(hasRequiredRole).isFalse();
-			}
-
-			@Test
-			void shouldReturnFalseOnOtherRole() {
-				when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-				when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-
-				var hasRequiredRole = service.hasOrganisationsEinheitIdRequiredRole();
-
-				assertThat(hasRequiredRole).isTrue();
-			}
-		}
-
-		@DisplayName("Has hints")
-		@Nested
-		class TestHasHints {
-
-			@Test
-			void shouldCallFindHints() {
-				doReturn(Collections.emptyList()).when(service).findHints();
-
-				service.hasHints();
-
-				verify(service).findHints();
-			}
-
-			@Test
-			void shouldReturnFalseIfNoHintsFound() {
-				doReturn(List.of(HintTestFactory.create())).when(service).findHints();
-
-				var hasHints = service.hasHints();
-
-				assertThat(hasHints).isTrue();
-			}
-
-			@Test
-			void shouldReturnTrueIfHintsFound() {
-				doReturn(Collections.emptyList()).when(service).findHints();
-
-				var hasHints = service.hasHints();
-
-				assertThat(hasHints).isFalse();
-			}
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintTestFactory.java
deleted file mode 100644
index e90d1d75f9c290b7e415822bd16c8c6d802d0dcf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/hint/HintTestFactory.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.hint;
-
-public class HintTestFactory {
-
-	public static String CODE = "random.test.code";
-
-	public static Hint create() {
-		return createBuilder().build();
-	}
-
-	public static Hint.HintBuilder createBuilder() {
-		return Hint.builder()
-				.code(CODE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java
deleted file mode 100644
index 31633e4f9addef894257611924b46f28cc0baa76..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AktenzeichenChangeHistoryBuilderTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static de.ozgcloud.alfa.historie.AktenzeichenChangeHistoryBuilder.*;
-import static de.ozgcloud.alfa.historie.ChangeHistoryBuilderTest.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-
-public class AktenzeichenChangeHistoryBuilderTest {
-
-	private static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString();
-
-	private final Command previousCommand = commandFinishedAt(LocalDateTime.of(2023, 5, 1, 12, 0));
-	private final Command command = commandFinishedAt(LocalDateTime.of(2023, 6, 1, 12, 0));
-	private final List<Command> commands = List.of(previousCommand, command);
-
-	@Spy
-	private AktenzeichenChangeHistoryBuilder builder = AktenzeichenChangeHistoryBuilder.builder()
-			.withCommands(commands)
-			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-
-	@Nested
-	class TestIsRelevant {
-
-		@Test
-		void shouldReturnTrue() {
-			var command = CommandTestFactory.createBuilder()
-					.order(CommandOrder.SET_AKTENZEICHEN.name())
-					.build();
-
-			var result = builder.isRelevant(command);
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var command = CommandTestFactory.createBuilder()
-					.order(CommandOrder.VORGANG_WIEDEREROEFFNEN.name())
-					.build();
-
-			var result = builder.isRelevant(command);
-
-			assertThat(result).isFalse();
-		}
-	}
-
-	@Nested
-	class TestToCommandWithChangeValues {
-
-		private static final String EXPECTED_AKTENZEICHEN_BEFORE_CHANGE = LoremIpsum.getInstance().getWords(2);
-		private static final String EXPECTED_AKTENZEICHEN_AFTER_CHANGE = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@BeforeEach
-		void init() {
-			when(builder.getAktenzeichenBeforeChange(commandWithPrevious)).thenReturn(EXPECTED_AKTENZEICHEN_BEFORE_CHANGE);
-			when(builder.getAktenzeichenAfterChange(commandWithPrevious)).thenReturn(EXPECTED_AKTENZEICHEN_AFTER_CHANGE);
-		}
-
-		@Test
-		void shouldSetCommand() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.command()).isEqualTo(command);
-		}
-
-		@Test
-		void shouldSetValueBeforeChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueBeforeChange()).isEqualTo(EXPECTED_AKTENZEICHEN_BEFORE_CHANGE);
-		}
-
-		@Test
-		void shouldSetValueAfterChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueAfterChange()).isEqualTo(EXPECTED_AKTENZEICHEN_AFTER_CHANGE);
-		}
-
-		private ChangeHistoryBuilder.CommandWithChangeValues callBuilder() {
-			return builder.toCommandWithChangeValues(commandWithPrevious);
-		}
-	}
-
-	@Nested
-	class TestGetAktenzeichenBeforeChange {
-
-		private final CommandWithPrevious commandWithoutPrevious = CommandWithPreviousTestFactory.createBuilder().command(previousCommand)
-				.previous(null).build();
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@Test
-		void shouldReturnEmptyIfPreviousIsNull() {
-			var aktenzeichen = builder.getAktenzeichenBeforeChange(commandWithoutPrevious);
-
-			assertThat(aktenzeichen).isEmpty();
-		}
-
-		@Test
-		void shouldGetAktenzeichenFromPreviousCommand() {
-			var expectedValue = LoremIpsum.getInstance().getWords(2);
-			when(builder.getAktenzeichen(previousCommand)).thenReturn(expectedValue);
-
-			var aktenzeichen = builder.getAktenzeichenBeforeChange(commandWithPrevious);
-
-			assertThat(aktenzeichen).isEqualTo(expectedValue);
-		}
-	}
-
-	@Nested
-	class TestGetAktenzeichenAfterChange {
-
-		private static final String EXPECTED_AKTENZEICHEN = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@BeforeEach
-		void init() {
-			doReturn(EXPECTED_AKTENZEICHEN).when(builder).getAktenzeichen(command);
-		}
-
-		@Test
-		void shouldGetAktenzeichenFromCommand() {
-			builder.getAktenzeichenAfterChange(commandWithPrevious);
-
-			verify(builder).getAktenzeichen(command);
-		}
-
-		@Test
-		void shouldReturnAktenzeichen() {
-			var result = builder.getAktenzeichenAfterChange(commandWithPrevious);
-
-			assertThat(result).isEqualTo(EXPECTED_AKTENZEICHEN);
-		}
-	}
-
-	@Nested
-	class TestGetAktenzeichen {
-
-		private static final String AKTENZEICHEN = LoremIpsum.getInstance().getWords(1);
-
-		@BeforeEach
-		void init() {
-			when(builder.getValueFromCommandBody(BODY_PROPERTY_AKTENZEICHEN, previousCommand)).thenReturn(AKTENZEICHEN);
-		}
-
-		@Test
-		void shouldGetValueFromCommandBody() {
-			builder.getAktenzeichen(previousCommand);
-
-			verify(builder).getValueFromCommandBody(BODY_PROPERTY_AKTENZEICHEN, previousCommand);
-		}
-
-		@Test
-		void shouldReturnValueFromCommandBody() {
-			var value = builder.getAktenzeichen(previousCommand);
-
-			assertThat(value).isEqualTo(AKTENZEICHEN);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java
deleted file mode 100644
index 6202fbd75b598382e5fd075607672f49c938285b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/AssignedUserChangeHistoryBuilderTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static de.ozgcloud.alfa.historie.AssignedUserChangeHistoryBuilder.*;
-import static de.ozgcloud.alfa.historie.ChangeHistoryBuilderTest.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class AssignedUserChangeHistoryBuilderTest {
-
-	private static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString();
-
-	private final Command previousCommand = commandFinishedAt(LocalDateTime.of(2023, 5, 1, 12, 0));
-	private final Command command = commandFinishedAt(LocalDateTime.of(2023, 6, 1, 12, 0));
-	private final List<Command> commands = List.of(previousCommand, command);
-
-	@Mock
-	private UserProfileCache userProfileCache;
-
-	@Spy
-	@InjectMocks
-	private AssignedUserChangeHistoryBuilder builder = AssignedUserChangeHistoryBuilder.builder()
-			.withCommands(commands)
-			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-
-	@Nested
-	class TestIsRelevant {
-
-		@Test
-		void shouldReturnTrue() {
-			var command = CommandTestFactory.createBuilder()
-					.order(CommandOrder.ASSIGN_USER.name())
-					.build();
-
-			var result = builder.isRelevant(command);
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalse() {
-			var command = CommandTestFactory.createBuilder()
-					.order(CommandOrder.VORGANG_WIEDEREROEFFNEN.name())
-					.build();
-
-			var result = builder.isRelevant(command);
-
-			assertThat(result).isFalse();
-		}
-	}
-
-	@Nested
-	class TestToCommandWithChangeValues {
-
-		private static final String ASSIGNED_USER_BEFORE_CHANGE = LoremIpsum.getInstance().getWords(2);
-		private static final String ASSIGNED_USER_AFTER_CHANGE = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@BeforeEach
-		void init() {
-			doReturn(ASSIGNED_USER_BEFORE_CHANGE).when(builder).getAssignedUserBeforeChange(commandWithPrevious);
-			doReturn(ASSIGNED_USER_AFTER_CHANGE).when(builder).getAssignedUserAfterChange(commandWithPrevious);
-		}
-
-		@Test
-		void shouldSetCommand() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.command()).isEqualTo(command);
-		}
-
-		@Test
-		void shouldSetValueBeforeChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueBeforeChange()).isEqualTo(ASSIGNED_USER_BEFORE_CHANGE);
-		}
-
-		@Test
-		void shouldSetValueAfterChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueAfterChange()).isEqualTo(ASSIGNED_USER_AFTER_CHANGE);
-		}
-
-		private ChangeHistoryBuilder.CommandWithChangeValues callBuilder() {
-			return builder.toCommandWithChangeValues(commandWithPrevious);
-		}
-	}
-
-	@Nested
-	class TestGetAssignedUserBeforeChange {
-
-		private static final String EXPECTED_ASSIGNED_USER = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithoutPrevious = CommandWithPreviousTestFactory.createBuilder().command(previousCommand)
-				.previous(null).build();
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@Test
-		void shouldReturnEmptyStringIfPreviousIsNull() {
-			var assignedUser = builder.getAssignedUserBeforeChange(commandWithoutPrevious);
-
-			assertThat(assignedUser).isEmpty();
-		}
-
-		@Test
-		void shouldGetAssignedUserFromPreviousCommand() {
-			givenAssignedUserFromPreviousCommand();
-
-			callBuilder();
-
-			verify(builder).getAssignedUserFullNameFromCommand(previousCommand);
-		}
-
-		@Test
-		void shouldReturnAssignedUserRetrievedFromPreviousCommand() {
-			givenAssignedUserFromPreviousCommand();
-
-			var assignedUser = callBuilder();
-
-			assertThat(assignedUser).isEqualTo(EXPECTED_ASSIGNED_USER);
-		}
-
-		private void givenAssignedUserFromPreviousCommand() {
-			doReturn(EXPECTED_ASSIGNED_USER).when(builder).getAssignedUserFullNameFromCommand(previousCommand);
-		}
-
-		private String callBuilder() {
-			return builder.getAssignedUserBeforeChange(commandWithPrevious);
-		}
-	}
-
-	@Nested
-	class TestGetAssignedUserAfterChange {
-
-		private static final String EXPECTED_ASSIGNED_USER = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@Test
-		void shouldGetAssignedUserFromCommand() {
-			givenAssignedUserFromCurrentCommand();
-
-			callBuilder();
-
-			verify(builder).getAssignedUserFullNameFromCommand(command);
-		}
-
-		@Test
-		void shouldReturnAssignedUserRetrievedFromCommand() {
-			givenAssignedUserFromCurrentCommand();
-
-			var assignedUser = callBuilder();
-
-			assertThat(assignedUser).isEqualTo(EXPECTED_ASSIGNED_USER);
-		}
-
-		private void givenAssignedUserFromCurrentCommand() {
-			doReturn(EXPECTED_ASSIGNED_USER).when(builder).getAssignedUserFullNameFromCommand(command);
-		}
-
-		private String callBuilder() {
-			return builder.getAssignedUserAfterChange(commandWithPrevious);
-		}
-	}
-
-	@Nested
-	class TestGetAssignedUserFullNameFromCommand {
-
-		private static final UserId USER_ID = UserId.from(UUID.randomUUID());
-		private static final UserProfile USER_PROFILE = UserProfileTestFactory.create();
-		private final Command command = previousCommand;
-
-		@BeforeEach
-		void init() {
-			when(builder.getValueFromCommandBody(BODY_PROPERTY_ASSIGNED_USER, previousCommand)).thenReturn(USER_ID.toString());
-			when(userProfileCache.getUserProfile(USER_ID)).thenReturn(USER_PROFILE);
-		}
-
-		@Test
-		void shouldGetUserIdFromCommand() {
-			callBuilder();
-
-			verify(builder).getValueFromCommandBody(BODY_PROPERTY_ASSIGNED_USER, command);
-		}
-
-		@Test
-		void shouldGetUserProfileForUserId() {
-			callBuilder();
-
-			verify(userProfileCache).getUserProfile(USER_ID);
-		}
-
-		@Test
-		void shouldReturnUserFullName() {
-			var assignedUser = callBuilder();
-
-			assertThat(assignedUser).isEqualTo(UserProfileTestFactory.FULLNAME);
-		}
-
-		private String callBuilder() {
-			return builder.getAssignedUserFullNameFromCommand(command);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java
deleted file mode 100644
index 41dbd9daa892b5f82555b700afdeed0c1f8071ce..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/ChangeHistoryBuilderTest.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.NullAndEmptySource;
-import org.mockito.Mockito;
-import org.mockito.Spy;
-import org.testcontainers.shaded.org.apache.commons.lang3.NotImplementedException;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.historie.ChangeHistoryBuilder.CommandWithChangeValues;
-
-public class ChangeHistoryBuilderTest {
-
-	private static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString();
-
-	private final Command previousCommand = commandFinishedAt(LocalDateTime.of(2023, 5, 1, 12, 0));
-	private final Command command = commandFinishedAt(LocalDateTime.of(2023, 6, 1, 12, 0));
-	private final List<Command> commands = List.of(previousCommand, command);
-
-	@Spy
-	private TestChangeHistoryBuilder builder = new TestChangeHistoryBuilder()
-			.withCommands(commands)
-			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-
-	@Nested
-	class TestBuild {
-
-		private final CommandWithChangeValues previousCommandWithChangeValues = new CommandWithChangeValues(
-				previousCommand, "a", "b");
-		private final CommandWithChangeValues commandWithChangeValues = new CommandWithChangeValues(
-				command, "b", "c");
-		private final List<CommandWithChangeValues> commandsWithChangeValues = List.of(previousCommandWithChangeValues,
-				commandWithChangeValues);
-
-		@Test
-		void shouldCallInOrder() {
-			var orderVerifier = Mockito.inOrder(builder);
-			doReturn(commands.stream()).when(builder).retrieveRelevantCommands();
-			doReturn(commandsWithChangeValues.stream()).when(builder).toCommandsWithChangeValues(notNull());
-
-			builder.build().toList();
-
-			orderVerifier.verify(builder).retrieveRelevantCommands();
-			orderVerifier.verify(builder).inChronologicalOrder(notNull());
-			orderVerifier.verify(builder).addPreviousCommand(notNull());
-			orderVerifier.verify(builder).toCommandsWithChangeValues(notNull());
-			orderVerifier.verify(builder).toVorgangChanges(notNull());
-		}
-	}
-
-	@Nested
-	class TestRetrieveRelevantCommands {
-
-		@BeforeEach
-		void init() {
-			doReturn(false).when(builder).isRelevant(previousCommand);
-			doReturn(true).when(builder).isRelevant(command);
-		}
-
-		@Test
-		void shouldCallIsRelevant() {
-			builder.retrieveRelevantCommands().toList();
-
-			verify(builder).isRelevant(previousCommand);
-			verify(builder).isRelevant(command);
-		}
-
-		@Test
-		void shouldFilterOutIrrelevantCommands() {
-			var result = builder.retrieveRelevantCommands().toList();
-
-			assertThat(result).containsExactly(command);
-		}
-	}
-
-	@Nested
-	class TestInChronologicalOrder {
-
-		private final Stream<Command> unorderedCommands = Stream.of(command, previousCommand);
-
-		@Test
-		void shouldSortAscendingByFinishedAt() {
-			var orderedCommands = builder.inChronologicalOrder(unorderedCommands);
-
-			assertThat(orderedCommands).containsExactly(previousCommand, command);
-		}
-	}
-
-	@Nested
-	class TestAddPreviousCommand {
-
-		@Test
-		void shouldSetPreviousOfFirstCommandToNull() {
-			var commands = Stream.of(previousCommand);
-
-			var commandsWithPrevious = builder.addPreviousCommand(commands);
-
-			assertThat(commandsWithPrevious).first().extracting("previous").isNull();
-		}
-
-		@Test
-		void shouldSetPreviousOfSubsequentCommand() {
-			var commands = Stream.of(previousCommand, command);
-
-			var commandsWithPrevious = builder.addPreviousCommand(commands);
-
-			assertThat(commandsWithPrevious).element(1).extracting("previous").isEqualTo(previousCommand);
-		}
-	}
-
-	@Nested
-	class TestToCommandsWithChangeValues {
-
-		private final CommandWithPrevious commandWithoutPrevious = CommandWithPreviousTestFactory.createBuilder().command(previousCommand)
-				.previous(null).build();
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-		private final List<CommandWithPrevious> commandsWithPrevious = List.of(commandWithoutPrevious, commandWithPrevious);
-
-		private final ChangeHistoryBuilder.CommandWithChangeValues previousCommandWithChangeValues = new ChangeHistoryBuilder.CommandWithChangeValues(
-				previousCommand, "a", "b");
-		private final ChangeHistoryBuilder.CommandWithChangeValues commandWithChangeValues = new ChangeHistoryBuilder.CommandWithChangeValues(
-				command, "b", "c");
-
-		@BeforeEach
-		void init() {
-			doReturn(previousCommandWithChangeValues).when(builder).toCommandWithChangeValues(commandWithoutPrevious);
-			doReturn(commandWithChangeValues).when(builder).toCommandWithChangeValues(commandWithPrevious);
-		}
-
-		@Test
-		void shouldMapToCommandWithChangeValues() {
-			callBuilder().toList();
-
-			verify(builder).toCommandWithChangeValues(commandWithoutPrevious);
-			verify(builder).toCommandWithChangeValues(commandWithPrevious);
-		}
-
-		@Test
-		void shouldReturnMappedCommandWithChangeValues() {
-			var historieEntries = callBuilder().toList();
-
-			assertThat(historieEntries).containsExactly(previousCommandWithChangeValues, commandWithChangeValues);
-		}
-
-		private Stream<CommandWithChangeValues> callBuilder() {
-			return builder.toCommandsWithChangeValues(commandsWithPrevious.stream());
-		}
-	}
-
-	@Nested
-	class TestToVorgangChange {
-
-		private final ChangeHistoryBuilder.CommandWithChangeValues commandWithChangeValues = new ChangeHistoryBuilder.CommandWithChangeValues(
-				previousCommand, "a", "b");
-
-		@Test
-		void shouldSeValueBeforeChange() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getValueBeforeChange()).isNotBlank().isEqualTo(commandWithChangeValues.valueBeforeChange());
-		}
-
-		@Test
-		void shouldSeValueAfterChange() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getValueAfterChange()).isNotBlank().isEqualTo(commandWithChangeValues.valueAfterChange());
-		}
-
-		@Test
-		void shouldSetAuthorFullName() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getAuthorFullName()).isEqualTo(UserProfileTestFactory.FULLNAME);
-		}
-
-		@Test
-		void shouldSetFinishedAt() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getFinishedAt()).isNotNull().isEqualTo(previousCommand.getFinishedAt());
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getOrder()).isNotNull().isEqualTo(previousCommand.getOrder());
-		}
-
-		@Test
-		void shouldSetOrganisationseinheitenID() {
-			var vorgangChange = callBuilder();
-
-			assertThat(vorgangChange.getOrganisationseinheitenID()).isEqualTo(ORGANISATIONSEINHEITEN_ID);
-		}
-
-		private VorgangChange callBuilder() {
-			return builder.toVorgangChange(commandWithChangeValues);
-		}
-	}
-
-	@Nested
-	class TestGetValueFromCommandBody {
-
-		private static final String PROPERTY_NAME = LoremIpsum.getInstance().getWords(1);
-
-		@ParameterizedTest
-		@NullAndEmptySource
-		void shouldReturnEmptyIfBodyIsNullOrEmpty(Map<String, ?> body) {
-			var command = previousCommand.toBuilder().body(body).build();
-
-			var value = builder.getValueFromCommandBody(PROPERTY_NAME, command);
-
-			assertThat(value).isEmpty();
-		}
-
-		@Test
-		void shouldReturnEmptyIfPropertyIsNotPresentInBody() {
-			var command = previousCommand.toBuilder().body(Map.of("a", "b")).build();
-
-			var value = builder.getValueFromCommandBody(PROPERTY_NAME, command);
-
-			assertThat(value).isEmpty();
-		}
-
-		@Test
-		void shouldReturnValueFromBody() {
-			var expectedValue = LoremIpsum.getInstance().getWords(2);
-			var command = previousCommand.toBuilder().body(Map.of(PROPERTY_NAME, expectedValue)).build();
-
-			var value = builder.getValueFromCommandBody(PROPERTY_NAME, command);
-
-			assertThat(value).isEqualTo(expectedValue);
-		}
-	}
-
-	static Command commandFinishedAt(LocalDateTime finishedAt) {
-		return CommandTestFactory.createBuilder()
-				.finishedAt(ZonedDateTime.of(finishedAt, ZoneId.of("UTC")))
-				.build();
-	}
-
-	private static class TestChangeHistoryBuilder extends ChangeHistoryBuilder<TestChangeHistoryBuilder> {
-
-		@Override
-		boolean isRelevant(Command command) {
-			throw new NotImplementedException();
-		}
-
-		@Override
-		CommandWithChangeValues toCommandWithChangeValues(CommandWithPrevious commandWithPrevious) {
-			throw new NotImplementedException();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/CommandWithPreviousTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/CommandWithPreviousTestFactory.java
deleted file mode 100644
index 62e8bb35496025989832f015c25ebcb016a69395..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/CommandWithPreviousTestFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.historie.CommandWithPrevious.CommandWithPreviousBuilder;
-
-public class CommandWithPreviousTestFactory {
-
-	public static final Command COMMAND = CommandTestFactory.create();
-	public static final Command PREVIOUS_COMMAND = CommandTestFactory.create();
-
-	public static CommandWithPrevious create() {
-		return createBuilder().build();
-	}
-
-	public static CommandWithPreviousBuilder createBuilder() {
-		return new CommandWithPreviousBuilder()
-				.command(COMMAND)
-				.previous(PREVIOUS_COMMAND);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieCommandHandlerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieCommandHandlerTest.java
deleted file mode 100644
index 1ef92ad05e6ac8dba3008de06a9ba844004f4c98..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieCommandHandlerTest.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.CsvSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandStatus;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import de.ozgcloud.alfa.postfach.PostfachMail;
-import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
-
-class HistorieCommandHandlerTest {
-
-	@Spy
-	@InjectMocks
-	private HistorieCommandHandler handler;
-
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@Mock
-	private CommandService commandService;
-
-	@DisplayName("Is historie command")
-	@Nested
-	class TestIsHistorieCommand {
-
-		@Test
-		void shouldReturnTrueIfNoItemNameExists() {
-			var result = handler
-					.isHistorieCommand(Command.builder().order(CommandOrder.CREATE_ATTACHED_ITEM.name()).body(Collections.emptyMap()).build());
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldCallIsLoeschAnforderungZuruecknehmenRevoked() {
-			var command = CommandTestFactory.create();
-
-			handler.isHistorieCommand(command);
-
-			verify(handler).isLoeschAnforderungZuruecknehmenRevoked(command);
-		}
-
-		@Test
-		void shouldReturnFalseOnLoeschAnforderungZuruecknehmenRevoked() {
-			doReturn(true).when(handler).isLoeschAnforderungZuruecknehmenRevoked(any());
-
-			var result = handler.isHistorieCommand(CommandTestFactory.create());
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnDeleteVorgangAttachedItem() {
-			var result = handler.isHistorieCommand(CommandTestFactory.createBuilder().order(CommandOrder.DELETE_ATTACHED_ITEM.name()).build());
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldCallIsDeleteVorgangAttachedItem() {
-			var command = CommandTestFactory.create();
-
-			handler.isHistorieCommand(command);
-
-			verify(handler).isDeleteVorgangAttachedItem(command);
-		}
-	}
-
-	@DisplayName("postfach nachricht verification")
-	@Nested
-	class TestIsOutgoingPostfachNachrichtenByOzgCloudNachrichtenManager {
-
-		private final Command matchingCommand = CommandTestFactory.createBuilder()
-				.order(CommandOrder.CREATE_ATTACHED_ITEM.name())
-				.body(Map.of("item", Map.of(HistorieCommandHandler.DIRECTION, HistorieCommandHandler.DIRECTION_OUTGOING),
-						HistorieCommandHandler.CLIENT, HistorieCommandHandler.OZGCLOUD_NACHRICHTEN_MANAGER))
-				.build();
-
-		@DisplayName("should return true if the command is CREATED_ATTACHED_ITEM order outgoing by mailserice")
-		@Test
-		void shouldReturnTrue() {
-			var result = handler.isOutgoingPostfachNachrichtByOzgCloudNachrichtenManager(matchingCommand);
-
-			assertThat(result).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseOnIncoming() {
-			var nonMatchingCommand = matchingCommand.toBuilder()
-					.body(Map.of("item", Map.of(HistorieCommandHandler.DIRECTION, HistorieCommandHandler.DIRECTION_INCOMMING),
-							HistorieCommandHandler.CLIENT, HistorieCommandHandler.OZGCLOUD_NACHRICHTEN_MANAGER))
-					.build();
-
-			var result = handler.isOutgoingPostfachNachrichtByOzgCloudNachrichtenManager(nonMatchingCommand);
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnOtherClient() {
-			var nonMatchingCommand = matchingCommand.toBuilder()
-					.body(Map.of("item", Map.of(HistorieCommandHandler.DIRECTION, HistorieCommandHandler.DIRECTION_OUTGOING),
-							HistorieCommandHandler.CLIENT, "Alfa"))
-					.build();
-
-			var result = handler.isOutgoingPostfachNachrichtByOzgCloudNachrichtenManager(nonMatchingCommand);
-
-			assertThat(result).isFalse();
-		}
-	}
-
-	@Nested
-	class TestIsLoscheAnforderungVorgangAttachedItem {
-
-		@Test
-		void shouldReturnFalse() {
-			when(vorgangAttachedItemService.isLoeschAnforderung(VorgangAttachedItemTestFactory.ITEM_NAME)).thenReturn(false);
-
-			var result = handler.isCreateLoeschAnforderungVorgangAttachedItem(Command.builder().order(CommandOrder.CREATE_ATTACHED_ITEM.name())
-					.body(Map.of(
-							VorgangAttachedItem.FIELD_ITEM_NAME,
-							VorgangAttachedItemTestFactory.ITEM_NAME))
-					.build());
-
-			assertThat(result).isFalse();
-		}
-
-		@Test
-		void shouldReturnTrue() {
-			when(vorgangAttachedItemService.isLoeschAnforderung(VorgangAttachedItemTestFactory.ITEM_NAME)).thenReturn(true);
-
-			var result = handler.isCreateLoeschAnforderungVorgangAttachedItem(Command.builder().order(CommandOrder.CREATE_ATTACHED_ITEM.name())
-					.body(Map.of(
-							VorgangAttachedItem.FIELD_ITEM_NAME,
-							VorgangAttachedItemTestFactory.ITEM_NAME))
-					.build());
-
-			assertThat(result).isTrue();
-		}
-	}
-
-	@DisplayName("Is loesch anforderung zuruecknehmen revoked")
-	@Nested
-	class TestIsLoeschAnforderungZuruecknehmenRevoked {
-
-		@DisplayName("on matchin order")
-		@Nested
-		class TestOnMatchingOrder {
-
-			private final Command loeschAnforderungZuruecknehmen = CommandTestFactory.createBuilder()
-					.order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name())
-					.body(Map.of(DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, CommandTestFactory.ID))
-					.build();
-
-			@Test
-			void shouldCallCommandService() {
-				when(commandService.getById(anyString())).thenReturn(CommandTestFactory.create());
-
-				handler.isLoeschAnforderungZuruecknehmenRevoked(loeschAnforderungZuruecknehmen);
-
-				verify(commandService).getById(CommandTestFactory.ID);
-			}
-
-			@Test
-			void shouldReturnTrueOnRevokedStatus() {
-				var revokedCommand = loeschAnforderungZuruecknehmen.toBuilder().status(CommandStatus.REVOKED).build();
-				when(commandService.getById(anyString())).thenReturn(revokedCommand);
-
-				var isRevoked = handler.isLoeschAnforderungZuruecknehmenRevoked(loeschAnforderungZuruecknehmen);
-
-				assertThat(isRevoked).isTrue();
-			}
-
-			@Test
-			void shouldReturnFalseOnOtherStatus() {
-				var revokedCommand = loeschAnforderungZuruecknehmen.toBuilder().status(CommandStatus.FINISHED).build();
-				when(commandService.getById(anyString())).thenReturn(revokedCommand);
-
-				var isRevoked = handler.isLoeschAnforderungZuruecknehmenRevoked(loeschAnforderungZuruecknehmen);
-
-				assertThat(isRevoked).isFalse();
-			}
-		}
-
-		@Test
-		void shouldReturnFalseOnNonMatchingOrder() {
-			var isRevoked = handler.isLoeschAnforderungZuruecknehmenRevoked(CommandTestFactory.create());
-
-			assertThat(isRevoked).isFalse();
-		}
-	}
-
-	@DisplayName("translate order")
-	@Nested
-	class TestTranslateOrders {
-
-		@ParameterizedTest
-		@CsvSource(value = { "CREATE_KOMMENTAR;Kommentar", "CREATE_WIEDERVORLAGE;Wiedervorlage" }, delimiter = ';')
-		void shouldTranslateToCreateOrder(String target, String itemName) {
-			var command = handler.translateOrder(createCommand(itemName, CommandOrder.CREATE_ATTACHED_ITEM));
-
-			assertThat(command.getOrder()).isEqualTo(target);
-		}
-
-		@ParameterizedTest
-		@CsvSource(value = { "EDIT_KOMMENTAR;Kommentar", "EDIT_WIEDERVORLAGE;Wiedervorlage" }, delimiter = ';')
-		void shouldTranslateToEditOrder(String target, String itemName) {
-			var command = handler.translateOrder(createCommand(itemName, CommandOrder.UPDATE_ATTACHED_ITEM));
-
-			assertThat(command.getOrder()).isEqualTo(target);
-		}
-
-		@ParameterizedTest
-		@CsvSource(value = { "WIEDERVORLAGE_ERLEDIGEN;true", "WIEDERVORLAGE_WIEDEREROEFFNEN;false" }, delimiter = ';')
-		void shouldTranslateToWiedervolageErledigenOrWiedervolageWiedereroeffnen(String target, String doneValue) {
-			var command = handler.translateOrder(
-					createCommand(Wiedervorlage.class.getSimpleName(), CommandOrder.PATCH_ATTACHED_ITEM, Boolean.valueOf(doneValue)));
-
-			assertThat(command.getOrder()).isEqualTo(target);
-		}
-
-		@ParameterizedTest
-		@CsvSource(value = { "RECEIVE_POSTFACH_NACHRICHT;IN" }, delimiter = ';')
-		void shouldTranslateToReveivedIncomminNachricht(String target, String direction) {
-			var command = handler.translateOrder(
-					createCommand("OzgCloud_NachrichtenManager", CommandOrder.CREATE_ATTACHED_ITEM, direction));
-
-			assertThat(command.getOrder()).isEqualTo(target);
-		}
-
-		@Test
-		void shouldHandleMissingDone() {
-			var command = handler.translateOrder(createCommand(Wiedervorlage.class.getSimpleName(), CommandOrder.PATCH_ATTACHED_ITEM));
-
-			assertThat(command.getCommandOrder()).isEqualTo(CommandOrder.PATCH_ATTACHED_ITEM);
-		}
-
-		@Test
-		void shouldHandleUnkownOrder() {
-			var command = handler
-					.translateOrder(createCommand(Wiedervorlage.class.getSimpleName(), CommandOrder.VORGANG_ABSCHLIESSEN));
-
-			assertThat(command.getCommandOrder()).isEqualTo(CommandOrder.VORGANG_ABSCHLIESSEN);
-		}
-
-		@Test
-		void shouldHandleMissingItemName() {
-			var command = CommandTestFactory.createBuilder().order(LegacyOrder.EDIT_KOMMENTAR).body(Map.of("item", Map.of("value", "test")))
-					.build();
-
-			var translatedCommand = handler.translateOrder(command);
-
-			assertThat(translatedCommand.getOrder()).isEqualTo(LegacyOrder.EDIT_KOMMENTAR);
-		}
-
-		private Command createCommand(String itemName, CommandOrder order) {
-			return CommandTestFactory.createBuilder().order(order.name())
-					.body(Map.of(VorgangAttachedItem.FIELD_ITEM_NAME, itemName, "item", Map.of("value", "test"))).build();
-		}
-
-		private Command createCommand(String itemName, CommandOrder order, boolean done) {
-			return CommandTestFactory.createBuilder().order(order.name())
-					.body(Map.of(VorgangAttachedItem.FIELD_ITEM_NAME, itemName, "item", Map.of("done", done)))
-					.build();
-		}
-
-		private Command createCommand(String client, CommandOrder order, String direction) {
-			return CommandTestFactory.createBuilder().order(order.name())
-					.body(Map.of(HistorieCommandHandler.CLIENT, client, VorgangAttachedItem.FIELD_ITEM_NAME, PostfachMail.class.getSimpleName(),
-							"item",
-							Map.of(HistorieCommandHandler.DIRECTION, direction)))
-					.build();
-		}
-
-	}
-
-	@DisplayName("SEND_POSTFACH_MAIL")
-	@Nested
-	class TestSendPostfachMail {
-
-		private Command command = CommandTestFactory.createBuilder().order(CommandOrder.SEND_POSTFACH_MAIL.name()).build();
-
-		@Test
-		void shouldHandleUnkownOrder() {
-			var translatedCommand = handler.translateOrder(command);
-
-			assertThat(translatedCommand.getCommandOrder()).isEqualTo(CommandOrder.SEND_POSTFACH_NACHRICHT);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerITCase.java
deleted file mode 100644
index bfaafa8299319bfb36d60e0438031034204f2f26..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerITCase.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-@WithMockUser
-@AutoConfigureMockMvc
-@SpringBootTest
-class HistorieControllerITCase {
-	private final String PATH = HistorieController.PATH + "?vorgangId=";
-
-	@MockBean
-	private CommandService service;
-	@MockBean
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@DisplayName("Get all")
-	@WithMockUser
-	@Nested
-	class TestGetAll {
-
-		@BeforeEach
-		void init() {
-			when(vorgangAttachedItemService.findLoeschAnforderung(any())).thenReturn(Stream.empty());
-			when(service.findFinishedCommands(any())).thenReturn(createCommandStream());
-		}
-
-		private Stream<Command> createCommandStream() {
-			return List.of(CommandTestFactory.create()).stream();
-		}
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			mockMvc.perform(get(PATH + VorgangHeaderTestFactory.ID)).andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldContainCommands() throws Exception {
-			var response = mockMvc.perform(get(PATH + VorgangHeaderTestFactory.ID)).andExpect(status().isOk());
-
-			response.andExpect(jsonPath("$._embedded.commandList[0].order").value(CommandTestFactory.ORDER))
-					.andExpect(jsonPath("$._embedded.commandList[0]").isNotEmpty());
-
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerTest.java
deleted file mode 100644
index 14e39857f258c7116e8ea1fa130531c9560d8110..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieControllerTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class HistorieControllerTest {
-	private final String PATH = HistorieController.PATH + "?vorgangId=";
-
-	@Nested
-	class TestGetHistorieList {
-		@Spy
-		@InjectMocks
-		private HistorieController controller;
-
-		@Mock
-		private HistorieService service;
-
-		@Mock
-		private HistorieModelAssembler modelAssembler;
-
-		private MockMvc mockMvc;
-
-		@BeforeEach
-		void init() {
-			mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-			when(service.findFinishedCommands(any())).thenReturn(createCommandStream());
-		}
-
-		private Stream<Command> createCommandStream() {
-			return List.of(CommandTestFactory.create()).stream();
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			mockMvc.perform(get(PATH + VorgangHeaderTestFactory.ID)).andExpect(status().isOk());
-
-			verify(service).findFinishedCommands(any());
-		}
-
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
deleted file mode 100644
index e420daa620ba091986b8a5e62fffb0fc93e4a57d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Map;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-class HistorieModelAssemblerTest {
-
-	private static final String CREATED_BY = "createdBy";
-
-	@InjectMocks
-	private HistorieModelAssembler modelAssembler;
-	@Mock
-	private UserManagerUrlProvider userManagerUrlProvider;
-
-	private final String COMMAND_SINGLE_PATH = "/api/histories/" + CommandTestFactory.ID;
-
-	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@Test
-	void shouldHaveSelfLink() {
-		initUserProfileUrlProvider(urlProvider);
-
-		var model = modelAssembler.toModel(CommandTestFactory.create());
-
-		assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref).isEqualTo(COMMAND_SINGLE_PATH);
-	}
-
-	@DisplayName("AssignedTo Link")
-	@Nested
-	class TestAssignedToLink {
-
-		private final String userProfileTemplateDummy = "UserProfileTemplateDummy/%s";
-
-		@Nested
-		class TesOnConfiguredUserManager {
-
-			@Test
-			void shouldBePresentOnExistingValue() {
-				when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(true);
-				when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(userProfileTemplateDummy);
-
-				var model = modelAssembler.toModel(CommandTestFactory.createBuilder()
-						.body(Map.of(HistorieModelAssembler.ASSIGNED_TO_BODY_FIELD, UserProfileTestFactory.ID)).build());
-
-				assertThat(model.getLink(HistorieModelAssembler.REL_ASSIGNED_TO)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("UserProfileTemplateDummy/" + UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldNotBePresentOnMissingValue() {
-				var model = modelAssembler.toModel(CommandTestFactory.create());
-
-				assertThat(model.getLink(HistorieModelAssembler.REL_ASSIGNED_TO)).isNotPresent();
-			}
-		}
-
-		@Nested
-		class TestOnNotConfiguredUserManager {
-
-			@Test
-			void shouldBePresentOnExistingValue() {
-				when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(false);
-
-				var model = modelAssembler.toModel(CommandTestFactory.createBuilder()
-						.body(Map.of(HistorieModelAssembler.ASSIGNED_TO_BODY_FIELD, UserProfileTestFactory.ID)).build());
-
-				assertThat(model.getLink(HistorieModelAssembler.REL_ASSIGNED_TO)).isNotPresent();
-			}
-
-			@Test
-			void shouldNotGetTemplateFromUserManagerUrlProvider() {
-				when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(false);
-
-				modelAssembler.toModel(CommandTestFactory.createBuilder()
-						.body(Map.of(HistorieModelAssembler.ASSIGNED_TO_BODY_FIELD, UserProfileTestFactory.ID)).build());
-
-				verify(userManagerUrlProvider, never()).getUserProfileTemplate();
-			}
-		}
-	}
-
-	@DisplayName("createdBy Link")
-	@Nested
-	class TestCreatedByLink {
-		@Test
-		void shouldExistingAtUser() {
-			initUserProfileUrlProvider(urlProvider);
-
-			var model = modelAssembler.toModel(CommandTestFactory.create());
-
-			assertThat(model.getLink(CREATED_BY)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(ROOT_URL + USER_PROFILES_API_PATH + UserProfileTestFactory.ID);
-		}
-
-		@Test
-		void shouldNotExistingAtSystemNotificationMAnager() {
-			var model = modelAssembler
-					.toModel(CommandTestFactory.createBuilder().createdBy(UserId.from(HistorieModelAssembler.SYSTEM_NOTIFICATION_MANAGER_PREFIX))
-							.build());
-
-			assertThat(model.getLink(CREATED_BY)).isNotPresent();
-		}
-
-		@Test
-		void shouldNotBePresentOnNullValue() {
-			var model = modelAssembler.toModel(CommandTestFactory.createBuilder().createdBy(null).build());
-
-			assertThat(model.getLink(CREATED_BY)).isNotPresent();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieServiceTest.java
deleted file mode 100644
index 6d6a75467c7bc45f9aaf65191a5e0dc9ceacce05..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieServiceTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class HistorieServiceTest {
-
-	@Spy
-	@InjectMocks
-	private HistorieService service;
-	@Mock
-	private CommandService commandService;
-	@Mock
-	private HistorieCommandHandler historieCommandHandler;
-	@Spy
-	private List<HistorieProcessor> processors = new ArrayList<>();
-	@Mock
-	private HistorieProcessor processor;
-
-	@DisplayName("Find finished commands")
-	@Nested
-	class TestFindFinishedCommands {
-
-		@BeforeEach
-		void mockProcessor() {
-			processors.add(processor);
-		}
-
-		@DisplayName("process flow")
-		@Nested
-		class TestProcessFlow {
-
-			private Command responseCommand = CommandTestFactory.create();
-
-			@Captor
-			private ArgumentCaptor<List<Command>> commandCaptor;
-
-			@BeforeEach
-			void initMock() {
-				when(commandService.findFinishedCommands(any())).thenReturn(List.of(responseCommand).stream());
-				when(historieCommandHandler.isHistorieCommand(any())).thenReturn(true);
-				when(historieCommandHandler.translateOrder(any())).thenAnswer(i -> i.getArgument(0));
-
-			}
-
-			@Test
-			void shouldCallService() {
-				service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				verify(commandService).findFinishedCommands(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldFilterInvalidCommands() {
-				service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				verify(historieCommandHandler).isHistorieCommand(responseCommand);
-			}
-
-			@Test
-			void shouldTranslateCommandOrderByCommandHandler() {
-				service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				verify(historieCommandHandler).translateOrder(responseCommand);
-			}
-
-			@Test
-			void shouldProcessCommands() {
-				service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				verify(processor).process(commandCaptor.capture());
-				assertThat(commandCaptor.getValue()).containsExactly(responseCommand);
-			}
-
-			@Test
-			void shouldReturnProcessedCommands() {
-				var processedCommands = Collections.singletonList(CommandTestFactory.create());
-				when(processor.process(any())).thenReturn(processedCommands);
-
-				var commands = service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				assertThat(commands).isEqualTo(processedCommands);
-			}
-		}
-
-		@DisplayName("Filter deleteLoeschAnforderung body commands")
-		@Nested
-		class TestFilterDeleteLoeschAnforderungBodyCommands {
-
-			private final String deleteAttachedItemCommandId = UUID.randomUUID().toString();
-			private final String changeStatusCommandId = UUID.randomUUID().toString();
-			private final Map<String, Object> bodyMap = Map.of(DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD,
-					deleteAttachedItemCommandId,
-					DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, changeStatusCommandId);
-			private final Command deleteLoeschAnforderungCommand = CommandTestFactory.createBuilder()
-					.order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name())
-					.body(bodyMap).build();
-			private final Command deleteAttachedItemCommand = CommandTestFactory.createBuilder().id(deleteAttachedItemCommandId).build();
-			private final Command changeStatusCommandICommand = CommandTestFactory.createBuilder().id(changeStatusCommandId).build();
-
-			private final List<Command> finishedCommands = List.of(deleteLoeschAnforderungCommand, deleteAttachedItemCommand,
-					changeStatusCommandICommand);
-
-			@BeforeEach
-			void mock() {
-				when(historieCommandHandler.isHistorieCommand(any())).thenReturn(true);
-				when(commandService.findFinishedCommands(any())).thenReturn(finishedCommands.stream());
-				when(historieCommandHandler.translateOrder(any())).thenAnswer(i -> i.getArgument(0));
-				when(processor.process(any())).thenAnswer(i -> i.getArgument(0));
-			}
-
-			@Test
-			void shouldFilterCommandsRelatedInBody() {
-				var commands = service.findFinishedCommands(CommandTestFactory.VORGANG_ID).toList();
-
-				assertThat(commands).hasSize(1).containsExactly(deleteLoeschAnforderungCommand);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java
deleted file mode 100644
index 47d1e4ce6c028625f030413b7f1565f9459aba45..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/StatusChangeHistoryBuilderTest.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static de.ozgcloud.alfa.historie.ChangeHistoryBuilderTest.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-public class StatusChangeHistoryBuilderTest {
-
-	private static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString();
-
-	private final Command previousCommand = commandFinishedAt(LocalDateTime.of(2023, 5, 1, 12, 0));
-	private final Command command = commandFinishedAt(LocalDateTime.of(2023, 6, 1, 12, 0));
-	private final List<Command> commands = List.of(previousCommand, command);
-
-	@Spy
-	private StatusChangeHistoryBuilder builder = StatusChangeHistoryBuilder.builder()
-			.withCommands(commands)
-			.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-
-	@Nested
-	class TestIsRelevant {
-
-		@EnumSource(mode = Mode.INCLUDE, names = { "VORGANG_ANNEHMEN", "VORGANG_VERWERFEN", "VORGANG_ZURUECKHOLEN", "VORGANG_BEARBEITEN",
-				"VORGANG_BESCHEIDEN", "VORGANG_ABSCHLIESSEN", "VORGANG_ZUM_LOESCHEN_MARKIEREN", "VORGANG_LOESCHEN", "VORGANG_ZURUECKSTELLEN",
-				"VORGANG_WIEDEREROEFFNEN" })
-		@ParameterizedTest
-		void shouldReturnTrue(CommandOrder order) {
-			var isStatusChangeCommand = builder.isRelevant(CommandTestFactory.createBuilder().order(order.name()).build());
-
-			assertThat(isStatusChangeCommand).isTrue();
-		}
-
-		@EnumSource(mode = Mode.EXCLUDE, names = { "VORGANG_ANNEHMEN", "VORGANG_VERWERFEN", "VORGANG_ZURUECKHOLEN", "VORGANG_BEARBEITEN",
-				"VORGANG_BESCHEIDEN", "VORGANG_ABSCHLIESSEN", "VORGANG_ZUM_LOESCHEN_MARKIEREN", "VORGANG_LOESCHEN", "VORGANG_ZURUECKSTELLEN",
-				"VORGANG_WIEDEREROEFFNEN" })
-		@ParameterizedTest
-		void shouldReturnFalse(CommandOrder order) {
-			var isStatusChangeCommand = builder.isRelevant(CommandTestFactory.createBuilder().order(order.name()).build());
-
-			assertThat(isStatusChangeCommand).isFalse();
-		}
-	}
-
-	@Nested
-	class TestToCommandWithChangeValues {
-
-		private static final String EXPECTED_STATUS_BEFORE_CHANGE = LoremIpsum.getInstance().getWords(2);
-		private static final String EXPECTED_STATUS_AFTER_CHANGE = LoremIpsum.getInstance().getWords(2);
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@BeforeEach
-		void init() {
-			doReturn(EXPECTED_STATUS_BEFORE_CHANGE).when(builder).getStatusBeforeChange(commandWithPrevious);
-			doReturn(EXPECTED_STATUS_AFTER_CHANGE).when(builder).getStatusAfterChange(commandWithPrevious);
-		}
-
-		@Test
-		void shouldSetCommand() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.command()).isEqualTo(command);
-		}
-
-		@Test
-		void shouldSetValueBeforeChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueBeforeChange()).isEqualTo(EXPECTED_STATUS_BEFORE_CHANGE);
-		}
-
-		@Test
-		void shouldSetValueAfterChange() {
-			var commandWithChangeValues = callBuilder();
-
-			assertThat(commandWithChangeValues.valueAfterChange()).isEqualTo(EXPECTED_STATUS_AFTER_CHANGE);
-		}
-
-		private ChangeHistoryBuilder.CommandWithChangeValues callBuilder() {
-			return builder.toCommandWithChangeValues(commandWithPrevious);
-		}
-	}
-
-	@Nested
-	class TestGetStatusBeforeChange {
-
-		private final CommandWithPrevious commandWithoutPrevious = CommandWithPreviousTestFactory.createBuilder().command(previousCommand)
-				.previous(null).build();
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@Test
-		void shouldReturnStatusBeforeChange() {
-			var status = "Status";
-			doReturn(status).when(builder).getStatus(previousCommand);
-
-			var statusBeforeChange = builder.getStatusBeforeChange(commandWithPrevious);
-
-			assertThat(statusBeforeChange).isEqualTo(status);
-		}
-
-		@Test
-		void shouldReturnDefaultValue() {
-			var status = builder.getStatusBeforeChange(commandWithoutPrevious);
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU));
-		}
-	}
-
-	@Nested
-	class TestGetStatusAfterChange {
-
-		private final CommandWithPrevious commandWithPrevious = CommandWithPreviousTestFactory.createBuilder().command(command)
-				.previous(previousCommand).build();
-
-		@Test
-		void shouldReturnStatusAfterChange() {
-			var status = "Status";
-			doReturn(status).when(builder).getStatus(command);
-
-			var statusAfterChange = builder.getStatusAfterChange(commandWithPrevious);
-
-			assertThat(statusAfterChange).isEqualTo(status);
-		}
-	}
-
-	@Nested
-	class TestGetStatus {
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "VORGANG_ANNEHMEN", "VORGANG_ZURUECKSTELLEN" })
-		void shouldReturnAngenommen(CommandOrder order) {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(order.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ANGENOMMEN));
-		}
-
-		@Test
-		void shouldReturnVerworfen() {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_VERWERFEN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN));
-		}
-
-		@Test
-		void shouldReturnNeu() {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ZURUECKHOLEN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU));
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.INCLUDE, names = { "VORGANG_BEARBEITEN", "VORGANG_WIEDEREROEFFNEN" })
-		void shouldReturnInBearbeitung(CommandOrder order) {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(order.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.IN_BEARBEITUNG));
-		}
-
-		@Test
-		void shouldReturnBeschieden() {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_BESCHEIDEN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.BESCHIEDEN));
-		}
-
-		@Test
-		void shouldReturnAbschliessen() {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ABSCHLIESSEN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ABGESCHLOSSEN));
-		}
-
-		@Test
-		void shouldReturnZuLoeschen() {
-			var status = builder
-					.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN));
-		}
-
-		@Test
-		void shouldReturnGeloescht() {
-			var status = builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_LOESCHEN.name()).build());
-
-			assertThat(status).isEqualTo(StatusChangeHistoryBuilder.GELOESCHT_NAME);
-		}
-
-		@Test
-		void shouldtThrowIllegalArgumentException() {
-			assertThatThrownBy(() -> builder.getStatus(CommandTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER.name()).build()))
-					.isInstanceOf(
-							IllegalArgumentException.class);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/UserProfileCacheTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/UserProfileCacheTest.java
deleted file mode 100644
index 952a5c38b3399e264811612c5bd998cb638ed9e3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/UserProfileCacheTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Function;
-
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-public class UserProfileCacheTest {
-
-	private static final UserId USER_ID = UserProfileTestFactory.ID;
-	private static final UserProfile EXPECTED_USER_PROFILE = UserProfileTestFactory.create();
-
-	@Mock
-	private Function<UserId, UserProfile> findUserProfileForUserId;
-	@InjectMocks
-	private UserProfileCache cache;
-
-	@Test
-	void shouldSearchForUserProfileThatWasNotCached() {
-		givenFindUserProfileForUserIdReturnsUserProfile();
-
-		cache.getUserProfile(USER_ID);
-
-		verify(findUserProfileForUserId).apply(USER_ID);
-	}
-
-	@Test
-	void shouldReturnFoundUserProfile() {
-		givenFindUserProfileForUserIdReturnsUserProfile();
-
-		var userProfile = cache.getUserProfile(USER_ID);
-
-		assertThat(userProfile).isEqualTo(EXPECTED_USER_PROFILE);
-	}
-
-	@Test
-	void shouldAddFoundUserProfileToCache() {
-		givenFindUserProfileForUserIdReturnsUserProfile();
-
-		cache.getUserProfile(USER_ID);
-
-		assertThat(getUserProfileFromCache()).isEqualTo(EXPECTED_USER_PROFILE);
-	}
-
-	@Test
-	void shouldNotSearchForCachedUserProfile() {
-		givenUserProfileIsInCache();
-
-		cache.getUserProfile(USER_ID);
-
-		verifyNoInteractions(findUserProfileForUserId);
-	}
-
-	@Test
-	void shouldReturnUserProfileFromCache() {
-		givenUserProfileIsInCache();
-
-		var userProfile = cache.getUserProfile(USER_ID);
-
-		assertThat(userProfile).isEqualTo(EXPECTED_USER_PROFILE);
-	}
-
-	@Test
-	void shouldThrowExceptionIfUserProfileCannotBeFound() {
-		when(findUserProfileForUserId.apply(USER_ID)).thenReturn(null);
-
-		assertThatExceptionOfType(TechnicalException.class).isThrownBy(() -> cache.getUserProfile(USER_ID))
-				.withMessageStartingWith("UserProfile not found for user with ID " + USER_ID);
-	}
-
-	private void givenFindUserProfileForUserIdReturnsUserProfile() {
-		when(findUserProfileForUserId.apply(USER_ID)).thenReturn(EXPECTED_USER_PROFILE);
-	}
-
-	private void givenUserProfileIsInCache() {
-		var cache = new HashMap<UserId, UserProfile>();
-		cache.put(USER_ID, EXPECTED_USER_PROFILE);
-		ReflectionTestUtils.setField(this.cache, "cache", cache);
-	}
-
-	@SuppressWarnings("unchecked")
-	private UserProfile getUserProfileFromCache() {
-		return ((Map<String, UserProfile>) Objects.requireNonNull(ReflectionTestUtils.getField(cache, "cache"))).get(USER_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java
deleted file mode 100644
index 0ed0d098c97d50bba9161e78407f603bb3d9fe82..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class VorgangChangeHistoryServiceITCase {
-
-	private static final UserId USER_1_ID = UserId.from("user-1");
-	private static final String USER_1_FIRST_NAME = LoremIpsum.getInstance().getFirstName();
-	private static final String USER_1_LAST_NAME = LoremIpsum.getInstance().getLastName();
-	private static final String USER_1_FULL_NAME = String.format("%s %s", USER_1_FIRST_NAME, USER_1_LAST_NAME);
-
-	private static final UserId USER_2_ID = UserId.from("user-2");
-	private static final String USER_2_FIRST_NAME = LoremIpsum.getInstance().getFirstName();
-	private static final String USER_2_LAST_NAME = LoremIpsum.getInstance().getLastName();
-	private static final String USER_2_FULL_NAME = String.format("%s %s", USER_2_FIRST_NAME, USER_2_LAST_NAME);
-
-	private static final String AKTENZEICHEN_1 = "ABC-1";
-	private static final String AKTENZEICHEN_2 = "ABC-2";
-
-	private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-	@Mock
-	private CommandService commandService;
-	@Mock
-	private UserService userService;
-
-	@InjectMocks
-	private VorgangChangeHistoryService service;
-
-	@Test
-	void shouldReturnEmptyHistory() {
-		givenHistorieServiceReturnsCommands(List.of());
-
-		var history = service.createVorgangChangeHistory(vorgangWithEingang);
-
-		assertThat(history.getStatusChangeHistory()).isEmpty();
-		assertThat(history.getAktenzeichenChangeHistory()).isEmpty();
-		assertThat(history.getAssignedUserChangeHistory()).isEmpty();
-	}
-
-	@Test
-	void shouldReturnNonEmptyHistories() {
-		givenHistorieServiceReturnsCommands(createMixedCommands());
-		givenUserServiceReturnsUser1Profile();
-
-		var history = service.createVorgangChangeHistory(vorgangWithEingang);
-
-		assertThat(history.getStatusChangeHistory()).hasSize(1);
-		assertThat(history.getAktenzeichenChangeHistory()).hasSize(1);
-		assertThat(history.getAssignedUserChangeHistory()).hasSize(1);
-	}
-
-	@Test
-	void shouldSetCreatedByName() {
-		givenHistorieServiceReturnsCommands(List.of(new CommandFactory().statusChange(CommandOrder.VORGANG_ANNEHMEN)));
-
-		var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-		assertThat(history.get(0).getAuthorFullName()).isEqualTo(USER_1_FULL_NAME);
-	}
-
-	@Test
-	void shouldSetFinishedAt() {
-		var command = new CommandFactory().statusChange(CommandOrder.VORGANG_ANNEHMEN);
-		givenHistorieServiceReturnsCommands(List.of(command));
-
-		var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-		assertThat(history.get(0).getFinishedAt()).isNotNull().isEqualTo(command.getFinishedAt());
-	}
-
-	@Nested
-	class TestStatusChangeHistory {
-		@Test
-		void shouldSetBeforeAndAfterValues_untilAbgeschlossen() {
-			givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilAbgeschlossen());
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-			assertThat(history).hasSize(6);
-			checkBeforeAndAfterValues(history.get(0),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ANGENOMMEN));
-			checkBeforeAndAfterValues(history.get(1),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ANGENOMMEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.IN_BEARBEITUNG));
-			checkBeforeAndAfterValues(history.get(2),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.IN_BEARBEITUNG),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.BESCHIEDEN));
-			checkBeforeAndAfterValues(history.get(3),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.BESCHIEDEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ABGESCHLOSSEN));
-			checkBeforeAndAfterValues(history.get(4),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ABGESCHLOSSEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN));
-			checkBeforeAndAfterValues(history.get(5),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ABGESCHLOSSEN));
-		}
-
-		@Test
-		void shouldSetBeforeAndAfterValues_untilVerworfen() {
-			givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilVerworfen());
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-			assertThat(history).hasSize(3);
-			checkBeforeAndAfterValues(history.get(0),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN));
-			checkBeforeAndAfterValues(history.get(1),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN));
-			checkBeforeAndAfterValues(history.get(2),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.ZU_LOESCHEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN));
-		}
-
-		@Test
-		void shouldSetBeforeAndAfterValues_untilZurueckholen() {
-			givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilZurueckholen());
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-			assertThat(history).hasSize(2);
-			checkBeforeAndAfterValues(history.get(0),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN));
-			checkBeforeAndAfterValues(history.get(1),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.VERWORFEN),
-					StatusChangeHistoryBuilder.VORGANG_STATUS_TO_NAME.get(VorgangStatus.NEU));
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var command = new CommandFactory().statusChange(CommandOrder.VORGANG_ANNEHMEN);
-			givenHistorieServiceReturnsCommands(List.of(command));
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory();
-
-			assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.VORGANG_ANNEHMEN.name());
-		}
-	}
-
-	@Nested
-	class TestAktenzeichenChangeHistory {
-
-		@Test
-		void shouldSetBeforeAndAfterValues() {
-			givenHistorieServiceReturnsCommands(createAktenzeichenChangeCommands());
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getAktenzeichenChangeHistory();
-
-			assertThat(history).hasSize(3);
-			checkBeforeAndAfterValues(history.get(0), "", AKTENZEICHEN_1);
-			checkBeforeAndAfterValues(history.get(1), AKTENZEICHEN_1, AKTENZEICHEN_2);
-			checkBeforeAndAfterValues(history.get(2), AKTENZEICHEN_2, "");
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var command = new CommandFactory().aktenzeichenChange(AKTENZEICHEN_1);
-			givenHistorieServiceReturnsCommands(List.of(command));
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getAktenzeichenChangeHistory();
-
-			assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.SET_AKTENZEICHEN.name());
-		}
-	}
-
-	@Nested
-	class TestAssignedUserChangeHistory {
-
-		@Test
-		void shouldSetBeforeAndAfterValues() {
-			givenHistorieServiceReturnsCommands(createUserChangeCommands());
-			givenUserServiceReturnsUserProfiles();
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getAssignedUserChangeHistory();
-
-			assertThat(history).hasSize(2);
-			checkBeforeAndAfterValues(history.get(0), "", USER_1_FULL_NAME);
-			checkBeforeAndAfterValues(history.get(1), USER_1_FULL_NAME, USER_2_FULL_NAME);
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var command = new CommandFactory().userChange(USER_1_ID.toString());
-			givenHistorieServiceReturnsCommands(List.of(command));
-			givenUserServiceReturnsUser1Profile();
-
-			var history = service.createVorgangChangeHistory(vorgangWithEingang).getAssignedUserChangeHistory();
-
-			assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.ASSIGN_USER.name());
-		}
-	}
-
-	private void checkBeforeAndAfterValues(VorgangChange vorgangChange, String expectedBefore, String expectedAfter) {
-		assertThat(vorgangChange.getValueBeforeChange()).isEqualTo(expectedBefore);
-		assertThat(vorgangChange.getValueAfterChange()).isEqualTo(expectedAfter);
-	}
-
-	private void givenHistorieServiceReturnsCommands(List<Command> commands) {
-		when(commandService.findFinishedCommands(VorgangHeaderTestFactory.ID)).thenReturn(commands.stream());
-	}
-
-	private void givenUserServiceReturnsUserProfiles() {
-		givenUserServiceReturnsUser1Profile();
-		givenUserServiceReturnsUser2Profile();
-	}
-
-	private void givenUserServiceReturnsUser1Profile() {
-		when(userService.getById(USER_1_ID)).thenReturn(userProfile(USER_1_FIRST_NAME, USER_1_LAST_NAME));
-	}
-
-	private void givenUserServiceReturnsUser2Profile() {
-		when(userService.getById(USER_2_ID)).thenReturn(userProfile(USER_2_FIRST_NAME, USER_2_LAST_NAME));
-	}
-
-	private static UserProfile userProfile(String firstName, String lastName) {
-		return UserProfileTestFactory.createBuilder().firstName(firstName).lastName(lastName).build();
-	}
-
-	private List<Command> createStatusChangeCommandsUntilAbgeschlossen() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.statusChange(CommandOrder.VORGANG_ANNEHMEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_BEARBEITEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_BESCHEIDEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_ABSCHLIESSEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN),
-				commandFactory.statusChange(CommandOrder.VORGANG_ABSCHLIESSEN),
-				commandFactory.statusChange(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN));
-	}
-
-	private List<Command> createStatusChangeCommandsUntilVerworfen() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.statusChange(CommandOrder.VORGANG_VERWERFEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN),
-				commandFactory.statusChange(CommandOrder.VORGANG_VERWERFEN),
-				commandFactory.statusChange(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN));
-	}
-
-	private List<Command> createStatusChangeCommandsUntilZurueckholen() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.statusChange(CommandOrder.VORGANG_VERWERFEN),
-				commandFactory.statusChange(CommandOrder.VORGANG_ZURUECKHOLEN));
-	}
-
-	private List<Command> createAktenzeichenChangeCommands() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.aktenzeichenChange(AKTENZEICHEN_1),
-				commandFactory.aktenzeichenChange(AKTENZEICHEN_2),
-				commandFactory.aktenzeichenChange(null));
-	}
-
-	private List<Command> createUserChangeCommands() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.userChange(USER_1_ID.toString()),
-				commandFactory.userChange(USER_2_ID.toString()));
-	}
-
-	private List<Command> createMixedCommands() {
-		var commandFactory = new CommandFactory();
-		return List.of(
-				commandFactory.statusChange(CommandOrder.VORGANG_ANNEHMEN),
-				commandFactory.aktenzeichenChange(AKTENZEICHEN_1),
-				commandFactory.userChange(USER_1_ID.toString()));
-	}
-
-	private static class CommandFactory {
-
-		private ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("UTC"));
-
-		Command userChange(String assignedTo) {
-			return CommandTestFactory.createBuilder()
-					.order(CommandOrder.ASSIGN_USER.name())
-					.body(assignedTo != null ? Map.of(AssignedUserChangeHistoryBuilder.BODY_PROPERTY_ASSIGNED_USER, assignedTo) : Map.of())
-					.createdByName(USER_1_FULL_NAME)
-					.finishedAt(getAndIncrementDateTime())
-					.build();
-		}
-
-		Command aktenzeichenChange(String aktenzeichen) {
-			return CommandTestFactory.createBuilder()
-					.order(CommandOrder.SET_AKTENZEICHEN.name())
-					.body(aktenzeichen != null ? Map.of(AktenzeichenChangeHistoryBuilder.BODY_PROPERTY_AKTENZEICHEN, aktenzeichen) : Map.of())
-					.createdByName(USER_1_FULL_NAME)
-					.finishedAt(getAndIncrementDateTime())
-					.build();
-		}
-
-		Command statusChange(CommandOrder order) {
-			return CommandTestFactory.createBuilder()
-					.order(order.name())
-					.createdByName(USER_1_FULL_NAME)
-					.finishedAt(getAndIncrementDateTime())
-					.build();
-		}
-
-		private ZonedDateTime getAndIncrementDateTime() {
-			var current = dateTime;
-			dateTime = dateTime.plusMinutes(1);
-			return current;
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceTest.java
deleted file mode 100644
index afd187ec07cb34b3be9050b42950547635d3cda3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceTest.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import static de.ozgcloud.alfa.common.AlfaTestUtils.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.alfa.vorgang.ZustaendigeStelleTestFactory;
-
-public class VorgangChangeHistoryServiceTest {
-
-	private static final String ORGANISATIONSEINHEITEN_ID = ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID;
-
-	private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-	private final Command command0105 = ChangeHistoryBuilderTest.commandFinishedAt(LocalDateTime.of(2023, 5, 1, 12, 0));
-	private final Command command0106 = ChangeHistoryBuilderTest.commandFinishedAt(LocalDateTime.of(2023, 6, 1, 12, 0));
-	private final List<Command> commands = List.of(command0105, command0106);
-
-	private final VorgangChange vorgangChange0105 = VorgangChangeTestFactory.createBuilder()
-			.valueBeforeChange(LoremIpsum.getInstance().getWords(2))
-			.valueAfterChange(LoremIpsum.getInstance().getWords(2))
-			.build();
-	private final VorgangChange vorgangChange0106 = VorgangChangeTestFactory.createBuilder()
-			.valueBeforeChange(LoremIpsum.getInstance().getWords(2))
-			.valueAfterChange(LoremIpsum.getInstance().getWords(2))
-			.build();
-	private final List<VorgangChange> vorgangChanges = List.of(vorgangChange0105, vorgangChange0106);
-
-	@Mock
-	private UserService userService;
-	@Mock
-	private HistorieService historieService;
-	@Mock
-	private CommandService commandService;
-
-	@Spy
-	@InjectMocks
-	private VorgangChangeHistoryService service;
-
-	@Nested
-	class TestCreateVorgangChangeHistory {
-
-		@BeforeEach
-		void init() {
-			mockStreamToList(commands, stream -> when(commandService.findFinishedCommands(vorgang.getId())).thenReturn(stream));
-		}
-
-		@Test
-		void shouldFindFinishedCommands() {
-			callService();
-
-			verify(commandService).findFinishedCommands(vorgang.getId());
-		}
-
-		@Test
-		void shouldSetStatusChangeHistory() {
-			doReturn(vorgangChanges.stream()).when(service).createStatusChangeHistory(vorgang, commands);
-
-			var history = callService();
-
-			assertThat(history.getStatusChangeHistory()).isEqualTo(vorgangChanges);
-		}
-
-		@Test
-		void shouldSetAktenzeichenChangeHistory() {
-			doReturn(vorgangChanges.stream()).when(service).createAktenzeichenChangeHistory(vorgang, commands);
-
-			var history = callService();
-
-			assertThat(history.getAktenzeichenChangeHistory()).isEqualTo(vorgangChanges);
-		}
-
-		@Test
-		void shouldSetAssignedUserChangeHistory() {
-			doReturn(vorgangChanges.stream()).when(service).createAssignedUserChangeHistory(vorgang, commands);
-
-			var history = callService();
-
-			assertThat(history.getAssignedUserChangeHistory()).isEqualTo(vorgangChanges);
-		}
-
-		private VorgangChangeHistory callService() {
-			return service.createVorgangChangeHistory(vorgang);
-		}
-	}
-
-	@Nested
-	class TestCreateStatusChangeHistory {
-
-		private MockedStatic<StatusChangeHistoryBuilder> staticBuilder;
-		@Mock
-		private StatusChangeHistoryBuilder builder;
-
-		@BeforeEach
-		void init() {
-			mockBuilderFactoryMethod();
-			mockBuilderWiths();
-		}
-
-		private void mockBuilderFactoryMethod() {
-			staticBuilder = mockStatic(StatusChangeHistoryBuilder.class);
-			staticBuilder.when(StatusChangeHistoryBuilder::builder).thenReturn(builder);
-		}
-
-		private void mockBuilderWiths() {
-			when(builder.withCommands(commands)).thenReturn(builder);
-			when(builder.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID)).thenReturn(builder);
-		}
-
-		@AfterEach
-		void cleanup() {
-			staticBuilder.close();
-		}
-
-		@Test
-		void shouldSetCommands() {
-			callService();
-
-			verify(builder).withCommands(commands);
-		}
-
-		@Test
-		void shouldSetOrganisationseinheitenID() {
-			callService();
-
-			verify(builder).withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-		}
-
-		@Test
-		void shouldReturnBuiltStream() {
-			when(builder.build()).thenReturn(vorgangChanges.stream());
-
-			var changeHistory = callService();
-
-			assertThat(changeHistory).containsExactlyElementsOf(vorgangChanges);
-		}
-
-		private Stream<VorgangChange> callService() {
-			return service.createStatusChangeHistory(vorgang, commands);
-		}
-	}
-
-	@Nested
-	class TestCreateAktenzeichenChangeHistory {
-
-		private MockedStatic<AktenzeichenChangeHistoryBuilder> staticBuilder;
-		@Mock
-		private AktenzeichenChangeHistoryBuilder builder;
-
-		@BeforeEach
-		void init() {
-			mockBuilderFactoryMethod();
-			mockBuilderWiths();
-		}
-
-		private void mockBuilderFactoryMethod() {
-			staticBuilder = mockStatic(AktenzeichenChangeHistoryBuilder.class);
-			staticBuilder.when(AktenzeichenChangeHistoryBuilder::builder).thenReturn(builder);
-		}
-
-		private void mockBuilderWiths() {
-			when(builder.withCommands(commands)).thenReturn(builder);
-			when(builder.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID)).thenReturn(builder);
-		}
-
-		@AfterEach
-		void cleanup() {
-			staticBuilder.close();
-		}
-
-		@Test
-		void shouldSetCommands() {
-			callService();
-
-			verify(builder).withCommands(commands);
-		}
-
-		@Test
-		void shouldSetOrganisationseinheitenID() {
-			callService();
-
-			verify(builder).withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-		}
-
-		@Test
-		void shouldReturnBuiltStream() {
-			when(builder.build()).thenReturn(vorgangChanges.stream());
-
-			var changeHistory = callService();
-
-			assertThat(changeHistory).containsExactlyElementsOf(vorgangChanges);
-		}
-
-		private Stream<VorgangChange> callService() {
-			return service.createAktenzeichenChangeHistory(vorgang, commands);
-		}
-	}
-
-	@Nested
-	class TestCreateAssignedUserChangeHistory {
-
-		private MockedStatic<AssignedUserChangeHistoryBuilder> staticBuilder;
-		private MockedStatic<UserProfileCache> staticUserProfileCache;
-
-		@Captor
-		private ArgumentCaptor<Function<UserId, UserProfile>> userProfileCacheArgCaptor;
-
-		@Mock
-		private AssignedUserChangeHistoryBuilder builder;
-		@Mock
-		private UserProfileCache userProfileCache;
-
-		@BeforeEach
-		void init() {
-			mockBuilderFactoryMethod();
-			mockBuilderWiths();
-			mockUserProfileCacheFactoryMethod();
-		}
-
-		private void mockBuilderFactoryMethod() {
-			staticBuilder = mockStatic(AssignedUserChangeHistoryBuilder.class);
-			staticBuilder.when(AssignedUserChangeHistoryBuilder::builder).thenReturn(builder);
-		}
-
-		private void mockBuilderWiths() {
-			when(builder.withCommands(commands)).thenReturn(builder);
-			when(builder.withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID)).thenReturn(builder);
-			when(builder.withUserProfileCache(userProfileCache)).thenReturn(builder);
-		}
-
-		private void mockUserProfileCacheFactoryMethod() {
-			staticUserProfileCache = mockStatic(UserProfileCache.class);
-			staticUserProfileCache.when(() -> UserProfileCache.create(any())).thenReturn(userProfileCache);
-		}
-
-		@AfterEach
-		void cleanup() {
-			staticBuilder.close();
-			staticUserProfileCache.close();
-		}
-
-		@Test
-		void shouldSetCommands() {
-			callService();
-
-			verify(builder).withCommands(commands);
-		}
-
-		@Test
-		void shouldSetOrganisationseinheitenID() {
-			callService();
-
-			verify(builder).withOrganisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-		}
-
-		@Test
-		void shouldCreateUserProfileCache() {
-			callService();
-
-			staticUserProfileCache.verify(() -> UserProfileCache.create(userProfileCacheArgCaptor.capture()));
-			assertArgumentToUserProfileCacheCallsUserService();
-		}
-
-		private void assertArgumentToUserProfileCacheCallsUserService() {
-			userProfileCacheArgCaptor.getValue().apply(UserProfileTestFactory.ID);
-
-			verify(userService).getById(UserProfileTestFactory.ID);
-		}
-
-		@Test
-		void shouldSetUserProfileCache() {
-			callService();
-
-			verify(builder).withUserProfileCache(userProfileCache);
-		}
-
-		@Test
-		void shouldReturnBuiltStream() {
-			when(builder.build()).thenReturn(vorgangChanges.stream());
-
-			var changeHistory = callService();
-
-			assertThat(changeHistory).containsExactlyElementsOf(vorgangChanges);
-		}
-
-		private Stream<VorgangChange> callService() {
-			return service.createAssignedUserChangeHistory(vorgang, commands);
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryTestFactory.java
deleted file mode 100644
index 087789e8e6892e1dce35513179ab06f0e2ef799e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.util.List;
-
-import de.ozgcloud.alfa.common.command.CommandOrder;
-
-class VorgangChangeHistoryTestFactory {
-
-	public static final List<VorgangChange> STATUS_CHANGE_HISTORY = List.of(VorgangChangeTestFactory.createBuilder()
-			.order(CommandOrder.VORGANG_ANNEHMEN.name()).build());
-	public static final List<VorgangChange> AKTENZEICHEN_CHANGE_HISTORY = List.of(VorgangChangeTestFactory.createBuilder()
-			.order(CommandOrder.SET_AKTENZEICHEN.name()).build());
-	public static final List<VorgangChange> ASSIGNED_USER_CHANGE_HISTORY = List.of(VorgangChangeTestFactory.createBuilder()
-			.order(CommandOrder.ASSIGN_USER.name()).build());
-
-	public static VorgangChangeHistory create() {
-		return VorgangChangeHistory.builder()
-				.statusChangeHistory(STATUS_CHANGE_HISTORY)
-				.aktenzeichenChangeHistory(AKTENZEICHEN_CHANGE_HISTORY)
-				.assignedUserChangeHistory(ASSIGNED_USER_CHANGE_HISTORY)
-				.build();
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeTestFactory.java
deleted file mode 100644
index ebfd6838ad43b51c2d0628634e1832e5cba27b9e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeTestFactory.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.historie;
-
-import java.time.ZonedDateTime;
-
-import de.ozgcloud.alfa.common.command.CommandOrder;
-
-class VorgangChangeTestFactory {
-
-	public static final String VALUE_BEFORE_CHANGE = "Value before";
-	public static final String VALUE_AFTER_CHANGE = "Value after";
-	public static final String ORGANISATIONSEINHEITEN_ID = "ORGA1";
-	public static final String CREATED_BY_NAME = "User1";
-	public static final ZonedDateTime FINISHED_AT = ZonedDateTime.now();
-	public static final String ORDER = CommandOrder.SET_AKTENZEICHEN.name();
-
-	public static VorgangChange create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangChange.VorgangChangeBuilder createBuilder() {
-		return VorgangChange.builder()
-				.valueBeforeChange(VALUE_BEFORE_CHANGE)
-				.valueAfterChange(VALUE_AFTER_CHANGE)
-				.authorFullName(CREATED_BY_NAME)
-				.finishedAt(FINISHED_AT)
-				.order(ORDER)
-				.organisationseinheitenID(ORGANISATIONSEINHEITEN_ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarByVorgangControllerTest.java
deleted file mode 100644
index d63d365f66612016ee52289d10fe22729a1e68a2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarByVorgangControllerTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.time.ZonedDateTime;
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class KommentarByVorgangControllerTest {
-
-	@InjectMocks
-	private KommentarByVorgangController controller;
-
-	@Mock
-	private KommentarService service;
-
-	@Mock
-	private KommentarModelAssembler modelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initMockMvc() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetAll {
-
-		@Test
-		void shouldCallEndpoint() throws Exception {
-			ResultActions callEndpoint = callEndpoint();
-
-			callEndpoint.andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(ArgumentMatchers.<Stream<Kommentar>>any(), anyString());
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(KommentarByVorgangController.KOMMENTAR_BY_VORGANG_PATH + "/" + VorgangHeaderTestFactory.ID + "/kommentars"));
-		}
-
-		@Test
-		void shouldSortByCreatedAt() {
-			var firstId = UUID.randomUUID().toString();
-			Kommentar first = KommentarTestFactory.createBuilder().id(firstId).createdAt(ZonedDateTime.now()).build();
-
-			var kommentarList = controller.sortByCreatedAt(Stream.of(KommentarTestFactory.create(), first)).collect(Collectors.toList());
-
-			assertThat(kommentarList.get(0).getId()).isEqualTo(first.getId());
-			assertThat(kommentarList.get(1).getId()).isEqualTo(KommentarTestFactory.ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandControllerTest.java
deleted file mode 100644
index e15965cb3c1c52a7e75ec651b8d2fbd9dddcb618..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandControllerTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.kommentar.KommentarCommandController.KommentarCommandByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import lombok.SneakyThrows;
-
-class KommentarCommandControllerTest {
-
-	@Captor
-	private ArgumentCaptor<CreateCommand> commandCaptor;
-
-	@Nested
-	class TestCreateKommentarCommandByVorgang {
-
-		@Spy
-		@InjectMocks
-		private KommentarCommandByVorgangController controller;
-		@Mock
-		private KommentarService service;
-
-		private MockMvc mockMvc;
-
-		@BeforeEach
-		void init() {
-			mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-
-			when(service.createKommentar(any(), any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(service).createKommentar(any(Kommentar.class), eq(VorgangHeaderTestFactory.ID));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnCreated() {
-			doRequest().andExpect(status().isCreated());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(
-					post(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG, VorgangHeaderTestFactory.ID)
-							.content(createRequestContent()).contentType(MediaType.APPLICATION_JSON))
-					.andExpect(status().is2xxSuccessful());
-		}
-	}
-
-	@Nested
-	class TestCreateEditKommentarCommand {
-
-		private final static String REPONSE_HEADER = "http://localhost/api/commands/" + CommandTestFactory.ID;
-
-		@Spy
-		@InjectMocks
-		private KommentarCommandController controller;
-		@Mock
-		private KommentarService service;
-
-		private MockMvc mockMvc;
-
-		@BeforeEach
-		void init() {
-			mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-
-			when(service.editKommentar(any(), any(), anyLong())).thenReturn(CommandTestFactory.create());
-		}
-
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(service).editKommentar(any(Kommentar.class), eq(KommentarTestFactory.ID), eq(KommentarTestFactory.VERSION));
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnCreated() {
-			doRequest().andExpect(status().isCreated());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldRespondWithLocationHeader() {
-			doRequest().andExpect(header().string("Location", REPONSE_HEADER));
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(post(KommentarCommandController.KOMMENTAR_COMMANDS, KommentarTestFactory.ID, KommentarTestFactory.VERSION)
-					.content(createRequestContent()).contentType(MediaType.APPLICATION_JSON))
-					.andExpect(status().is2xxSuccessful());
-		}
-	}
-
-	private String createRequestContent() {
-		return KommentarTestFactory
-				.createRequestContent(CommandTestFactory.createCreateCommandBuilder().body(KommentarTestFactory.create())
-						.order(LegacyOrder.CREATE_KOMMENTAR).build());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandITCase.java
deleted file mode 100644
index 28ca013894a238533b984291be31f19a92affd5f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarCommandITCase.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.mock.mockito.SpyBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.command.CommandRemoteService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.kommentar.KommentarCommandController.KommentarCommandByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import lombok.SneakyThrows;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class KommentarCommandITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-	@MockBean
-	private KommentarRemoteService remoteService;
-	@MockBean
-	private CommandRemoteService commandRemoteService;
-
-	@SpyBean
-	private CurrentUserService userService;
-
-	@WithMockUser
-	@Nested
-	class TestCreateCommandByKommentarId {
-
-		@BeforeEach
-		void initTest() {
-			when(remoteService.getById(any())).thenReturn(KommentarTestFactory.create());
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCreateCommand() {
-			doRequestByKommentarId(createValidRequestContent()).andExpect(status().isCreated());
-
-			verify(commandRemoteService).createCommand(any());
-		}
-
-		private String createValidRequestContent() {
-			return KommentarTestFactory
-					.createRequestContent(CommandTestFactory.createCreateCommandBuilder()
-							.order(LegacyOrder.CREATE_KOMMENTAR)
-							.body(KommentarTestFactory.create())
-							.build());
-		}
-
-		@WithMockUser
-		@DisplayName("should return validation error")
-		@Nested
-		class TestValidation {
-
-			@SneakyThrows
-			@DisplayName("for null Text")
-			@Test
-			void createCommandWithInvalidText() {
-				String content = buildContentWithText(null);
-
-				doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editKommentar.kommentar.text"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-			@SneakyThrows
-			@DisplayName("for empty String in Text")
-			@Test
-			void createcommandWithShortText() {
-				String content = buildContentWithText(StringUtils.EMPTY);
-
-				doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editKommentar.kommentar.text"));
-
-			}
-
-			@SneakyThrows
-			@DisplayName("for invalid text should have parameter")
-			@Test
-			void minMaxParameter() {
-				String content = buildContentWithText(StringUtils.EMPTY);
-
-				doRequestByKommentarId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].constraintParameters.length()").value(2));
-			}
-
-			private String buildContentWithText(String text) {
-				var kommentar = KommentarTestFactory.createBuilder().text(text).build();
-				var createCommand = CommandTestFactory.createCreateCommandBuilder()
-						.order(LegacyOrder.CREATE_KOMMENTAR)
-						.body(kommentar)
-						.build();
-				return KommentarTestFactory.createRequestContent(createCommand);
-			}
-		}
-
-		@SneakyThrows
-		private ResultActions doRequestByKommentarId(String content) {
-			return mockMvc
-					.perform(post(KommentarCommandController.KOMMENTAR_COMMANDS, KommentarTestFactory.ID, KommentarTestFactory.VERSION).with(csrf())
-							.contentType(MediaType.APPLICATION_JSON)
-							.content(content));
-		}
-	}
-
-	@WithMockUser
-	@Nested
-	class TestCreateCommandByVorgangId {
-
-		private static final long RELATION_ID_ON_CREATE = -1;
-
-		@BeforeEach
-		void initTest() {
-			when(remoteService.getById(any())).thenReturn(KommentarTestFactory.create());
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-
-			doReturn(UserProfileTestFactory.ID).when(userService).getUserId();
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCreateCommand() {
-			var content = KommentarTestFactory
-					.createRequestContent(CommandTestFactory.createCreateCommandBuilder()
-							.order(LegacyOrder.CREATE_KOMMENTAR)
-							.body(KommentarTestFactory.create()).build());
-			doRequestByVorgangId(content).andExpect(status().isCreated());
-
-			verify(commandRemoteService).createCommand(any());
-		}
-
-		@WithMockUser
-		@DisplayName("should return validation error")
-		@Nested
-		class TestValidation {
-
-			@SneakyThrows
-			@DisplayName("for null Text")
-			@Test
-			void createCommandWithInvalidText() {
-				String content = buildContentWithText(null);
-
-				doRequestByVorgangId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams.[0].name").value("createKommentar.kommentar.text"))
-						.andExpect(jsonPath("$.invalidParams.[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-			@SneakyThrows
-			@DisplayName("for empty String in Text")
-			@Test
-			void createcommandWithShortText() {
-				String content = buildContentWithText(StringUtils.EMPTY);
-
-				doRequestByVorgangId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.[0].name").value("createKommentar.kommentar.text"));
-
-			}
-
-			@SneakyThrows
-			@DisplayName("for invalid text should have parameter")
-			@Test
-			void minMaxParameter() {
-				String content = buildContentWithText(StringUtils.EMPTY);
-
-				doRequestByVorgangId(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].constraintParameters.length()").value(2));
-			}
-
-			private String buildContentWithText(String text) {
-				var kommentar = KommentarTestFactory.createBuilder().text(text).build();
-				var createCommand = CommandTestFactory.createCreateCommandBuilder()
-						.order(LegacyOrder.CREATE_KOMMENTAR)
-						.body(kommentar)
-						.build();
-				return KommentarTestFactory.createRequestContent(createCommand);
-			}
-		}
-
-		@SneakyThrows
-		private ResultActions doRequestByVorgangId(String content) {
-			return mockMvc.perform(post(KommentarCommandByVorgangController.KOMMENTAR_COMMANDS_BY_VORGANG, VorgangHeaderTestFactory.ID,
-					RELATION_ID_ON_CREATE).with(csrf())
-							.contentType(MediaType.APPLICATION_JSON)
-							.content(content));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarControllerTest.java
deleted file mode 100644
index f8f28fd5c33b57c3833dabcdd47dd2a944a98037..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarControllerTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import com.google.common.collect.Lists;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-
-class KommentarControllerTest {
-
-	private final String PATH = KommentarController.KOMMENTAR_PATH + "/{id}";
-
-	@InjectMocks
-	private KommentarController controller;
-
-	@Mock
-	private KommentarService service;
-
-	@Mock
-	private KommentarModelAssembler modelAssembler;
-
-	@Mock
-	private BinaryFileController binaryFileService;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetById {
-
-		private Kommentar kommentar = KommentarTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.getById(any())).thenReturn(kommentar);
-		}
-
-		@Test
-		void shouldReturnValue() throws Exception {
-			ResultActions callEndpoint = callEndpoint();
-
-			callEndpoint.andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).getById(KommentarTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toModel(kommentar);
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(PATH, KommentarTestFactory.ID));
-		}
-	}
-
-	@Nested
-	@DisplayName("GetKommentarAttachments")
-	class TestGetKommentarAttachments {
-
-		@Test
-		void shouldGetAttachments() throws Exception {
-			when(service.getById(anyString())).thenReturn(KommentarTestFactory.create());
-
-			mockMvc.perform(get(PATH + "/attachments", KommentarTestFactory.ID));
-
-			verify(service).getById(KommentarTestFactory.ID);
-			verify(binaryFileService).getFiles(Lists.newArrayList(BinaryFileTestFactory.FILE_ID));
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarMapperTest.java
deleted file mode 100644
index 0b452538ea938d5e71ca6b8cabc26788ac43d48f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarMapperTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-
-class KommentarMapperTest {
-
-	@Spy
-	@InjectMocks
-	private KommentarMapper mapper = Mappers.getMapper(KommentarMapper.class);
-	@Mock
-	private GrpcObjectMapper grpcObjectMapper;
-
-	@DisplayName("Map from item")
-	@Nested
-	class TestFromItem {
-
-		@BeforeEach
-		void mockMapper() {
-			when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(KommentarTestFactory.createAsMap());
-		}
-
-		@Test
-		void shouldCallGrpcObjectMapper() {
-			mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM);
-		}
-
-		@Test
-		void shouldCallMapperFromItemMap() {
-			mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			verify(mapper).fromItemMap(KommentarTestFactory.createAsMap(), VorgangAttachedItemTestFactory.VERSION);
-		}
-	}
-
-	@DisplayName("Map from item map")
-	@Nested
-	class TestFromItemMap {
-
-		@Test
-		void shouldMapId() {
-			var kommentar = map();
-
-			assertThat(kommentar.getId()).isEqualTo(KommentarTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapVersion() {
-			var kommentar = map();
-
-			assertThat(kommentar.getVersion()).isEqualTo(KommentarTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldMapCreatedBy() {
-			var kommentar = map();
-
-			assertThat(kommentar.getCreatedBy()).isEqualTo(KommentarTestFactory.CREATED_BY);
-		}
-
-		@Test
-		void shouldMapCreatedAt() {
-			var kommentar = map();
-
-			assertThat(kommentar.getCreatedAt()).isEqualTo(KommentarTestFactory.CREATED_AT);
-		}
-
-		@Test
-		void shouldMapText() {
-			var kommentar = map();
-
-			assertThat(kommentar.getText()).isEqualTo(KommentarTestFactory.TEXT);
-		}
-
-		@Test
-		void shouldMapNullAttachmentsToEmptyList() {
-			var kommentar = mapper.fromItemMap(createAsMapWithAttachmentIds(null), KommentarTestFactory.VERSION);
-
-			assertThat(kommentar.getAttachments()).isEmpty();
-		}
-
-		@Test
-		void shouldMapEmptyAttachmentsToEmptyList() {
-			var kommentar = mapper.fromItemMap(createAsMapWithAttachmentIds(Collections.emptyList()), KommentarTestFactory.VERSION);
-
-			assertThat(kommentar.getAttachments()).isEmpty();
-		}
-
-		@Test
-		void shouldMapAttachmentsToList() {
-			var kommentar = mapper.fromItemMap(
-					KommentarTestFactory.createAsMap(),
-					KommentarTestFactory.VERSION);
-
-			assertThat(kommentar.getAttachments()).containsOnly(BinaryFileTestFactory.FILE_ID);
-		}
-
-	}
-
-	private Kommentar map() {
-		return mapper.fromItemMap(KommentarTestFactory.createAsMap(), KommentarTestFactory.VERSION);
-	}
-
-	private static Map<String, Object> createAsMapWithAttachmentIds(Collection<String> attachmentIds) {
-		var map = new HashMap<>(KommentarTestFactory.createAsMap());
-		map.replace(KommentarMapper.ATTACHMENTS, attachmentIds);
-		return Collections.unmodifiableMap(map);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java
deleted file mode 100644
index 882b6eab5e7d2b9a7d5e393b8797bed66eb28c30..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarModelAssemblerTest.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.server.EntityLinks;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class KommentarModelAssemblerTest {
-
-	private final String PATH = KommentarController.KOMMENTAR_PATH + "/";
-	private static final String REL_CREATED_BY = "createdBy";
-	private static final String USER_MANAGER_URL = UserProfileUrlProviderTestFactory.ROOT_URL
-			+ UserProfileUrlProviderTestFactory.USER_PROFILES_API_PATH;
-
-	@Spy
-	@InjectMocks
-	private KommentarModelAssembler modelAssembler;
-
-	@Mock
-	private EntityLinks entityLinks;
-	@Mock
-	private VorgangController vorgangController;
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldLoadVorgang() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
-
-			modelAssembler.toModel(KommentarTestFactory.create());
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldBuildModel() {
-			var kommentar = KommentarTestFactory.create();
-			var vorgang = VorgangWithEingangTestFactory.create();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-
-			modelAssembler.toModel(kommentar);
-
-			verify(modelAssembler).buildModel(kommentar, vorgang);
-		}
-	}
-
-	@Nested
-	class TestLinksOnModel {
-		private static final String COMMAND_BY_KOMMENTAR_PATH = //
-				KommentarCommandController.KOMMENTAR_COMMANDS
-						.replace("{kommentarId}", KommentarTestFactory.ID)
-						.replace("{kommentarVersion}", String.valueOf(KommentarTestFactory.VERSION));
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = buildModel().getLink(IanaLinkRelations.SELF);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(PATH + KommentarTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveEditLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-			var model = buildModel();
-
-			assertThat(model.getLink(KommentarModelAssembler.REL_EDIT)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(COMMAND_BY_KOMMENTAR_PATH);
-		}
-
-		@Test
-		void shouldNotHaveEditLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-			var model = buildModel();
-
-			assertThat(model.getLink(KommentarModelAssembler.REL_EDIT)).isEmpty();
-		}
-
-		@Test
-		void shouldHaveCreatedByLink() {
-			UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-			initUserProfileUrlProvider(urlProvider);
-
-			var model = buildModel();
-
-			assertThat(model.getLink(REL_CREATED_BY)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(USER_MANAGER_URL + KommentarTestFactory.CREATED_BY);
-		}
-
-		@Test
-		void shouldHaveAttachmentsLink() {
-			var kommentar = KommentarTestFactory.create();
-			var model = modelAssembler.buildModel(kommentar, VorgangWithEingangTestFactory.create());
-
-			assertThat(model.getLink(KommentarModelAssembler.REL_ATTACHMENTS)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(String.format("%s%s/attachments", PATH, kommentar.getId()));
-		}
-
-		@Test
-		void shouldNotHaveAttachmentsLinkIfNoAttachmentsAvailable() {
-			var kommentar = KommentarTestFactory.createBuilder().clearAttachments().build();
-			var model = modelAssembler.buildModel(kommentar, VorgangWithEingangTestFactory.create());
-
-			assertThat(model.getLink(KommentarModelAssembler.REL_ATTACHMENTS)).isEmpty();
-		}
-
-		EntityModel<Kommentar> buildModel() {
-			return modelAssembler.buildModel(KommentarTestFactory.create(), vorgang);
-		}
-	}
-
-	@Nested
-	class TestLinksOnCollectionModel {
-
-		private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void beforeEach() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-		}
-
-		@Test
-		void shouldBuildModel() {
-			initUserProfileUrlProvider(urlProvider);
-			var kommentar = KommentarTestFactory.create();
-			var vorgang = VorgangWithEingangTestFactory.create();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-
-			modelAssembler.toCollectionModel(Stream.of(kommentar), VorgangHeaderTestFactory.ID);
-
-			verify(modelAssembler).buildModel(kommentar, vorgang);
-		}
-
-		@Test
-		void shouldLoadVorgang() {
-			initUserProfileUrlProvider(urlProvider);
-
-			modelAssembler.toCollectionModel(Collections.singleton(KommentarTestFactory.create()).stream(), VorgangHeaderTestFactory.ID);
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveCreateKommentarLink() {
-			initUserProfileUrlProvider(urlProvider);
-			when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(KommentarTestFactory.create()).stream(),
-					VorgangHeaderTestFactory.ID);
-
-			var link = collectionModel.getLink(KommentarModelAssembler.REL_CREATE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(
-					"/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/kommentarCommands");
-		}
-
-		@Test
-		void shouldNotHaveCreateKommentarLink() {
-			initUserProfileUrlProvider(urlProvider);
-			when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(KommentarTestFactory.create()).stream(),
-					VorgangHeaderTestFactory.ID);
-
-			var link = collectionModel.getLink(KommentarModelAssembler.REL_CREATE);
-			assertThat(link).isEmpty();
-		}
-
-		@Test
-		void shouldHaveUploadFileLink() {
-			var model = modelAssembler.toCollectionModel(Stream.of(KommentarTestFactory.create()), VorgangHeaderTestFactory.ID);
-
-			var link = model.getLink(KommentarModelAssembler.REL_UPLOAD_FILE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo("/api/binaryFiles/" + VorgangHeaderTestFactory.ID + "/kommentarAttachment/file");
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarRemoteServiceTest.java
deleted file mode 100644
index 003ab96f60dee2a7b8a8ce1655bcb4e6b03e275a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarRemoteServiceTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-
-class KommentarRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private KommentarRemoteService service;
-	@Mock
-	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
-	@Mock
-	private KommentarMapper mapper;
-
-	private GrpcVorgangAttachedItem kommentar = GrpcVorgangAttachedItemTestFactory.create();
-
-	@DisplayName("Find by vorgangId")
-	@Nested
-	class TestFindByVorgangId {
-
-		private GrpcFindVorgangAttachedItemRequest request = GrpcFindVorgangAttachedItemRequest.newBuilder()
-				.setVorgangId(VorgangHeaderTestFactory.ID)
-				.setItemName(KommentarRemoteService.ITEM_NAME)
-				.build();
-		private GrpcFindVorgangAttachedItemResponse response = GrpcFindVorgangAttachedItemResponse.newBuilder()
-				.clearVorgangAttachedItems()
-				.addVorgangAttachedItems(kommentar).build();
-
-		@BeforeEach
-		void mockStub() {
-			when(vorgangAttachedItemServiceStub.find(any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			verify(vorgangAttachedItemServiceStub).find(request);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			var result = service.findByVorgangId(VorgangHeaderTestFactory.ID);
-			collectStreamElementsToTriggerLazyStream(result);
-
-			verify(mapper).fromItem(any());
-		}
-
-		private void collectStreamElementsToTriggerLazyStream(Stream<Kommentar> stream) {
-			stream.toList();
-		}
-	}
-
-	@DisplayName("Find by id")
-	@Nested
-	class TestGetById {
-		private GrpcVorgangAttachedItemResponse response = GrpcVorgangAttachedItemResponse.newBuilder()
-				.setVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create())
-				.build();
-		private GrpcVorgangAttachedItemRequest request = GrpcVorgangAttachedItemRequest.newBuilder()
-				.setId(KommentarTestFactory.ID)
-				.build();
-
-		@BeforeEach
-		void mockStub() {
-			when(vorgangAttachedItemServiceStub.getById(any())).thenReturn(response);
-			when(mapper.fromItem(any())).thenReturn(KommentarTestFactory.create());
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.getById(KommentarTestFactory.ID);
-
-			verify(vorgangAttachedItemServiceStub).getById(request);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.getById(KommentarTestFactory.ID);
-
-			verify(mapper).fromItem(any());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarServiceTest.java
deleted file mode 100644
index fa300ce51584e53f9a8ab4491f966c30d9e31c4f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarServiceTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.ZonedDateTime;
-import java.time.temporal.ChronoUnit;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class KommentarServiceTest {
-
-	@Spy
-	@InjectMocks
-	private KommentarService service;
-	@Mock
-	private KommentarRemoteService remoteService;
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@DisplayName("Create kommentar")
-	@Nested
-	class TestCreateKommentar {
-
-		@DisplayName("should")
-		@Nested
-		class TestCalls {
-
-			@BeforeEach
-			void mockServices() {
-				doReturn(KommentarTestFactory.create()).when(service).addCreated(any());
-				when(vorgangAttachedItemService.createNewKommentar(any(), any())).thenReturn(CommandTestFactory.create());
-			}
-
-			@DisplayName("add created")
-			@Test
-			void shouldAddCreated() {
-				callCreateKommentar();
-
-				verify(service).addCreated(any(Kommentar.class));
-			}
-
-			@DisplayName("call vorgangattacheditem service")
-			@Test
-			void shouldCallVorgangAttachedItemService() {
-				callCreateKommentar();
-
-				verify(vorgangAttachedItemService).createNewKommentar(any(Kommentar.class), eq(VorgangHeaderTestFactory.ID));
-			}
-		}
-
-		@DisplayName("Add created")
-		@Nested
-		class TestAddCreated {
-
-			@BeforeEach
-			void mockServices() {
-				when(currentUserService.getUserId()).thenReturn(UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldSetCreatedAt() throws Exception {
-				var kommentar = callAddCreated();
-
-				assertThat(kommentar.getCreatedAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
-			}
-
-			@Test
-			void shouldSetCreatedBy() throws Exception {
-				var kommentar = callAddCreated();
-
-				assertThat(kommentar.getCreatedBy()).isEqualTo(UserProfileTestFactory.ID.toString());
-			}
-
-			private Kommentar callAddCreated() {
-				return service.addCreated(KommentarTestFactory.createBuilder().createdAt(null).createdBy(null).build());
-			}
-		}
-
-		private Command callCreateKommentar() {
-			return service.createKommentar(KommentarTestFactory.create(), VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Edit kommentar")
-	@Nested
-	class TestEditKommentar {
-
-		@Captor
-		private ArgumentCaptor<Kommentar> kommentarCaptor;
-
-		@BeforeEach
-		void mockKommentarService() {
-			when(remoteService.getById(anyString())).thenReturn(KommentarTestFactory.createBuilder().text("text needs to be override").build());
-		}
-
-		@Test
-		void shouldCallGetById() {
-			callEditKommentar();
-
-			verify(service).getById(KommentarTestFactory.ID);
-		}
-
-		@Test
-		void shouldReplaceText() {
-			callEditKommentar();
-
-			verify(vorgangAttachedItemService).editKommentar(kommentarCaptor.capture(), eq(KommentarTestFactory.ID),
-					eq(KommentarTestFactory.VERSION));
-			assertThat(kommentarCaptor.getValue().getText()).isEqualTo(KommentarTestFactory.TEXT);
-		}
-
-		@Test
-		void shouldReplaceAttachments() {
-			service.editKommentar(KommentarTestFactory.create(), KommentarTestFactory.ID, KommentarTestFactory.VERSION);
-
-			verify(vorgangAttachedItemService).editKommentar(
-					kommentarCaptor.capture(),
-					eq(KommentarTestFactory.ID),
-					eq(KommentarTestFactory.VERSION));
-			assertThat(kommentarCaptor.getValue().getAttachments()).containsExactly(BinaryFileTestFactory.FILE_ID);
-		}
-
-		@Test
-		void shouldCallVorgangAttachedItemService() {
-			callEditKommentar();
-
-			verify(vorgangAttachedItemService).editKommentar(any(Kommentar.class), eq(KommentarTestFactory.ID), eq(KommentarTestFactory.VERSION));
-		}
-
-		private Command callEditKommentar() {
-			return service.editKommentar(KommentarTestFactory.create(), KommentarTestFactory.ID, KommentarTestFactory.VERSION);
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(KommentarTestFactory.ID);
-
-			verify(remoteService).getById(KommentarTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestFindByVorgangId {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarTestFactory.java
deleted file mode 100644
index 25df224afb6e04039988ec0e80293e1cc7766863..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarTestFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.kommentar;
-
-import java.time.ZonedDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import com.thedeanda.lorem.Lorem;
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.AlfaTestUtils;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-public class KommentarTestFactory {
-
-	private static Lorem lorem = LoremIpsum.getInstance();
-
-	public static final String ID = AlfaTestUtils.createMongoDbObjectId();
-	public static final long VERSION = 73;
-
-	public static final String CREATED_BY = UserProfileTestFactory.ID.toString();
-	public static final String CREATED_AT_STR = "2021-01-10T10:30:00Z";
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-
-	public static final String TEXT = lorem.getWords(15);
-
-	public static final List<FileId> ATTACHMENTS = Collections.singletonList(BinaryFileTestFactory.FILE_ID);
-
-	public static Kommentar create() {
-		return createBuilder().build();
-	}
-
-	public static Kommentar.KommentarBuilder createBuilder() {
-		return Kommentar.builder()
-				.id(ID)
-				.vorgangId(VorgangHeaderTestFactory.ID)
-				.version(VERSION)
-				.text(TEXT)
-				.attachments(ATTACHMENTS)
-				.createdBy(CREATED_BY)
-				.createdAt(CREATED_AT);
-	}
-
-	public static Map<String, Object> createAsMap() {
-		return Map.of(
-				KommentarMapper.ID, ID,
-				KommentarMapper.TEXT, TEXT,
-				KommentarMapper.CREATED_BY, CREATED_BY,
-				KommentarMapper.CREATED_AT, CREATED_AT_STR,
-				KommentarMapper.ATTACHMENTS, ATTACHMENTS);
-	}
-
-	public static String createRequestContent(CreateCommand command) {
-		var kommentar = (Kommentar) command.getBody();
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithKommentar.json.tmpl",
-				command.getOrder(),
-				TestUtils.addQuote(kommentar.getText()));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungByVorgangControllerTest.java
deleted file mode 100644
index 5b8809359af75af109e905180a27e4cf5a53892b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungByVorgangControllerTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static de.ozgcloud.alfa.common.command.CommandController.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.nio.charset.StandardCharsets;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
-import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungController.LoeschAnforderungByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class LoeschAnforderungByVorgangControllerTest {
-
-	@InjectMocks
-	private LoeschAnforderungByVorgangController controller;
-
-	@Mock
-	private LoeschAnforderungService service;
-
-	@Mock
-	private VorgangController vorgangController;
-
-	@Mock
-	private ProblemDetailMapper problemDetailMapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).setControllerAdvice(new ExceptionController(problemDetailMapper)).build();
-	}
-
-	@DisplayName("Create LoeschAnforderung")
-	@Nested
-	class TestCreateLoeschAnforderung {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(vorgangController.getVorgang(any())).thenReturn(vorgang);
-			when(service.createLoeschAnforderung(any(), any(), anyLong())).thenReturn(CommandTestFactory.create());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldLoadVorgang() {
-			doRequest();
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(service).createLoeschAnforderung(createCommandArgumentCaptor.capture(), eq(vorgang), eq(VorgangHeaderTestFactory.VERSION));
-			assertThat(createCommandArgumentCaptor.getValue().getCommandOrder()).isEqualTo(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnLinkToCommand() {
-			doRequest().andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() throws Exception {
-			var requestBody = CommandTestFactory.buildCreateVorgangCommandContent(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name());
-			return mockMvc.perform(post(LoeschAnforderungByVorgangController.BASE_PATH,
-							VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION)
-							.content(requestBody).contentType(MediaType.APPLICATION_JSON).characterEncoding(StandardCharsets.UTF_8.name()))
-					.andExpect(status().isCreated());
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerITCase.java
deleted file mode 100644
index 4669c46e03aa4e8c3fee7b1b27ece503e9830d4e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerITCase.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.nio.charset.StandardCharsets;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-@WithMockUser
-@AutoConfigureMockMvc
-@SpringBootTest
-class LoeschAnforderungCommandControllerITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@MockBean
-	private LoeschAnforderungService loeschAnforderungService;
-
-	@MockBean
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@MockBean
-	private VorgangController vorgangController;
-
-	@Nested
-	class TestCreateCommand {
-
-		private final LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-
-		@DisplayName("Create VORGANG_LOESCHEN command")
-		@Nested
-		class TestVorgangLoeschen {
-
-			@BeforeEach
-			void init() {
-				when(loeschAnforderungService.vorgangLoeschen(any(), anyString())).thenReturn(CommandTestFactory.create());
-				when(loeschAnforderungService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(loeschAnforderung);
-			}
-
-			@Test
-			void shouldReturnForbidden() throws Exception {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(false);
-
-				var response = doRequest(CommandOrder.VORGANG_LOESCHEN);
-
-				response.andExpect(status().isForbidden());
-			}
-
-			@WithMockUser(roles = UserRole.VERWALTUNG_LOESCHEN)
-			@Test
-			void shouldReturnCreated() throws Exception {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(true);
-
-				var response = doRequest(CommandOrder.VORGANG_LOESCHEN).andExpect(status().isCreated());
-
-				response.andExpect(status().isCreated());
-			}
-
-		}
-
-		@DisplayName("Create LOESCH_ANFORDERUNG_ZURUECKNEHMEN command")
-		@Nested
-		class TestDeleteLoeschAnforderung {
-
-			@BeforeEach
-			void init() {
-				var vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-				var vorgang = VorgangWithEingangTestFactory.create();
-
-				when(vorgangAttachedItemService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(vorgangAttachedItem);
-				when(vorgangController.getVorgang(LoeschAnforderungTestFactory.VORGANG_ID)).thenReturn(vorgang);
-				when(loeschAnforderungService.zuruecknehmen(vorgangAttachedItem, vorgang)).thenReturn(CommandTestFactory.create());
-			}
-
-			@WithMockUser(roles = UserRole.VERWALTUNG_USER)
-			@Test
-			void shouldReturnCreated() throws Exception {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(false);
-
-				var response = doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-
-				response.andExpect(status().isCreated());
-			}
-
-			@WithMockUser(roles = UserRole.VERWALTUNG_POSTSTELLE)
-			@Test
-			void shouldReturnForbidden() throws Exception {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(false);
-
-				var response = doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-
-				response.andExpect(status().isForbidden());
-			}
-		}
-	}
-
-	private ResultActions doRequest(CommandOrder commandOrder) throws Exception {
-		var requestBody = TestUtils.loadTextFile(
-				"jsonTemplates/command/createVorgangCommand.json.tmpl",
-				commandOrder.name());
-
-		return mockMvc.perform(post(LoeschAnforderungCommandController.BASE_PATH, LoeschAnforderungTestFactory.ID)
-				.with(csrf())
-				.content(requestBody).contentType(MediaType.APPLICATION_JSON).characterEncoding(StandardCharsets.UTF_8.name()));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerTest.java
deleted file mode 100644
index 3acc3aa0ac0f854ecdbd683cae7588ac06de282c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandControllerTest.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static de.ozgcloud.alfa.common.command.CommandController.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.hamcrest.CoreMatchers.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.nio.charset.StandardCharsets;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandStatus;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.common.command.StatusPatch;
-import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
-import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class LoeschAnforderungCommandControllerTest {
-
-	@Spy
-	@InjectMocks
-	private LoeschAnforderungCommandController controller;
-
-	@Mock
-	private LoeschAnforderungService loeschAnforderungService;
-
-	@Mock
-	private VorgangController vorgangController;
-
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@Mock
-	private CommandController commandController;
-
-	@Mock
-	private ProblemDetailMapper problemDetailMapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).setControllerAdvice(new ExceptionController(problemDetailMapper)).build();
-	}
-
-	@DisplayName("Create command")
-	@Nested
-	class TestCreateCommand {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		@Nested
-		class TestExecuteLoeschen {
-
-			@BeforeEach
-			void init() {
-				when(loeschAnforderungService.vorgangLoeschen(any(), any())).thenReturn(CommandTestFactory.create());
-			}
-
-			@Test
-			void shouldCallLoeschAnforderungService() throws Exception {
-				doRequest(CommandOrder.VORGANG_LOESCHEN.name()).andExpect(status().isCreated());
-
-				verify(loeschAnforderungService).vorgangLoeschen(createCommandArgumentCaptor.capture(), eq(LoeschAnforderungTestFactory.ID));
-				assertThat(createCommandArgumentCaptor.getValue()).usingRecursiveComparison()
-						.isEqualTo(CommandTestFactory.createCreateCommandBuilder().vorgangId(null).relationVersion(0L).relationId(null)
-								.order(CommandOrder.VORGANG_LOESCHEN.name()).build());
-			}
-
-			@Test
-			void shouldReturnLinkToCommand() throws Exception {
-				var response = doRequest(CommandOrder.VORGANG_LOESCHEN.name());
-
-				response.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-			}
-		}
-
-		@Nested
-		class TestLoeschAnforderungZuruecknehmen {
-
-			private VorgangWithEingang vorgang;
-			private VorgangAttachedItem vorgangAttachedItem;
-
-			@BeforeEach
-			void init() {
-				vorgang = VorgangWithEingangTestFactory.create();
-				vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-				when(vorgangAttachedItemService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(vorgangAttachedItem);
-				when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-				when(loeschAnforderungService.zuruecknehmen(vorgangAttachedItem, vorgang)).thenReturn(CommandTestFactory.create());
-			}
-
-			@Test
-			void shouldLoadVorgangAttachedItem() throws Exception {
-				doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name()).andExpect(status().isCreated());
-
-				verify(vorgangAttachedItemService).getById(LoeschAnforderungTestFactory.ID);
-			}
-
-			@Test
-			void shouldLoadVorgang() throws Exception {
-				doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name()).andExpect(status().isCreated());
-
-				verify(vorgangController).getVorgang(LoeschAnforderungTestFactory.VORGANG_ID);
-			}
-
-			@Test
-			void shouldCallLoeschAnforderungService() throws Exception {
-				doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name()).andExpect(status().isCreated());
-
-				verify(loeschAnforderungService).zuruecknehmen(vorgangAttachedItem, vorgang);
-			}
-
-			@Test
-			void shouldReturnLinkToCommand() throws Exception {
-				var response = doRequest(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name());
-
-				response.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-			}
-		}
-
-		@Test
-		void shouldThrowOrderNotAllowedException() throws Exception {
-			var message = "Order 'CREATE_KOMMENTAR' is not allowed. Expected 'VORGANG_LOESCHEN or LOESCH_ANFORDERUNG_ZURUECKNEHMEN'.";
-
-			doRequest(LegacyOrder.CREATE_KOMMENTAR).andExpect(status().isBadRequest())
-					.andExpect(jsonPath("issues[0].field").isEmpty())
-					.andExpect(jsonPath("issues[0].exceptionId").isNotEmpty())
-					.andExpect(jsonPath("issues[0].messageCode").value("loeschanforderung.order_not_allowed"))
-					.andExpect(jsonPath("issues[0].message").value(containsString(message)));
-		}
-
-		private ResultActions doRequest(String commandOrderString) throws Exception {
-			return mockMvc.perform(post(LoeschAnforderungCommandController.BASE_PATH, LoeschAnforderungTestFactory.ID)
-					.content(CommandTestFactory.buildCreateVorgangCommandContent(commandOrderString))
-					.contentType(MediaType.APPLICATION_JSON)
-					.characterEncoding(StandardCharsets.UTF_8.name()));
-		}
-	}
-
-	@DisplayName("Revoke")
-	@Nested
-	class TestRevoke {
-
-		@DisplayName("on revoke command status patch")
-		@Nested
-		class TestOnRevokedStatus {
-
-			private static final CommandStatus STATUS = CommandStatus.REVOKED;
-
-			@Test
-			void shouldGetCommand() {
-				when(commandController.getById(any())).thenReturn(EntityModel.of(CommandTestFactory.create()));
-
-				doRequest(STATUS);
-
-				verify(commandController).getById(CommandTestFactory.ID);
-			}
-
-			@DisplayName("with VORGANG_ZUM_LOESCHEN_MARKIEREN order")
-			@Nested
-			class TestWithVorgangZumLoeschenMarkierenOrder {
-
-				private final Command command = CommandTestFactory.createBuilder().order(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name())
-						.build();
-
-				@BeforeEach
-				void mockCommandController() {
-					when(commandController.getById(any())).thenReturn(EntityModel.of(command));
-					doReturn(ResponseEntity.ok().build()).when(controller).handleVorgangZumLoeschenMarkierenRevokeCommand(any(), any(), any());
-				}
-
-				@SneakyThrows
-				@Test
-				void shouldHandleVorgangZumLoeschenMarkierenRevokeCommand() {
-					doRequest(STATUS).andExpect(status().isOk());
-
-					verify(controller).handleVorgangZumLoeschenMarkierenRevokeCommand(eq(LoeschAnforderungTestFactory.ID), eq(command), any());
-				}
-			}
-
-			@DisplayName("with LOESCH_ANFORDERUNG_ZURUECKNEHMEN order")
-			@Nested
-			class TestWithLoeschAnforderungZuruecknehmenOrder {
-
-				private final Command command = CommandTestFactory.createBuilder().order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name())
-						.build();
-
-				@BeforeEach
-				void mockCommandController() {
-					when(commandController.getById(any())).thenReturn(EntityModel.of(command));
-					doReturn(ResponseEntity.ok().build()).when(controller).handleLoeschAnforderungZuruecknehmenRevokeCommand(any(), any());
-				}
-
-				@Test
-				void shouldHandleLoeschAnforderungZuruecknehmenRevokeCommand() {
-					doRequest(STATUS);
-
-					verify(controller).handleLoeschAnforderungZuruecknehmenRevokeCommand(any(), any());
-				}
-			}
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnForbiddenOnNonRevokedCommand() {
-			var request = doRequest(CommandStatus.FINISHED);
-
-			request.andExpect(status().isForbidden());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(CommandStatus status) {
-			return mockMvc.perform(
-					patch(LoeschAnforderungCommandController.BASE_PATH + "/{commandId}", LoeschAnforderungTestFactory.ID, CommandTestFactory.ID)
-							.contentType(MediaType.APPLICATION_JSON_VALUE)
-							.content(CommandTestFactory.buildStatusPatchContent(status)));
-		}
-
-		@DisplayName("handle vorgang zum loeschen markieren revoke command")
-		@Nested
-		class TestHandleVorgangZumLoeschenMarkierenRevokeCommand {
-
-			private final StatusPatch statusPatch = StatusPatch.builder().build();
-
-			@Test
-			void shouldCallService() {
-				handVorgangZumLoeschenMarkierenCommand();
-
-				verify(loeschAnforderungService).deleteLoeschAnforderung(LoeschAnforderungTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallController() {
-				handVorgangZumLoeschenMarkierenCommand();
-
-				verify(commandController).revoke(CommandTestFactory.ID, statusPatch);
-			}
-
-			@Test
-			void shouldReturnOk() {
-				when(commandController.revoke(any(), any())).thenReturn(ResponseEntity.ok().build());
-
-				var result = handVorgangZumLoeschenMarkierenCommand();
-
-				assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
-			}
-
-			private ResponseEntity<EntityModel<Command>> handVorgangZumLoeschenMarkierenCommand() {
-				return controller.handleVorgangZumLoeschenMarkierenRevokeCommand(LoeschAnforderungTestFactory.ID, CommandTestFactory.create(),
-						statusPatch);
-			}
-		}
-
-		@DisplayName("handle loeschAnforderung zuruecknehmen revoke command")
-		@Nested
-		class TestHandleLoeschVorgangZuruecknehmenRevokeCommand {
-
-			private final StatusPatch statusPatch = StatusPatch.builder().build();
-			private final Command command = CommandTestFactory.create();
-
-			@Test
-			void shouldCreateLoeschAnforderung() {
-				controller.handleLoeschAnforderungZuruecknehmenRevokeCommand(command, statusPatch);
-
-				verify(loeschAnforderungService).reCreateLoeschAnforderung(command);
-			}
-
-			@Test
-			void shouldGetChangeStatusCommandId() {
-				controller.handleLoeschAnforderungZuruecknehmenRevokeCommand(command, statusPatch);
-
-				verify(loeschAnforderungService).getChangeStatusCommandId(command);
-			}
-
-			@Test
-			void shouldCallController() {
-				when(loeschAnforderungService.getChangeStatusCommandId(any())).thenReturn(CommandTestFactory.ID);
-
-				controller.handleLoeschAnforderungZuruecknehmenRevokeCommand(command, statusPatch);
-
-				verify(commandController).revoke(CommandTestFactory.ID, statusPatch);
-			}
-
-			@Test
-			void shouldReturnOk() {
-				when(commandController.revoke(any(), any())).thenReturn(ResponseEntity.ok().build());
-
-				var result = controller.handleLoeschAnforderungZuruecknehmenRevokeCommand(command, statusPatch);
-
-				assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessorTest.java
deleted file mode 100644
index e2024c879ace255ff4e5f74a0c4d2492dac29868..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungCommandProcessorTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.Test;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandStatus;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-
-class LoeschAnforderungCommandProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private LoeschAnforderungCommandProcessor processor;
-
-	@Mock
-	private LoeschAnforderungService service;
-
-	@DisplayName("Prozess")
-	@Nested
-	class TestProcess {
-
-		@BeforeEach
-		void mock() {
-			UserProfileUrlProviderTestFactory.initUserProfileUrlProvider(new UserProfileUrlProvider());
-		}
-
-		@DisplayName("on revokeable")
-		@Nested
-		class TestRevokeableCommand {
-
-			@DisplayName("zum loeschen markieren command")
-			@Nested
-			class TestLoeschAnforderungCommand {
-
-				private final Command finishedCommand = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build();
-
-				@BeforeEach
-				void mock() {
-					when(service.findLoeschAnforderung(any())).thenReturn(Optional.of(VorgangAttachedItemTestFactory.create()));
-				}
-
-				@Test
-				void shouldAddLink() {
-					var entityModel = EntityModel
-							.of(finishedCommand.toBuilder().order(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name()).build());
-
-					var prozessedCommand = processor.process(entityModel);
-
-					assertThat(prozessedCommand.getLink(LoeschAnforderungCommandProcessor.REL_REVOKE)).isPresent().get().extracting(Link::getHref)
-							.isEqualTo("/api/loeschanforderungs/" + VorgangAttachedItemTestFactory.ID + "/commands/" + CommandTestFactory.ID);
-				}
-
-				@Test
-				void shouldCallService() {
-					var entityModel = EntityModel
-							.of(finishedCommand.toBuilder().order(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name()).build());
-
-					var prozessedCommand = processor.process(entityModel);
-
-					assertThat(prozessedCommand.getLink(LoeschAnforderungCommandProcessor.REL_REVOKE)).isPresent().get().extracting(Link::getHref)
-							.isEqualTo("/api/loeschanforderungs/" + VorgangAttachedItemTestFactory.ID + "/commands/" + CommandTestFactory.ID);
-				}
-			}
-
-			@DisplayName("loeschAnforderung zuruecknehmen command")
-			@Nested
-			class TestLoeschAnforderungZuruecknehmenCommand {
-
-				private final Command finishedCommand = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build();
-
-				@Test
-				void shouldAddLink() {
-					var entityModel = EntityModel
-							.of(finishedCommand.toBuilder().order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name()).build());
-
-					var prozessedCommand = processor.process(entityModel);
-
-					assertThat(prozessedCommand.getLink(LoeschAnforderungCommandProcessor.REL_REVOKE)).isPresent().get().extracting(Link::getHref)
-							.isEqualTo("/api/loeschanforderungs/" + CommandTestFactory.RELATION_ID + "/commands/" + CommandTestFactory.ID);
-				}
-			}
-
-			@DisplayName("on other commands")
-			@Nested
-			class TestOnOtherCommand {
-
-				private final Command finishedCommand = CommandTestFactory.createBuilder().status(CommandStatus.FINISHED).build();
-
-				@DisplayName("except zum loeschen markieren")
-				@Nested
-				class TestsExceptLoeschAnforderungZuruecknehmen {
-
-					@ParameterizedTest
-					@EnumSource(mode = Mode.EXCLUDE, names = { "VORGANG_ZUM_LOESCHEN_MARKIEREN" })
-					void shouldNotCallService(CommandOrder order) {
-						var command = finishedCommand.toBuilder().order(order.name()).build();
-
-						processor.process(EntityModel.of(command));
-
-						verify(service, never()).findLoeschAnforderung(any());
-					}
-				}
-
-				@ParameterizedTest
-				@EnumSource(mode = Mode.EXCLUDE, names = { "VORGANG_ZUM_LOESCHEN_MARKIEREN", "LOESCH_ANFORDERUNG_ZURUECKNEHMEN" })
-				void NotAddRevokeLink(CommandOrder order) {
-					var command = finishedCommand.toBuilder().order(order.name()).build();
-
-					var prozessedCommand = processor.process(EntityModel.of(command));
-
-					assertThat(prozessedCommand.getLink(LoeschAnforderungCommandProcessor.REL_REVOKE)).isEmpty();
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java
deleted file mode 100644
index a1d67f14c2f6c985fb1c0613cf00c71c86030202..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungControllerTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.errorhandling.ExceptionController;
-import de.ozgcloud.alfa.common.errorhandling.ProblemDetailMapper;
-import lombok.SneakyThrows;
-
-class LoeschAnforderungControllerTest {
-
-	@InjectMocks
-	private LoeschAnforderungController controller;
-
-	@Mock
-	private LoeschAnforderungService loeschAnforderungService;
-
-	@Mock
-	private LoeschAnforderungModelAssembler modelAssembler;
-
-	@Mock
-	private ProblemDetailMapper problemDetailMapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).setControllerAdvice(new ExceptionController(problemDetailMapper)).build();
-	}
-
-	@Nested
-	class TestGetLoeschanforderung {
-
-		private final LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(loeschAnforderungService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(loeschAnforderung);
-			when(modelAssembler.toModel(loeschAnforderung)).thenReturn(EntityModel.of(loeschAnforderung));
-		}
-
-		@Test
-		void shouldLoadLoeschAnforderung() {
-			doRequest();
-
-			verify(loeschAnforderungService).getById(LoeschAnforderungTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() {
-			doRequest();
-
-			verify(modelAssembler).toModel(loeschAnforderung);
-		}
-
-		@Test
-		void shouldReturn200() throws Exception {
-			initUserProfileUrlProvider(new UserProfileUrlProvider());
-
-			var response = doRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc.perform(get(LoeschAnforderungController.BASE_PATH + "/" + LoeschAnforderungTestFactory.ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapperTest.java
deleted file mode 100644
index 596b0238a52c52610ad2e904267cea17afd737b0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungMapperTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.Map;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class LoeschAnforderungMapperTest {
-
-	private final LoeschAnforderungMapper mapper = new LoeschAnforderungMapper();
-
-	@DisplayName("From vorgangAttachedItem")
-	@Nested
-	class TestFromVorgangAttachedItem {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.createBuilder().item(Map.of(
-				LoeschAnforderung.REQUESTED_BY_FIELD,
-				LoeschAnforderungTestFactory.REQUESTED_BY.toString(),
-				LoeschAnforderung.PREV_STATUS_FIELD,
-				LoeschAnforderungTestFactory.PREV_STATUS.name())).build();
-
-		@Test
-		void shouldMapId() {
-			var loeschAnforderung = mapFromVorgangAttachedItem();
-
-			assertThat(loeschAnforderung.getId()).isEqualTo(VorgangAttachedItemTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapVorgangId() {
-			var loeschAnforderung = mapFromVorgangAttachedItem();
-
-			assertThat(loeschAnforderung.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapRequestBy() {
-			var loeschAnforderung = mapFromVorgangAttachedItem();
-
-			assertThat(loeschAnforderung.getRequestedBy()).isEqualTo(LoeschAnforderungTestFactory.REQUESTED_BY);
-		}
-
-		@Test
-		void shouldMapPrevStatus() {
-			var loeschAnforderung = mapFromVorgangAttachedItem();
-
-			assertThat(loeschAnforderung.getPrevStatus()).isEqualTo(LoeschAnforderungTestFactory.PREV_STATUS);
-		}
-
-		private LoeschAnforderung mapFromVorgangAttachedItem() {
-			return mapper.fromVorgangAttachedItem(vorgangAttachedItem);
-		}
-	}
-
-	@DisplayName("From Command")
-	@Nested
-	class TestBuildLoeschAnforderung {
-
-		private final Command command = CommandTestFactory.createBuilder()
-				.body(Map.of(VorgangAttachedItem.ITEM_FIELD, LoeschAnforderungTestFactory.asMap()))
-				.build();
-
-		@Test
-		void shouldHaveId() {
-			var loeschAnforderung = mapper.fromCommand(command);
-
-			assertThat(loeschAnforderung.getId()).isEqualTo(CommandTestFactory.RELATION_ID);
-		}
-
-		@Test
-		void shouldHaveVorgangId() {
-			var loeschAnforderung = mapper.fromCommand(command);
-
-			assertThat(loeschAnforderung.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveRequestedBy() {
-			var loeschAnforderung = mapper.fromCommand(command);
-
-			assertThat(loeschAnforderung.getRequestedBy()).isEqualTo(LoeschAnforderungTestFactory.REQUESTED_BY);
-		}
-
-		@Test
-		void shouldHavePrevStatus() {
-			var loeschAnforderung = mapper.fromCommand(command);
-
-			assertThat(loeschAnforderung.getPrevStatus()).isEqualTo(LoeschAnforderungTestFactory.PREV_STATUS);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssemblerTest.java
deleted file mode 100644
index c6bedb3645c210635be3d0da465c48c386b6aa0a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungModelAssemblerTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.web.util.UriTemplate;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-
-class LoeschAnforderungModelAssemblerTest {
-
-	@InjectMocks
-	private LoeschAnforderungModelAssembler modelAssembler;
-	@Mock
-	private LoeschAnforderungService loeschAnforderungService;
-
-	@BeforeEach
-	void init() {
-		initUserProfileUrlProvider(new UserProfileUrlProvider());
-	}
-
-	@Nested
-	@DisplayName("Build resource")
-	class TestToModel {
-
-		private static final UriTemplate LOESCH_ANFORDERUNG_COMMAND_URI_TEMPLATE = new UriTemplate(LoeschAnforderungCommandController.BASE_PATH);
-
-		private final LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-
-		@Test
-		void shouldBuildModel() {
-			var model = toModel();
-
-			assertThat(model.getContent()).usingRecursiveComparison().isEqualTo(LoeschAnforderungTestFactory.create());
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = toModel();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(LoeschAnforderungController.BASE_PATH + "/" + LoeschAnforderungTestFactory.ID);
-		}
-
-		@Test
-		void shouldCheckIfAllowedToVorgangLoeschen() {
-			toModel();
-
-			verify(loeschAnforderungService).isAllowedToVorgangLoeschen(loeschAnforderung);
-		}
-
-		@DisplayName("execute loeschen link")
-		@Nested
-		class TestExecuteLoeschenLink {
-
-			@Test
-			void shouldBeAdded() {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(any())).thenReturn(true);
-
-				var model = toModel();
-
-				assertThat(model.getLink(LoeschAnforderungModelAssembler.REL_EXECUTE_LOESCHEN)).isPresent().get().extracting(Link::getHref)
-						.isEqualTo(LOESCH_ANFORDERUNG_COMMAND_URI_TEMPLATE.expand(LoeschAnforderungTestFactory.ID).toString());
-			}
-
-			@Test
-			void shouldNotBeAdded() {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(any())).thenReturn(false);
-
-				var model = toModel();
-
-				assertThat(model.getLink(LoeschAnforderungModelAssembler.REL_EXECUTE_LOESCHEN)).isEmpty();
-			}
-		}
-
-		@DisplayName("loeschAnforderung zuruecknehmen link")
-		@Nested
-		class TestLoeschAnforderungZuruecknehmen {
-
-			@Test
-			void shouldBeAdded() {
-				var model = toModel();
-
-				var link = model.getLink(LoeschAnforderungModelAssembler.REL_LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-				assertThat(link).isPresent().map(Link::getHref)
-						.hasValue(LOESCH_ANFORDERUNG_COMMAND_URI_TEMPLATE.expand(LoeschAnforderungTestFactory.ID).toString());
-			}
-		}
-
-		private EntityModel<LoeschAnforderung> toModel() {
-			return modelAssembler.toModel(loeschAnforderung);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandlerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandlerTest.java
deleted file mode 100644
index b1b6ca140fb23b61bd37508a2f97e4ef3930a0cf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungPreAuthorizeHandlerTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-
-class LoeschAnforderungPreAuthorizeHandlerTest {
-
-	@InjectMocks
-	private LoeschAnforderungPreAuthorizeHandler handler;
-
-	@Mock
-	private LoeschAnforderungService loeschAnforderungService;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@Nested
-	class TestHasPermissionForOrder {
-
-		private final LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-
-		@DisplayName("Has permission for VORGANG_LOESCHEN")
-		@Nested
-		class TestVorgangLoeschen {
-
-			@BeforeEach
-			void init() {
-				when(loeschAnforderungService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(loeschAnforderung);
-			}
-
-			@Test
-			void shouldLoadLoeschAnforderung() {
-				handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.VORGANG_LOESCHEN);
-
-				verify(loeschAnforderungService).getById(LoeschAnforderungTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallLoeschAnforderungService() {
-				handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.VORGANG_LOESCHEN);
-
-				verify(loeschAnforderungService).isAllowedToVorgangLoeschen(loeschAnforderung);
-			}
-
-			@Test
-			void shouldReturnFalseIfNotAllowed() {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(false);
-
-				var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.VORGANG_LOESCHEN);
-
-				assertThat(result).isFalse();
-			}
-
-			@Test
-			void shouldReturnTrueIfAllowed() {
-				when(loeschAnforderungService.isAllowedToVorgangLoeschen(loeschAnforderung)).thenReturn(true);
-
-				var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.VORGANG_LOESCHEN);
-
-				assertThat(result).isTrue();
-			}
-		}
-
-		@DisplayName("Has permission for LOESCH_ANFORDERUNG_ZURUECKNEHMEN")
-		@Nested
-		class TestVorgangLoeschenZuruecknehmen {
-
-			@Nested
-			class checkingRole {
-				@BeforeEach
-				void setupUserServiceMock() {
-					when(currentUserService.hasRole(any())).thenReturn(false);
-				}
-
-				@Test
-				void shouldReturnTrueForVerwaltungUser() {
-					when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-
-					var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-
-					assertThat(result).isTrue();
-				}
-
-				@Test
-				void shouldReturnTrueForEA() {
-					when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-
-					var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-
-					assertThat(result).isTrue();
-				}
-
-				@Test
-				void shouldReturnFalseMissingRole() {
-					when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-
-					var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-
-					assertThat(result).isFalse();
-				}
-			}
-
-			@Test
-			void shouldReturnFalseForNotAllowedCommandOrder() {
-				var result = handler.hasPermissionForOrder(LoeschAnforderungTestFactory.ID, CommandOrder.CREATE_ATTACHED_ITEM);
-
-				assertThat(result).isFalse();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungServiceTest.java
deleted file mode 100644
index 740205da24a3a642caaddc6cc357fcf76d31e529..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungServiceTest.java
+++ /dev/null
@@ -1,730 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.assertj.core.api.InstanceOfAssertFactories;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItem;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-
-class LoeschAnforderungServiceTest {
-
-	@Spy
-	@InjectMocks
-	private LoeschAnforderungService service;
-	@Mock
-	private LoeschAnforderungMapper mapper;
-
-	@Mock
-	private CommandService commandService;
-
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@Nested
-	class TestCreateVorgangAttachedItem {
-
-		@Captor
-		private ArgumentCaptor<LoeschAnforderung> commandBodyArgumentCaptor;
-
-		@BeforeEach
-		void init() {
-			when(currentUserService.getUserId()).thenReturn(UserProfileTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallCurrentUserService() {
-			service.createLoeschAnforderung(CommandTestFactory.createCreateCommand(), VorgangWithEingangTestFactory.create(),
-					VorgangHeaderTestFactory.VERSION);
-
-			verify(currentUserService).getUserId();
-		}
-
-		@Test
-		void shouldCallVorgangAttachedItemService() {
-			service.createLoeschAnforderung(CommandTestFactory.createCreateCommand(), VorgangWithEingangTestFactory.create(),
-					VorgangHeaderTestFactory.VERSION);
-
-			verify(vorgangAttachedItemService).createNewLoeschAnforderung(commandBodyArgumentCaptor.capture(), eq(VorgangHeaderTestFactory.ID));
-
-			assertThat(commandBodyArgumentCaptor.getValue()).asInstanceOf(InstanceOfAssertFactories.type(LoeschAnforderung.class))
-					.extracting(LoeschAnforderung::getPrevStatus, LoeschAnforderung::getRequestedBy)
-					.containsExactly(VorgangHeaderTestFactory.STATUS, UserProfileTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestCreateCreateCommand {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		@Test
-		void shouldCallCommandService() {
-			var createCommand = CreateCommand.builder().order(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN.name()).build();
-			service.createCreateCommand(createCommand, VorgangWithEingangTestFactory.create(), VorgangHeaderTestFactory.VERSION);
-
-			verify(commandService).createCommand(createCommandArgumentCaptor.capture(), anyLong());
-
-			assertThat(createCommandArgumentCaptor.getValue().getCommandOrder()).isEqualTo(CommandOrder.VORGANG_ZUM_LOESCHEN_MARKIEREN);
-			assertThat(createCommandArgumentCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-			assertThat(createCommandArgumentCaptor.getValue().getRelationId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnCommand() {
-			var command = CommandTestFactory.create();
-			when(commandService.createCommand(any(), anyLong())).thenReturn(command);
-
-			var result = service.createCreateCommand(
-					CommandTestFactory.createCreateCommand(),
-					VorgangWithEingangTestFactory.create(),
-					VorgangHeaderTestFactory.VERSION);
-
-			assertThat(result).isEqualTo(command);
-		}
-	}
-
-	@Nested
-	class TestCreateLoeschAnforderung {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-		private final CreateCommand createCommand = CommandTestFactory.createCreateCommand();
-
-		@BeforeEach
-		void init() {
-			doNothing().when(service).createVorgangAttachedItem(vorgang);
-		}
-
-		@Test
-		void shouldCallCreateVorgangAttachedItem() {
-			service.createLoeschAnforderung(CommandTestFactory.createCreateCommand(), vorgang, CommandTestFactory.RELATION_VERSION);
-
-			verify(service).createVorgangAttachedItem(vorgang);
-		}
-
-		@Test
-		void shouldCreateCreateCommand() {
-			service.createLoeschAnforderung(createCommand, vorgang, VorgangHeaderTestFactory.VERSION);
-
-			verify(service).createCreateCommand(createCommand, vorgang, VorgangHeaderTestFactory.VERSION);
-		}
-	}
-
-	@Nested
-	class TestIsAllowedToVorgangLoeschen {
-
-		@Test
-		void shouldReturnTrue() {
-			when(currentUserService.getUserId()).thenReturn(UserId.from(UUID.randomUUID()));
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_LOESCHEN)).thenReturn(true);
-
-			var isAllowed = service.isAllowedToVorgangLoeschen(LoeschAnforderungTestFactory.create());
-
-			assertThat(isAllowed).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfRolesMissing() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_LOESCHEN)).thenReturn(false);
-
-			var isAllowed = service.isAllowedToVorgangLoeschen(LoeschAnforderungTestFactory.create());
-
-			assertThat(isAllowed).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseIfRequestorIsSameUser() {
-			when(currentUserService.getUserId()).thenReturn(UserId.from(LoeschAnforderungTestFactory.REQUESTED_BY.toString()));
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_LOESCHEN)).thenReturn(true);
-
-			var isAllowed = service.isAllowedToVorgangLoeschen(LoeschAnforderungTestFactory.create());
-
-			assertThat(isAllowed).isFalse();
-		}
-	}
-
-	@Nested
-	@DisplayName("Get LoeschAnforderung resouce by id")
-	class TestGetById {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-		private final LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(vorgangAttachedItemService.getById(LoeschAnforderungTestFactory.ID)).thenReturn(vorgangAttachedItem);
-			when(mapper.fromVorgangAttachedItem(any())).thenReturn(loeschAnforderung);
-		}
-
-		@Test
-		void shouldCallVorgangAttachedItemService() {
-			service.getById(LoeschAnforderungTestFactory.ID);
-
-			verify(vorgangAttachedItemService).getById(LoeschAnforderungTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapVorgangAttachedItem() {
-			service.getById(LoeschAnforderungTestFactory.ID);
-
-			verify(mapper).fromVorgangAttachedItem(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldReturnLoeschAnforderung() {
-			var result = service.getById(LoeschAnforderungTestFactory.ID);
-
-			assertThat(result).isEqualTo(loeschAnforderung);
-		}
-	}
-
-	@Nested
-	@DisplayName("Vorgang loeschen")
-	class TestVorgangLoeschen {
-
-		private LoeschAnforderung loeschAnforderung = LoeschAnforderungTestFactory.create();
-		private Command created = CommandTestFactory.create();
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandArgumentCaptor;
-
-		@BeforeEach
-		void init() {
-			doReturn(loeschAnforderung).when(service).getById(LoeschAnforderungTestFactory.ID);
-			when(commandService.createCommand(any())).thenReturn(created);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			service.vorgangLoeschen(CommandTestFactory.createCreateCommand(), LoeschAnforderungTestFactory.ID);
-
-			verify(commandService).createCommand(createCommandArgumentCaptor.capture());
-			assertThat(createCommandArgumentCaptor.getValue()).usingRecursiveComparison()
-					.ignoringFields("vorgangId", "relationId").isEqualTo(CommandTestFactory.createCreateCommand());
-			assertThat(createCommandArgumentCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-			assertThat(createCommandArgumentCaptor.getValue().getRelationId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnCreatedCommand() {
-			var result = service.vorgangLoeschen(
-					CreateCommand.builder().order(CommandOrder.VORGANG_LOESCHEN.name()).build(), LoeschAnforderungTestFactory.ID);
-
-			assertThat(result).isEqualTo(created);
-		}
-	}
-
-	@Nested
-	class TestLoeschAnforderungZuruecknehmen {
-
-		private Vorgang vorgang = VorgangHeaderTestFactory.create();
-		private VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.createBuilder().item(LoeschAnforderungTestFactory.asMap())
-				.build();
-		private LoeschAnforderung loeschAnforderung;
-		private Command changeStatusCommand;
-		private Command deleteAttachedItemCommand;
-		private Command deleteLoeschAnforderungCommand;
-		private CreateCommand deleteLoeschAnforderungCreateCommand;
-
-		@BeforeEach
-		void init() {
-			prepareLoeschAnforderung();
-			prepareDeleteAttachedItemCommand();
-			prepareChangeVorgangStatusCommand();
-			prepareDeleteLoeschAnforderungCommand();
-			prepareResultCommand();
-		}
-
-		void prepareLoeschAnforderung() {
-			loeschAnforderung = LoeschAnforderungTestFactory.create();
-			when(mapper.fromVorgangAttachedItem(any())).thenReturn(loeschAnforderung);
-		}
-
-		void prepareDeleteAttachedItemCommand() {
-			deleteAttachedItemCommand = CommandTestFactory.create();
-			when(vorgangAttachedItemService.deleteAttachedItem(vorgangAttachedItem)).thenReturn(deleteAttachedItemCommand);
-		}
-
-		void prepareChangeVorgangStatusCommand() {
-			changeStatusCommand = CommandTestFactory.create();
-			doReturn(changeStatusCommand).when(service).setPreviousVorgangStatus(vorgang, loeschAnforderung);
-		}
-
-		void prepareDeleteLoeschAnforderungCommand() {
-			deleteLoeschAnforderungCreateCommand = CommandTestFactory.createCreateCommand();
-			doReturn(deleteLoeschAnforderungCreateCommand).when(service)
-					.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeStatusCommand, vorgang, loeschAnforderung);
-		}
-
-		void prepareResultCommand() {
-			deleteLoeschAnforderungCommand = CommandTestFactory.create();
-			when(commandService.createCommand(deleteLoeschAnforderungCreateCommand, VorgangHeaderTestFactory.VERSION)).thenReturn(
-					deleteLoeschAnforderungCommand);
-		}
-
-		@Test
-		void shouldMapVorgangAttachedItemToLoeschAnforderung() {
-			service.zuruecknehmen(vorgangAttachedItem, vorgang);
-
-			verify(mapper).fromVorgangAttachedItem(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldDeleteVorgangAttacheditem() {
-			service.zuruecknehmen(vorgangAttachedItem, vorgang);
-
-			verify(vorgangAttachedItemService).deleteAttachedItem(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldSetPreviousVorgangStatus() {
-			service.zuruecknehmen(vorgangAttachedItem, vorgang);
-
-			verify(service).setPreviousVorgangStatus(vorgang, loeschAnforderung);
-		}
-
-		@Test
-		void shouldCreateDeleteLoeschAnforderungCommand() {
-			service.zuruecknehmen(vorgangAttachedItem, vorgang);
-
-			verify(service).buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeStatusCommand, vorgang, loeschAnforderung);
-		}
-
-		@Test
-		void shouldReturnCommand() {
-			var resultCommand = service.zuruecknehmen(vorgangAttachedItem, vorgang);
-
-			assertThat(resultCommand).isEqualTo(deleteLoeschAnforderungCommand);
-		}
-	}
-
-	@Nested
-	class TestCreateDeleteLoeschAnforderungCommand {
-		private Command deleteAttachedItemCommand;
-		private Command changeVorgangStatusCommand;
-		private Vorgang vorgang;
-		private LoeschAnforderung loeschAnforderung;
-
-		@BeforeEach
-		void init() {
-			deleteAttachedItemCommand = CommandTestFactory.create();
-			changeVorgangStatusCommand = CommandTestFactory.create();
-			vorgang = VorgangHeaderTestFactory.create();
-			loeschAnforderung = LoeschAnforderungTestFactory.create();
-		}
-
-		@Test
-		void shouldHaveOrder() {
-			var createCommand = service.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeVorgangStatusCommand, vorgang,
-					loeschAnforderung);
-
-			assertThat(createCommand.getCommandOrder()).isEqualTo(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN);
-		}
-
-		@Test
-		void shouldContainsDeleteAttachedItemCommandId() {
-			var createCommand = service.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeVorgangStatusCommand, vorgang,
-					loeschAnforderung);
-
-			assertThat(createCommand.getBody()).asInstanceOf(InstanceOfAssertFactories.type(DeleteLoeschAnforderung.class))
-					.extracting(DeleteLoeschAnforderung::getDeleteAttachedItemCommandId).isEqualTo(deleteAttachedItemCommand.getId());
-		}
-
-		@Test
-		void shouldContainsChangeVorgangStatusCommandId() {
-			var createCommand = service.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeVorgangStatusCommand, vorgang,
-					loeschAnforderung);
-
-			assertThat(createCommand.getBody()).asInstanceOf(InstanceOfAssertFactories.type(DeleteLoeschAnforderung.class))
-					.extracting(DeleteLoeschAnforderung::getChangeStatusCommandId).isEqualTo(changeVorgangStatusCommand.getId());
-		}
-
-		@Test
-		void shouldHaveVorgangId() {
-			var createCommand = service.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeVorgangStatusCommand, vorgang,
-					loeschAnforderung);
-
-			assertThat(createCommand.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveRelationId() {
-			var createCommand = service.buildDeleteLoeschAnforderungCommand(deleteAttachedItemCommand, changeVorgangStatusCommand, vorgang,
-					loeschAnforderung);
-
-			assertThat(createCommand.getRelationId()).isEqualTo(LoeschAnforderungTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestGetCommandOrderForPreviousStatus {
-
-		@Test
-		void shouldReturnVorgangVerwerfenOrder() {
-			var loeschAnforderung = LoeschAnforderungTestFactory.createBuilder().prevStatus(VorgangStatus.VERWORFEN).build();
-
-			var order = service.getCommandOrderForPreviousStatus(loeschAnforderung);
-
-			assertThat(order).isEqualTo(CommandOrder.VORGANG_VERWERFEN);
-		}
-
-		@Test
-		void shouldReturnVorgangAbschliessenOrder() {
-			var loeschAnforderung = LoeschAnforderungTestFactory.createBuilder().prevStatus(VorgangStatus.ABGESCHLOSSEN).build();
-
-			var order = service.getCommandOrderForPreviousStatus(loeschAnforderung);
-
-			assertThat(order).isEqualTo(CommandOrder.VORGANG_ABSCHLIESSEN);
-		}
-
-		@Test
-		void shouldThrowTechnicalException() {
-			var loeschAnforderung = LoeschAnforderungTestFactory.createBuilder().prevStatus(VorgangStatus.NEU).build();
-
-			assertThatThrownBy(() -> service.getCommandOrderForPreviousStatus(loeschAnforderung)).isInstanceOf(
-					TechnicalException.class);
-
-		}
-	}
-
-	@Nested
-	class TestCreateSetPreviousVorgangStatusCreateCommand {
-
-		private LoeschAnforderung loeschAnforderung;
-		private Vorgang vorgang;
-
-		@BeforeEach
-		void init() {
-			loeschAnforderung = LoeschAnforderungTestFactory.createBuilder().prevStatus(VorgangStatus.ABGESCHLOSSEN).build();
-			vorgang = VorgangHeaderTestFactory.create();
-		}
-
-		@Test
-		void shouldSetOrder() {
-			var command = service.createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-			assertThat(command.getCommandOrder()).isEqualTo(CommandOrder.VORGANG_ABSCHLIESSEN);
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var command = service.createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-			assertThat(command.getVorgangId()).isEqualTo(LoeschAnforderungTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldSetRelationId() {
-			var command = service.createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-			assertThat(command.getRelationId()).isEqualTo(LoeschAnforderungTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldSetVersion() {
-			var command = service.createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-			assertThat(command.getRelationVersion()).isEqualTo(VorgangHeaderTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldCallGetCommandOrderForPreviousStatus() {
-			service.createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-
-			verify(service).getCommandOrderForPreviousStatus(loeschAnforderung);
-		}
-	}
-
-	@Nested
-	class TestSetPreviousVorgangStatus {
-
-		private LoeschAnforderung loeschAnforderung;
-		private Vorgang vorgang;
-		private CreateCommand createCommand;
-		private Command command;
-
-		@BeforeEach
-		void init() {
-			loeschAnforderung = LoeschAnforderungTestFactory.createBuilder().prevStatus(VorgangStatus.ABGESCHLOSSEN).build();
-			vorgang = VorgangHeaderTestFactory.create();
-			createCommand = CommandTestFactory.createCreateCommand();
-			command = CommandTestFactory.create();
-
-			doReturn(createCommand).when(service).createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-			when(commandService.createCommand(createCommand, VorgangHeaderTestFactory.VERSION)).thenReturn(command);
-		}
-
-		@Test
-		void shouldCreateCommand() {
-			service.setPreviousVorgangStatus(vorgang, loeschAnforderung);
-
-			verify(service).createSetPreviousVorgangStatusCreateCommand(vorgang, loeschAnforderung);
-		}
-
-		@Test
-		void shouldCallCommandService() {
-			service.setPreviousVorgangStatus(vorgang, loeschAnforderung);
-
-			verify(commandService).createCommand(createCommand, VorgangHeaderTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldReturnCommand() {
-			var result = service.setPreviousVorgangStatus(vorgang, loeschAnforderung);
-
-			assertThat(result).isEqualTo(command);
-		}
-	}
-
-	@Nested
-	@DisplayName("FindVorgangAttachedItem")
-	class TestFindVorgangAttachedItem {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-		private final Stream<VorgangAttachedItem> vorgangAttachedItems = Stream.of(vorgangAttachedItem);
-
-		@DisplayName("on single result")
-		@Nested
-		class TestOnSingleLoeschAnforderung {
-
-			@BeforeEach
-			void init() {
-				when(vorgangAttachedItemService.findLoeschAnforderung(VorgangHeaderTestFactory.ID)).thenReturn(vorgangAttachedItems);
-			}
-
-			@Test
-			void shouldCallRemoteService() {
-				service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-				verify(vorgangAttachedItemService).findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldReturnResult() {
-				var result = service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-				assertThat(result).isPresent().hasValue(vorgangAttachedItem);
-			}
-		}
-
-		@DisplayName("on multiple result")
-		@Nested
-		class TestOnMultipleLoeschAnforderungen {
-
-			private final Stream<VorgangAttachedItem> loeschAnforderungen = Stream.of(vorgangAttachedItem, vorgangAttachedItem);
-
-			@BeforeEach
-			void initMock() {
-				when(vorgangAttachedItemService.findLoeschAnforderung(VorgangHeaderTestFactory.ID)).thenReturn(loeschAnforderungen);
-			}
-
-			@Test
-			void shouldDeleteDuplicateLoeschAnforderung() {
-				service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-				verify(service).deleteDuplicateLoeschAnforderung(any(), eq(VorgangHeaderTestFactory.ID));
-			}
-
-			@Test
-			void shouldReturnFirstLoeschAnforderung() {
-				var result = service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-				assertThat(result).isPresent().hasValue(vorgangAttachedItem);
-			}
-		}
-
-		@DisplayName("delete duplicate loeschAnforderung")
-		@Nested
-		class TestDeleteDuplicateLoeschAnforderun {
-
-			private final VorgangAttachedItem otherLoeschAnforderung = VorgangAttachedItemTestFactory.create();
-			private final VorgangAttachedItem anotherLoeschAnforderung = VorgangAttachedItemTestFactory.create();
-			private final List<VorgangAttachedItem> loeschAnforderungen = List.of(vorgangAttachedItem, otherLoeschAnforderung,
-					anotherLoeschAnforderung);
-
-			@Test
-			void shouldDeleteAllExceptFirstElement() {
-				service.deleteDuplicateLoeschAnforderung(loeschAnforderungen, VorgangHeaderTestFactory.ID);
-
-				verify(vorgangAttachedItemService).deleteAttachedItem(otherLoeschAnforderung);
-				verify(vorgangAttachedItemService).deleteAttachedItem(anotherLoeschAnforderung);
-			}
-		}
-	}
-
-	@DisplayName("Find Loeschanforderung")
-	@Nested
-	class TestFindLoeschAnforderung {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void mock() {
-			when(vorgangAttachedItemService.findLoeschAnforderung(any())).thenReturn(Stream.of(vorgangAttachedItem));
-		}
-
-		@Test
-		void shouldCallService() {
-			service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-			verify(vorgangAttachedItemService).findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnResult() {
-			var result = service.findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-
-			assertThat(result).isPresent().hasValue(vorgangAttachedItem);
-		}
-	}
-
-	@DisplayName("Delete LoeschAnforderung")
-	@Nested
-	class TestDeleteLoeschAnforderung {
-
-		private final VorgangAttachedItem vorgangAttachedItem = VorgangAttachedItemTestFactory.create();
-
-		@BeforeEach
-		void mock() {
-			when(vorgangAttachedItemService.getById(anyString())).thenReturn(vorgangAttachedItem);
-		}
-
-		@Test
-		void shouldGetLoeschAnforderung() {
-			service.deleteLoeschAnforderung(LoeschAnforderungTestFactory.ID);
-
-			verify(vorgangAttachedItemService).getById(LoeschAnforderungTestFactory.ID);
-		}
-
-		@Test
-		void shouldDeleteVorgangAttachedItem() {
-			service.deleteLoeschAnforderung(LoeschAnforderungTestFactory.ID);
-
-			verify(vorgangAttachedItemService).deleteAttachedItem(vorgangAttachedItem);
-		}
-	}
-
-	@DisplayName("Recreate LoeschAnforderung")
-	@Nested
-	class TestReCreateLoeschAnforderung {
-
-		@DisplayName(StringUtils.EMPTY)
-		@Nested
-		class TestWorkflow {
-
-			private final Command zuruecknehmenCommand = CommandTestFactory.createBuilder()
-					.body(LoeschAnforderungTestFactory.createDeleteLoeschAnforderungBodyMap())
-					.build();
-			private final Command deleteVorgangAttachedItemCommand = CommandTestFactory.create();
-
-			@BeforeEach
-			void mock() {
-				when(commandService.getById(anyString())).thenReturn(deleteVorgangAttachedItemCommand);
-				when(mapper.fromCommand(any())).thenReturn(LoeschAnforderungTestFactory.create());
-			}
-
-			@Test
-			void shouldGetLoeschAnforderungZuruecknehmenCommand() {
-				service.reCreateLoeschAnforderung(zuruecknehmenCommand);
-
-				verify(commandService).getById(LoeschAnforderungTestFactory.DELETE_VORGANG_ATTACHED_ITEM_ID);
-			}
-
-			@Test
-			void shouldGetDeleteLoeschAnforderungCommand() {
-				service.reCreateLoeschAnforderung(zuruecknehmenCommand);
-
-				verify(commandService).getById(LoeschAnforderungTestFactory.DELETE_VORGANG_ATTACHED_ITEM_ID);
-			}
-
-			@Test
-			void shouldCallMapper() {
-				service.reCreateLoeschAnforderung(zuruecknehmenCommand);
-
-				verify(mapper).fromCommand(deleteVorgangAttachedItemCommand);
-			}
-
-			@Test
-			void shouldCreateNewLoeschAnforderung() {
-				service.reCreateLoeschAnforderung(zuruecknehmenCommand);
-
-				verify(vorgangAttachedItemService).createNewLoeschAnforderung(any(), eq(VorgangHeaderTestFactory.ID));
-			}
-		}
-	}
-
-	@DisplayName("Get changeStatus commandId")
-	@Nested
-	class TestGetChangedStatusCommandId {
-
-		private final Command zuruecknehmenCommand = CommandTestFactory.createBuilder()
-				.body(LoeschAnforderungTestFactory.createDeleteLoeschAnforderungBodyMap())
-				.build();
-
-		@Test
-		void shouldReturnChangeStatusCommandId() {
-			var commandId = service.getChangeStatusCommandId(zuruecknehmenCommand);
-
-			assertThat(commandId).isEqualTo(LoeschAnforderungTestFactory.CHANGE_STATUS_COMMAND_ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungTestFactory.java
deleted file mode 100644
index 0e52926b015b23c277ed5d06ef947d8bee5fae05..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungTestFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import java.util.Map;
-import java.util.UUID;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-public class LoeschAnforderungTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final UserId REQUESTED_BY = UserId.from(UUID.randomUUID().toString());
-	public static final VorgangStatus PREV_STATUS = VorgangStatus.VERWORFEN;
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-	static final String CHANGE_STATUS_COMMAND_ID = UUID.randomUUID().toString();
-	static final String DELETE_VORGANG_ATTACHED_ITEM_ID = UUID.randomUUID().toString();
-
-	public static LoeschAnforderung create() {
-		return createBuilder().build();
-	}
-
-	public static LoeschAnforderung.LoeschAnforderungBuilder createBuilder() {
-		return LoeschAnforderung.builder().id(ID).vorgangId(VorgangHeaderTestFactory.ID).prevStatus(PREV_STATUS).requestedBy(REQUESTED_BY);
-	}
-
-	public static Map<String, Object> asMap() {
-		return Map.of(
-				LoeschAnforderung.REQUESTED_BY_FIELD, REQUESTED_BY.toString(),
-				LoeschAnforderung.PREV_STATUS_FIELD, PREV_STATUS.name());
-	}
-
-	public static Map<String, String> createDeleteLoeschAnforderungBodyMap() {
-		return Map.of(DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, CHANGE_STATUS_COMMAND_ID,
-				DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD, DELETE_VORGANG_ATTACHED_ITEM_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java
deleted file mode 100644
index a8ddd9361ca3b7c887d1ef2047010303d47a9fe1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungVorgangProcessorTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.loeschanforderung;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderungController.LoeschAnforderungByVorgangController;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class LoeschAnforderungVorgangProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private LoeschAnforderungVorgangProcessor processor;
-
-	@Mock
-	private CurrentUserService currentUserService;
-	@Mock
-	private LoeschAnforderungService loeschAnforderungService;
-	@Mock
-	private VorgangController vorgangController;
-
-	@DisplayName("Process")
-	@Nested
-	class TestProcess {
-
-		@DisplayName("add links")
-		@Nested
-		class TestLinks {
-
-			@BeforeEach
-			void mock() {
-				initUserProfileUrlProvider(new UserProfileUrlProvider());
-
-				when(loeschAnforderungService.findLoeschAnforderung(VorgangHeaderTestFactory.ID)).thenReturn(
-						Optional.of(VorgangAttachedItemTestFactory.create()));
-			}
-
-			@Test
-			void shouldFindLoeschAnforderung() {
-				processor.process(EntityModel.of(VorgangHeaderTestFactory.create()));
-
-				verify(loeschAnforderungService).findLoeschAnforderung(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldAddLoeschenAnfordernLink() {
-				doReturn(true).when(processor).isLoeschenAnfordernAllowed(any());
-
-				var model = processor.process(EntityModel.of(VorgangHeaderTestFactory.create()));
-
-				assertThat(model.getLink(LoeschAnforderungVorgangProcessor.REL_LOESCHEN_ANFORDERN)).isPresent()
-						.map(Link::getHref)
-						.hasValue(LoeschAnforderungByVorgangController.BASE_PATH.replace("{vorgangId}", VorgangHeaderTestFactory.ID)
-								.replace("{vorgangVersion}", String.valueOf(VorgangHeaderTestFactory.VERSION)));
-			}
-
-			@Test
-			void shoulNotdAddLoeschenAnfordernLink() {
-				doReturn(false).when(processor).isLoeschenAnfordernAllowed(any());
-
-				var model = processor.process(EntityModel.of(VorgangHeaderTestFactory.create()));
-
-				assertThat(model.getLink(LoeschAnforderungVorgangProcessor.REL_LOESCHEN_ANFORDERN)).isEmpty();
-			}
-
-			@Test
-			void shouldAddLoeschAnforderungLink() {
-				var vogang = VorgangHeaderTestFactory.createBuilder().status(Vorgang.VorgangStatus.ZU_LOESCHEN).build();
-
-				var model = processor.process(EntityModel.of(vogang));
-
-				var link = model.getLink(LoeschAnforderungVorgangProcessor.REL_LOESCH_ANFORDERUNG);
-				assertThat(link).isPresent().map(Link::getHref)
-						.hasValue(LoeschAnforderungController.BASE_PATH + "/" + VorgangAttachedItemTestFactory.ID);
-			}
-
-			@Test
-			void shouldNotAddLoeschAnforderungLink() {
-				when(loeschAnforderungService.findLoeschAnforderung(VorgangHeaderTestFactory.ID)).thenReturn(Optional.empty());
-				var vorgang = VorgangHeaderTestFactory.createBuilder().status(Vorgang.VorgangStatus.ZU_LOESCHEN).build();
-
-				var model = processor.process(EntityModel.of(vorgang));
-
-				assertThat(model.getLink(LoeschAnforderungVorgangProcessor.REL_LOESCH_ANFORDERUNG)).isEmpty();
-			}
-		}
-	}
-
-	@DisplayName("Is loeschen anfordern allowed")
-	@Nested
-	class TestIsLoeschenAnfordernAllowed {
-
-		@DisplayName("on matching status")
-		@Nested
-		class TestOnMatchingStatus {
-
-			@DisplayName("with VERWALTUNG_USER role")
-			@Nested
-			class TestWithVerwaltungUserRole {
-
-				@BeforeEach
-				void mock() {
-					when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-				}
-
-				@ParameterizedTest
-				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
-				void shouldReturnTrue(VorgangStatus vorgangStatus) {
-					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
-					when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
-
-					assertThat(isAllowed).isTrue();
-				}
-
-				@ParameterizedTest
-				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
-				void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) {
-					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
-					when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
-
-					assertThat(isAllowed).isFalse();
-				}
-			}
-
-			@DisplayName("with EINHEITLICHER_ANSPRECHPARTNER role")
-			@Nested
-			class TestWithEinheitlicherAnsprechpartnerRole {
-
-				@BeforeEach
-				void mock() {
-					when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-					when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-				}
-
-				@ParameterizedTest
-				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
-				void shouldReturnTrue(VorgangStatus vorgangStatus) {
-					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
-					when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
-
-					assertThat(isAllowed).isTrue();
-				}
-
-				@ParameterizedTest
-				@EnumSource(names = { "VERWORFEN", "ABGESCHLOSSEN" })
-				void shouldReturnFalseIfVorgangNotEditable(VorgangStatus vorgangStatus) {
-					var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
-					when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-					var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
-
-					assertThat(isAllowed).isFalse();
-				}
-			}
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "VERWORFEN", "ABGESCHLOSSEN" })
-		void shouldReturnFalseForNonMatchingVorgangStatus(VorgangStatus vorgangStatus) {
-			var vorgang = VorgangHeaderTestFactory.createBuilder().status(vorgangStatus).build();
-
-			var isAllowed = processor.isLoeschenAnfordernAllowed(vorgang);
-
-			assertThat(isAllowed).isFalse();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/FeaturesTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/FeaturesTestFactory.java
deleted file mode 100644
index e85f536acfbdadef61c3b4f9c9dc13d8f4178613..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/FeaturesTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-public class FeaturesTestFactory {
-	public static final boolean REPLY_ALLOWED = true;
-	public static final boolean REPLY_FORBIDDEN = false;
-
-	public static Features create() {
-		return createBuilder().build();
-	}
-
-	public static Features.FeaturesBuilder createBuilder() {
-		return Features.builder().reply(REPLY_ALLOWED);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcGetPostfachConfigResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcGetPostfachConfigResponseTestFactory.java
deleted file mode 100644
index 4b3d48f0f91e61f552869ffb62dae69abc7125c4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcGetPostfachConfigResponseTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import de.ozgcloud.nachrichten.postfach.GrpcGetPostfachConfigResponse;
-
-public class GrpcGetPostfachConfigResponseTestFactory {
-
-	public static final boolean CONFIGURED = true;
-
-	public static GrpcGetPostfachConfigResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetPostfachConfigResponse.Builder createBuilder() {
-		return GrpcGetPostfachConfigResponse.newBuilder()
-				.setConfigured(CONFIGURED)
-				.addPostfach(GrpcPostfachTestFactory.create());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachAddressTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachAddressTestFactory.java
deleted file mode 100644
index 8c135bedf3e8ca7b812631bcba04c50e4dbcb203..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachAddressTestFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import de.ozgcloud.vorgang.common.GrpcObject;
-import de.ozgcloud.vorgang.common.GrpcProperty;
-import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress;
-
-public class GrpcPostfachAddressTestFactory {
-
-	public static GrpcPostfachAddress create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcPostfachAddress.Builder createBuilder() {
-		return GrpcPostfachAddress.newBuilder()
-				.setType(PostfachAddressTestFactory.TYPE)
-				.setIdentifier(createStringBasedIdentifier())
-				.setVersion(PostfachAddressTestFactory.VERSION);
-	}
-
-	public static GrpcObject createStringBasedIdentifier() {
-		return GrpcObject.newBuilder()
-				.addProperty(GrpcProperty.newBuilder()
-						.setName(PostfachAddress.IDENTIFIER_POSTFACH_ID_FIELD)
-						.addValue(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID)
-						.build())
-				.build();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachMailTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachMailTestFactory.java
deleted file mode 100644
index 0a3e7831897e68e05732eb85446a3dbc841ec59c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachMailTestFactory.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static de.ozgcloud.alfa.postfach.PostfachMailTestFactory.*;
-
-import java.util.Arrays;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.nachrichten.postfach.GrpcDirection;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailResponse;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailsResponse;
-import de.ozgcloud.nachrichten.postfach.GrpcPostfachMail;
-
-public class GrpcPostfachMailTestFactory {
-
-	public static GrpcPostfachMail create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcPostfachMail.Builder createBuilder() {
-		return GrpcPostfachMail.newBuilder()
-				.setId(ID)
-				.setVorgangId(VORGANG_ID)
-				.setPostfachId(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID)
-				.setCreatedAt(CREATED_AT_STR)
-				.setCreatedBy(CREATED_BY.toString())
-				.setSentAt(SENT_AT_STR)
-				.setSentSuccessful(SENT_SUCCESSFUL)
-				.setMessageCode(MESSAGE_CODE)
-				.setDirection(GrpcDirection.OUT)
-				.setReplyOption(REPLY_OPTION.name())
-				.setSubject(SUBJECT)
-				.setMailBody(MAIL_BODY)
-				.addAttachment(BinaryFileTestFactory.ID);
-	}
-
-	public static GrpcFindPostfachMailsResponse createFindPostfachMailsResponse() {
-		return GrpcFindPostfachMailsResponse.newBuilder()
-				.addAllMails(Arrays.asList(create()))
-				.build();
-	}
-
-	public static GrpcFindPostfachMailResponse createFindPostfachMailResponse() {
-		return GrpcFindPostfachMailResponse.newBuilder()
-				.setNachricht(create())
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachTestFactory.java
deleted file mode 100644
index d3a816718ff9774b697de421e10f83660e501483..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/GrpcPostfachTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import de.ozgcloud.nachrichten.postfach.GrpcPostfach;
-
-public class GrpcPostfachTestFactory {
-
-	public static final String TYPE = "OSI";
-	public static final boolean REPLY_ALLOWED = true;
-
-	public static GrpcPostfach create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcPostfach.Builder createBuilder() {
-		return GrpcPostfach.newBuilder()
-				.setType(TYPE)
-				.setReplyAllowed(REPLY_ALLOWED);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettingsTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettingsTestFactory.java
deleted file mode 100644
index 0fd5e10686b3c09e62c0fc4dc428eeef9c66d66b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/OrganisationsEinheitSettingsTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-class OrganisationsEinheitSettingsTestFactory {
-	public static final String TEST_SIGNATUR = "Test organisationseinheit signatur";
-
-	static OrganisationsEinheitSettings create() {
-		return createBuilder().build();
-	}
-
-	static OrganisationsEinheitSettings.OrganisationsEinheitSettingsBuilder createBuilder() {
-		return new OrganisationsEinheitSettings.OrganisationsEinheitSettingsBuilder()
-		  .signatur(TEST_SIGNATUR);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachAddressTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachAddressTestFactory.java
deleted file mode 100644
index 9830f22958b0373e197644130dd95df2aa66bed4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachAddressTestFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.Map;
-import java.util.UUID;
-
-import de.ozgcloud.alfa.vorgang.ServiceKontoTestFactory;
-
-public class PostfachAddressTestFactory {
-
-	public final static int TYPE = 1;
-
-	public final static String STRING_BASED_IDENTIFIER_POSTFACH_ID = UUID.randomUUID().toString();
-	public final static Map<String, Object> IDENTIFIER = Map.of(PostfachAddress.IDENTIFIER_POSTFACH_ID_FIELD, STRING_BASED_IDENTIFIER_POSTFACH_ID);
-
-	public static final String VERSION = "1.0";
-
-	public static PostfachAddress create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachAddress.PostfachAddressBuilder createBuilder() {
-		return PostfachAddress.builder()
-				.type(TYPE)
-				.identifier(IDENTIFIER)
-				.version(VERSION);
-	}
-
-	public static Map<String, Object> createAsMap() {
-		return Map.of(PostfachAddress.TYPE_FIELD, TYPE,
-				PostfachAddress.VERSION_FIELD, VERSION,
-				PostfachAddress.IDENTIFIER_FIELD, createIdentifierMap(),
-				PostfachNachrichtHelper.SERVICEKONTO_TYPE_FIELD, ServiceKontoTestFactory.TYPE);
-	}
-
-	private static Map<String, Object> createIdentifierMap() {
-		return Map.of(PostfachAddress.IDENTIFIER_POSTFACH_ID_FIELD, STRING_BASED_IDENTIFIER_POSTFACH_ID);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigGroupTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigGroupTestFactory.java
deleted file mode 100644
index 4d6befa36a82ebc0bcf077984125163e8a866bfc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigGroupTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.List;
-
-public class PostfachConfigGroupTestFactory {
-
-	public static PostfachConfigGroup create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachConfigGroup.PostfachConfigGroupBuilder createBuilder() {
-		return PostfachConfigGroup.builder()
-				.configured(true)
-				.postfachConfigs(List.of(PostfachConfigTestFactory.create()));
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigMapperTest.java
deleted file mode 100644
index 5381521a7214f600d8c396534d2d0a2a661f5022..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigMapperTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.Spy;
-
-public class PostfachConfigMapperTest {
-
-	@Spy
-	private final PostfachConfigMapper mapper = Mappers.getMapper(PostfachConfigMapper.class);
-
-	@Nested
-	class TestToPostfachConfig {
-
-		@Test
-		void shouldMapReplyAllowed() {
-			var postfachConfig = mapper.toPostfachConfig(GrpcPostfachTestFactory.create());
-
-			assertThat(postfachConfig.isReplyAllowed()).isEqualTo(GrpcPostfachTestFactory.REPLY_ALLOWED);
-		}
-
-		@Test
-		void shouldMapType() {
-			var postfachConfig = mapper.toPostfachConfig(GrpcPostfachTestFactory.create());
-
-			assertThat(postfachConfig.getType()).isEqualTo(GrpcPostfachTestFactory.TYPE);
-		}
-	}
-
-	@Nested
-	class TestToPostfachConfigGroup {
-
-		@Test
-		void shouldMapConfigured() {
-			var postfachConfigGroup = mapper.toPostfachConfigGroup(GrpcGetPostfachConfigResponseTestFactory.create());
-
-			assertThat(postfachConfigGroup.isConfigured()).isEqualTo(GrpcGetPostfachConfigResponseTestFactory.CONFIGURED);
-		}
-
-		@Test
-		void shouldMapPostfachConfigs() {
-			var expectedPostfachConfig = PostfachConfigTestFactory.create();
-			doReturn(expectedPostfachConfig).when(mapper).toPostfachConfig(GrpcPostfachTestFactory.create());
-
-			var postfachConfigGroup = mapper.toPostfachConfigGroup(GrpcGetPostfachConfigResponseTestFactory.create());
-
-			assertThat(postfachConfigGroup.getPostfachConfigs()).containsOnly(expectedPostfachConfig);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigTestFactory.java
deleted file mode 100644
index a4bc5d0a06fa6dde08011d0045c3f1a1c28171a5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachConfigTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-public class PostfachConfigTestFactory {
-
-	public static final String TYPE = "OSI";
-
-	public static PostfachConfig create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachConfig.PostfachConfigBuilder createBuilder() {
-		return PostfachConfig.builder()
-				.replyAllowed(true)
-				.type(TYPE);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandByVorgangControllerTest.java
deleted file mode 100644
index 8e7af344c051d7cd53b48f6cf5eabf0fc8b7c575..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandByVorgangControllerTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.hamcrest.core.StringContains;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandByVorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class PostfachMailCommandByVorgangControllerTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private PostfachMailCommandByVorgangController controller;
-	@Mock
-	private PostfachMailService service;
-	@Mock
-	private PostfachNachrichtHelper helper;
-	@Mock
-	private VorgangController vorgangController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Create command")
-	@Nested
-	class TestCreateCommand {
-
-		@Captor
-		private ArgumentCaptor<CreateCommand> createCommandCaptor;
-		@Captor
-		private ArgumentCaptor<Long> relationVersionCaptor;
-
-		@BeforeEach
-		void mockVorgangController() {
-			when(vorgangController.getVorgang(anyString())).thenReturn(VorgangWithEingangTestFactory.create());
-			when(service.sendPostfachMail(any(), anyLong())).thenReturn(CommandTestFactory.create());
-			when(helper.addPostfachAddressToBody(any(), any())).thenReturn(PostfachMailTestFactory.create());
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			doRequest();
-
-			assertThat(createCommandCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldSetRelationId() {
-			doRequest();
-
-			assertThat(createCommandCaptor.getValue().getRelationId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallVorgangController() {
-			doRequest();
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallHelper() {
-			doRequest();
-
-			verify(helper).addPostfachAddressToBody(any(), any());
-		}
-
-		@Test
-		void shouldAddPostfachAddress() {
-			doRequest();
-
-			assertThat(getCommandBody().getPostfachAddress()).usingRecursiveComparison().isEqualTo(PostfachAddressTestFactory.createAsMap());
-		}
-
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(service).sendPostfachMail(any(CreateCommand.class), eq(VorgangHeaderTestFactory.VERSION));
-		}
-
-		@Test
-		void shouldProceedWithEmptyAttachments() {
-			when(helper.addPostfachAddressToBody(any(), any())).thenReturn(PostfachMailTestFactory.createBuilder().clearAttachments().build());
-
-			doRequest(PostfachMailTestFactory.createBuilder().clearAttachments().build());
-
-			assertThat(getCommandBody().getAttachments()).isEmpty();
-		}
-
-		private PostfachMail getCommandBody() {
-			return (PostfachMail) createCommandCaptor.getValue().getBody();
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnLocationHeader() {
-			var response = doRequest();
-
-			response.andExpect(
-					header().string("Location", StringContains.containsString(CommandController.COMMANDS_PATH + "/" + CommandTestFactory.ID)));
-		}
-
-		private ResultActions doRequest() {
-			return doRequest(PostfachMailTestFactory.create());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(PostfachMail postfachMail) {
-			var response = mockMvc.perform(post(PostfachMailCommandByVorgangController.PATH.replace("{vorgangId}", VorgangHeaderTestFactory.ID))
-					.contentType(MediaType.APPLICATION_JSON)
-					.content(PostfachMailTestFactory.buildSendPostfachMailContent(postfachMail)))
-					.andExpect(status().isCreated());
-
-			verify(service).sendPostfachMail(createCommandCaptor.capture(), relationVersionCaptor.capture());
-
-			return response;
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java
deleted file mode 100644
index e752de1e0e15af1b4eb5712cec658c28b6f5cf78..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailCommandControllerTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class PostfachMailCommandControllerTest {
-
-	@InjectMocks
-	private PostfachMailCommandController controller;
-	@Mock
-	private PostfachMailService service;
-	@Mock
-	private PostfachNachrichtHelper helper;
-
-	@Mock
-	private CommandByRelationController commandByRelationController;
-
-	@Mock
-	private VorgangController vorgangController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initMockMvc() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Create command")
-	@Nested
-	class TestCreateCommand {
-
-		@BeforeEach
-		void init() {
-			when(service.findById(any())).thenReturn(PostfachMailTestFactory.create());
-			when(commandByRelationController.createCommand(any()))
-					.thenAnswer((i) -> CommandTestFactory.createBuilder().order(((CreateCommand) i.getArgument(0)).getOrder()).build());
-		}
-
-		@Test
-		void shouldFindPostfachMail() {
-			doRequest(CommandOrder.SEND_POSTFACH_NACHRICHT);
-
-			verify(service).findById(PostfachMailTestFactory.NACHRICHT_ID);
-		}
-
-		@Test
-		void shouldReturnResponse() throws Exception {
-			doRequest(CommandOrder.SEND_POSTFACH_NACHRICHT).andExpect(status().isCreated());
-		}
-
-		@DisplayName("on RESEND_POSTFACH_MAIL order")
-		@Nested
-		class TestOnResendPostfachMailOrder {
-
-			@Test
-			void shouldCallServiceResend() {
-				doRequest(CommandOrder.RESEND_POSTFACH_MAIL);
-
-				verify(service).resendPostfachMail(CommandTestFactory.ID, PostfachMailTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallCommandByRelationController() {
-				doRequest(CommandOrder.RESEND_POSTFACH_MAIL);
-
-				verify(commandByRelationController).createCommand(any());
-			}
-		}
-
-		@DisplayName("on SEND_POSTFACH_NACHRICHT order")
-		@Nested
-		class TestOnSendPostfachNachrichtOrder {
-
-			@Captor
-			private ArgumentCaptor<CreateCommand> createCommandCaptor;
-
-			@BeforeEach
-			void mockHelper() {
-				when(helper.addPostfachAddressToBody(any(), any()))
-						.thenReturn(PostfachMailTestFactory.create());
-				when(vorgangController.getVorgang(anyString())).thenReturn(VorgangWithEingangTestFactory.create());
-			}
-
-			@Test
-			void shouldCallVorgangController() {
-				doRequest(CommandOrder.SEND_POSTFACH_NACHRICHT);
-
-				verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallHelperToAddPostfachAddress() {
-				doRequest(CommandOrder.SEND_POSTFACH_NACHRICHT);
-
-				verify(helper).addPostfachAddressToBody(any(PostfachMail.class), any(VorgangWithEingang.class));
-			}
-
-			@Test
-			void shouldCallCommandByRelationController() {
-				doRequest(CommandOrder.SEND_POSTFACH_NACHRICHT);
-
-				verify(commandByRelationController).createCommand(createCommandCaptor.capture());
-				assertThat(((PostfachMail) createCommandCaptor.getValue().getBody()).getPostfachAddress())
-						.isEqualTo(PostfachAddressTestFactory.createAsMap());
-			}
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(CommandOrder order) {
-			return mockMvc.perform(post("/api/postfachMails/" + PostfachMailTestFactory.ID + "/commands")
-					.contentType(MediaType.APPLICATION_JSON)
-					.content(CommandTestFactory.buildCreateCommandWithBodyContent(order, "{}")));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailControllerTest.java
deleted file mode 100644
index 91485fac6d9d03335812b10f5fd1e47ae9530eed..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailControllerTest.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.time.LocalDate;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class PostfachMailControllerTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private PostfachMailController controller;
-
-	@Mock
-	private PostfachMailService postfachMailService;
-
-	@Mock
-	private PostfachSettingsService postfachSettingsService;
-
-	@Mock
-	private PostfachMailModelAssembler assembler;
-
-	@Mock
-	private VorgangController vorgangController;
-	@Mock
-	private BinaryFileController binaryFileController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Get all")
-	@Nested
-	class TestGetAll {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-		private final Stream<PostfachMail> postfachMails = Stream.of(PostfachMailTestFactory.create());
-		private final Stream<PostfachMail> sortedPostfachMails = Stream.of(PostfachMailTestFactory.create());
-		private final PostfachSettings postfachSettings = PostfachSettingsTestFactory.create();
-
-		@BeforeEach
-		void mockVorgangController() {
-			when(vorgangController.getVorgang(anyString())).thenReturn(vorgang);
-			when(postfachMailService.getAll(VorgangHeaderTestFactory.ID)).thenReturn(postfachMails);
-			doReturn(sortedPostfachMails).when(controller).sort(postfachMails);
-			when(postfachSettingsService.getPostfachSettings(vorgang)).thenReturn(postfachSettings);
-		}
-
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(postfachMailService).getAll(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallVorgangController() {
-			doRequest();
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldGetPostfachSettings() {
-			doRequest();
-
-			verify(postfachSettingsService).getPostfachSettings(vorgang);
-		}
-
-		@Test
-		void shouldCallModelAssembler() {
-			doRequest();
-
-			verify(assembler).toCollectionModel(sortedPostfachMails, vorgang, postfachSettings);
-		}
-
-		@Test
-		void shouldSortPostfachMails() {
-			doRequest();
-
-			verify(controller).sort(postfachMails);
-		}
-
-		@SneakyThrows
-		private void doRequest() {
-			mockMvc.perform(get(PostfachMailController.PATH + "?" + PostfachMailController.PARAM_VORGANG_ID + "=" + VorgangHeaderTestFactory.ID))
-					.andExpect(status().isOk());
-		}
-	}
-
-	@DisplayName("Get all as pdf")
-	@Nested
-	class TestGetAllAsPdf {
-
-		@Mock
-		private StreamingResponseBody streamingBody;
-
-		private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(vorgangController.getVorgang(anyString())).thenReturn(vorgang);
-		}
-
-		@Test
-		void shouldGetVorgang() {
-			doRequest();
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Disabled("FIXME: Kippt um, wenn man alles Tests ausfuehrt")
-		@Test
-		void shouldCallService() {
-			doRequest();
-
-			verify(postfachMailService).getAllAsPdf(eq(vorgang), any(OutputStream.class));
-		}
-
-		@Test
-		void shouldBuildResponseEntity() {
-			doReturn(streamingBody).when(controller).createDownloadStreamingBody(vorgang);
-
-			doRequest();
-
-			verify(controller).buildResponseEntity(vorgang, streamingBody);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnResponse() {
-			doReturn(streamingBody).when(controller).createDownloadStreamingBody(vorgang);
-
-			doRequest()
-					.andExpect(header().string(HttpHeaders.CONTENT_DISPOSITION, buildPdfName()))
-					.andExpect(content().contentType(MediaType.APPLICATION_PDF));
-		}
-
-		private String buildPdfName() {
-			var today = LocalDate.now();
-			var expectedDateFormat = String.valueOf(today.getYear()) + buildMonthValue() + buildDayValue();
-			return VorgangHeaderTestFactory.NUMMER + "_" + expectedDateFormat + "_Nachrichten.pdf";
-		}
-
-		private String buildMonthValue() {
-			return fillUpToTwoChars(LocalDate.now().getMonthValue());
-		}
-
-		private String buildDayValue() {
-			return fillUpToTwoChars(LocalDate.now().getDayOfMonth());
-		}
-
-		private String fillUpToTwoChars(int value) {
-			var asStr = String.valueOf(value);
-			if (asStr.length() == 1) {
-				return "0" + asStr;
-			}
-			return asStr;
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() {
-			return mockMvc
-					.perform(get(PostfachMailController.PATH + "?" + PostfachMailController.PARAM_VORGANG_ID + "=" + VorgangHeaderTestFactory.ID)
-							.accept(MediaType.APPLICATION_PDF_VALUE))
-					.andExpect(status().isOk());
-		}
-
-	}
-
-	@DisplayName("Create download streamingbody")
-	@Nested
-	class TestCreateDownloadStreamingBody {
-
-		@Mock
-		private OutputStream out;
-
-		private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldCallServiceGetAllAsPdf() throws IOException {
-			controller.createDownloadStreamingBody(vorgang).writeTo(out);
-
-			verify(postfachMailService).getAllAsPdf(eq(vorgang), any());
-		}
-
-	}
-
-	@DisplayName("Find postfach attachments")
-	@Nested
-	class TestFindPostfachAttachments {
-
-		@BeforeEach
-		void init() {
-			when(postfachMailService.findById(any())).thenReturn(PostfachMailTestFactory.create());
-		}
-
-		@Test
-		void shouldReturnSuccess() throws Exception {
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			doRequest();
-
-			verify(postfachMailService).findById(PostfachNachrichtId.from(PostfachMailTestFactory.ID));
-		}
-
-		@Test
-		void shouldCallFileController() throws Exception {
-			doRequest();
-
-			verify(binaryFileController).getFiles(PostfachMailTestFactory.ATTACHMENTS);
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(PostfachMailController.PATH + "/{nachrichtId}/attachments", PostfachMailTestFactory.ID));
-		}
-
-	}
-
-	@DisplayName("Is postfach configured")
-	@Nested
-	class TestIsPostfachConfigured {
-
-		@Test
-		void shouldCallService() {
-			controller.isPostfachConfigured();
-
-			verify(postfachSettingsService).isPostfachConfigured();
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailITCase.java
deleted file mode 100644
index 9a5696eaaad8e2ae20bc70be7654eee17ed098bc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailITCase.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-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.boot.test.mock.mockito.SpyBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.alfa.CallScope;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.EingangTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.nachrichten.postfach.PostfachServiceGrpc.PostfachServiceBlockingStub;
-
-@SpringBootTest
-public class PostfachMailITCase {
-
-	@Autowired
-	private PostfachMailController controller;
-
-	@SpyBean
-	private PostfachMailRemoteService postfachRemoteService;
-	@Mock
-	private PostfachServiceBlockingStub serviceStub;
-	@MockBean
-	private VorgangController vorgangController;
-
-	@SpyBean
-	private CurrentUserService userService;
-
-	@Autowired
-	private CallScope callScope;
-
-	@BeforeEach
-	void initTest() {
-		ReflectionTestUtils.setField(postfachRemoteService, "serviceStub", serviceStub);
-
-		callScope.startScope();
-	}
-
-	@Nested
-	@WithMockUser
-	class TestGetAll {
-
-		@BeforeEach
-		void mock() {
-			when(serviceStub.findPostfachMails(any())).thenReturn(GrpcPostfachMailTestFactory.createFindPostfachMailsResponse());
-			when(serviceStub.getPostfachConfig(any())).thenReturn(GrpcGetPostfachConfigResponseTestFactory.create());
-			when(vorgangController.getVorgang(anyString())).thenReturn(
-					VorgangWithEingangTestFactory.createBuilder().eingang(EingangTestFactory.createBuilder().antragsteller(null).build()).build());
-
-			doReturn(UserProfileTestFactory.ID).when(userService).getUserId();
-		}
-
-		@Test
-		void shouldProceedWithoutAntragsteller() {
-			controller.getAll(VorgangHeaderTestFactory.ID);
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-			verify(postfachRemoteService).findPostfachMails(VorgangHeaderTestFactory.ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailMapperTest.java
deleted file mode 100644
index e13783b324ca4829cde86ad74d9e0f06988442ec..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailMapperTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.TimeMapper;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-
-@DisplayName("PostfachMail mapper")
-class PostfachMailMapperTest {
-
-	@InjectMocks // NOSONAR
-	private final PostfachMailMapper mapper = Mappers.getMapper(PostfachMailMapper.class);
-	@Spy
-	private final UserIdMapper userIdMapper = Mappers.getMapper(UserIdMapper.class);
-
-	@Mock
-	private TimeMapper timeMapper;
-
-	@DisplayName("to postfachMail")
-	@Nested
-	class TestToPostfachMail {
-
-		@BeforeEach
-		void initMock() {
-			when(timeMapper.parseString(PostfachMailTestFactory.CREATED_AT_STR)).thenReturn(PostfachMailTestFactory.CREATED_AT);
-			when(timeMapper.parseString(PostfachMailTestFactory.SENT_AT_STR)).thenReturn(PostfachMailTestFactory.SENT_AT);
-		}
-
-		@Test
-		void shouldMapFields() {
-			var postfachMail = toPostfachMail();
-
-			verify(timeMapper, times(2)).parseString(anyString());
-			assertThat(postfachMail).isNotNull().usingRecursiveComparison().ignoringFields("postfachAddress")
-					.isEqualTo(PostfachMailTestFactory.create());
-		}
-
-		@Test
-		void shouldNotMapPostfachAddress() {
-			var postfachMail = toPostfachMail();
-
-			assertThat(postfachMail.getPostfachAddress()).isNull();
-		}
-
-		private PostfachMail toPostfachMail() {
-			return mapper.toPostfachMail(GrpcPostfachMailTestFactory.create());
-		}
-	}
-
-	@DisplayName("Map postfachAddress to map")
-	@Nested
-	class TestMapPostfachAddressToMap {
-
-		@Test
-		void shouldContainsType() {
-			var postfachAddressMap = mapper.mapPostfachAddressToMap(PostfachAddressTestFactory.create());
-
-			assertThat(postfachAddressMap).containsEntry(PostfachAddress.TYPE_FIELD, PostfachAddressTestFactory.TYPE);
-		}
-
-		@Test
-		void shouldContainsVersion() {
-			var postfachAddressMap = mapper.mapPostfachAddressToMap(PostfachAddressTestFactory.create());
-
-			assertThat(postfachAddressMap).containsEntry(PostfachAddress.VERSION_FIELD, PostfachAddressTestFactory.VERSION);
-		}
-
-		@DisplayName("identifier")
-		@Nested
-		class TestIdentifier {
-
-			@SuppressWarnings("unchecked")
-			@Test
-			void schouldContainsPostfachId() {
-				var postfachAddressMap = mapper.mapPostfachAddressToMap(PostfachAddressTestFactory.create());
-
-				var identifier = MapUtils.getMap(postfachAddressMap, PostfachAddress.IDENTIFIER_FIELD);
-				assertThat(identifier).containsExactly(
-						Map.entry(PostfachAddress.IDENTIFIER_POSTFACH_ID_FIELD, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID));
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java
deleted file mode 100644
index 5c8e2874053681408887e2b97e6157456e3c714c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailModelAssemblerTest.java
+++ /dev/null
@@ -1,510 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.UUID;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.RepresentationModel;
-import org.springframework.hateoas.mediatype.hal.HalModelBuilder;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import de.ozgcloud.alfa.postfach.PostfachMailController.PostfachMailCommandByVorgangController;
-import de.ozgcloud.alfa.vorgang.ServiceKontoTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeadTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-class PostfachMailModelAssemblerTest {
-
-	@InjectMocks
-	@Spy
-	private PostfachMailModelAssembler modelAssembler;
-	@Mock
-	private UserManagerUrlProvider userManagerUrlProvider;
-	@Mock
-	private VorgangController vorgangController;
-
-	@Nested
-	class TestToModel {
-
-		@BeforeEach
-		void mock() {
-			when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(false);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = modelAssembler.toModel(PostfachMailTestFactory.create()).getLink(IanaLinkRelations.SELF_VALUE);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(PostfachMailController.PATH + "/" + PostfachMailTestFactory.ID);
-		}
-
-		@Nested
-		class ResendLink {
-
-			@DisplayName("if 'sentSuccessful' is false, add link")
-			@Test
-			void shouldBePresent() {
-				var link = modelAssembler.toModel(PostfachMailTestFactory.createBuilder().sentSuccessful(false).build())
-						.getLink(PostfachMailModelAssembler.REL_RESEND_POSTFACH_MAIL);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/postfachMails/" + PostfachMailTestFactory.ID + "/commands");
-			}
-
-			@DisplayName("if 'sentSuccessful' is true, hide link")
-			@Test
-			void shouldNotBePresentIfSuccessfulSent() {
-				var link = modelAssembler.toModel(PostfachMailTestFactory.createBuilder().sentSuccessful(true).build())
-						.getLink(PostfachMailModelAssembler.REL_RESEND_POSTFACH_MAIL);
-
-				assertThat(link).isNotPresent();
-			}
-
-			@Test
-			void shouldNotBePresentIfNotYetTriedToSend() {
-				var nachricht = PostfachMailTestFactory.createBuilder().sentSuccessful(false).sentAt(null).build();
-
-				var link = modelAssembler.toModel(nachricht).getLink(PostfachMailModelAssembler.REL_RESEND_POSTFACH_MAIL);
-
-				assertThat(link).isNotPresent();
-			}
-
-		}
-
-		@Nested
-		class SendLink {
-
-			@DisplayName("should be present if nachricht not jet tried to send")
-			@Test
-			void shouldBePresent() {
-				var nachricht = PostfachMailTestFactory.createBuilder().sentSuccessful(false).sentAt(null).build();
-
-				var link = modelAssembler.toModel(nachricht).getLink(PostfachMailModelAssembler.REL_SEND);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/postfachMails/" + PostfachMailTestFactory.ID + "/commands");
-			}
-
-			@Test
-			void shouldNotBePresentIfNachrichtSent() {
-				var nachricht = PostfachMailTestFactory.createBuilder().sentSuccessful(true).build();
-
-				assertThat(modelAssembler.toModel(nachricht).getLink(PostfachMailModelAssembler.REL_SEND)).isNotPresent();
-			}
-
-		}
-
-		@Nested
-		class AttachmentsLink {
-
-			@Test
-			@DisplayName("should be present if attachments present")
-			void shouldBePresent() {
-				var link = modelAssembler.toModel(PostfachMailTestFactory.create()).getLink(PostfachMailModelAssembler.REL_ATTACHMENTS);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/postfachMails/" + PostfachMailTestFactory.ID + "/attachments");
-			}
-
-			@Test
-			@DisplayName("should NOT be present if there are no attachments")
-			void shouldNotBePresentOnNoAttachments() {
-				var link = modelAssembler.toModel(PostfachMailTestFactory.createBuilder().clearAttachments().build())
-						.getLink(PostfachMailModelAssembler.REL_ATTACHMENTS);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		@DisplayName("created by link")
-		@Nested
-		class CreatedByLink {
-
-			@Nested
-			class TestOnConfiguredUserManager {
-
-				private final String userProfileTemplate = "UserProfileTemplateDummy/%s";
-
-				@BeforeEach
-				void mock() {
-					when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(true);
-				}
-
-				@Test
-				void shouldBePresent() {
-					when(userManagerUrlProvider.getUserProfileTemplate()).thenReturn(userProfileTemplate);
-
-					var link = modelAssembler.toModel(PostfachMailTestFactory.create()).getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					assertThat(link).isPresent().get().extracting(Link::getHref)
-							.isEqualTo("UserProfileTemplateDummy/" + PostfachMailTestFactory.CREATED_BY);
-				}
-
-				@DisplayName("should not be present if the value of createdBy starts with 'system'")
-				@Test
-				void shouldNotBePresentOnSystemUser() {
-					var link = modelAssembler
-							.toModel(PostfachMailTestFactory.createBuilder()
-									.createdBy(UserId.from(PostfachMailModelAssembler.SYSTEM_USER_IDENTIFIER + UUID.randomUUID().toString())).build())
-							.getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					assertThat(link).isNotPresent();
-				}
-
-				@Test
-				void shouldNotBePresentOnNull() {
-					var link = modelAssembler.toModel(PostfachMailTestFactory.createBuilder().createdBy(null).build())
-							.getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					assertThat(link).isNotPresent();
-				}
-			}
-
-			@Nested
-			class TestOnNonConfiguredUserManager {
-
-				@BeforeEach
-				void mock() {
-					when(userManagerUrlProvider.isConfiguredForUserProfile()).thenReturn(false);
-				}
-
-				@Test
-				void shouldNOTBePresentOnNotConfiguredUserManager() {
-					var link = modelAssembler
-							.toModel(PostfachMailTestFactory.createBuilder()
-									.createdBy(UserId.from(PostfachMailModelAssembler.SYSTEM_USER_IDENTIFIER + UUID.randomUUID().toString())).build())
-							.getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					assertThat(link).isNotPresent();
-				}
-
-				@Test
-				void shouldNotCallUserManagerUrlProvider() {
-					modelAssembler
-							.toModel(PostfachMailTestFactory.createBuilder()
-									.createdBy(UserId.from(PostfachMailModelAssembler.SYSTEM_USER_IDENTIFIER + UUID.randomUUID().toString())).build())
-							.getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					verify(userManagerUrlProvider, never()).getUserProfileTemplate();
-				}
-
-				@Test
-				void shouldNotBePresentOnNull() {
-					var link = modelAssembler.toModel(PostfachMailTestFactory.createBuilder().createdBy(null).build())
-							.getLink(PostfachMailModelAssembler.REL_CREATED_BY);
-
-					assertThat(link).isNotPresent();
-				}
-			}
-		}
-
-		@DisplayName("edit link")
-		@Nested
-		class TestEditLink {
-			PostfachMail.PostfachMailBuilder UNSENT_MAIL_BUILDER = PostfachMailTestFactory.createBuilder()
-					.direction(Direction.OUT).sentAt(null).sentSuccessful(false);
-
-			@Test
-			void shouldBePresentOnUnsendNachricht() {
-				var postfachNachricht = UNSENT_MAIL_BUILDER.build();
-
-				var link = modelAssembler.toModel(postfachNachricht).getLink(PostfachMailModelAssembler.REL_EDIT);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo("/api/postfachMails/" + PostfachMailTestFactory.ID + "/commands");
-			}
-
-			@Nested
-			class ShouldNotBePresent {
-
-				@Test
-				void OnIncomingNachricht() {
-					var postfachNachricht = UNSENT_MAIL_BUILDER.direction(Direction.IN).build();
-
-					var link = modelAssembler.toModel(postfachNachricht).getLink(PostfachMailModelAssembler.REL_EDIT);
-
-					assertThat(link).isNotPresent();
-				}
-
-				@Test
-				void OnSentNachricht() {
-					var postfachNachricht = UNSENT_MAIL_BUILDER.sentSuccessful(true).build();
-
-					var link = modelAssembler.toModel(postfachNachricht).getLink(PostfachMailModelAssembler.REL_EDIT);
-
-					assertThat(link).isNotPresent();
-				}
-			}
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-
-		private final Stream<PostfachMail> mails = Stream.of(PostfachMailTestFactory.create());
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-		private final PostfachSettings postfachSettings = PostfachSettingsTestFactory.create();
-
-		@Mock
-		private RepresentationModel<EntityModel<PostfachSettings>> model;
-
-		@BeforeEach
-		void setUpMocks() {
-			doReturn(model).when(modelAssembler).buildHalRepresentationModel(mails, vorgang, postfachSettings);
-		}
-
-		@Test
-		void shouldBuildHalRepresentationModel() {
-			callModelAssembler();
-
-			verify(modelAssembler).buildHalRepresentationModel(mails, vorgang, postfachSettings);
-		}
-
-		@Nested
-		class OnHasServiceKonto {
-
-			@Test
-			void shouldAddPostfachNachrichtLinks() {
-				doReturn(true).when(modelAssembler).hasServiceKonto(vorgang);
-
-				callModelAssembler();
-
-				verify(modelAssembler).addPostfachNachrichtLinks(model, vorgang);
-			}
-		}
-
-		@Nested
-		class OnHasNotServiceKonto {
-
-			@Test
-			void shouldAddPostfachNachrichtLinks() {
-				doReturn(false).when(modelAssembler).hasServiceKonto(vorgang);
-
-				callModelAssembler();
-
-				verify(modelAssembler, never()).addPostfachNachrichtLinks(any(), any());
-			}
-		}
-
-		@Test
-		void shouldReturnModel() {
-			var returnedModel = callModelAssembler();
-
-			assertThat(returnedModel).isEqualTo(model);
-		}
-
-		private RepresentationModel<EntityModel<PostfachSettings>> callModelAssembler() {
-			return modelAssembler.toCollectionModel(mails, vorgang, postfachSettings);
-		}
-	}
-
-	@Nested
-	class TestBuildHalRepresentationModel {
-
-		private final PostfachMail postfachMail = PostfachMailTestFactory.create();
-		private final Stream<PostfachMail> mails = Stream.of(postfachMail);
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-		private final PostfachSettings postfachSettings = PostfachSettingsTestFactory.create();
-
-		@Test
-		void shouldHavePostfachAsContent() {
-			var model = (EntityModel<PostfachSettings>) callModelAssembler();
-
-			assertThat(model.getContent()).isEqualTo(postfachSettings);
-		}
-
-		@Test
-		void shouldAddSelfLink() {
-			var model = callModelAssembler();
-			var selfLink = model.getLink(IanaLinkRelations.SELF_VALUE);
-
-			assertThat(selfLink).get().extracting(Link::getHref).isEqualTo(
-					String.format("%s?%s=%s", PostfachMailController.PATH, PostfachMailController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID));
-		}
-
-		@Test
-		void shouldCallToModel() {
-			callModelAssembler();
-
-			verify(modelAssembler).toModel(postfachMail);
-		}
-
-		@Test
-		@SneakyThrows
-		void shouldContainPostfachMails() {
-			var objectMapper = new ObjectMapper().registerModules(new JavaTimeModule(), new Jdk8Module());
-			doReturn(EntityModel.of(postfachMail)).when(modelAssembler).toModel(postfachMail);
-
-			var model = callModelAssembler();
-
-			assertThat(objectMapper.writeValueAsString(model)).contains(objectMapper.writeValueAsString(EntityModel.of(postfachMail)));
-		}
-
-		private RepresentationModel<EntityModel<PostfachSettings>> callModelAssembler() {
-			return modelAssembler.buildHalRepresentationModel(mails, vorgang, postfachSettings);
-		}
-
-	}
-
-	@Nested
-	class TestHasServiceKonto {
-
-		@Test
-		void shouldReturnTrueIfServicekontoIsPresent() {
-			var hasServiceKonto = modelAssembler.hasServiceKonto(VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder().serviceKonto(ServiceKontoTestFactory.create()).build()).build());
-
-			assertThat(hasServiceKonto).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseIfServicekontoIsNotPresent() {
-			var hasServiceKonto = modelAssembler.hasServiceKonto(VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder().serviceKonto(null).build()).build());
-
-			assertThat(hasServiceKonto).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseOnMissingVorgangHeader() {
-			var hasServiceKonto = modelAssembler.hasServiceKonto(VorgangWithEingangTestFactory.createBuilder()
-					.header(null).build());
-
-			assertThat(hasServiceKonto).isFalse();
-		}
-	}
-
-	@Nested
-	class TestAddPostfachNachrichtLinks {
-
-		private final PostfachSettings postfach = PostfachSettingsTestFactory.create();
-
-		private RepresentationModel<EntityModel<PostfachSettings>> model = HalModelBuilder
-				.halModelOf(postfach)
-				.build();
-
-		@Nested
-		class ResetNewPostfachNachrichtLink {
-			@Test
-			void shouldBePresent() {
-				callModelAssembler(VorgangWithEingangTestFactory.create());
-
-				var link = model.getLink(PostfachMailModelAssembler.REL_RESET_NEW_POSTFACH_MAIL);
-				assertThat(link).isPresent().get().extracting(Link::getHref)
-						.isEqualTo(UriComponentsBuilder.fromUriString("/api/vorgangs")
-								.pathSegment(VorgangHeaderTestFactory.ID, "hasNewPostfachNachricht")
-								.build().toString());
-			}
-
-			@Test
-			void shouldNotBePresent() {
-				callModelAssembler(VorgangWithEingangTestFactory.createBuilder().hasNewPostfachNachricht(false).build());
-
-				var link = model.getLink(PostfachMailModelAssembler.REL_RESET_NEW_POSTFACH_MAIL);
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		@DisplayName("send postfach mail")
-		@Nested
-		class SendPostfachMailLink {
-
-			private final String sendPostfachMailLinkRel = PostfachMailModelAssembler.REL_SEND_POSTFACH_MAIL;
-			private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-			@Test
-			void shouldCheckIfVorgangIsEditable() {
-				callModelAssembler(vorgang);
-
-				verify(vorgangController).isEditable(vorgang);
-			}
-
-			@Test
-			void shouldExist() {
-				when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-				callModelAssembler(vorgang);
-
-				var link = model.getLink(sendPostfachMailLinkRel);
-				assertThat(link).get().extracting(Link::getHref)
-						.isEqualTo(PostfachMailCommandByVorgangController.PATH.replace("{vorgangId}", VorgangHeaderTestFactory.ID));
-			}
-
-			@Test
-			void shouldNotExistWhenVorgangIsNotEditable() {
-				when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-				callModelAssembler(vorgang);
-
-				var link = model.getLink(sendPostfachMailLinkRel);
-				assertThat(link).isEmpty();
-			}
-		}
-
-		@Nested
-		class UploadAttachmentLink {
-
-			private final String uploadAttachmentLinkRel = PostfachMailModelAssembler.REL_UPLOAD_ATTACHMENT;
-
-			@Test
-			void shouldBePresent() {
-				callModelAssembler(VorgangWithEingangTestFactory.create());
-
-				var link = model.getLink(uploadAttachmentLinkRel);
-				assertThat(link).get().extracting(Link::getHref)
-						.isEqualTo(String.format("/api/binaryFiles/%s/postfachNachrichtAttachment/file", VorgangHeaderTestFactory.ID));
-			}
-		}
-
-		private void callModelAssembler(VorgangWithEingang vorgang) {
-			modelAssembler.addPostfachNachrichtLinks(model, vorgang);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteServiceTest.java
deleted file mode 100644
index bf3d47a957df2b3e7b8f29353058f1c000c7c308..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailRemoteServiceTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcFindPostfachMailsRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcGetPostfachConfigRequest;
-import de.ozgcloud.nachrichten.postfach.GrpcGetPostfachConfigResponse;
-import de.ozgcloud.nachrichten.postfach.GrpcPostfachMail;
-import de.ozgcloud.nachrichten.postfach.GrpcResendPostfachMailRequest;
-import de.ozgcloud.nachrichten.postfach.PostfachServiceGrpc.PostfachServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-
-class PostfachMailRemoteServiceTest {
-
-	@InjectMocks // NOSONAR
-	private PostfachMailRemoteService service;
-	@Mock
-	private PostfachServiceBlockingStub serviceStub;
-	@Mock
-	private PostfachMailMapper postfachNachrichtMapper;
-	@Mock
-	private PostfachConfigMapper postfachConfigMapper;
-	@Mock
-	private ContextService contextService;
-
-	private GrpcCallContext callContext = GrpcCallContext.newBuilder().build();
-
-	@Nested
-	class TestFindPostfachMail {
-
-		@Captor
-		private ArgumentCaptor<GrpcFindPostfachMailRequest> requestCaptor;
-
-		@BeforeEach
-		void init() {
-			when(contextService.createCallContext()).thenReturn(callContext);
-			when(serviceStub.findPostfachMail(any())).thenReturn(GrpcPostfachMailTestFactory.createFindPostfachMailResponse());
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			verify(serviceStub).findPostfachMail(any(GrpcFindPostfachMailRequest.class));
-		}
-
-		@Test
-		void shouldCallCallContextService() {
-			service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldContainNachrichtId() {
-			service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			verify(serviceStub).findPostfachMail(requestCaptor.capture());
-
-			assertThat(requestCaptor.getValue().getNachrichtId()).isEqualTo(PostfachMailTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			verify(postfachNachrichtMapper).toPostfachMail(any());
-		}
-	}
-
-	@Nested
-	class TestFindPostfachMails {
-
-		@BeforeEach
-		void init() {
-			when(contextService.createCallContext()).thenReturn(callContext);
-			when(serviceStub.findPostfachMails(any())).thenReturn(GrpcPostfachMailTestFactory.createFindPostfachMailsResponse());
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.findPostfachMails(VorgangHeaderTestFactory.ID);
-
-			verify(serviceStub).findPostfachMails(any(GrpcFindPostfachMailsRequest.class));
-		}
-
-		@Test
-		void shouldCallCallContextService() {
-			service.findPostfachMails(VorgangHeaderTestFactory.ID);
-
-			verify(contextService).createCallContext();
-		}
-
-		@Test
-		void shouldCallMapper() {
-			var result = service.findPostfachMails(VorgangHeaderTestFactory.ID);
-			collectStreamElementsToTriggerLazyStream(result);
-
-			verify(postfachNachrichtMapper).toPostfachMail(any(GrpcPostfachMail.class));
-		}
-
-		void collectStreamElementsToTriggerLazyStream(Stream<PostfachMail> stream) {
-			stream.collect(Collectors.toList());
-		}
-	}
-
-	@Nested
-	class TestResendPostfachMail {
-
-		@BeforeEach
-		void init() {
-			when(contextService.createCallContext()).thenReturn(callContext);
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.resendPostfachMail(CommandTestFactory.ID, PostfachMailTestFactory.ID);
-
-			verify(serviceStub).resendPostfachMail(any(GrpcResendPostfachMailRequest.class));
-		}
-
-		@Test
-		void shouldCallContextService() {
-			service.resendPostfachMail(CommandTestFactory.ID, PostfachMailTestFactory.ID);
-
-			verify(contextService).createCallContext();
-		}
-	}
-
-	@Nested
-	class TestGetPostfachConfig {
-
-		private final GrpcGetPostfachConfigResponse grpcResponse = GrpcGetPostfachConfigResponseTestFactory.create();
-		private final PostfachConfigGroup postfachConfigGroup = PostfachConfigGroupTestFactory.create();
-
-		@BeforeEach
-		void mockStub() {
-			when(serviceStub.getPostfachConfig(any(GrpcGetPostfachConfigRequest.class))).thenReturn(grpcResponse);
-			when(postfachConfigMapper.toPostfachConfigGroup(any(GrpcGetPostfachConfigResponse.class))).thenReturn(postfachConfigGroup);
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			service.getPostfachConfig();
-
-			verify(serviceStub).getPostfachConfig(any(GrpcGetPostfachConfigRequest.class));
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.getPostfachConfig();
-
-			verify(postfachConfigMapper).toPostfachConfigGroup(grpcResponse);
-		}
-
-		@Test
-		void shouldReturnPostfachConfigs() {
-			var result = service.getPostfachConfig();
-
-			assertThat(result).isEqualTo(postfachConfigGroup);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailServiceTest.java
deleted file mode 100644
index 2f0931b3f1f850b5ce3744d82328a8456ac1d282..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailServiceTest.java
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.OutputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfile;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class PostfachMailServiceTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private PostfachMailService service;
-	@Mock
-	private PostfachNachrichtPdfService pdfService;
-	@Mock
-	private PostfachMailRemoteService remoteService;
-	@Mock
-	private BinaryFileService fileService;
-	@Mock
-	private UserService userService;
-	@Mock
-	private CommandService commandService;
-
-	@DisplayName("Get all")
-	@Nested
-	class TestGetAll {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getAll(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findPostfachMails(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Find by id")
-	@Nested
-	class TestFindById {
-
-		private final PostfachMail mail = PostfachMailTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(remoteService.findById(any())).thenReturn(Optional.of(mail));
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			verify(remoteService).findById(PostfachMailTestFactory.NACHRICHT_ID);
-		}
-
-		@Test
-		void shouldThrowExceptionIfNotFound() {
-			when(remoteService.findById(any())).thenReturn(Optional.empty());
-
-			assertThrows(ResourceNotFoundException.class, () -> service.findById(PostfachMailTestFactory.NACHRICHT_ID));
-		}
-
-		@Test
-		void shouldReturnNachricht() {
-			var result = service.findById(PostfachMailTestFactory.NACHRICHT_ID);
-
-			assertThat(result).isSameAs(mail);
-		}
-	}
-
-	@DisplayName("Send postfach mail")
-	@Nested
-	class TestSendPostfachMail {
-
-		private static final CreateCommand CREATE_COMMAND = CommandTestFactory.createCreateCommand();
-
-		@Test
-		void shouldCallCommandService() {
-			service.sendPostfachMail(CREATE_COMMAND, VorgangHeaderTestFactory.VERSION);
-
-			verify(commandService).createCommand(CREATE_COMMAND, VorgangHeaderTestFactory.VERSION);
-		}
-	}
-
-	@DisplayName("Resend postfach mail")
-	@Nested
-	class TestResendPostfachMail {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.resendPostfachMail(CommandTestFactory.ID, PostfachMailTestFactory.ID);
-
-			verify(remoteService).resendPostfachMail(CommandTestFactory.ID, PostfachMailTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Get all as pdf")
-	@Nested
-	class TestGetAllAsPdf {
-
-		@Mock
-		private OutputStream outputStream;
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		private final Stream<PostfachNachrichtPdfData> postfachNachrichtPdfModelDataList = Stream
-				.of(PostfachNachrichtPdfData.builder().build());// TODO TestFactory erstellen
-
-		@DisplayName("should call")
-		@Nested
-		class TestCall {
-
-			@BeforeEach
-			void mock() {
-				doReturn(postfachNachrichtPdfModelDataList).when(service).buildPostfachNachrichtPdfDataList(anyString());
-			}
-
-			@Test
-			void buildPostfachNachrichtPdfModelDataList() {
-				service.getAllAsPdf(vorgang, outputStream);
-
-				verify(service).buildPostfachNachrichtPdfDataList(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void pdfService() {
-				service.getAllAsPdf(vorgang, outputStream);
-
-				verify(pdfService).getAllAsPdf(vorgang, postfachNachrichtPdfModelDataList, outputStream);
-			}
-		}
-
-		@DisplayName("build postfach nachrichten pdf data")
-		@Nested
-		class TestBuildPostfachNachrichtPdfDataList {
-
-			private final PostfachMail postfachNachricht = PostfachMailTestFactory.create();
-
-			@DisplayName("should call")
-			@Nested
-			class TestCall {
-
-				private final Stream<PostfachMail> postfachMail = Stream.of(postfachNachricht);
-				private final Stream<OzgFile> ozgFiles = Stream.of(OzgFileTestFactory.create());
-
-				@BeforeEach
-				void mock() {
-					when(remoteService.findPostfachMails(anyString())).thenReturn(postfachMail);
-					when(fileService.getFiles(anyList())).thenReturn(ozgFiles);
-				}
-
-				@Test
-				void shouldCallRemoteService() {
-					service.buildPostfachNachrichtPdfDataList(VorgangHeaderTestFactory.ID);
-
-					verify(remoteService).findPostfachMails(VorgangHeaderTestFactory.ID);
-				}
-
-				@Test
-				void shouldCallBinaryFileService() {
-					service.buildPostfachNachrichtPdfDataList(VorgangHeaderTestFactory.ID);
-
-					verify(fileService).getFiles(List.of(BinaryFileTestFactory.FILE_ID));
-				}
-
-				@Test
-				void shouldCallBuildPostfachNachrichtPdfData() {
-					doReturn(PostfachNachrichtPdfData.builder().build()).when(service).buildPostfachNachrichtPdfData(any(), any());
-
-					service.buildPostfachNachrichtPdfDataList(VorgangHeaderTestFactory.ID).toList();
-
-					verify(service).buildPostfachNachrichtPdfData(postfachNachricht, Map.of(OzgFileTestFactory.ID, OzgFileTestFactory.NAME));
-				}
-			}
-
-			@DisplayName("for single postfachNachricht")
-			@Nested
-			class TestBuildPostfachNachrichtPdfData {
-
-				private final UserProfile user = UserProfileTestFactory.create();
-
-				@BeforeEach
-				void mock() {
-					when(userService.getById(any(UserId.class))).thenReturn(user);
-				}
-
-				@Test
-				void shouldCallUserService() {
-					buildPostfachNachrichtPdfData();
-
-					verify(userService).getById(UserProfileTestFactory.ID);
-				}
-
-				@Test
-				void shouldHaveSetCreatedAt() {
-					var postfachNachricht = buildPostfachNachrichtPdfData();
-
-					assertThat(postfachNachricht.getCreatedAt()).isEqualTo(PostfachMailTestFactory.CREATED_AT);
-				}
-
-				@Test
-				void shouldHaveSetCreatedByName() {
-					var postfachNachricht = buildPostfachNachrichtPdfData();
-
-					assertThat(postfachNachricht.getUser()).isEqualTo(user);
-				}
-
-				@Test
-				void shouldHaveSetSubject() {
-					var postfachNachricht = buildPostfachNachrichtPdfData();
-
-					assertThat(postfachNachricht.getSubject()).isEqualTo(PostfachMailTestFactory.SUBJECT);
-				}
-
-				@Test
-				void shouldHaveSetMailBody() {
-					var postfachNachricht = buildPostfachNachrichtPdfData();
-
-					assertThat(postfachNachricht.getMailBody()).isEqualTo(PostfachMailTestFactory.MAIL_BODY);
-				}
-
-				@Test
-				void shouldHaveSetAttachmentNames() {
-					var postfachNachricht = buildPostfachNachrichtPdfData();
-
-					assertThat(postfachNachricht.getAttachmentNames()).isEqualTo(List.of(OzgFileTestFactory.NAME));
-				}
-			}
-
-			@DisplayName("for multiple postfachNachrichten")
-			@Nested
-			class TestMultiplePostfachNachrichten {
-				private final PostfachMail postfachMailRecent = PostfachMailTestFactory.create();
-				private final PostfachMail postfachMailOlder = PostfachMailTestFactory.createBuilder()
-						.createdAt(postfachMailRecent.getCreatedAt().minusYears(1))
-						.build();
-				private final PostfachNachrichtPdfData expectedPdfDataRecent = PostfachNachrichtPdfDataTestFactory.createBuilder()
-						.createdAt(postfachMailRecent.getCreatedAt())
-						.build();
-				private final PostfachNachrichtPdfData expectedPdfDataOlder = PostfachNachrichtPdfDataTestFactory.createBuilder()
-						.createdAt(postfachMailOlder.getCreatedAt())
-						.build();
-				private final List<PostfachMail> postfachMails = List.of(postfachMailOlder, postfachMailRecent);
-				private final Stream<OzgFile> ozgFiles = Stream.of(OzgFileTestFactory.create());
-
-				@Test
-				void shouldBeSortedByCreateTime() {
-					doReturn(Stream.of(postfachMailOlder, postfachMailRecent)).when(service).getAll(VorgangHeaderTestFactory.ID);
-					doReturn(ozgFiles).when(service).getFiles(postfachMails);
-					ArgumentMatcher<Map<FileId, String>> ozgFilesMapMatcher = ozgFilesMap -> ozgFilesMap.get(OzgFileTestFactory.ID)
-							.equals(OzgFileTestFactory.NAME) && ozgFilesMap.size() == 1;
-					doReturn(expectedPdfDataRecent).when(service).buildPostfachNachrichtPdfData(eq(postfachMailRecent), argThat(ozgFilesMapMatcher));
-					doReturn(expectedPdfDataOlder).when(service).buildPostfachNachrichtPdfData(eq(postfachMailOlder), argThat(ozgFilesMapMatcher));
-
-					var pdfDataList = service.buildPostfachNachrichtPdfDataList(VorgangHeaderTestFactory.ID).toList();
-
-					assertThat(pdfDataList).containsExactly(expectedPdfDataRecent, expectedPdfDataOlder);
-				}
-			}
-
-			@DisplayName("user")
-			@Nested
-			class TestUser {
-
-				@DisplayName("exists")
-				@Nested
-				class TestOnNonNull {
-
-					private final UserProfile user = UserProfileTestFactory.create();
-
-					@BeforeEach
-					void mock() {
-						when(userService.getById(any(UserId.class))).thenReturn(user);
-					}
-
-					@Test
-					void shouldCallUserService() {
-						buildPostfachNachrichtPdfData();
-
-						verify(userService).getById(UserProfileTestFactory.ID);
-					}
-
-					@Test
-					void shouldHaveSetCreatedByName() {
-						var postfachNachricht = buildPostfachNachrichtPdfData();
-
-						assertThat(postfachNachricht.getUser()).isEqualTo(user);
-					}
-				}
-
-				@DisplayName("not exists")
-				@Nested
-				class TestOnNull {
-
-					private final PostfachMail postfachNachrichtWithoutCreatedBy = PostfachMailTestFactory.createBuilder().createdBy(null)
-							.build();
-
-					@Test
-					void shouldNotCallUserService() {
-						buildPostfachNachrichtPdfDataWithoutUser();
-
-						verify(userService, never()).getById(any());
-					}
-
-					@Test
-					void shouldHaveSetNullAsUser() {
-						var postfachNachricht = buildPostfachNachrichtPdfDataWithoutUser();
-
-						assertThat(postfachNachricht.getUser()).isNull();
-					}
-
-					private PostfachNachrichtPdfData buildPostfachNachrichtPdfDataWithoutUser() {
-						return service.buildPostfachNachrichtPdfData(postfachNachrichtWithoutCreatedBy,
-								Map.of(BinaryFileTestFactory.FILE_ID, OzgFileTestFactory.NAME));
-					}
-				}
-			}
-
-			private PostfachNachrichtPdfData buildPostfachNachrichtPdfData() {
-				return service.buildPostfachNachrichtPdfData(postfachNachricht, Map.of(BinaryFileTestFactory.FILE_ID, OzgFileTestFactory.NAME));
-			}
-
-		}
-
-		@DisplayName("get file ids from all attachments")
-		@Nested
-		class TestGetFileIdsFromAllAttachments {
-
-			@Test
-			void shouldReturnFileIdsFromPostfachMail() {
-				var fileIds = service.getFileIdsFromAllAttachments(List.of(PostfachMailTestFactory.create()));
-
-				assertThat(fileIds).containsExactly(BinaryFileTestFactory.FILE_ID);
-			}
-
-			@Test
-			void shouldReturnEmptyListOnNoAttachments() {
-				var fileIds = service.getFileIdsFromAllAttachments(List.of(PostfachMailTestFactory.createBuilder().clearAttachments().build()));
-
-				assertThat(fileIds).isEmpty();
-			}
-		}
-
-		@DisplayName("get User")
-		@Nested
-		class TestGetUser {
-
-			@DisplayName("on existing client user")
-			@Nested
-			class TestOnExistingClientUser {
-
-				@Test
-				void shouldCallUserServiceOnExistingUser() {
-					service.getUser(PostfachMailTestFactory.create());
-
-					verify(userService).getById(UserProfileTestFactory.ID);
-				}
-
-				@Test
-				void shouldReturnUserProfileWithId() {
-					when(userService.getById(any())).thenReturn(UserProfileTestFactory.create());
-
-					var user = service.getUser(PostfachMailTestFactory.create());
-
-					assertThat(user.getId()).isEqualTo(UserProfileTestFactory.ID);
-				}
-			}
-
-			@DisplayName("on existing system user")
-			@Nested
-			class TestOnSystemUser {
-
-				private final PostfachMail postfachMail = PostfachMailTestFactory.createBuilder()
-						.createdBy(UserId.from(UserProfileTestFactory.SYSTEM_USER)).build();
-
-				@Test
-				void shouldNotCallUserService() {
-					service.getUser(postfachMail);
-
-					verify(userService, never()).getById(UserProfileTestFactory.ID);
-				}
-
-				@Test
-				void shouldReturnUserProfileWithId() {
-					var user = service.getUser(postfachMail);
-
-					assertThat(user.getId()).hasToString(UserProfileTestFactory.SYSTEM_USER);
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailTestFactory.java
deleted file mode 100644
index ccbf57c3b3792cd99e4b70dbeb4456d8887e3901..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachMailTestFactory.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.time.ZonedDateTime;
-import java.util.List;
-import java.util.UUID;
-
-import org.apache.commons.lang3.RandomStringUtils;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-public class PostfachMailTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final PostfachNachrichtId NACHRICHT_ID = PostfachNachrichtId.from(ID);
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-	public static final String CREATED_AT_STR = "2000-01-01T01:00:00Z";
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-	public static final UserId CREATED_BY = UserProfileTestFactory.ID;
-	public static final Direction DIRECTION = Direction.OUT;
-	public static final String RECEIVER = LoremIpsum.getInstance().getEmail();
-	public static final String SUBJECT = RandomStringUtils.randomAlphanumeric(70);
-	public static final String MAIL_BODY = LoremIpsum.getInstance().getParagraphs(1, 1);
-	public static final ReplyOption REPLY_OPTION = ReplyOption.POSSIBLE;
-	static final boolean SENT_SUCCESSFUL = true;
-	public static final String SENT_AT_STR = "2000-01-01T10:00:00Z";
-	public static final ZonedDateTime SENT_AT = ZonedDateTime.parse(SENT_AT_STR);
-	public static final String MESSAGE_CODE = LoremIpsum.getInstance().getWords(3).concat(".");
-
-	public static final List<FileId> ATTACHMENTS = List.of(BinaryFileTestFactory.FILE_ID);
-
-	public static PostfachMail create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachMail createLikeFromClient() {
-		return createBuilder()
-				.createdAt(null)
-				.createdBy(null)
-				.direction(null)
-				.build();
-	}
-
-	public static PostfachMail.PostfachMailBuilder createBuilder() {
-		return PostfachMail.builder()
-				.id(ID)
-				.vorgangId(VORGANG_ID)
-				.postfachAddress(PostfachAddressTestFactory.createAsMap())
-				.createdAt(CREATED_AT)
-				.createdBy(CREATED_BY)
-				.sentAt(SENT_AT)
-				.sentSuccessful(SENT_SUCCESSFUL)
-				.messageCode(MESSAGE_CODE)
-				.direction(DIRECTION)
-				.subject(SUBJECT)
-				.mailBody(MAIL_BODY)
-				.replyOption(REPLY_OPTION)
-				.attachments(ATTACHMENTS);
-	}
-
-	public static String buildSendPostfachMailContent() {
-		return buildSendPostfachMailContent(create());
-	}
-
-	public static String buildSendPostfachMailContent(PostfachMail postfachMail) {
-		return buildSendPostfachMailContent(postfachMail, CommandOrder.SEND_POSTFACH_NACHRICHT);
-	}
-
-	public static String buildSendPostfachMailContent(PostfachMail postfachMail, CommandOrder order) {
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithPostfachMail.json.tmpl", order.name(),
-				postfachMail.getReplyOption().name(),
-				TestUtils.addQuote(postfachMail.getSubject()),
-				TestUtils.addQuote(postfachMail.getMailBody()),
-				buildAttachmentValue(postfachMail));
-	}
-
-	private static String buildAttachmentValue(PostfachMail postfachMail) {
-		if (postfachMail.getAttachments().isEmpty()) {
-			return "[]";
-		}
-		var fileId = postfachMail.getAttachments().get(0).toString();
-		return "[\"api/binaryFiles/" + fileId + "\"]";
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparatorTest.java
deleted file mode 100644
index 1b067bb6bddd4d10f9c8860b04cfffcad9c55cd4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtComparatorTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.time.ZonedDateTime;
-
-import org.junit.jupiter.api.Test;
-
-class PostfachNachrichtComparatorTest {
-
-	private PostfachNachrichtComparator comparator = new PostfachNachrichtComparator();
-
-	@Test
-	void shouldCompareCreatedAt() {
-		var shouldBeFirst = buildPostfachMail(ZonedDateTime.parse("2020-02-01T01:00:00Z"), null);
-		var shouldBeSecond = buildPostfachMail(ZonedDateTime.parse("2020-01-01T01:00:00Z"), null);
-
-		var result = comparator.compare(shouldBeSecond, shouldBeFirst);
-
-		assertThat(result).isEqualTo(-1);
-	}
-
-	@Test
-	void shouldCompareCreatedAtWithSentAtNull() {
-		var shouldBeFirst = buildPostfachMail(ZonedDateTime.parse("2020-02-01T01:00:00Z"), ZonedDateTime.parse("2020-05-01T01:00:00Z"));
-		var shouldBeSecond = buildPostfachMail(ZonedDateTime.parse("2020-01-01T01:00:00Z"), null);
-
-		var result = comparator.compare(shouldBeSecond, shouldBeFirst);
-
-		assertThat(result).isEqualTo(-1);
-	}
-
-	@Test
-	void shouldCompareSentAt() {
-		var shouldBeFirst = buildPostfachMail(ZonedDateTime.parse("2020-05-01T01:00:00Z"), ZonedDateTime.parse("2020-10-01T01:00:00Z"));
-		var shouldBeSecond = buildPostfachMail(ZonedDateTime.parse("2020-10-01T01:00:00Z"), ZonedDateTime.parse("2020-05-01T01:00:00Z"));
-
-		var result = comparator.compare(shouldBeSecond, shouldBeFirst);
-
-		assertThat(result).isEqualTo(-1);
-	}
-
-	@Test
-	void shouldCompareSentAtWithCreateAtNull() {
-		var shouldBeFirst = buildPostfachMail(ZonedDateTime.parse("2020-01-01T01:00:00Z"), ZonedDateTime.parse("2020-10-01T01:00:00Z"));
-		var shouldBeSecond = buildPostfachMail(null, ZonedDateTime.parse("2020-05-01T01:00:00Z"));
-
-		var result = comparator.compare(shouldBeSecond, shouldBeFirst);
-
-		assertThat(result).isEqualTo(-1);
-	}
-
-	private PostfachMail buildPostfachMail(ZonedDateTime createdAt, ZonedDateTime sentAt) {
-		return PostfachMailTestFactory.createBuilder().createdAt(createdAt).sentAt(sentAt).build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelperTest.java
deleted file mode 100644
index 5b5f302cae193ddc16ed524632f97760a1bc860e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHelperTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class PostfachNachrichtHelperTest {
-
-	@InjectMocks
-	private PostfachNachrichtHelper helper;
-	@Mock
-	private PostfachMailMapper mapper;
-
-	@DisplayName("Add postfachAddress to body")
-	@Nested
-	class TestAddPostfachAddressToBody {
-
-		private final PostfachMail postfachNachrichtWithoutPostfachAddress = PostfachMailTestFactory.createBuilder().postfachAddress(null).build();
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void mockMapper() {
-			when(mapper.mapPostfachAddressToMap(any())).thenReturn(PostfachAddressTestFactory.createAsMap());
-		}
-
-		@Test
-		void shouldCallMapperWithPostfachAddress() {
-			helper.addPostfachAddressToBody(postfachNachrichtWithoutPostfachAddress, vorgang);
-
-			verify(mapper).mapPostfachAddressToMap(vorgang.getHeader().getServiceKonto().getPostfachAddresses().get(0));
-		}
-
-		@Test
-		void shouldReturn() {
-			var body = helper.addPostfachAddressToBody(postfachNachrichtWithoutPostfachAddress, vorgang);
-
-			assertThat(((PostfachMail) body).getPostfachAddress()).usingRecursiveComparison().isEqualTo(PostfachAddressTestFactory.createAsMap());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfDataTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfDataTestFactory.java
deleted file mode 100644
index e5d13a939d57e625562e092575dd7b1ce86cf16f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfDataTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import java.util.List;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class PostfachNachrichtPdfDataTestFactory {
-
-	public static PostfachNachrichtPdfData create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachNachrichtPdfData.PostfachNachrichtPdfDataBuilder createBuilder() {
-		return PostfachNachrichtPdfData.builder()
-				.createdAt(PostfachMailTestFactory.CREATED_AT)
-				.user(UserProfileTestFactory.create())
-				.subject(PostfachMailTestFactory.SUBJECT)
-				.mailBody(PostfachMailTestFactory.MAIL_BODY)
-				.attachmentNames(List.of(BinaryFileTestFactory.NAME));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceITCase.java
deleted file mode 100644
index fae6fb5f144c7c97bfa730fdbfe12ea88c0f559e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceITCase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.vorgang.AntragstellerTestFactory;
-import de.ozgcloud.alfa.vorgang.EingangTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import lombok.SneakyThrows;
-
-@SpringBootTest
-class PostfachNachrichtPdfServiceITCase {
-
-	@Autowired
-	private PostfachNachrichtPdfService service;
-	@MockBean
-	private UserService userService;
-
-	@DisplayName("Generate pdf file")
-	@Nested
-	class TestGeneratePdfFile {
-
-		@BeforeEach
-		void mock() {
-			when(userService.getById(any(UserId.class))).thenReturn(UserProfileTestFactory.create());
-		}
-
-		@SneakyThrows
-		@Test
-		void generatePdfFile() {
-			var tempFile = createTempFile();
-
-			getAllAsPdf(VorgangWithEingangTestFactory.create(), new FileOutputStream(tempFile));
-
-			assertThat(tempFile).isNotEmpty();
-		}
-
-		@SneakyThrows
-		@Test
-		void generatePdfFileAntragstellerNotSet() {
-			var tempFile = createTempFile();
-
-			getAllAsPdf(buildVorgangAntragstellerNotSet(), new FileOutputStream(tempFile));
-
-			assertThat(tempFile).isNotEmpty();
-		}
-
-		@SneakyThrows
-		@Test
-		void generatePdfFileNoAttachments() {
-			var tempFile = createTempFile();
-
-			getAllAsPdf(buildVorgangAntragstellerNotSet(),
-					Stream.of(PostfachNachrichtPdfDataTestFactory.createBuilder().attachmentNames(Collections.emptyList()).build()),
-					new FileOutputStream(tempFile));
-
-			assertThat(tempFile).isNotEmpty();
-		}
-
-		@SneakyThrows
-		private File createTempFile() {
-			var tempFile = File.createTempFile("ozgcloud_nachricht_", ".pdf");
-			// tempFile.deleteOnExit();
-			return tempFile;
-		}
-
-		@SneakyThrows
-		private void getAllAsPdf(VorgangWithEingang vorgang, OutputStream out) {
-			getAllAsPdf(vorgang, buildPostfachMails(), out);
-		}
-
-		@SneakyThrows
-		private void getAllAsPdf(VorgangWithEingang vorgang, Stream<PostfachNachrichtPdfData> postfachNachrichten, OutputStream out) {
-			service.getAllAsPdf(vorgang, postfachNachrichten, out);
-			out.close();
-		}
-	}
-
-	@DisplayName("Map Postfach-Nachricht")
-	@Nested
-	class TestMapPostfachNachricht {
-
-		private final ZonedDateTime createdAt = ZonedDateTime.of(2023, 9, 25, 10, 0, 0, 0, ZoneId.of("UTC"));
-		private final PostfachNachrichtPdfData pdfData = PostfachNachrichtPdfDataTestFactory.createBuilder().createdAt(createdAt).build();
-
-		@Test
-		void shouldMapCreatedAtWithCorrectTimezoneAndFormatting() {
-			var nachricht = service.mapPostfachNachricht(pdfData, AntragstellerTestFactory.create());
-
-			assertThat(nachricht.getCreatedAt()).isEqualTo("25.09.2023 12:00:00 MESZ");
-		}
-	}
-
-	private VorgangWithEingang buildVorgangAntragstellerNotSet() {
-		return VorgangWithEingangTestFactory.createBuilder().eingang(EingangTestFactory.createBuilder().antragsteller(null).build()).build();
-	}
-
-	private Stream<PostfachNachrichtPdfData> buildPostfachMails() {
-		return Stream.of(PostfachNachrichtPdfDataTestFactory.createBuilder().subject("hase")
-						.attachmentNames(List.of("Hase.png", "Hasenlied.mscz", "Erweitertes-Führungszeugniß.pdf", "Haftbefehl.pdf"))
-						.build(),
-				PostfachNachrichtPdfDataTestFactory.create(),
-				PostfachNachrichtPdfDataTestFactory.create(),
-				PostfachNachrichtPdfDataTestFactory.create(),
-				PostfachNachrichtPdfDataTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceTest.java
deleted file mode 100644
index 286bdc7d05c38a2d9a6975970d8349a1346ddb0c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachNachrichtPdfServiceTest.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.core.io.Resource;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import de.ozgcloud.alfa.common.GermanDateTimeFormatter;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.postfach.PostfachMail.Direction;
-import de.ozgcloud.alfa.postfach.PostfachNachrichtPdfModel.Nachricht;
-import de.ozgcloud.alfa.vorgang.AntragstellerTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import de.ozgcloud.common.pdf.PdfService;
-import lombok.SneakyThrows;
-
-class PostfachNachrichtPdfServiceTest {
-
-	@Spy
-	@InjectMocks
-	private PostfachNachrichtPdfService service;
-	@Mock
-	private PdfService pdfService;
-	@Mock
-	private GermanDateTimeFormatter germanDateTimeFormatter;
-
-	@DisplayName("Get all as pdf")
-	@Nested
-	class TestGetAllAsPdf {
-
-		@Mock
-		private OutputStream output;
-
-		@DisplayName("on getting template")
-		@Nested
-		class TestGetTemplate {
-
-			@Mock
-			private Resource pdfTemplate;
-
-			@BeforeEach
-			void mockPdfTemplate() {
-				ReflectionTestUtils.setField(service, "pdfTemplate", pdfTemplate);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldGetInputStreamFromResource() {
-				when(pdfTemplate.getInputStream()).thenReturn(InputStream.nullInputStream());
-
-				service.getTemplate();
-
-				verify(pdfTemplate).getInputStream();
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldReturnIfExists() {
-				var inputStream = InputStream.nullInputStream();
-				when(pdfTemplate.getInputStream()).thenReturn(inputStream);
-
-				var templateInputStream = service.getTemplate();
-
-				assertThat(templateInputStream).isEqualTo(inputStream);
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldThrowExceptionIfMissing() {
-				when(pdfTemplate.getInputStream()).thenThrow(IOException.class);
-
-				assertThatThrownBy(() -> service.getTemplate()).isInstanceOf(TechnicalException.class);
-			}
-		}
-
-		@DisplayName("build model")
-		@Nested
-		class TestBuildModel {
-
-			@DisplayName("by vorgang")
-			@Nested
-			class TestByVorgang {
-
-				@Test
-				void shouldSetVorgangNummer() {
-					var model = service.buildModel(VorgangWithEingangTestFactory.create(), Stream.empty());
-
-					assertThat(model.getVorgangNummer()).isEqualTo(VorgangHeaderTestFactory.NUMMER);
-				}
-
-				@Test
-				void shouldSetVorgangName() {
-					var model = service.buildModel(VorgangWithEingangTestFactory.create(), Stream.empty());
-
-					assertThat(model.getVorgangName()).isEqualTo(VorgangHeaderTestFactory.NAME);
-				}
-
-				@Nested
-				class TestSetIsFirst {
-
-					@Test
-					void shouldSetIsFirstTrueOnFirstMessage() {
-						var model = service.buildModel(VorgangWithEingangTestFactory.create(),
-								Stream.of(PostfachNachrichtPdfDataTestFactory.create()));
-
-						assertThat(model.getNachrichten().get(0).isFirst()).isTrue();
-					}
-
-					@Test
-					void shouldSetIsFirstFalseOnOtherMessage() {
-						var model = service.buildModel(VorgangWithEingangTestFactory.create(),
-								Stream.of(PostfachNachrichtPdfDataTestFactory.create(), PostfachNachrichtPdfDataTestFactory.create(),
-										PostfachNachrichtPdfDataTestFactory.create()));
-
-						assertThat(model.getNachrichten().get(1).isFirst()).isFalse();
-						assertThat(model.getNachrichten().get(2).isFirst()).isFalse();
-					}
-				}
-			}
-
-			@DisplayName("by Antragsteller")
-			@Nested
-			class TestMapAntragsteller {
-
-				@Test
-				void shouldMapAntragstellerAnrede() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE);
-				}
-
-				@Test
-				void shouldMapAntragstellerVorname() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerVorname()).isEqualTo(AntragstellerTestFactory.VORNAME);
-				}
-
-				@Test
-				void shouldMapAntragstellerNachname() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME);
-				}
-
-				@Test
-				void shouldMapAntragstellerStrasse() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE);
-				}
-
-				@Test
-				void shouldMapAntragstellerHausnummer() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerHausnummer()).isEqualTo(AntragstellerTestFactory.HAUSNUMMER);
-				}
-
-				@Test
-				void shouldMapAntragstellerPlz() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerPlz()).isEqualTo(AntragstellerTestFactory.PLZ);
-				}
-
-				@Test
-				void shouldMapAntragstellerOrt() {
-					var modelBuilder = mapAntragsteller();
-
-					assertThat(modelBuilder.build().getAntragstellerOrt()).isEqualTo(AntragstellerTestFactory.ORT);
-				}
-
-				private PostfachNachrichtPdfModel.PostfachNachrichtPdfModelBuilder mapAntragsteller() {
-					var modelBuilder = PostfachNachrichtPdfModel.builder();
-
-					service.mapAntragsteller(modelBuilder, AntragstellerTestFactory.create());
-
-					return modelBuilder;
-				}
-			}
-
-			@DisplayName("by postfachnachricht pdf data")
-			@Nested
-			class TestMapPostfachNachricht {
-
-				@Test
-				void shouldMapNachrichtSubject() {
-					var nachricht = mapNachricht();
-
-					assertThat(nachricht.getSubject()).isEqualTo(PostfachMailTestFactory.SUBJECT);
-				}
-
-				@Test
-				void shouldMapNachrichtMailBody() {
-					var nachricht = mapNachricht();
-
-					assertThat(nachricht.getMailBody()).isEqualTo(PostfachMailTestFactory.MAIL_BODY);
-				}
-
-				@Test
-				void shouldMapNachrichtCreatedAt() {
-					var expected = "formatted date";
-					when(germanDateTimeFormatter.formatZonedDateTime(PostfachMailTestFactory.CREATED_AT)).thenReturn(expected);
-
-					var nachricht = mapNachricht();
-
-					assertThat(nachricht.getCreatedAt()).isEqualTo(expected);
-				}
-
-				@Test
-				void shouldCallDateFormatter() {
-					mapNachricht();
-
-					verify(germanDateTimeFormatter).formatZonedDateTime(PostfachMailTestFactory.CREATED_AT);
-				}
-
-				@Test
-				void shouldMapNachrichtCreatedBy() {
-					var nachricht = mapNachricht();
-
-					assertThat(nachricht.getCreatedBy()).isEqualTo(UserProfileTestFactory.FULLNAME);
-				}
-
-				@Test
-				void shouldMapNachrichtAttachments() {
-					var nachricht = mapNachricht();
-
-					assertThat(nachricht.getAttachments()).containsExactly(BinaryFileTestFactory.NAME);
-				}
-
-				private Nachricht mapNachricht() {
-					return mapNachricht(PostfachNachrichtPdfDataTestFactory.create());
-				}
-
-				private PostfachNachrichtPdfModel.Nachricht mapNachricht(PostfachNachrichtPdfData pdfData) {
-					return service.mapPostfachNachricht(pdfData, AntragstellerTestFactory.create());
-				}
-
-				@DisplayName("for incoming nachricht")
-				@Nested
-				class TestDirectionIn {
-
-					@DisplayName("build absender name")
-					@Nested
-					class TestBuildUserName {
-
-						private final PostfachNachrichtPdfData data = PostfachNachrichtPdfDataTestFactory.createBuilder().direction(Direction.IN)
-								.build();
-
-						@Test
-						void shouldReturnAntragstellerIfExists() {
-							var name = service.buildAbsenderName(data, AntragstellerTestFactory.create());
-
-							assertThat(name).isEqualTo(AntragstellerTestFactory.VORNAME + " " + AntragstellerTestFactory.NACHNAME);
-						}
-
-						@Test
-						void shouldReturnFallbackNameForAntragsteller() {
-							var name = service.buildAbsenderName(data, null);
-
-							assertThat(name).isEqualTo(PostfachNachrichtPdfService.FALLBACK_ANTRAGSTELLER_NAME);
-						}
-
-						@Test
-						void shouldReturnEmptyStringOnNullAntragstellerName() {
-							var name = service.buildAbsenderName(data, AntragstellerTestFactory.createBuilder().vorname(null).nachname(null).build());
-
-							assertThat(name).isEqualTo(StringUtils.EMPTY);
-						}
-					}
-				}
-
-				@DisplayName("for outgoing nachricht")
-				@Nested
-				class TestDirectionOut {
-
-					@DisplayName("build absender name")
-					@Nested
-					class TestBuildUserName {
-
-						private final PostfachNachrichtPdfData data = PostfachNachrichtPdfDataTestFactory.createBuilder().direction(Direction.OUT)
-								.build();
-
-						@Test
-						void shouldReturnUserProfileNameIfExists() {
-							var name = service.buildAbsenderName(data, AntragstellerTestFactory.create());
-
-							assertThat(name).isEqualTo(UserProfileTestFactory.FIRSTNAME + " " + UserProfileTestFactory.LASTNAME);
-						}
-
-						@Test
-						void shouldReturnFallbackNameForUserProfile() {
-							var name = service.buildAbsenderName(
-									PostfachNachrichtPdfDataTestFactory.createBuilder().direction(Direction.OUT).user(null).build(),
-									AntragstellerTestFactory.create());
-
-							assertThat(name).isEqualTo(PostfachNachrichtPdfService.FALLBACK_USER_NAME);
-						}
-
-						@Test
-						void shouldReturnEmptyStringOnNullName() {
-							var data = PostfachNachrichtPdfDataTestFactory.createBuilder().direction(Direction.OUT)
-									.user(UserProfileTestFactory.createBuilder().firstName(null).lastName(null).build()).build();
-
-							var name = service.buildAbsenderName(data, AntragstellerTestFactory.create());
-
-							assertThat(name).isEmpty();
-						}
-					}
-				}
-			}
-		}
-
-		@Test
-		void shouldCallPdfService() {
-			doReturn(InputStream.nullInputStream()).when(service).getTemplate();
-
-			service.getAllAsPdf(VorgangWithEingangTestFactory.create(), Stream.of(PostfachNachrichtPdfDataTestFactory.create()), output);
-
-			verify(pdfService).createPdf(any(InputStream.class), eq(output), any(PostfachNachrichtPdfModel.class));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTest.java
deleted file mode 100644
index d886861a56502ed102ffc52d3ef4368c13a358d9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-
-@SpringBootTest(classes = { PostfachPropertiesTestConfiguration.class })
-class PostfachPropertiesTest {
-	private static final String ORGANISATIONSEINHEITEN_ID = "oe1";
-	private static final String TEST_SIG = "test1";
-	private static final String TEST_ORGANISATIONS_SIG = OrganisationsEinheitSettingsTestFactory.TEST_SIGNATUR;
-
-	@DisplayName("Test loading postfach configuration")
-	@Nested
-	@TestPropertySource(properties = {
-			PostfachProperties.PREFIX + ".signatur=" + TEST_SIG,
-			PostfachProperties.PREFIX + ".organisations-einheit-settings." + ORGANISATIONSEINHEITEN_ID + ".signatur=" + TEST_ORGANISATIONS_SIG,
-	})
-	class TestLoadingPostfachProperties {
-
-		@Autowired
-		private PostfachProperties postfachProperties;
-
-		@Nested
-		class TestInitialization {
-
-			@Test
-			void shouldHaveProperties() {
-				assertThat(postfachProperties).isNotNull();
-			}
-
-			@Test
-			void shouldHaveOrganisationsEinheitSettings() {
-				assertThat(postfachProperties.getOrganisationsEinheitSettings()).isNotNull();
-			}
-		}
-	}
-
-	@DisplayName("Test mapping organisations einheit settings")
-	@Nested
-	@TestPropertySource(properties = {
-			PostfachProperties.PREFIX + ".signatur=" + TEST_SIG,
-			PostfachProperties.PREFIX + ".organisations-einheit-settings.oe1.signatur=" + TEST_ORGANISATIONS_SIG,
-	})
-	class TestMapOrganisationsEinheitSettings {
-
-		@Autowired
-		private PostfachProperties postfachProperties;
-
-		@Test
-		void shouldHaveOrganisationsEinheit() {
-			var props = postfachProperties.getOrganisationsEinheitSettings();
-
-			assertThat(props).containsKey(ORGANISATIONSEINHEITEN_ID);
-		}
-
-		@Test
-		void shouldHaveOrganisationsEinheitSetting() {
-			assertThat(postfachProperties.getOrganisationsEinheitSettings().get(ORGANISATIONSEINHEITEN_ID)).hasFieldOrPropertyWithValue("signatur",
-					TEST_ORGANISATIONS_SIG);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java
deleted file mode 100644
index 8cf7c2e98ca2ccbdbd2db76cf5131a6474d913a3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachPropertiesTestConfiguration.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@EnableConfigurationProperties(PostfachProperties.class)
-class PostfachPropertiesTestConfiguration {
-
-	@Autowired
-	private PostfachProperties postfachProperties;
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java
deleted file mode 100644
index 23af6bf5791e241304e8bb780d56ac35e90ca354..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.cloud.endpoint.RefreshEndpoint;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.collaboration.OrganisationsEinheitTestFactory;
-import de.ozgcloud.alfa.common.FeatureToggleProperties;
-import de.ozgcloud.alfa.vorgang.ServiceKontoTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeadTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class PostfachSettingsServiceTest {
-
-	@Spy
-	@InjectMocks
-	private PostfachSettingsService service;
-	@Mock
-	private PostfachMailRemoteService remoteService;
-	@Mock
-	private RefreshEndpoint refreshEndpoint;
-	@Mock
-	private PostfachProperties postfachProperties;
-	@Mock
-	private FeatureToggleProperties featureToggleProperties;
-
-	@DisplayName("Is postfach configured")
-	@Nested
-	class TestIsPostfachConfigured {
-
-		@Test
-		void shouldCallRemoteServiceOnMissingProperty() {
-			when(remoteService.getPostfachConfig()).thenReturn(PostfachConfigGroupTestFactory.create());
-
-			callService();
-
-			verify(remoteService).getPostfachConfig();
-		}
-
-		@Test
-		void shouldNotCallRemoteServiceOnExistingProperty() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.create());
-
-			callService();
-
-			verifyNoInteractions(remoteService);
-		}
-
-		@Test
-		void shouldCallRemoteServiceOnlyOnce() {
-			when(remoteService.getPostfachConfig()).thenReturn(PostfachConfigGroupTestFactory.create());
-
-			callService();
-			callService();
-
-			verify(remoteService, times(1)).getPostfachConfig();
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { false, true })
-		void shouldReturnValueFromRemoteService(boolean expectedConfigured) {
-			var serviceResponse = PostfachConfigGroupTestFactory.createBuilder().configured(expectedConfigured).build();
-			when(remoteService.getPostfachConfig()).thenReturn(serviceResponse);
-
-			var configured = callService();
-
-			assertThat(configured).isEqualTo(expectedConfigured);
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { false, true })
-		void shouldReturnCachedValue(boolean expectedConfigured) {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.createBuilder().configured(expectedConfigured).build());
-
-			var configured = callService();
-
-			assertThat(configured).isEqualTo(expectedConfigured);
-		}
-
-		private boolean callService() {
-			return service.isPostfachConfigured();
-		}
-	}
-
-	@Nested
-	class TestGetPostfachSettings {
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			doReturn(true).when(service).isReplyToMessageAllowed(vorgang);
-
-		}
-
-		@Test
-		void shouldCheckIsReplyAllowed() {
-			callService();
-
-			verify(service).isReplyToMessageAllowed(vorgang);
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { true, false })
-		void shouldSetIsReplyAllowedFeature(boolean replyAllowed) {
-			when(service.isReplyToMessageAllowed(vorgang)).thenReturn(replyAllowed);
-
-			var postfach = callService();
-
-			assertThat(postfach.getFeatures().isReply()).isEqualTo(replyAllowed);
-		}
-
-		@Test
-		void shouldGetSignatur() {
-			callService();
-
-			verify(service).getSignatur(vorgang.getOrganisationseinheitenID());
-		}
-
-		@Test
-		void shouldSetSignatur() {
-			doReturn(SettingsTestFactory.SIGNATUR).when(service).getSignatur(vorgang.getOrganisationseinheitenID());
-
-			var postfach = callService();
-
-			assertThat(postfach.getSettings().getSignatur()).isEqualTo(SettingsTestFactory.SIGNATUR);
-		}
-
-		private PostfachSettings callService() {
-			return service.getPostfachSettings(vorgang);
-		}
-	}
-
-	@Nested
-	class TestGetSignatur {
-
-		@Test
-		void shouldRefreshCloudProperties() {
-			callService();
-
-			verify(service).refreshPostfachProperties();
-		}
-
-		@Test
-		void shouldGetOrganisationEinheitSettings() {
-			callService();
-
-			verify(service).getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-		}
-
-		@Nested
-		class OnExistingOrganisationsEinheitSignatur {
-
-			@BeforeEach
-			void setUp() {
-				doReturn(Optional.of(OrganisationsEinheitSettingsTestFactory.create())).when(service)
-						.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-			}
-
-			@Test
-			void shouldReturnOrganisationsEinheitSignatur() {
-				var signatur = callService();
-
-				assertThat(signatur).isEqualTo(OrganisationsEinheitSettingsTestFactory.TEST_SIGNATUR);
-			}
-
-		}
-
-		@Nested
-		class OnNoOrganisationsEinheitSignatur {
-
-			@BeforeEach
-			void setUp() {
-				doReturn(Optional.empty()).when(service)
-						.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-			}
-
-			@Test
-			void shouldGetSignatur() {
-				callService();
-
-				verify(postfachProperties).getSignatur();
-
-			}
-
-			@Test
-			void shouldReturnSignatur() {
-				when(postfachProperties.getSignatur()).thenReturn(SettingsTestFactory.SIGNATUR);
-
-				var signatur = callService();
-
-				assertThat(signatur).isEqualTo(SettingsTestFactory.SIGNATUR);
-			}
-
-		}
-
-		private String callService() {
-			return service.getSignatur(OrganisationsEinheitTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestRefreshPostfachProperties {
-
-		@Test
-		void shouldCallRefreshEndpoint() {
-			service.refreshPostfachProperties();
-
-			verify(refreshEndpoint).refresh();
-		}
-	}
-
-	@Nested
-	@DisplayName("Is reply to a message allowed for given Vorgang")
-	class TestIsReplyToMessageAllowed {
-
-		@Test
-		void shouldCallIsReplyAllowed() {
-			doReturn(true).when(service).isReplyAllowed(ServiceKontoTestFactory.TYPE);
-
-			service.isReplyToMessageAllowed(VorgangWithEingangTestFactory.create());
-
-			verify(service).isReplyAllowed(ServiceKontoTestFactory.TYPE);
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { false, true })
-		void shouldReturnResultOfIsReplyAllowed(boolean expectedReplyAllowed) {
-			doReturn(expectedReplyAllowed).when(service).isReplyAllowed(ServiceKontoTestFactory.TYPE);
-
-			var replyAllowed = service.isReplyToMessageAllowed(VorgangWithEingangTestFactory.create());
-
-			assertThat(replyAllowed).isEqualTo(expectedReplyAllowed);
-		}
-
-		@Test
-		void shouldReturnFalseForNotExistingServiceKonto() {
-			var vorgangWithEingang = VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder()
-							.serviceKonto(null)
-							.build())
-					.build();
-
-			var replyToMessageAllowed = service.isReplyToMessageAllowed(vorgangWithEingang);
-
-			assertThat(replyToMessageAllowed).isFalse();
-		}
-	}
-
-	@Nested
-	class TestIsReplyAllowed {
-
-		private static final String DUMMY_SERVICE_KONTO_TYPE = LoremIpsum.getInstance().getWords(1);
-
-		@BeforeEach
-		void setUp() {
-			when(featureToggleProperties.isReplyAlwaysAllowed()).thenReturn(false);
-		}
-
-		@Test
-		@DisplayName("reply not allowed if postfach not configured")
-		void shouldReturnFalseIfPostfachNotConfigured() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.createBuilder().postfachConfigs(List.of()).build());
-			doReturn(false).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(PostfachConfigTestFactory.TYPE);
-
-			assertThat(replyAllowed).isFalse();
-		}
-
-		@Test
-		@DisplayName("given ServiceKonto-type is not configured")
-		void shouldReturnFalseForNotConfiguredType() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.createBuilder().postfachConfigs(List.of()).build());
-			doReturn(true).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(DUMMY_SERVICE_KONTO_TYPE);
-
-			assertThat(replyAllowed).isFalse();
-		}
-
-		@Test
-		@DisplayName("given ServiceKonto-type is null")
-		void shouldReturnFalseForUnknownType() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.create());
-			doReturn(true).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(null);
-
-			assertThat(replyAllowed).isFalse();
-		}
-
-		@Test
-		@DisplayName("reply not allowed for given ServiceKonto-type")
-		void shouldReturnFalseIfReplyNotAllowed() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.createBuilder()
-					.postfachConfigs(List.of(PostfachConfigTestFactory.createBuilder().replyAllowed(false).build()))
-					.build());
-			doReturn(true).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(PostfachConfigTestFactory.TYPE);
-
-			assertThat(replyAllowed).isFalse();
-		}
-
-		@Test
-		@DisplayName("reply allowed for given ServiceKonto-type")
-		void shouldReturnTrueIfReplyIsAllowed() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.create());
-			doReturn(true).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(PostfachConfigTestFactory.TYPE);
-
-			assertThat(replyAllowed).isTrue();
-		}
-
-		@Test
-		@DisplayName("reply allowed for given lower case ServiceKonto-type")
-		void shouldReturnTrueIfReplyIsAllowedForLowerCaseServiceKontoType() {
-			setPostfachConfigGroup(PostfachConfigGroupTestFactory.create());
-			doReturn(true).when(service).isPostfachConfigured();
-
-			var replyAllowed = service.isReplyAllowed(PostfachConfigTestFactory.TYPE.toLowerCase());
-
-			assertThat(replyAllowed).isTrue();
-		}
-
-		@Test
-		void shouldReturnTrueIfAlwaysAllowed() {
-			when(featureToggleProperties.isReplyAlwaysAllowed()).thenReturn(true);
-
-			var replyAllowed = service.isReplyAllowed(PostfachConfigTestFactory.TYPE);
-
-			assertThat(replyAllowed).isTrue();
-		}
-	}
-
-	private void setPostfachConfigGroup(PostfachConfigGroup postfachConfigGroup) {
-		ReflectionTestUtils.setField(service, "postfachConfigGroup", postfachConfigGroup);
-	}
-
-	@Nested
-	class TestGetOrganisationsEinheitSettings {
-
-		@Nested
-		class OnOrganisationIdNotNull {
-
-			private final OrganisationsEinheitSettings organisationsEinheitSettings = OrganisationsEinheitSettingsTestFactory.create();
-			private final Map<String, Object> organisationsEinheitSettingsMap = Map.of(PostfachSettingsService.FIELD_SIGNATUR,
-					OrganisationsEinheitSettingsTestFactory.TEST_SIGNATUR);
-
-			@BeforeEach
-			void setUp() {
-				when(postfachProperties.getOrganisationsEinheitSettings()).thenReturn(
-						Map.of(OrganisationsEinheitTestFactory.ID, organisationsEinheitSettingsMap));
-			}
-
-			@Test
-			void shouldGetOrganisationsEinheitSettings() {
-				service.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-
-				verify(postfachProperties).getOrganisationsEinheitSettings();
-			}
-
-			@Test
-			void shouldMapToOrganisationsEinheitSettings() {
-				service.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-
-				verify(service).mapOrganisationsEinheitSettings(organisationsEinheitSettingsMap);
-			}
-
-			@Test
-			void shouldReturnSettings() {
-				var settings = service.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID);
-
-				assertThat(settings).isPresent().get().usingRecursiveComparison().isEqualTo(organisationsEinheitSettings);
-			}
-
-			@Test
-			void shouldReturnEmpty() {
-				var settings = service.getOrganisationsEinheitSettings(UUID.randomUUID().toString());
-
-				assertThat(settings).isEmpty();
-			}
-		}
-
-		@Nested
-		class OnOrganisationIdNull {
-
-			@Test
-			void shouldReturnEmpty() {
-				var settings = service.getOrganisationsEinheitSettings(null);
-
-				assertThat(settings).isEmpty();
-			}
-		}
-	}
-
-	@Nested
-	class TestMapOrganisationsEinheitSettings {
-
-		private final String signatur = LoremIpsum.getInstance().getWords(2);
-		private final Map<String, Object> organisationsEinheitSettings = Map.of(PostfachSettingsService.FIELD_SIGNATUR, signatur);
-
-		@Test
-		void shouldMap() {
-			var settings = service.mapOrganisationsEinheitSettings(organisationsEinheitSettings);
-
-			assertThat(settings.getSignatur()).isEqualTo(signatur);
-		}
-
-		@Test
-		void shouldReturnSettingsWithNullSignatur() {
-			var settings = service.mapOrganisationsEinheitSettings(Collections.emptyMap());
-
-			assertThat(settings.getSignatur()).isNull();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsTestFactory.java
deleted file mode 100644
index 5b20ebd1bdc1b493ce02167aa2b6f5764bb3250a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-public class PostfachSettingsTestFactory {
-
-	public static final Features FEATURES = FeaturesTestFactory.create();
-	public static final Settings SETTINGS = SettingsTestFactory.create();
-
-	public static PostfachSettings create() {
-		return createBuilder().build();
-	}
-
-	public static PostfachSettings.PostfachSettingsBuilder createBuilder() {
-		return PostfachSettings.builder()
-				.features(FEATURES)
-				.settings(SETTINGS);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/SettingsTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/SettingsTestFactory.java
deleted file mode 100644
index bb9fe3af8aece9526ff3ec9628fabc49f361f1ef..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/SettingsTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.postfach;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class SettingsTestFactory {
-
-	public static final String SIGNATUR = LoremIpsum.getInstance().getParagraphs(2, 2);
-
-	public static Settings create() {
-		return createBuilder().build();
-	}
-
-	public static Settings.SettingsBuilder createBuilder() {
-		return Settings.builder()
-				.signatur(SIGNATUR);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/representation/GrpcGetRepresentationsResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/representation/GrpcGetRepresentationsResponseTestFactory.java
deleted file mode 100644
index ec742260047da4d66b75effc9eb340808acbc6b3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/representation/GrpcGetRepresentationsResponseTestFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.representation;
-
-import java.util.Collections;
-
-import de.ozgcloud.alfa.common.file.GrpcOzgFileTestFactory;
-import de.ozgcloud.vorgang.grpc.file.GrpcGetRepresentationsResponse;
-import de.ozgcloud.vorgang.grpc.file.GrpcOzgFile;
-
-public class GrpcGetRepresentationsResponseTestFactory {
-
-	private static GrpcOzgFile GRPC_FILE = GrpcOzgFileTestFactory.create();
-
-	public static GrpcGetRepresentationsResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetRepresentationsResponse.Builder createBuilder() {
-		return GrpcGetRepresentationsResponse.newBuilder()
-				.addAllFile(Collections.singleton(GRPC_FILE));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/representation/RepresentationByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/representation/RepresentationByVorgangControllerTest.java
deleted file mode 100644
index 3b474ef2c4a3dc27be719d84d79793483d438dcb..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/representation/RepresentationByVorgangControllerTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.representation;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.CollectionModel;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileModelAssembler;
-import de.ozgcloud.alfa.common.file.OzgFile;
-import de.ozgcloud.alfa.common.file.OzgFileService;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import lombok.SneakyThrows;
-
-class RepresentationByVorgangControllerTest {
-
-	@Spy
-	@InjectMocks
-	private RepresentationByVorgangController controller;
-	@Mock
-	private BinaryFileModelAssembler modelAssembler;
-	@Mock
-	private OzgFileService fileService;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetRepresentations {
-
-		Stream<OzgFile> representations = Stream.of(OzgFileTestFactory.create());
-
-		@BeforeEach
-		void mockFileService() {
-			when(fileService.getRepresentations(VorgangHeaderTestFactory.ID)).thenReturn(representations);
-			when(modelAssembler.toCollectionModel(representations)).thenReturn(CollectionModel.empty());
-		}
-
-		@SneakyThrows
-		@DisplayName("should return ok")
-		@Test
-		void shouldReturnOk() {
-			var result = callEndpoint();
-
-			result.andExpect(status().isOk());
-		}
-
-		@DisplayName("should call file service")
-		@Test
-		void shouldCallFileService() {
-			callEndpoint();
-
-			verify(fileService).getRepresentations(VorgangHeaderTestFactory.ID);
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallModelAssembler() {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(representations);
-		}
-
-		@SneakyThrows
-		@DisplayName("should return entity")
-		@Test
-		void shouldReturnEntity() {
-			var result = callEndpoint();
-
-			result.andExpect(jsonPath("$.content").isEmpty());
-		}
-
-		@SneakyThrows
-		private ResultActions callEndpoint() {
-			return mockMvc.perform(get(RepresentationByVorgangController.PATH, VorgangHeaderTestFactory.ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java
deleted file mode 100644
index eaba998f73069809ba92571939ceb9ec858dabad..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerITCase.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-
-import org.hamcrest.core.StringEndsWith;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.AlfaTestUtils;
-import lombok.SneakyThrows;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class OzgcloudResourceControllerITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@Nested
-	class TestGetOzgcloudResource {
-
-		private static final String VORGANG_ID = AlfaTestUtils.createMongoDbObjectId();
-		private static final String VALID_URI = "dns:///dummy.service:123/vorgangs/" + VORGANG_ID;
-		private static final String INVALID_URI = "dns:///dummy.service:123/" + VORGANG_ID;
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			var response = doRequest("dns:///test.de/vorgangs/" + VORGANG_ID);
-
-			response.andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldHaveVorgangLink() throws Exception {
-			var response = doRequest(VALID_URI);
-
-			response.andExpect(jsonPath("$._links.vorgang.href").value(StringEndsWith.endsWith("/api/vorgangs/" + VORGANG_ID)));
-		}
-
-		@Test
-		void shouldHaveSelfLink() throws Exception {
-			var encodedUri = URLEncoder.encode(VALID_URI, StandardCharsets.UTF_8);
-
-			var response = doRequest(VALID_URI);
-
-			response.andExpect(jsonPath("$._links.self.href").value(StringEndsWith.endsWith(OzgcloudResourceController.PATH + "?uri=" + encodedUri)));
-		}
-
-		@Test
-		void shouldReturnStatusNotFound() throws Exception {
-			var response = doRequest(INVALID_URI);
-
-			response.andExpect(status().isNotFound());
-		}
-
-		@Test
-		void shouldReturnBadRequestOnNoRequestParam() throws Exception {
-			var response = doRequestWithQueryString("");
-
-			response.andExpect(status().isBadRequest());
-		}
-
-		@Test
-		void shouldReturnBadRequestOnEmptyUri() throws Exception {
-			var response = doRequestWithQueryString("?uri=");
-
-			response.andExpect(status().isBadRequest());
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(String uri) {
-			return doRequestWithQueryString("?uri=" + uri);
-		}
-
-		@SneakyThrows
-		private ResultActions doRequestWithQueryString(String queryString) {
-			return mockMvc.perform(get(OzgcloudResourceController.PATH + queryString));
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerTest.java
deleted file mode 100644
index 08cd4018672dc9565d25fbd6baee36dfa71e04ed..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceControllerTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatcher;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.RepresentationModel;
-
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.SneakyThrows;
-
-class OzgcloudResourceControllerTest {
-
-	@Mock
-	private OzgcloudResourceURIResolver resourceAResolver;
-	@Mock
-	private OzgcloudResourceURIResolver resourceBResolver;
-	@Spy
-	private Collection<OzgcloudResourceURIResolver> resourceResolvers = new ArrayList<>();
-	@Mock
-	private OzgcloudResourceModelAssembler assembler;
-	@InjectMocks
-	private OzgcloudResourceController controller;
-
-	@BeforeEach
-	void init() {
-		resourceResolvers.add(resourceAResolver);
-		resourceResolvers.add(resourceBResolver);
-	}
-
-	@Nested
-	class TestGetOzgcloudResource {
-
-		@Nested
-		class OnUriCouldBeResolved {
-
-			private final ArgumentMatcher<OzgcloudResourceURIResolveResult> HAS_MATCHING_RESOURCE_URI = mapping -> mapping.getResourceURI().equals(
-					OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI);
-			private final ArgumentMatcher<OzgcloudResourceURIResolveResult> HAS_MATCHING_RESOURCE_LINK = mapping -> mapping.getResourceLink().equals(
-					OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK);
-
-			@BeforeEach
-			void init() {
-				when(resourceBResolver.resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI)).thenReturn(Optional.of(
-						OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK));
-			}
-
-			@Test
-			void shouldCallResolver() {
-				callController();
-
-				verify(resourceBResolver).resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI);
-			}
-
-			@Test
-			void shouldCallAssemblerWithUri() {
-				callController();
-
-				verify(assembler).toModel(argThat(HAS_MATCHING_RESOURCE_URI));
-			}
-
-			@Test
-			void shouldCallAssemblerWithResourceLink() {
-				callController();
-
-				verify(assembler).toModel(argThat(HAS_MATCHING_RESOURCE_LINK));
-			}
-
-			@Test
-			void shouldReturnModelFromAssembler() {
-				EntityModel<OzgcloudResource> modelFromAssembler = EntityModel.of(new OzgcloudResource());
-				when(assembler.toModel(argThat(mapping -> HAS_MATCHING_RESOURCE_URI.matches(mapping) && HAS_MATCHING_RESOURCE_LINK.matches(mapping))))
-						.thenReturn(modelFromAssembler);
-
-				var model = callController();
-
-				assertThat(model).isEqualTo(modelFromAssembler);
-			}
-		}
-
-		@Nested
-		class OnUriCouldNotBeResolved {
-
-			@BeforeEach
-			void init() {
-				when(resourceAResolver.resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI)).thenReturn(Optional.empty());
-				when(resourceBResolver.resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI)).thenReturn(Optional.empty());
-			}
-
-			@Test
-			void shouldThrowResourceNotFoundException() {
-				assertThatThrownBy(TestGetOzgcloudResource.this::callController).isInstanceOf(ResourceNotFoundException.class);
-			}
-		}
-
-		@Nested
-		class OnMultipleResolveResults {
-
-			@BeforeEach
-			void init() {
-				when(resourceAResolver.resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI)).thenReturn(Optional.of(
-						OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK));
-				when(resourceBResolver.resolve(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI)).thenReturn(Optional.of(
-						OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK));
-			}
-
-			@Test
-			void shouldThrowTechnicalException() {
-				assertThatThrownBy(TestGetOzgcloudResource.this::callController).isInstanceOf(TechnicalException.class);
-			}
-		}
-
-		@SneakyThrows
-		private RepresentationModel<EntityModel<OzgcloudResource>> callController() {
-			return controller.getOzgcloudResource(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_URI);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssemblerTest.java
deleted file mode 100644
index dbdb158be27f9cabc51b285db6dbe6be728b9d2f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceModelAssemblerTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static de.ozgcloud.alfa.resource.OzgcloudResourceController.*;
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-class OzgcloudResourceModelAssemblerTest {
-
-	@InjectMocks
-	private OzgcloudResourceModelAssembler assembler;
-
-	@Nested
-	class TestToModel {
-
-		private final OzgcloudResourceURIResolveResult uriResolveResult = OzgcloudResourceURIResolveResultTestFactory.create();
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = callAssembler();
-
-			assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(OzgcloudResourceController.PATH + "?" + PARAM_URI + "=" + OzgcloudResourceURIResolveResultTestFactory.ENCODED_RESOURCE_URI);
-		}
-
-		@Test
-		void shouldHaveResourceLink() {
-			var model = callAssembler();
-
-			assertThat(model.getLink(OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK.getRel())).isPresent().get().isEqualTo(
-					OzgcloudResourceURIResolveResultTestFactory.RESOURCE_LINK);
-		}
-
-		private EntityModel<OzgcloudResource> callAssembler() {
-			return assembler.toModel(uriResolveResult);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessorTest.java
deleted file mode 100644
index bd71e8a59b6b663e2a2b2fbc9dfc3250c7ae8fb2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceRootProcessorTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.Root;
-import de.ozgcloud.alfa.RootTestFactory;
-
-class OzgcloudResourceRootProcessorTest {
-
-	private final OzgcloudResourceRootProcessor processor = new OzgcloudResourceRootProcessor();
-
-	@Nested
-	class TestProcess {
-
-		private final EntityModel<Root> model = EntityModel.of(RootTestFactory.create());
-
-		@Test
-		void shouldReturnOriginalModel() {
-			var result = processor.process(model);
-
-			assertThat(result).isEqualTo(model);
-		}
-
-		@Test
-		void shouldAddResourceLink() {
-			processor.process(model);
-
-			assertThat(model.getLink(OzgcloudResourceRootProcessor.REL_RESOURCE)).isPresent().get().extracting(Link::getHref)
-					.isEqualTo(OzgcloudResourceController.PATH + "?uri={uri}");
-		}
-	}
-}
-
-
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResultTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResultTestFactory.java
deleted file mode 100644
index 7d033b0cdd9f667aa2cce4c844144052724bec0f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/resource/OzgcloudResourceURIResolveResultTestFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.resource;
-
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-
-import org.springframework.hateoas.Link;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-class OzgcloudResourceURIResolveResultTestFactory {
-
-	public static final String RESOURCE_URI = String.format("%s://%s.%s/%s", (Object[]) LoremIpsum.getInstance().getWords(4).split("\\s"));
-	public static final String ENCODED_RESOURCE_URI = URLEncoder.encode(RESOURCE_URI, StandardCharsets.UTF_8);
-	public static final Link RESOURCE_LINK = Link.of(LoremIpsum.getInstance().getUrl()).withRel(LoremIpsum.getInstance().getWords(1));
-
-	public static OzgcloudResourceURIResolveResult create() {
-		return createBuilder().build();
-	}
-
-	public static OzgcloudResourceURIResolveResult.OzgcloudResourceURIResolveResultBuilder createBuilder() {
-		return OzgcloudResourceURIResolveResult.builder().resourceURI(RESOURCE_URI).resourceLink(RESOURCE_LINK);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/ByStatusTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/ByStatusTestFactory.java
deleted file mode 100644
index b6f68a0c65eb499149776b33be961e42a394cd04..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/ByStatusTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-public class ByStatusTestFactory {
-
-	public static final int NEU_COUNT = 1;
-	public static final int ANGENOMMEN_COUNT = 2;
-	public static final int IN_BEARBEITUNG_COUNT = 3;
-	public static final int BESCHIEDEN_COUNT = 4;
-	public static final int ABGESCHLOSSEN_COUNT = 5;
-	public static final int VERWORFEN_COUNT = 6;
-	public static final int ZU_LOESCHEN_COUNT = 7;
-
-	public static ByStatus create() {
-		return createBuilder().build();
-	}
-
-	public static ByStatus.ByStatusBuilder createBuilder() {
-		return ByStatus.builder()
-				.neu(NEU_COUNT)
-				.angenommen(ANGENOMMEN_COUNT)
-				.inBearbeitung(IN_BEARBEITUNG_COUNT)
-				.beschieden(BESCHIEDEN_COUNT)
-				.abgeschlossen(ABGESCHLOSSEN_COUNT)
-				.verworfen(VERWORFEN_COUNT)
-				.zuLoeschen(ZU_LOESCHEN_COUNT);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcByStatusResultTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcByStatusResultTestFactory.java
deleted file mode 100644
index 745caaa5613439a3c1943aa6e51c606fdd2b9083..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcByStatusResultTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import de.ozgcloud.vorgang.statistic.GrpcByStatusResult;
-
-public class GrpcByStatusResultTestFactory {
-
-	public static GrpcByStatusResult create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcByStatusResult.Builder createBuilder() {
-		return GrpcByStatusResult.newBuilder()
-				.setNeu(ByStatusTestFactory.NEU_COUNT)
-				.setAngenommen(ByStatusTestFactory.ANGENOMMEN_COUNT)
-				.setInBearbeitung(ByStatusTestFactory.IN_BEARBEITUNG_COUNT)
-				.setBeschieden(ByStatusTestFactory.BESCHIEDEN_COUNT)
-				.setAbgeschlossen(ByStatusTestFactory.ABGESCHLOSSEN_COUNT)
-				.setVerworfen(ByStatusTestFactory.VERWORFEN_COUNT);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java
deleted file mode 100644
index b4cd92ad65cf1ea1ccd82e27691d5f11c71eedc7..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery;
-
-public class GrpcVorgangStatisticQueryTestFactory {
-
-	public static final String RESULT_NAME = LoremIpsum.getInstance().getWords(1);
-
-	public static GrpcVorgangStatisticQuery create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangStatisticQuery.Builder createBuilder() {
-		return GrpcVorgangStatisticQuery.newBuilder()
-				.setResultName(RESULT_NAME);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java
deleted file mode 100644
index c1dba0a6cbb678e1e79458022a6ae09c756b5a28..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResponse;
-
-public class GrpcVorgangStatisticResponseTestFactory {
-
-	public static GrpcVorgangStatisticResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangStatisticResponse.Builder createBuilder() {
-		return GrpcVorgangStatisticResponse.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResultTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResultTestFactory.java
deleted file mode 100644
index 1697a4e67f91cb8b0ea990e25eb1cf7ea6dae5d5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResultTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResult;
-
-class GrpcVorgangStatisticResultTestFactory {
-	public static final String RESULT_NAME = "countByStatus_NEU";
-	public static final int RESULT_INT = 42;
-
-	public static GrpcVorgangStatisticResult create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangStatisticResult.Builder createBuilder() {
-		return GrpcVorgangStatisticResult.newBuilder().setName(RESULT_NAME).setResultIntValue(RESULT_INT);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticControllerTest.java
deleted file mode 100644
index e02f9397d178f172699e8b757fa448d01e5df608..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticControllerTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-class StatisticControllerTest {
-
-	@InjectMocks
-	private StatisticController controller;
-
-	@Mock
-	private StatisticService service;
-
-	@Nested
-	class TestGetVorgaengeStatistic {
-
-		@Test
-		void shouldCallService() {
-			controller.getVorgaengeStatistic();
-
-			verify(service).getVorgaengeStatistic();
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticMapperTest.java
deleted file mode 100644
index 5559f05bd8061e60cd23153ccce76193d15393c2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticMapperTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class StatisticMapperTest {
-
-	private final StatisticMapper mapper = Mappers.getMapper(StatisticMapper.class);
-
-	@Nested
-	class TestToResult {
-
-		private final String RESULT_STRING = "result";
-		private final boolean RESULT_BOOL = true;
-		private final int RESULT_INT = 42;
-
-		@Test
-		void shouldMapName() {
-			var statisticResult = mapper.toResult(GrpcVorgangStatisticResultTestFactory.create());
-
-			assertThat(statisticResult.getName()).isEqualTo(GrpcVorgangStatisticResultTestFactory.RESULT_NAME);
-		}
-
-		@Test
-		void shouldMapStringResult() {
-			var grpcResult = GrpcVorgangStatisticResultTestFactory.createBuilder().setResultStringValue(RESULT_STRING).build();
-
-			var statisticResult = mapper.toResult(grpcResult);
-
-			assertThat(statisticResult.getStringValue()).isEqualTo(RESULT_STRING);
-		}
-
-		@Test
-		void shouldMapBoolResult() {
-			var grpcResult = GrpcVorgangStatisticResultTestFactory.createBuilder().setResultBoolValue(RESULT_BOOL).build();
-
-			var statisticResult = mapper.toResult(grpcResult);
-
-			assertThat(statisticResult.getBoolValue()).isEqualTo(RESULT_BOOL);
-		}
-
-		@Test
-		void shouldMapIntResult() {
-			var grpcResult = GrpcVorgangStatisticResultTestFactory.createBuilder().setResultIntValue(RESULT_INT).build();
-
-			var statisticResult = mapper.toResult(grpcResult);
-
-			assertThat(statisticResult.getIntValue()).isEqualTo(RESULT_INT);
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java
deleted file mode 100644
index 68ffbbedc5a6de4737f57c4c0dbfec8c59cb944b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import static de.ozgcloud.alfa.statistic.StatisticRemoteService.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.AlfaProperties;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.vorgang.common.GrpcQueryOperator;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.GroupMethod;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticRequest;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResponse;
-import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResult;
-import de.ozgcloud.vorgang.statistic.StatisticServiceGrpc.StatisticServiceBlockingStub;
-
-class StatisticRemoteServiceTest {
-
-	@Spy
-	@InjectMocks
-	private StatisticRemoteService service;
-	@Mock
-	private StatisticServiceBlockingStub serviceStub;
-	@Mock
-	private StatisticMapper mapper;
-	@Mock
-	private AlfaProperties alfaProperties;
-
-	private static final List<VorgangStatus> STATUSES_TO_COUNT = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN,
-			VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN,
-			VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN);
-
-	@DisplayName("Build count by vorgang status query")
-	@Nested
-	class TestBuildCountByVorgangStatusQuery {
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldContainResultName(VorgangStatus vorgangStatus) {
-			var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
-
-			assertThat(query.getResultName()).isEqualTo(String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, vorgangStatus.name()));
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldContainPath(VorgangStatus vorgangStatus) {
-			var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
-
-			assertThat(query.getPath()).isEqualTo(STATUS_PATH);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldContainGroupMethod(VorgangStatus vorgangStatus) {
-			var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
-
-			assertThat(query.getGroupMethod()).isEqualTo(GroupMethod.COUNT);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldContainOperator(VorgangStatus vorgangStatus) {
-			var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
-
-			assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldContainOperandStringValue(VorgangStatus vorgangStatus) {
-			var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
-
-			assertThat(query.getOperandStringValue()).isEqualTo(vorgangStatus.name());
-		}
-	}
-
-	@Nested
-	class TestBuildCountByStatusQueries {
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET")
-		void shouldCallBuildCountByVorgangStatusQuery(VorgangStatus vorgangStatus) {
-			service.buildCountByStatusQueries(STATUSES_TO_COUNT);
-
-			verify(service).buildCountByVorgangStatusQuery(vorgangStatus);
-		}
-	}
-
-	@Nested
-	class TestBuildCountWiedervorlageNextFristQuery {
-
-		private final String applicationName = LoremIpsum.getInstance().getFirstName();
-
-		@BeforeEach
-		void init() {
-			when(alfaProperties.getApplicationName()).thenReturn(applicationName);
-		}
-
-		@Test
-		void shouldBuildQuery() {
-			var query = service.buildCountWiedervorlageNextFristQuery();
-
-			assertThat(query)
-					.extracting(
-							GrpcVorgangStatisticQuery::getResultName,
-							GrpcVorgangStatisticQuery::getPath,
-							GrpcVorgangStatisticQuery::getOperator,
-							GrpcVorgangStatisticQuery::getGroupMethod)
-					.contains(
-							COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME,
-							String.format(StatisticRemoteService.WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, applicationName),
-							GrpcQueryOperator.UNEQUAL,
-							GroupMethod.COUNT
-					);
-		}
-	}
-
-	@Nested
-	class TestBuildExistsWiedervorlageOverdueQuery {
-
-		private final String applicationName = LoremIpsum.getInstance().getFirstName();
-
-		@BeforeEach
-		void init() {
-			when(alfaProperties.getApplicationName()).thenReturn(applicationName);
-		}
-
-		@Test
-		void shouldContainResultName() {
-			var query = service.buildExistsWiedervorlageOverdueQuery();
-
-			assertThat(query.getResultName()).isEqualTo(StatisticRemoteService.EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME);
-		}
-
-		@Test
-		void shouldContainPath() {
-			var query = service.buildExistsWiedervorlageOverdueQuery();
-
-			assertThat(query.getPath()).isEqualTo(String.format(StatisticRemoteService.WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, applicationName));
-		}
-
-		@Test
-		void shouldContainGroupMethod() {
-			var query = service.buildExistsWiedervorlageOverdueQuery();
-
-			assertThat(query.getGroupMethod()).isEqualTo(GroupMethod.EXISTS);
-		}
-
-		@Test
-		void shouldContainOperator() {
-			var query = service.buildExistsWiedervorlageOverdueQuery();
-
-			assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.LESS_THEN_OR_EQUAL_TO);
-		}
-
-		@Test
-		void shouldContainOperandStringValue() {
-			var query = service.buildExistsWiedervorlageOverdueQuery();
-
-			assertThat(query.getOperandStringValue()).isEqualTo(StatisticRemoteService.OPERAND_TODAY_DATE);
-		}
-
-		@Test
-		void shouldCallPropertiesToGetClientName() {
-			service.buildExistsWiedervorlageOverdueQuery();
-
-			verify(alfaProperties).getApplicationName();
-		}
-	}
-
-	@DisplayName("Get vorgaenge statistic")
-	@Nested
-	class TestGetVorgaengeStatistics {
-
-		private final GrpcVorgangStatisticResponse response = GrpcVorgangStatisticResponseTestFactory.create();
-		private final GrpcVorgangStatisticQuery countVorgaengeWithUngeleseneNachrichtenQuery = GrpcVorgangStatisticQueryTestFactory.createBuilder()
-				.setResultName("ungelesene nachrichten").build();
-		private final GrpcVorgangStatisticQuery existsWiedervorlageOverdueQuery = GrpcVorgangStatisticQueryTestFactory.createBuilder()
-				.setResultName("exists overdue").build();
-
-		@Captor
-		private ArgumentCaptor<GrpcVorgangStatisticRequest> grpcRequestCaptor;
-
-		@BeforeEach
-		void beforeEach() {
-			when(serviceStub.getVorgangStatistic(any())).thenReturn(response);
-
-			doReturn(existsWiedervorlageOverdueQuery).when(service).buildExistsWiedervorlageOverdueQuery();
-			doReturn(countVorgaengeWithUngeleseneNachrichtenQuery).when(service).buildCountVorgaengeWithUngeleseneNachrichtenQuery();
-		}
-
-		@Test
-		void shouldCallServiceStub() {
-			service.getVorgaengeStatistics(Collections.emptyList());
-
-			verify(serviceStub).getVorgangStatistic(any());
-		}
-
-		@Test
-		void shouldCallBuildCountByStatusQueries() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(service).buildCountByStatusQueries(STATUSES_TO_COUNT);
-		}
-
-		@Test
-		void shouldCallBuildCountByVorgangStatusQuery() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(service).buildCountWiedervorlageNextFristQuery();
-		}
-
-		@Test
-		void shouldCallBuildExistsWiedervorlageOverdueQuery() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(service).buildExistsWiedervorlageOverdueQuery();
-		}
-
-		@Test
-		void shouldCallBuildStatisticResult() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(service).buildStatisticResult(response);
-		}
-
-		@Test
-		void shouldCallBuildCountVorgaengeWithUngeleseneNachrichtenQuery() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(service).buildCountVorgaengeWithUngeleseneNachrichtenQuery();
-		}
-
-		@Test
-		void shouldAddCountVorgaengeWithUngeleseneNachrichtenQuery() {
-			service.getVorgaengeStatistics(STATUSES_TO_COUNT);
-
-			verify(serviceStub).getVorgangStatistic(grpcRequestCaptor.capture());
-			assertThat(grpcRequestCaptor.getValue().getQueryList()).contains(countVorgaengeWithUngeleseneNachrichtenQuery);
-		}
-	}
-
-	@Nested
-	class TestBuildStatisticResult {
-
-		private final String RESULT_NAME = "countByStatus";
-		private final int RESULT_INT = 42;
-		private GrpcVorgangStatisticResponse grpcResponse;
-		private GrpcVorgangStatisticResult grpcResult;
-
-		@BeforeEach
-		void beforeEach() {
-			grpcResult = GrpcVorgangStatisticResult.newBuilder()
-					.setName(RESULT_NAME)
-					.setResultIntValue(RESULT_INT)
-					.build();
-			grpcResponse = GrpcVorgangStatisticResponse.newBuilder()
-					.addResult(grpcResult)
-					.build();
-			when(mapper.toResult(grpcResult)).thenReturn(StatisticResult.builder().name(RESULT_NAME).intValue(RESULT_INT).build());
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.buildStatisticResult(grpcResponse);
-
-			verify(mapper).toResult(grpcResult);
-		}
-
-		@Test
-		void shouldBuildResult() {
-			var result = service.buildStatisticResult(grpcResponse);
-
-			assertThat(result)
-					.hasSize(1)
-					.hasEntrySatisfying(RESULT_NAME, statisticResult -> assertThat(statisticResult.getIntValue()).isEqualTo(RESULT_INT));
-		}
-	}
-
-	@Nested
-	class TestBuildCountVorgaengeWithUngeleseneNachrichtenQuery {
-
-		@Test
-		void shouldHaveResultName() {
-			var query = callService();
-
-			assertThat(query.getResultName()).isEqualTo(COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME);
-		}
-
-		@Test
-		void shouldHavePath() {
-			var query = callService();
-
-			assertThat(query.getPath()).isEqualTo(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH);
-		}
-
-		@Test
-		void shouldHaveGroupingMethod() {
-			var query = callService();
-
-			assertThat(query.getGroupMethod()).isEqualTo(GroupMethod.COUNT);
-		}
-
-		@Test
-		void shouldHaveOperator() {
-			var query = callService();
-
-			assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
-		}
-
-		@Test
-		void shouldHaveOperandValue() {
-			var query = callService();
-
-			assertThat(query.getOperandBoolValue()).isTrue();
-		}
-
-		private GrpcVorgangStatisticQuery callService() {
-			return service.buildCountVorgaengeWithUngeleseneNachrichtenQuery();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticResultTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticResultTestFactory.java
deleted file mode 100644
index 6441789cedf3768dde13e9955a95373b32a68df0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticResultTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-class StatisticResultTestFactory {
-	public static final String NAME = "countWiederverolage";
-	public static final int INT_VALUE = 42;
-
-	public static StatisticResult create() {
-		return createBuilder().build();
-	}
-
-	public static StatisticResult.StatisticResultBuilder createBuilder() {
-		return StatisticResult.builder()
-				.name(NAME)
-				.intValue(INT_VALUE);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java
deleted file mode 100644
index 61204730a5b571ba703774b95289d9e18a67ff7c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-import static de.ozgcloud.alfa.statistic.StatisticRemoteService.*;
-import static de.ozgcloud.alfa.statistic.StatisticService.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-class StatisticServiceTest {
-
-	@Spy
-	@InjectMocks
-	private StatisticService service;
-	@Mock
-	private StatisticRemoteService remoteService;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@Nested
-	class TestBuildGetVorgaengeStatisticResult {
-
-		@BeforeEach
-		void beforeEach() {
-			when(remoteService.buildCountByStatusResultName(any())).thenCallRealMethod();
-		}
-
-		@Test
-		void shouldContainCountWiedervorlage() {
-			var statistic = service.buildGetVorgaengeStatisticResult(
-					Map.of(COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME, StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getWiedervorlagen()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainDefaultCountWiedervorlage() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of());
-
-			assertThat(statistic.getWiedervorlagen()).isZero();
-		}
-
-		@Test
-		void shouldContainExistsWiedervorlageOverdue() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME,
-					StatisticResultTestFactory.createBuilder().boolValue(true).build()));
-
-			assertThat(statistic.isExistsWiedervorlageOverdue()).isTrue();
-		}
-
-		@Test
-		void shouldContainDefaultExistsWiedervorlageOverdue() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of());
-
-			assertThat(statistic.isExistsWiedervorlageOverdue()).isFalse();
-		}
-
-		@Test
-		void shouldContainCountByStatusNeu() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.NEU.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getNeu()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusAngenommen() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.ANGENOMMEN.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getAngenommen()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusInBearbeitung() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.IN_BEARBEITUNG.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getInBearbeitung()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusBeschieden() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.BESCHIEDEN.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getBeschieden()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusAbgeschlossen() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.ABGESCHLOSSEN.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getAbgeschlossen()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusVerworfen() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.VERWORFEN.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getVerworfen()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainCountByStatusZuLoeschen() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of(
-					String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, VorgangStatus.ZU_LOESCHEN.name()),
-					StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getByStatus().getZuLoeschen()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-
-		@Test
-		void shouldContainDefaultCountByStatus() {
-			var statistic = service.buildGetVorgaengeStatisticResult(Map.of());
-
-			assertThat(statistic.getByStatus().getNeu()).isZero();
-		}
-
-		@Test
-		void shouldContainUngeleseneNachrichten() {
-			var statistic = service.buildGetVorgaengeStatisticResult(
-					Map.of(COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME, StatisticResultTestFactory.create()));
-
-			assertThat(statistic.getUngeleseneNachrichten()).isEqualTo(StatisticResultTestFactory.INT_VALUE);
-		}
-	}
-
-	@Nested
-	class TestGetCountByVorgangStatusList {
-
-		@Test
-		void shouldGetForVerwalungUser() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-
-			var result = service.getCountByVorgangStatusList();
-
-			assertThat(result).containsAll(COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER);
-		}
-
-		@Test
-		void shouldGetForPoststelleUser() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-
-			var result = service.getCountByVorgangStatusList();
-
-			assertThat(result).containsAll(COUNT_BY_VORGANG_STATUS_POSTSTELLE_USER);
-		}
-
-		@Test
-		void shouldGetForEinheitlicherAnsprechpartnerUser() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-
-			var result = service.getCountByVorgangStatusList();
-
-			assertThat(result).containsAll(COUNT_BY_VORGANG_EINHEITLICHER_ANSPRECHPARTNER);
-		}
-
-		@Test
-		void shouldGetForUnknownUser() {
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-			when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-
-			var result = service.getCountByVorgangStatusList();
-
-			assertThat(result).containsAll(Collections.emptyList());
-		}
-	}
-
-	@Nested
-	class TestGetVorgaengeStatistics {
-
-		private final Statistic statistic = StatisticTestFactory.create();
-		private final Map<String, StatisticResult> getVorgangStatisticsResponse = Map.of(COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME,
-				StatisticResultTestFactory.create());
-
-		@BeforeEach
-		void beforeEach() {
-			doReturn(COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER).when(service).getCountByVorgangStatusList();
-			when(remoteService.getVorgaengeStatistics(COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER)).thenReturn(getVorgangStatisticsResponse);
-			doReturn(statistic).when(service).buildGetVorgaengeStatisticResult(getVorgangStatisticsResponse);
-		}
-
-		@Test
-		void shouldCallGetCountByVorgangStatusList() {
-			service.getVorgaengeStatistic();
-
-			verify(service).getCountByVorgangStatusList();
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getVorgaengeStatistic();
-
-			verify(remoteService).getVorgaengeStatistics(COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER);
-		}
-
-		@Test
-		void shouldBuildResult() {
-			service.getVorgaengeStatistic();
-
-			verify(service).buildGetVorgaengeStatisticResult(getVorgangStatisticsResponse);
-		}
-
-		@Test
-		void shouldReturnStatistic() {
-			var result = service.getVorgaengeStatistic();
-
-			assertThat(result).isEqualTo(statistic);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticTestFactory.java
deleted file mode 100644
index 0cca76f591196765c5842d4da42b411c77d326fa..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.statistic;
-
-public class StatisticTestFactory {
-
-	public static final int COUNT_WIEDERVORLAGEN = 8;
-	public static final boolean EXISTS_WIEDERVORLAGE_OVERDUE = true;
-	public static final int COUNT_UNGELESENE_NACHRICHTEN = 5;
-
-	public static Statistic create() {
-		return createBuilder().build();
-	}
-
-	public static Statistic.StatisticBuilder createBuilder() {
-		return Statistic.builder()
-				.byStatus(ByStatusTestFactory.create())
-				.wiedervorlagen(COUNT_WIEDERVORLAGEN)
-				.existsWiedervorlageOverdue(EXISTS_WIEDERVORLAGE_OVERDUE)
-				.ungeleseneNachrichten(COUNT_UNGELESENE_NACHRICHTEN);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/system/GrpcGetSystemStatusResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/system/GrpcGetSystemStatusResponseTestFactory.java
deleted file mode 100644
index 7a8a518e89d92869a018b5b574303da8645a417e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/system/GrpcGetSystemStatusResponseTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import de.ozgcloud.vorgang.system.GrpcGetSystemStatusResponse;
-
-public class GrpcGetSystemStatusResponseTestFactory {
-
-	public static GrpcGetSystemStatusResponse create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcGetSystemStatusResponse.Builder createBuilder() {
-		return GrpcGetSystemStatusResponse.newBuilder()
-				.setIsSearchServerAvailable(true)
-				.setJavaVersion(VorgangManagerSystemStatusTestFactory.JAVA_VERSION)
-				.setBuildVersion(VorgangManagerSystemStatusTestFactory.BUILD_VERSION);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapperTest.java
deleted file mode 100644
index 260723e8c6b855d1e6ed1ce217d7400be5c71477..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/system/RemoteSystemStatusMapperTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class RemoteSystemStatusMapperTest {
-
-	private RemoteSystemStatusMapper mapper = Mappers.getMapper(RemoteSystemStatusMapper.class);
-
-	@Test
-	@DisplayName("should map gRPC response to VorgangManagerSystemStatus")
-	void shouldMapGrpcResponse() {
-		var vorgangManagerSystemStatus = mapper.fromGrpc(GrpcGetSystemStatusResponseTestFactory.create());
-
-		assertThat(vorgangManagerSystemStatus).isEqualTo(VorgangManagerSystemStatusTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusRemoteServiceTest.java
deleted file mode 100644
index 73db0e1ea0262801e4ec85b57c6996212fd978a5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusRemoteServiceTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.vorgang.system.GrpcGetSystemStatusRequest;
-import de.ozgcloud.vorgang.system.SystemStatusServiceGrpc.SystemStatusServiceBlockingStub;
-
-class SystemStatusRemoteServiceTest {
-
-	@InjectMocks
-	private SystemStatusRemoteService service;
-
-	@Mock
-	private SystemStatusServiceBlockingStub serviceStub;
-	@Mock
-	private RemoteSystemStatusMapper mapper;
-
-	@Nested
-	class TestGetSystemStatus {
-
-		private static final GrpcGetSystemStatusRequest SYSTEM_STATUS_REQUEST = GrpcGetSystemStatusRequest.newBuilder().build();
-		private static final VorgangManagerSystemStatus VORGANG_MANAGER_SYSTEM_STATUS = VorgangManagerSystemStatusTestFactory.create();
-
-		@BeforeEach
-		void init() {
-			when(mapper.fromGrpc(any())).thenReturn(VORGANG_MANAGER_SYSTEM_STATUS);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getSystemStatus();
-
-			verify(serviceStub).getSystemStatus(SYSTEM_STATUS_REQUEST);
-		}
-
-		@Test
-		void shouldGetSearchServerStatus() {
-			when(serviceStub.getSystemStatus(any())).thenReturn(GrpcGetSystemStatusResponseTestFactory.create());
-
-			var vorgangManagerSystemStatus = service.getSystemStatus();
-
-			assertThat(vorgangManagerSystemStatus).isEqualTo(VORGANG_MANAGER_SYSTEM_STATUS);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusServiceTest.java
deleted file mode 100644
index 3e87294ea1d1fa3240a04cea79f2eaee3c5ccb9a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/system/SystemStatusServiceTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-class SystemStatusServiceTest {
-
-	@InjectMocks
-	private SystemStatusService service;
-
-	@Mock
-	private SystemStatusRemoteService remoteService;
-
-	@Nested
-	class TestIsSearchServerAvailable {
-
-		@BeforeEach
-		void mockService() {
-			when(remoteService.getSystemStatus()).thenReturn(VorgangManagerSystemStatusTestFactory.create());
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			service.isSearchServerAvailable();
-
-			verify(remoteService).getSystemStatus();
-		}
-
-		@Test
-		void shouldRemotAvailablity() {
-			var result = service.isSearchServerAvailable();
-
-			assertThat(result).isEqualTo(VorgangManagerSystemStatusTestFactory.SEARCH_AVAILABLE);
-		}
-
-		@Test
-		void shouldReturnFalseOnError() {
-			when(remoteService.getSystemStatus()).thenThrow(RuntimeException.class);
-			
-			var result = service.isSearchServerAvailable();
-			
-			assertThat(result).isFalse();
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatusTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatusTestFactory.java
deleted file mode 100644
index f55704003775b94ce42c325154fc66f9eeb3eff5..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/system/VorgangManagerSystemStatusTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.system;
-
-import de.ozgcloud.alfa.system.VorgangManagerSystemStatus.VorgangManagerSystemStatusBuilder;
-
-public class VorgangManagerSystemStatusTestFactory {
-
-	public static final String JAVA_VERSION = "17";
-	public static final String BUILD_VERSION = "b1";
-
-	public static final boolean SEARCH_AVAILABLE = true;
-
-	public static VorgangManagerSystemStatus create() {
-		return createBuilder().build();
-	}
-
-	private static VorgangManagerSystemStatusBuilder createBuilder() {
-		return VorgangManagerSystemStatus.builder()
-				.isSearchServerAvailable(SEARCH_AVAILABLE)
-				.javaVersion(JAVA_VERSION)
-				.buildVersion(BUILD_VERSION);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerMapperTest.java
deleted file mode 100644
index ca35d3553a7583af4133ae2f870fcc4ff9e2e92a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerMapperTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.StringToNullMapper;
-import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
-
-class AntragstellerMapperTest {
-
-	@InjectMocks
-	private final AntragstellerMapper mapper = Mappers.getMapper(AntragstellerMapper.class);
-	@Spy
-	private final GrpcFormDataMapper grpcFormDataMapper = Mappers.getMapper(GrpcFormDataMapper.class);
-	@Spy
-	private final StringToNullMapper stringToNullMapper = Mappers.getMapper(StringToNullMapper.class);
-
-	@Test
-	void shouldMap() {
-		var antragsteller = mapper.toAntragsteller(GrpcAntragstellerTestFactory.create());
-
-		assertThat(antragsteller).usingRecursiveComparison().ignoringFields("otherData").isEqualTo(AntragstellerTestFactory.create());
-	}
-
-	@Test
-	void shouldCallGrpcFormDataMapper() {
-		mapper.toAntragsteller(GrpcAntragstellerTestFactory.create());
-
-		verify(grpcFormDataMapper).mapFromFormData(GrpcAntragstellerTestFactory.OTHER_DATA);
-	}
-
-	@Test
-	void shouldCallStringToNullMapper() {
-		mapper.toAntragsteller(GrpcAntragstellerTestFactory.create());
-
-		verify(stringToNullMapper, atLeastOnce()).fromString(any());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerTestFactory.java
deleted file mode 100644
index 3828ff5941b7bd32f1473a62c12ea33128ef093f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/AntragstellerTestFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Map;
-
-public class AntragstellerTestFactory {
-
-	public final static String ANREDE = GrpcAntragstellerTestFactory.ANREDE;
-	public final static String NACHNAME = GrpcAntragstellerTestFactory.NACHNAME;
-	public final static String VORNAME = GrpcAntragstellerTestFactory.VORNAME;
-	public final static String GEBURTSDATUM_STR = GrpcAntragstellerTestFactory.GEBURTSDATUM_STR;
-	public final static String GEBURTSORT = GrpcAntragstellerTestFactory.GEBURTSORT;
-	public final static String GEBURTSNAME = GrpcAntragstellerTestFactory.GEBURTSNAME;
-	public final static String EMAIL = GrpcAntragstellerTestFactory.EMAIL;
-	public final static String TELEFON = GrpcAntragstellerTestFactory.TELEFON;
-	public final static String STRASSE = GrpcAntragstellerTestFactory.STRASSE;
-	public final static String HAUSNUMMER = GrpcAntragstellerTestFactory.HAUSNUMMER;
-	public final static String PLZ = GrpcAntragstellerTestFactory.PLZ;
-	public final static String ORT = GrpcAntragstellerTestFactory.ORT;
-
-	public final static String POSTFACH_ID = GrpcAntragstellerTestFactory.POSTFACH_ID;
-
-	public final static String OTHER_DATA_KEY = "Test";
-	public final static String OTHER_DATA_VALUE = "Eintrag";
-
-	public static final Map<String, Object> OTHER_DATA = Map.of(OTHER_DATA_KEY, OTHER_DATA_VALUE);
-
-	public static Antragsteller create() {
-		return createBuilder().build();
-	}
-
-	public static Antragsteller.AntragstellerBuilder createBuilder() {
-		return Antragsteller.builder()
-				.anrede(ANREDE)
-				.vorname(VORNAME)
-				.nachname(NACHNAME)
-				.geburtsdatum(GEBURTSDATUM_STR)
-				.geburtsname(GEBURTSNAME)
-				.geburtsort(GEBURTSORT)
-				.email(EMAIL)
-				.telefon(TELEFON)
-				.strasse(STRASSE)
-				.hausnummer(HAUSNUMMER)
-				.plz(PLZ)
-				.ort(ORT)
-				.postfachId(POSTFACH_ID)
-				.otherData(OTHER_DATA);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapperTest.java
deleted file mode 100644
index 815a95d45f20410e43a8b11c007468353946ae3c..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderMapperTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-class EingangHeaderMapperTest {
-
-	private final EingangHeaderMapper mapper = Mappers.getMapper(EingangHeaderMapper.class);
-
-	@DisplayName("To EingangHeader")
-	@Nested
-	class TestToEingangHeader {
-
-		@Test
-		void shouldMapCreatedAt() {
-			var eingang = callMapper();
-
-			assertThat(eingang.getCreatedAt()).isEqualTo(GrpcEingangHeaderTestFactory.CREATED_AT);
-		}
-
-		@Test
-		void shouldMapRequestId() {
-			var eingang = callMapper();
-
-			assertThat(eingang.getRequestId()).isEqualTo(GrpcEingangHeaderTestFactory.REQUEST_ID);
-		}
-
-		@Test
-		void shouldMapFormEngineName() {
-			var eingang = callMapper();
-
-			assertThat(eingang.getFormEngineName()).isEqualTo(GrpcEingangHeaderTestFactory.FORM_ENGINE_NAME);
-		}
-
-		private EingangHeader callMapper() {
-			return mapper.toEingangHeader(GrpcEingangHeaderTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderTestFactory.java
deleted file mode 100644
index d0f962b9d1fff8fdf9b848a58db3e05e196a859a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangHeaderTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.ZonedDateTime;
-
-public class EingangHeaderTestFactory {
-
-	public static final String CREATED_AT_STR = "2020-01-10T10:30:00Z";
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-	public static final String FORM_ENGINE_NAME = "AFM";
-	public static final String FORM_ID = "test-form-id";
-
-	public static EingangHeader create() {
-		return createBuilder().build();
-	}
-
-	public static EingangHeader.EingangHeaderBuilder createBuilder() {
-		return EingangHeader.builder().createdAt(CREATED_AT).formEngineName(FORM_ENGINE_NAME).formId(FORM_ID);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangMapperTest.java
deleted file mode 100644
index 71d11107a48f11dfd1f7704b7b57b2f96ca7b066..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangMapperTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-
-class EingangMapperTest {
-
-	@InjectMocks
-	private final EingangMapper mapper = Mappers.getMapper(EingangMapper.class);
-
-	@Mock
-	private AntragstellerMapper antragstellerMapper;
-	@Mock
-	private EingangHeaderMapper eingangHeaderMapper;
-	@Spy
-	private final GrpcFormDataMapper formDataMapper = Mappers.getMapper(GrpcFormDataMapper.class);
-
-	@DisplayName("From grpc")
-	@Nested
-	class TestFromGrpc {
-
-		@BeforeEach
-		void mockMapperReturnValues() {
-			lenient().when(antragstellerMapper.toAntragsteller(any())).thenReturn(AntragstellerTestFactory.create());
-			lenient().when(eingangHeaderMapper.toEingangHeader(any())).thenReturn(EingangHeaderTestFactory.create());
-		}
-
-		@Test
-		void shouldMapIdToId() {
-			var eingang = fromGrpc();
-
-			assertThat(eingang.getId()).isEqualTo(GrpcEingangTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveAntragsteller() {
-			var eingang = fromGrpc();
-
-			assertThat(eingang.getAntragsteller()).usingRecursiveComparison().isEqualTo(AntragstellerTestFactory.create());
-		}
-
-		@Test
-		void shouldHaveEingangHeader() {
-			var eingang = fromGrpc();
-
-			assertThat(eingang.getHeader()).usingRecursiveComparison().isEqualTo(EingangHeaderTestFactory.create());
-		}
-
-		private Eingang fromGrpc() {
-			return fromGrpc(GrpcEingangTestFactory.create());
-		}
-
-		private Eingang fromGrpc(GrpcEingang eingang) {
-			return mapper.fromGrpc(GrpcEingangTestFactory.create());
-		}
-	}
-
-	@DisplayName("With")
-	@Nested
-	class TestWithEmpty {
-
-		@DisplayName("empty eingang")
-		@Nested
-		class TestEingang {
-
-			@Test
-			void shouldProceedFromGrpcMapping() {
-				var eingang = mapper.fromGrpc(GrpcEingang.newBuilder().build());
-
-				assertThat(eingang.getAntragsteller()).isNull();
-				assertThat(eingang.getHeader()).isNull();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangTestFactory.java
deleted file mode 100644
index 7fdd289611568e838c938ebbc0ba28de43ca0509..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/EingangTestFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Map;
-import java.util.UUID;
-
-public class EingangTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-
-	public static final String SINGLE_FIELD_NAME = "name";
-	public static final String SINGLE_FIELD_VALUE = "Thea";
-	public static final String NUMERIC_FIELD_NAME = "alter";
-	public static final Integer NUMERIC_FIELD_VALUE = 42;
-
-	public static final String SUBFORM_FIELD_NAME = "E-Mail";
-	public static final String SUBFORM_FIELD_VALUE = "thea@burger-portal.sh.de";
-	public static final String SUBFORM_NAME = "kontakt";
-	public static final Map<String, Object> SUBFORM = Map.of(SUBFORM_FIELD_NAME, SUBFORM_FIELD_VALUE);
-
-	public static final Map<String, Object> AS_MAP = Map.of(SINGLE_FIELD_NAME, SINGLE_FIELD_VALUE, NUMERIC_FIELD_NAME, NUMERIC_FIELD_VALUE, SUBFORM_NAME, SUBFORM);
-
-	public static Eingang create() {
-		return createBuilder().build();
-	}
-
-	public static Eingang.EingangBuilder createBuilder() {
-		return Eingang.builder()
-				.id(ID)
-				.antragsteller(AntragstellerTestFactory.create())
-				.header(EingangHeaderTestFactory.create())
-				.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
-				.formData(AS_MAP);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FilterCriteriaTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FilterCriteriaTestFactory.java
deleted file mode 100644
index 26260de64895de4f711bc175f539a05bc983c932..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FilterCriteriaTestFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-import java.util.Optional;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-public class FilterCriteriaTestFactory {
-
-	public static final boolean FILTER_BY_ORGANISATIONS_EINHEITEN_ID = true;
-	public static final boolean FILTER_BY_ASSIGNED_TO = true;
-	public static final VorgangStatus VORGANG_STATUS = VorgangStatus.NEU;
-	public static final String ORGANISATIONS_EINHEIT_ID = ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID;
-	public static final boolean HAS_NEXT_WIEDERVORLAGE_FRIST = false;
-	public static final boolean HAS_UNGELESENE_NACHRICHTEN = false;
-
-	public static FilterCriteria create() {
-		return createBuilder().build();
-	}
-
-	public static FilterCriteria.FilterCriteriaBuilder createBuilder() {
-		return FilterCriteria.builder()
-				.filterByOrganisationseinheitenId(FILTER_BY_ORGANISATIONS_EINHEITEN_ID)
-				.status(Optional.of(VORGANG_STATUS))
-				.filterByAssignedTo(FILTER_BY_ASSIGNED_TO)
-				.assignedTo(Optional.of(UserProfileTestFactory.ID))
-				.organisationsEinheitenId(List.of(ORGANISATIONS_EINHEIT_ID))
-				.hasNextWiedervorlageFrist(HAS_NEXT_WIEDERVORLAGE_FRIST)
-				.hasUngeleseneNachrichten(HAS_UNGELESENE_NACHRICHTEN);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FindVorgaengeRequestCriteriaTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FindVorgaengeRequestCriteriaTestFactory.java
deleted file mode 100644
index 9c55be49382d9452b665e5a527790b38a2f46f94..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/FindVorgaengeRequestCriteriaTestFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.Optional;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class FindVorgaengeRequestCriteriaTestFactory {
-
-	public static final int PAGE = 0;
-	public static final int LIMIT = 100;
-	public static final String SEARCH_BY = LoremIpsum.getInstance().getWords(2);
-	public static final OrderBy ORDER_BY = OrderBy.PRIORITY;
-
-	public static FindVorgaengeHeaderRequestCriteria create() {
-		return createBuilder().build();
-	}
-
-	public static FindVorgaengeHeaderRequestCriteria.FindVorgaengeHeaderRequestCriteriaBuilder createBuilder() {
-		return FindVorgaengeHeaderRequestCriteria.builder()
-				.page(PAGE)
-				.limit(LIMIT)
-				.searchBy(Optional.of(SEARCH_BY))
-				.orderBy(ORDER_BY)
-				.filterCriteria(FilterCriteriaTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcAntragstellerTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcAntragstellerTestFactory.java
deleted file mode 100644
index 121dd339cdbdec5cc3cca51f48b017b2c990089d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcAntragstellerTestFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
-import de.ozgcloud.vorgang.vorgang.GrpcFormData;
-import de.ozgcloud.vorgang.vorgang.GrpcFormField;
-
-public class GrpcAntragstellerTestFactory {
-
-	public final static String ANREDE = "HERR/FRAU";
-	public final static String NACHNAME = LoremIpsum.getInstance().getLastName();
-	public final static String VORNAME = LoremIpsum.getInstance().getFirstName();
-	public final static String GEBURTSDATUM_STR = "21.03.1995";
-	public final static String GEBURTSORT = LoremIpsum.getInstance().getCountry();
-	public final static String GEBURTSNAME = LoremIpsum.getInstance().getFirstName();
-	public final static String EMAIL = LoremIpsum.getInstance().getEmail();
-	public static final String TELEFON = "+ 49 4621 9654";
-	public static final String STRASSE = "Lachstrasse";
-	public static final String HAUSNUMMER = "8484";
-	public static final String PLZ = "12345";
-	public static final String ORT = "Wohlfuehlhausen";
-	public static final String POSTFACH_ID = UUID.randomUUID().toString();
-
-	public final static GrpcFormData OTHER_DATA = GrpcFormData.newBuilder()
-			.addField(GrpcFormField.newBuilder()
-					.setName(AntragstellerTestFactory.OTHER_DATA_KEY)
-					.setValue(AntragstellerTestFactory.OTHER_DATA_VALUE).build())
-			.build();
-
-	public static GrpcAntragsteller create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcAntragsteller.Builder createBuilder() {
-		return GrpcAntragsteller.newBuilder()
-				.setAnrede(ANREDE)
-				.setGeburtsdatum(GEBURTSDATUM_STR)
-				.setNachname(NACHNAME)
-				.setVorname(VORNAME)
-				.setGeburtsname(GEBURTSNAME)
-				.setGeburtsort(GEBURTSORT)
-				.setEmail(EMAIL)
-				.setTelefon(TELEFON)
-				.setStrasse(STRASSE)
-				.setHausnummer(HAUSNUMMER)
-				.setPlz(PLZ)
-				.setOrt(ORT)
-				.setPostfachId(POSTFACH_ID)
-				.setOtherData(OTHER_DATA);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcClientAttributeTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcClientAttributeTestFactory.java
deleted file mode 100644
index 658647a55dcc1fe5920664b4e4ca6827da92dc12..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcClientAttributeTestFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.common.callcontext.CallContextTestFactory;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcAccessPermission;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute.Builder;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-
-class GrpcClientAttributeTestFactory {
-
-	static final String CLIENT = CallContextTestFactory.CLIENT_NAME;
-	static final GrpcAccessPermission ACCESS = GrpcAccessPermission.READ_WRITE;
-
-	static final GrpcClientAttribute create() {
-		return createBuilder().build();
-	}
-
-	static final Builder createBuilder() {
-		return GrpcClientAttribute.newBuilder()
-				.setClientName(CLIENT)
-				.setAccess(ACCESS);
-	}
-
-	static final GrpcClientAttribute createWith(ClientAttribute clientAttribute, boolean value) {
-		return createBuilder().setAttributeName(clientAttribute.getAttributeName())
-				.setClientName(clientAttribute.getClientName().toString())
-				.setValue(GrpcClientAttributeValue.newBuilder().setBoolValue(value).build())
-				.build();
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangHeaderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangHeaderTestFactory.java
deleted file mode 100644
index f41d637242c11d30b954605b01ab96709c715e20..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangHeaderTestFactory.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.ZonedDateTime;
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader;
-
-public class GrpcEingangHeaderTestFactory {
-
-	public final static String REQUEST_ID = UUID.randomUUID().toString();
-	private final static String CREATED_AT_STR = "2021-01-10T10:30:00Z";
-	public final static ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-	private final static String FORM_ID = UUID.randomUUID().toString();
-	public final static String FORM_NAME = LoremIpsum.getInstance().getWords(1);
-	private final static String SENDER = LoremIpsum.getInstance().getName();
-	private final static String CUSTOMER = LoremIpsum.getInstance().getName();
-	private final static String CUSTOMER_ID = UUID.randomUUID().toString();
-	private final static String CLIENT = LoremIpsum.getInstance().getName();
-	private final static String CLIENT_ID = UUID.randomUUID().toString();
-	public final static String FORM_ENGINE_NAME = "AFM";
-
-	public static GrpcEingangHeader create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcEingangHeader.Builder createBuilder() {
-		return GrpcEingangHeader.newBuilder()
-				.setRequestId(REQUEST_ID)
-				.setCreatedAt(CREATED_AT_STR)
-				.setFormId(FORM_ID)
-				.setFormName(FORM_NAME)
-				.setSender(SENDER)
-				.setCustomer(CUSTOMER)
-				.setCustomerId(CUSTOMER_ID)
-				.setClient(CLIENT)
-				.setClientId(CLIENT_ID)
-				.setFormEngineName(FORM_ENGINE_NAME);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangTestFactory.java
deleted file mode 100644
index 2a3e8adc401c02982920dd1fde2b25f26d0058a0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcEingangTestFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.UUID;
-
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-import de.ozgcloud.vorgang.vorgang.GrpcFormData;
-import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
-
-public class GrpcEingangTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final GrpcSubForm SUB_FORM = GrpcSubFormTestFactory.create();
-
-	public static GrpcEingang create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcEingang.Builder createBuilder() {
-		return GrpcEingang.newBuilder()
-				.setId(ID)
-				.setHeader(GrpcEingangHeaderTestFactory.create())
-				.setAntragsteller(GrpcAntragstellerTestFactory.create())
-				.setFormData(GrpcFormData.newBuilder().addForm(GrpcSubFormTestFactory.create()).build());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFilterByTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFilterByTestFactory.java
deleted file mode 100644
index 2e506c47bb6e8649dfa1cb2f9dbfd95a02dc71df..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFilterByTestFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
-
-public class GrpcFilterByTestFactory {
-
-	static final boolean FILTER_BY_ORGANISATIONSEINHEITEN_ID = true;
-
-	public static GrpcFilterBy create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFilterBy.Builder createBuilder() {
-		return GrpcFilterBy.newBuilder()
-				.setFilterByOrganisationseinheitenId(FILTER_BY_ORGANISATIONSEINHEITEN_ID)
-				.addStatus(VorgangStatus.NEU.name())
-				.addOrganisationseinheitId(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFindVorgangRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFindVorgangRequestTestFactory.java
deleted file mode 100644
index 2785bb9851f77c74a4081e144ee0d2b96f5dd6c0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFindVorgangRequestTestFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.FindVorgaengeRequestCriteriaTestFactory.*;
-
-import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
-
-public class GrpcFindVorgangRequestTestFactory {
-
-	final static GrpcFilterBy FILTER_BY = GrpcFilterByTestFactory.create();
-	static final int OFFSET = 50;
-
-	public static GrpcFindVorgangRequest create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcFindVorgangRequest.Builder createBuilder() {
-		return GrpcFindVorgangRequest.newBuilder()
-				.setFilterBy(FILTER_BY)
-				.setSearchBy(SEARCH_BY)
-				.setLimit(LIMIT)
-				.setOffset(OFFSET);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormDataMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormDataMapperTest.java
deleted file mode 100644
index 8ef7cad82a2633a729bb5fd7daffcbd084c1cbf1..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormDataMapperTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
-import de.ozgcloud.vorgang.vorgang.GrpcFormData;
-import de.ozgcloud.vorgang.vorgang.GrpcFormField;
-import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
-
-class GrpcFormDataMapperTest {
-
-	@InjectMocks
-	private GrpcFormDataMapper MAPPER_INSTANCE = Mappers.getMapper(GrpcFormDataMapper.class);
-
-	@Mock
-	private GrpcFormDataMapper grpcFormDataMapper;
-
-	@BeforeEach
-	void mockMapperReturnValues() {
-		lenient().when(grpcFormDataMapper.mapToFormData(any()))
-				.thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build());
-	}
-
-	@Nested
-	class TestSimpleValueMapping {
-
-		@Test
-		void shouldHaveField() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", "value"));
-
-			assertThat(formData.getFieldList()).hasSize(1);
-		}
-
-		@Test
-		void shouldNotHaveSubForms() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", "value"));
-
-			assertThat(formData.getFormList()).isEmpty();
-		}
-
-		@Test
-		void shouldHaveNameField() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", "value"));
-
-			assertThat(formData.getField(0).getName()).isEqualTo("key");
-			assertThat(formData.getField(0).getValue()).isEqualTo("value");
-		}
-	}
-
-	@Nested
-	class TestSubFormMapping {
-
-		@Test
-		void shouldHaveSubForm() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", Map.of("subKey", "value")));
-
-			assertThat(formData.getFormList()).hasSize(1);
-		}
-
-		@Test
-		void shouldNotHaveFields() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", Map.of("subKey", "value")));
-
-			assertThat(formData.getFieldList()).isEmpty();
-		}
-
-		@Test
-		void shouldHaveSubFormField() {
-
-			GrpcFormData formData = MAPPER_INSTANCE.mapToFormData(Map.of("key", Map.of("subKey", "value")));
-
-			assertThat(formData.getForm(0).getFieldList()).hasSize(1);
-			assertThat(formData.getForm(0).getTitle()).isEqualTo("key");
-			assertThat(formData.getForm(0).getField(0).getName()).isEqualTo("subKey");
-			assertThat(formData.getForm(0).getField(0).getValue()).isEqualTo("value");
-		}
-	}
-
-	@Nested
-	class TestMapStringListsToFields {
-
-		@Test
-		void emptyMapShouldNotBeMapped() {
-
-			List<GrpcFormField> fields = MAPPER_INSTANCE.mapStringListsToFields(Collections.emptyMap());
-
-			assertThat(fields).isEmpty();
-		}
-
-		@Test
-		void simpleValueShouldNotBeMapped() {
-
-			List<GrpcFormField> fields = MAPPER_INSTANCE.mapStringListsToFields(Map.of("a", "b"));
-
-			assertThat(fields).isEmpty();
-		}
-
-		@Test
-		void listObjectValuesShouldBeMapped() {
-
-			List<GrpcFormField> fields = MAPPER_INSTANCE.mapStringListsToFields(Map.of("key", List.of("value1", "value2")));
-
-			assertThat(fields).hasSize(2);
-			assertThat(fields.get(0).getName()).isEqualTo("key");
-			assertThat(fields.get(0).getValue()).isEqualTo("value1");
-
-			assertThat(fields.get(1).getName()).isEqualTo("key");
-			assertThat(fields.get(1).getValue()).isEqualTo("value2");
-		}
-	}
-
-	@Nested
-	class TestMapObjectListsToFields {
-
-		@Test
-		void simpleValueShouldNotBeMapped() {
-
-			List<GrpcSubForm> fields = MAPPER_INSTANCE.mapObjectListsToFields(Map.of("a", "b"));
-
-			assertThat(fields).isEmpty();
-		}
-
-		@Test
-		void listOfSimpleValueShouldNotBeMapped() {
-
-			List<GrpcSubForm> fields = MAPPER_INSTANCE.mapObjectListsToFields(Map.of("a", List.of("l1", "l2")));
-
-			assertThat(fields).isEmpty();
-		}
-
-		@Test
-		void listOfObjectsShouldBeMappedToSubForms() {
-
-			List<GrpcSubForm> fields = MAPPER_INSTANCE
-					.mapObjectListsToFields(Map.of("key", List.of(Collections.emptyMap(), Collections.emptyMap())));
-
-			assertThat(fields).hasSize(2);
-		}
-
-		@Test
-		void listOfObjectsShouldMappedToSubFormTitle() {
-
-			List<GrpcSubForm> fields = MAPPER_INSTANCE
-					.mapObjectListsToFields(Map.of("key", List.of(Collections.emptyMap(), Collections.emptyMap())));
-
-			assertThat(fields.get(0).getTitle()).isEqualTo("key");
-			assertThat(fields.get(1).getTitle()).isEqualTo("key");
-		}
-
-		@Test
-		void listOfObjectsShouldBeMapped() {
-
-			List<GrpcSubForm> fields = MAPPER_INSTANCE
-					.mapObjectListsToFields(Map.of("key", List.of(Map.of("a1", "a2"))));
-
-			assertThat(fields.get(0).getFieldCount()).isEqualTo(1);
-			assertThat(fields.get(0).getField(0).getName()).isEqualTo("a1");
-			assertThat(fields.get(0).getField(0).getValue()).isEqualTo("a2");
-		}
-
-		@Test
-		void doubleNestedListObjectValuesShouldBeMapped() {
-			GrpcFormData formData = MAPPER_INSTANCE
-					.mapToFormData(Map.of("key1", Map.of("key2", List.of("value1", "value2"))));
-
-			assertThat(formData.getForm(0).getFieldCount()).isEqualTo(2);
-		}
-
-		@Test
-		void multipleNestedListObjectValuesShouldBeMapped() {
-			GrpcFormData formData = MAPPER_INSTANCE
-					.mapToFormData(Map.of("key1", Map.of("key2", Map.of("key3", List.of("value1", "value2")))));
-
-			assertThat(formData.getForm(0).getSubForm(0).getFieldCount()).isEqualTo(2);
-		}
-	}
-
-	@Nested
-	class TestMapListOfMixedValuesInFormData {
-
-		@Test
-		void shouldMapListOfStrings() {
-
-			GrpcFormData formData = MAPPER_INSTANCE
-					.mapToFormData(Map.of("key", List.of("value1", "value2", Map.of("internKey1", "internValue1"))));
-
-			assertThat(formData.getFieldCount()).isEqualTo(2);
-			assertThat(formData.getFormCount()).isEqualTo(1);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormFieldTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormFieldTestFactory.java
deleted file mode 100644
index 5390df9fef91767bf9b16dee4ae15ef322311d1e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcFormFieldTestFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcFormField;
-
-public class GrpcFormFieldTestFactory {
-
-	public static final String TEST_NAME = "name";
-	public static final String TEST_VALUE = "value";
-
-	public static GrpcFormField create() {
-		return createBuilder().build();
-	}
-
-	private static GrpcFormField.Builder createBuilder() {
-		return GrpcFormField.newBuilder()
-				.setName(TEST_NAME)
-				.setValue(TEST_VALUE);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcLockTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcLockTestFactory.java
deleted file mode 100644
index b8f28d98535105c457b34f1c3d6b8ce4f2e56951..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcLockTestFactory.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcLock;
-
-class GrpcLockTestFactory {
-
-	public static GrpcLock create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcLock.Builder createBuilder() {
-		return GrpcLock.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcQueryTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcQueryTestFactory.java
deleted file mode 100644
index ba2578462f88cf2a75865b559999305074294593..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcQueryTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcQuery;
-
-public class GrpcQueryTestFactory {
-
-	public static GrpcQuery create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcQuery.Builder createBuilder() {
-		return GrpcQuery.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcServiceKontoTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcServiceKontoTestFactory.java
deleted file mode 100644
index bbf0d7241f41592c923742776617d98b9d37a4f0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcServiceKontoTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.postfach.GrpcPostfachAddressTestFactory;
-import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto;
-
-public class GrpcServiceKontoTestFactory {
-
-	public static GrpcServiceKonto create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcServiceKonto.Builder createBuilder() {
-		return GrpcServiceKonto.newBuilder()
-				.setType(ServiceKontoTestFactory.TYPE)
-				.addPostfachAddresses(GrpcPostfachAddressTestFactory.create());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcSubFormTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcSubFormTestFactory.java
deleted file mode 100644
index 344fa9ea9cbe426b70a6599f0b30ac50292be273..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcSubFormTestFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcFormField;
-import de.ozgcloud.vorgang.vorgang.GrpcSubForm;
-
-public class GrpcSubFormTestFactory {
-
-	public static final String TITLE = "person";
-
-	public static final String FIELD_NAME = EingangTestFactory.SINGLE_FIELD_NAME;
-	public static final String FIELD_VALUE = EingangTestFactory.SINGLE_FIELD_VALUE;
-
-	public static final String SUBFORM_NAME = EingangTestFactory.SUBFORM_NAME;
-	public static final String SUBFORM_FIELD_NAME = EingangTestFactory.SUBFORM_FIELD_NAME;
-	public static final String SUBFORM_FIELD_VALUE = EingangTestFactory.SUBFORM_FIELD_VALUE;
-
-	public static GrpcSubForm create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcSubForm.Builder createBuilder() {
-		return GrpcSubForm.newBuilder()
-				.setTitle(TITLE)
-				.addField(GrpcFormField.newBuilder().setName(FIELD_NAME).setValue(FIELD_VALUE).build())
-				.addSubForm(GrpcSubForm.newBuilder().setTitle(SUBFORM_NAME).addField(
-						GrpcFormField.newBuilder().setName(SUBFORM_FIELD_NAME).setValue(SUBFORM_FIELD_VALUE).build()));
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangAttachedItemTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangAttachedItemTestFactory.java
deleted file mode 100644
index 320ab3992636c2491895e6dc22f9742c0e6fa5c9..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangAttachedItemTestFactory.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.common.GrpcObject;
-import de.ozgcloud.vorgang.common.GrpcProperty;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
-
-public class GrpcVorgangAttachedItemTestFactory {
-
-	public static final GrpcObject ITEM = GrpcObject.newBuilder()
-			.addProperty(GrpcProperty.newBuilder()
-					.setName(VorgangAttachedItemTestFactory.ITEM_KEY)
-					.addValue(VorgangAttachedItemTestFactory.ITEM_VALUE)
-					.build())
-			.build();
-
-	public static GrpcVorgangAttachedItem create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangAttachedItem.Builder createBuilder() {
-		return GrpcVorgangAttachedItem.newBuilder()
-				.setId(VorgangAttachedItemTestFactory.ID)
-				.setClient(VorgangAttachedItemTestFactory.CLIENT)
-				.setVorgangId(VorgangHeaderTestFactory.ID)
-				.setItemName(VorgangAttachedItemTestFactory.ITEM_NAME)
-				.setItem(ITEM)
-				.setVersion(VorgangAttachedItemTestFactory.VERSION);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeadTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeadTestFactory.java
deleted file mode 100644
index b11ce836e7bf43f9c4ff85bcc3d5d73a9a8886fa..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeadTestFactory.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangHead;
-
-class GrpcVorgangHeadTestFactory {
-
-	public static GrpcVorgangHead create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangHead.Builder createBuilder() {
-		return GrpcVorgangHead.newBuilder();
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeaderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeaderTestFactory.java
deleted file mode 100644
index 8c29adb1aa652663f4f8600230f409e51323b562..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangHeaderTestFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory.*;
-
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
-
-public class GrpcVorgangHeaderTestFactory {
-
-	public static GrpcVorgangHeader create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcVorgangHeader.Builder createBuilder() {
-		return GrpcVorgangHeader.newBuilder()
-				.setNummer(NUMMER)
-				.setCreatedAt(CREATED_AT_STR)
-				.setAktenzeichen(AKTENZEICHEN)
-				.setAssignedTo(ASSIGNED_TO)
-				.setName(NAME)
-				.setStatus(STATUS.name());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangTestFactory.java
deleted file mode 100644
index 84c1f1032fda779c7a05c75c6d547183c423fbd8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangTestFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.time.LocalDateTime;
-import java.util.UUID;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
-
-public class GrpcVorgangTestFactory {
-
-	private static final int TOTAL = 100;
-
-	private static final String ID = UUID.randomUUID().toString();
-	private static final String NAME = LoremIpsum.getInstance().getWords(10);
-	private static final String CREATED_AT = LocalDateTime.now().toString();
-	private static final String STATUS = "NEU";
-	private static final String NUMMER = "VorgangNummer123";
-
-	public static GrpcFindVorgangResponse createVorgangResponse() {
-		return createVorgangResponseBuilder().build();
-	}
-
-	private static GrpcFindVorgangResponse.Builder createVorgangResponseBuilder() {
-		return GrpcFindVorgangResponse.newBuilder()
-				.setTotal(TOTAL)
-				.addVorgang(create());
-	}
-
-	private static GrpcVorgangHeader create() {
-		return createBuilder().build();
-	}
-
-	private static GrpcVorgangHeader.Builder createBuilder() {
-		return GrpcVorgangHeader.newBuilder()
-				.setId(ID)
-				.setName(NAME)
-				.setNummer(NUMMER)
-				.setCreatedAt(CREATED_AT)
-				.setStatus(STATUS);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangResponseTestFactory.java
deleted file mode 100644
index 4587533e83eeaa160b5402770cea15325eee0559..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangResponseTestFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangResponse;
-
-class GrpcVorgangWithEingangResponseTestFactory {
-
-	static GrpcFindVorgangWithEingangResponse createVorgangWithEingangResponse() {
-		return createVorgangWithEingangResponseBuilder().build();
-	}
-
-	private static GrpcFindVorgangWithEingangResponse.Builder createVorgangWithEingangResponseBuilder() {
-		return GrpcFindVorgangWithEingangResponse.newBuilder().setVorgangWithEingang(GrpcVorgangWithEingangTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangTestFactory.java
deleted file mode 100644
index 4d7328845dc47fca9167c505e85b95006aadd00e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcVorgangWithEingangTestFactory.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory.*;
-
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangWithEingang;
-
-class GrpcVorgangWithEingangTestFactory {
-
-	static GrpcVorgangWithEingang create() {
-		return createBuilder().build();
-	}
-
-	static GrpcVorgangWithEingang createWithEingang(GrpcEingang eingang) {
-		return createBuilder().setEingang(eingang).build();
-	}
-
-	static GrpcVorgangWithEingang.Builder createBuilder() {
-		return GrpcVorgangWithEingang.newBuilder()
-				.setStatus(STATUS.name())
-				.setNummer(NUMMER)
-				.setAktenzeichen(AKTENZEICHEN)
-				.setAssignedTo(ASSIGNED_TO)
-				.setCreatedAt(CREATED_AT_STR)
-				.clearClientAttributes()
-				.addClientAttributes(GrpcClientAttributeTestFactory.createWith(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, true))
-				.setEingang(GrpcEingangTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcZustaendigeStelleTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcZustaendigeStelleTestFactory.java
deleted file mode 100644
index 750847635dbabbd7c3445ae0a01e9b6a1019a0dc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/GrpcZustaendigeStelleTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle;
-
-public class GrpcZustaendigeStelleTestFactory {
-	private static final String EMAIL = ZustaendigeStelleTestFactory.EMAIL;
-	private static final String ORGANISATIONSEINHEITEN_ID = ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID;
-
-	public static GrpcZustaendigeStelle create() {
-		return createBuilder().build();
-	}
-
-	public static GrpcZustaendigeStelle.Builder createBuilder() {
-		return GrpcZustaendigeStelle.newBuilder()
-				.setEmail(EMAIL)
-				.setOrganisationseinheitenId(ORGANISATIONSEINHEITEN_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java
deleted file mode 100644
index 96f08f793d99849a616a42b1f5eec827c8905894..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/RedirectRequestTestFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
-import de.ozgcloud.common.test.TestUtils;
-
-public class RedirectRequestTestFactory {
-
-	public static final String EMAIL = "test@ozg-sh.de";
-	public static final String PASSWORD_AS_STR = "ValidesPassword";
-	public static final char[] PASSWORD = PASSWORD_AS_STR.toCharArray();
-
-	public static RedirectRequest create() {
-		return createBuilder().build();
-	}
-
-	public static RedirectRequest.RedirectRequestBuilder createBuilder() {
-		return RedirectRequest.builder()
-				.email(EMAIL)
-				.password(PASSWORD);
-	}
-
-	public static String createRedirectRequestContent(CreateCommand command) {
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl",
-				command.getCommandOrder().name(),
-				TestUtils.addQuote(command.getRedirectRequest().getEmail()),
-				TestUtils.addQuote(String.valueOf(command.getRedirectRequest().getPassword())));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapperTest.java
deleted file mode 100644
index b8ca43838277e000853ecf15f5e6bf6698639bec..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoMapperTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.postfach.GrpcPostfachAddressTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-
-class ServiceKontoMapperTest {
-
-	@InjectMocks
-	private ServiceKontoMapper mapper = Mappers.getMapper(ServiceKontoMapper.class);
-	@Spy
-	private GrpcObjectMapper grpcObjectMapper = Mappers.getMapper(GrpcObjectMapper.class);
-
-	@DisplayName("From serviceKonto")
-	@Nested
-	class TestFromServiceKonto {
-
-		@Test
-		void shouldMap() {
-			var serviceKonto = fromServiceKonto();
-
-			assertThat(serviceKonto).usingRecursiveComparison().isEqualTo(ServiceKontoTestFactory.create());
-		}
-
-		@Test
-		void shouldCallGrpcObjectMapper() {
-			fromServiceKonto();
-
-			verify(grpcObjectMapper).mapFromGrpc(GrpcPostfachAddressTestFactory.createStringBasedIdentifier());
-		}
-
-		private ServiceKonto fromServiceKonto() {
-			return mapper.fromServiceKonto(GrpcServiceKontoTestFactory.create());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoTestFactory.java
deleted file mode 100644
index 53e485ae9eb78e7d1bbb9f9a8853d037b467f9a8..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ServiceKontoTestFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.postfach.PostfachAddressTestFactory;
-
-public class ServiceKontoTestFactory {
-
-	public static final String TYPE = "OSI";
-
-	public static ServiceKonto create() {
-		return createBuilder().build();
-	}
-
-	public static ServiceKonto.ServiceKontoBuilder createBuilder() {
-		return ServiceKonto.builder()
-				.type(TYPE)
-				.postfachAddress(PostfachAddressTestFactory.create());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationServiceTest.java
deleted file mode 100644
index 3d2c55320cd1e02891163650cae3fcc5888d768d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangAuthorizationServiceTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-class VorgangAuthorizationServiceTest {
-
-	@InjectMocks
-	private VorgangAuthorizationService service;
-	@Mock
-	private CurrentUserService userService;
-
-	@Nested
-	class TestVerifyByUserRole {
-
-		@Nested
-		class TestForVerwaltungPoststelle {
-
-			@BeforeEach
-			void mockUserRole() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-			}
-
-			@DisplayName("should return true by vorgangstatus 'Neu'")
-			@Test
-			void shouldReturnTrue() {
-				var authorized = service.verifyByUserRole(VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.NEU).build());
-
-				assertThat(authorized).isTrue();
-			}
-
-			@DisplayName("should return false by other vorgangstatus then 'Neu'")
-			@ParameterizedTest
-			@EnumSource(value = VorgangStatus.class, names = { "ANGENOMMEN", "VERWORFEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN",
-					"WEITERGELEITET" })
-			void shouldReturnFalse(VorgangStatus status) {
-				var authorized = service.verifyByUserRole(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-
-				assertThat(authorized).isFalse();
-			}
-		}
-
-		@Nested
-		class TestForOtherRoles {
-
-			@BeforeEach
-			void mockUserRole() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-			}
-
-			@DisplayName("should return true on role 'VERWALTUNG_USER' independent which vorgangstatus")
-			@ParameterizedTest
-			@EnumSource(value = VorgangStatus.class, names = { "NEU", "ANGENOMMEN", "VERWORFEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN",
-					"WEITERGELEITET" })
-			void shouldReturnTrue(VorgangStatus status) {
-				var authorized = service.verifyByUserRole(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-
-				assertThat(authorized).isTrue();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java
deleted file mode 100644
index d916fca57012f1ecab9d21af08457d73be29b688..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerITCase.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.hamcrest.core.StringEndsWith;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.bescheid.BescheidService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.errorhandling.ResourceNotFoundException;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserService;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.statistic.ByStatusTestFactory;
-import de.ozgcloud.alfa.statistic.StatisticController;
-import de.ozgcloud.alfa.statistic.StatisticTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class VorgangControllerITCase {
-
-	@MockBean
-	private VorgangRemoteService remoteService;
-	@MockBean
-	private CommandController commandController;
-	@MockBean
-	private ForwardingController forwardingController;
-	@MockBean
-	private PostfachMailController postfachMailController;
-	@MockBean
-	private ClientAttributeService clientAttributeService;
-	@MockBean
-	private StatisticController statisticController;
-	@MockBean
-	private VorgangAttachedItemService vorgangAttachedItemService;
-	@MockBean
-	private CurrentUserService currentUserService;
-	@MockBean
-	private UserService userService;
-	@MockBean
-	private BescheidService bescheidService;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void mock() {
-		when(currentUserService.getUser()).thenReturn(UserProfileTestFactory.create());
-		when(userService.getInternalId(any())).thenReturn(Optional.of(UserProfileTestFactory.INTERNAL_ID));
-		when(statisticController.getVorgaengeStatistic()).thenReturn(StatisticTestFactory.create());
-		when(vorgangAttachedItemService.findLoeschAnforderung(anyString())).thenReturn(Stream.of(VorgangAttachedItemTestFactory.create()));
-	}
-
-	@DisplayName("Vorganglist by page and limit")
-	@Nested
-	class TestVorgangListByPage {
-
-		private static final String PATH = VorgangController.PATH + "?page=0&limit=100";
-
-		private final VorgaengeHeaderResponse response = VorgaengeHeaderResponse.builder().vorgaengeHeader(List.of(
-				VorgangHeaderTestFactory.createBuilder().nextFrist(WiedervorlageTestFactory.FRIST).build())).build();
-
-		@BeforeEach
-		void mockRemoteService() {
-			when(remoteService.findVorgaengeHeader(any(), any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldReturnResult() throws Exception {
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$._embedded.vorgangHeaderList[0].nextFrist").value(WiedervorlageTestFactory.FRIST_STR));
-		}
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			var response = doRequest();
-
-			response.andExpect(status().isOk());
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(PATH, VorgangHeaderTestFactory.ID));
-		}
-
-		@DisplayName("statistic")
-		@Nested
-		class TestStatisic {
-
-			@DisplayName("by status")
-			@Nested
-			class TestByStatus {
-
-				private static final String BY_STATUS_PATH = "$.statistic.byStatus.";
-
-				@Test
-				void shouldContainNeu() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "neu").value(ByStatusTestFactory.NEU_COUNT));
-				}
-
-				@Test
-				void shouldContainAngenommen() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "angenommen").value(ByStatusTestFactory.ANGENOMMEN_COUNT));
-				}
-
-				@Test
-				void shouldContainInBearbeitung() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "inBearbeitung").value(ByStatusTestFactory.IN_BEARBEITUNG_COUNT));
-				}
-
-				@Test
-				void shouldContainBeschieden() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "beschieden").value(ByStatusTestFactory.BESCHIEDEN_COUNT));
-				}
-
-				@Test
-				void shouldContainAbgeschlossen() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "abgeschlossen").value(ByStatusTestFactory.ABGESCHLOSSEN_COUNT));
-				}
-
-				@Test
-				void shouldContainVerworfen() throws Exception {
-					var response = doRequest();
-
-					response.andExpect(jsonPath(BY_STATUS_PATH + "verworfen").value(ByStatusTestFactory.VERWORFEN_COUNT));
-				}
-			}
-
-			@Test
-			void shouldContainWiedervorlagen() throws Exception {
-				var response = doRequest();
-
-				response.andExpect(jsonPath("$.statistic.wiedervorlagen").value(StatisticTestFactory.COUNT_WIEDERVORLAGEN));
-			}
-
-			@Test
-			void shouldContainUngeleseneNachrichten() throws Exception {
-				var response = doRequest();
-
-				response.andExpect(jsonPath("$.statistic.ungeleseneNachrichten").value(StatisticTestFactory.COUNT_UNGELESENE_NACHRICHTEN));
-			}
-		}
-	}
-
-	@Nested
-	class TestGetSingleVorgang {
-
-		public static final String PATH = VorgangController.PATH + "/{id}";
-
-		@Test
-		void shouldReturnNotFound() throws Exception {
-			when(remoteService.findVorgangWithEingang(anyString(), any())).thenThrow(new ResourceNotFoundException(Vorgang.class, StringUtils.EMPTY));
-
-			var response = doRequest();
-
-			response.andExpect(status().isNotFound());
-		}
-
-		@Test
-		void shouldFormatDateTime() throws Exception {
-			when(bescheidService.existsBescheid(anyString())).thenReturn(true);
-			when(remoteService.findVorgangWithEingang(anyString(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-
-			var response = doRequest();
-
-			response.andExpect(status().isOk()).andExpect(jsonPath("$.createdAt").value(VorgangHeaderTestFactory.CREATED_AT_STR));
-		}
-
-		@Test
-		void shouldHaveAnnehmenLink() throws Exception {
-			when(bescheidService.existsBescheid(anyString())).thenReturn(true);
-			when(remoteService.findVorgangWithEingang(anyString(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-
-			var response = doRequest();
-
-			response.andExpect(jsonPath("$._links.annehmen.href")
-					.value("http://localhost/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/"
-							+ VorgangHeaderTestFactory.VERSION + "/commands"));
-		}
-
-		@Nested
-		class TestLinkToAssignedUser {
-
-			@Test
-			void shouldReturnStatusOk() throws Exception {
-				when(bescheidService.existsBescheid(anyString())).thenReturn(true);
-				when(remoteService.findVorgangWithEingang(anyString(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-
-				var response = doRequest();
-
-				response.andExpect(status().is2xxSuccessful());
-			}
-
-			@Test
-			void shouldBePresentIfAssigned() throws Exception {
-				when(bescheidService.existsBescheid(anyString())).thenReturn(true);
-				when(remoteService.findVorgangWithEingang(anyString(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-
-				var response = doRequest();
-
-				response.andExpect(jsonPath("$._links.assignedTo.href")
-						.value(StringEndsWith.endsWith("/api/userProfiles/" + UserProfileTestFactory.ID)));
-			}
-
-			@Test
-			void shouldNOTBePresentIfNOSTAssigned() throws Exception {
-				when(remoteService.findVorgangWithEingang(anyString(), any()))
-						.thenReturn(VorgangWithEingangTestFactory.createBuilder().assignedTo(null).build());
-
-				var response = doRequest();
-
-				response.andExpect(jsonPath("$._links.assignedTo.href").doesNotExist());
-			}
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(PATH, VorgangHeaderTestFactory.ID).with(csrf()));
-		}
-	}
-
-	@Nested
-	class TestClientAttribute {
-
-		@Test
-		void shouldReturnNoContent() throws Exception {
-			var content = VorgangHeaderTestFactory.createHasNewPostfachNachrichtContent(false);
-
-			var response = doRequest(content);
-
-			response.andExpect(status().isNoContent());
-		}
-
-		@Test
-		void shouldReturnUnprocessableEntity() throws Exception {
-			var content = VorgangHeaderTestFactory.createHasNewPostfachNachrichtContent(true);
-
-			var response = doRequest(content);
-
-			response.andExpect(status().isUnprocessableEntity());
-		}
-
-		private ResultActions doRequest(String content) throws Exception {
-			return mockMvc.perform(put("/api/vorgangs/{0}/hasNewPostfachNachricht", VorgangHeaderTestFactory.ID).with(csrf())
-					.contentType(MediaType.APPLICATION_JSON)
-					.content(content));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java
deleted file mode 100644
index ba6f94d6a7ba3f5518b8b371b8a1d346161afb94..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangControllerTest.java
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.EingangTestFactory.*;
-import static org.assertj.core.api.AssertionsForClassTypes.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.statistic.StatisticController;
-import de.ozgcloud.alfa.statistic.StatisticTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import lombok.SneakyThrows;
-
-class VorgangControllerTest {
-
-	private static final String RESET_POSTFACH_NACHRICHT_PATH = VorgangController.PATH + "/{0}/hasNewPostfachNachricht";
-	private static final String PATH = VorgangController.PATH + "/";
-
-	@Spy
-	@InjectMocks
-	private VorgangController controller;
-	@Mock
-	private VorgangService vorgangService;
-	@Mock
-	private VorgangModelAssembler modelAssembler;
-
-	@Mock
-	private ClientAttributeService clientAttributeService;
-
-	@Mock
-	private StatisticController statisticController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("VorgangList")
-	@Nested
-	class TestVorgangList {
-
-		private static final int PAGE = 5;
-		private static final int LIMIT = 7;
-
-		@Captor
-		private ArgumentCaptor<FindVorgaengeHeaderRequestCriteria> criteriaCaptor;
-
-		@BeforeEach
-		void initTest() {
-			when(vorgangService.findVorgaengeHeader(any())).thenReturn(VorgangListResponseTestFactory.create());
-			when(statisticController.getVorgaengeStatistic()).thenReturn(StatisticTestFactory.create());
-		}
-
-		@DisplayName("Get all")
-		@Nested
-		class TestGetAll {
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT)))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by status")
-		@Nested
-		class TestGetAllByStatus {
-
-			private static final VorgangStatus STATUS = VorgangStatus.NEU;
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shoulHaveSetStatus() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().getStatus()).hasValue(STATUS);
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_STATUS, STATUS.toString()))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by searchBy")
-		@Nested
-		class TestGetAllBySearchBy {
-
-			private static final String SEARCH_BY = "TestSearchByString";
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shoulHaveSetSearchBy() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getSearchBy()).hasValue(SEARCH_BY);
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_SEARCH, SEARCH_BY))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by assignedTo")
-		@Nested
-		class TestGetAllByAssigendTo {
-
-			private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shoulHaveSetAssignedToAsOptional() {
-					doRequest();
-
-					verify(controller).asOptional(ASSIGNED_TO);
-				}
-
-				@Test
-				void shoulHaveSetAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
-				}
-
-				@Test
-				void shouldSetFilterByAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString()))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by assignedTo and searchBy")
-		@Nested
-		class TestGetAllByAssigendToAndSearchBy {
-
-			private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
-			private static final String SEARCH_BY = "TestSearchByString";
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shouldSetAssignedAsOptional() {
-					doRequest();
-
-					verify(controller).asOptional(ASSIGNED_TO);
-				}
-
-				@Test
-				void shoulHaveSetAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
-				}
-
-				@Test
-				void shoulHaveSetSearchBy() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getSearchBy()).hasValue(SEARCH_BY);
-				}
-
-				@Test
-				void shouldSetFilterByAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())
-								.param(VorgangController.PARAM_SEARCH, SEARCH_BY))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by assignedTo and status")
-		@Nested
-		class TestGetAllByAssigendToAndStatus {
-
-			private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
-			private static final VorgangStatus STATUS = VorgangStatus.NEU;
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shouldSetAssignedAsOptional() {
-					doRequest();
-
-					verify(controller).asOptional(ASSIGNED_TO);
-				}
-
-				@Test
-				void shoulHaveSetAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
-				}
-
-				@Test
-				void shoulHaveSetStatus() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().getStatus()).hasValue(STATUS);
-				}
-
-				@Test
-				void shouldSetFilterByAssignedTo() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())
-								.param(VorgangController.PARAM_STATUS, STATUS.toString()))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@DisplayName("Get all by existing next wiedervorlage frist")
-		@Nested
-		class TestGetAllByExistingNextWiedervorlageFrist {
-
-			private static final String HAS_NEXT_WIEDERVORLAGE_FRIST = "exists";
-
-			@Test
-			void shouldCallHandleGetAllRequest() {
-				doRequest();
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@DisplayName("build criteria")
-			@Nested
-			class TestBuildCriteria {
-
-				@Test
-				void shouldHaveSetPage() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-				}
-
-				@Test
-				void shoulHaveSetLimit() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-				}
-
-				@Test
-				void shouldHaveCallExistNextWiedervorlageFrist() {
-					doRequest();
-
-					verify(controller).existNextWiedervorlageFrist(HAS_NEXT_WIEDERVORLAGE_FRIST);
-				}
-
-				@Test
-				void shoulHaveSetHasNextWiedervorlageFrist() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasNextWiedervorlageFrist()).isTrue();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequest() {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST))
-						.andExpect(status().isOk());
-			}
-
-			@DisplayName("Get all by assignedTo and existing next wiedervorlage frist")
-			@Nested
-			class TestGetAllByAssignedtoAndExistingNextWiedervorlageFrist {
-
-				private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
-				private static final String HAS_NEXT_WIEDERVORLAGE_FRIST = "exists";
-
-				@Test
-				void shouldCallHandleGetAllRequest() {
-					doRequest();
-
-					verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-				}
-
-				@DisplayName("build criteria")
-				@Nested
-				class TestBuildCriteria {
-
-					@Test
-					void shouldHaveSetPage() {
-						doRequest();
-
-						verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-						assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-					}
-
-					@Test
-					void shoulHaveSetLimit() {
-						doRequest();
-
-						verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-						assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-					}
-
-					@Test
-					void shouldSetAssignedAsOptional() {
-						doRequest();
-
-						verify(controller).asOptional(ASSIGNED_TO);
-					}
-
-					@Test
-					void shoulHaveSetAssignedTo() {
-						doRequest();
-
-						verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-						assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
-					}
-
-					@Test
-					void shouldSetFilterByAssignedTo() {
-						doRequest();
-
-						verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-						assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
-					}
-
-					@Test
-					void shouldHaveCallExistNextWiedervorlageFrist() {
-						doRequest();
-
-						verify(controller).existNextWiedervorlageFrist(HAS_NEXT_WIEDERVORLAGE_FRIST);
-					}
-
-					@Test
-					void shoulHaveSetHasNextWiedervorlageFrist() {
-						doRequest();
-
-						verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-						assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasNextWiedervorlageFrist()).isTrue();
-					}
-				}
-
-				@SneakyThrows
-				private void doRequest() {
-					mockMvc.perform(get(PATH)
-									.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-									.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-									.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())
-									.param(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST, HAS_NEXT_WIEDERVORLAGE_FRIST))
-							.andExpect(status().isOk());
-				}
-			}
-		}
-
-		@Nested
-		class TestGetAllByUngeleseneNachrichten {
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCallHandleGetAllRequest(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCriteriaHavePage(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCriteriaHaveLimit(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-			}
-
-			static List<String> nachrichtenValues() {
-				return List.of(VorgangController.PARAM_NACHRICHTEN_UNGELESENE, "", "dummy");
-			}
-
-			@Nested
-			class WithParamNachrichtenUngelesene {
-
-				@Test
-				void shouldCriteriaHaveHasUngeleseneNachrichtenTrue() {
-					doRequestWithNachrichtenParam(VorgangController.PARAM_NACHRICHTEN_UNGELESENE);
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isTrue();
-				}
-			}
-
-			@Nested
-			class WithoutParamNachrichtenUngelesene {
-
-				@ParameterizedTest
-				@ValueSource(strings = {"", "dummy"})
-				void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) {
-					doRequestWithNachrichtenParam(nachrichtenValue);
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isFalse();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequestWithNachrichtenParam(String paramValue) {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_NACHRICHTEN, paramValue))
-						.andExpect(status().isOk());
-			}
-		}
-
-		@Nested
-		class TestGetAllByAssignedToAndUngeleseneNachrichten {
-
-			private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCallHandleGetAllRequest(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCriteriaHavePage(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCriteriaHaveLimit(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldCriteriaHaveAssignedTo(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
-			}
-
-			@ParameterizedTest
-			@MethodSource("nachrichtenValues")
-			void shouldSetFilterByAssignedTo(String nachrichtenValue) {
-				doRequestWithNachrichtenParam(nachrichtenValue);
-
-				verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-				assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
-			}
-
-			static List<String> nachrichtenValues() {
-				return List.of(VorgangController.PARAM_NACHRICHTEN_UNGELESENE, "", "dummy");
-			}
-
-			@Nested
-			class WithParamNachrichtenUngelesene {
-
-				@Test
-				void shouldCriteriaHaveHasUngeleseneNachrichtenTrue() {
-					doRequestWithNachrichtenParam(VorgangController.PARAM_NACHRICHTEN_UNGELESENE);
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isTrue();
-				}
-			}
-
-			@Nested
-			class WithoutParamNachrichtenUngelesene {
-
-				@ParameterizedTest
-				@ValueSource(strings = {"", "dummy"})
-				void shouldCriteriaHaveHasUngeleseneNachrichtenFalse(String nachrichtenValue) {
-					doRequestWithNachrichtenParam(nachrichtenValue);
-
-					verify(controller).handleGetAllRequest(criteriaCaptor.capture());
-					assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isFalse();
-				}
-			}
-
-			@SneakyThrows
-			private void doRequestWithNachrichtenParam(String paramValue) {
-				mockMvc.perform(get(PATH)
-								.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
-								.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
-								.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())
-								.param(VorgangController.PARAM_NACHRICHTEN, paramValue))
-						.andExpect(status().isOk());
-			}
-		}
-	}
-
-	@DisplayName("As Optional")
-	@Nested
-	class TestAsOptional {
-
-		@Test
-		void shouldReturnEmptyOnEmptyUserId() {
-			var optional = controller.asOptional(UserId.empty());
-
-			assertThat(optional).isNotPresent();
-		}
-
-		@Test
-		void shouldReturnFilledIfNotEmpty() {
-			var userId = UserId.from("DummyUserId");
-
-			var optional = controller.asOptional(userId);
-
-			assertThat(optional).hasValue(userId);
-		}
-	}
-
-	@DisplayName("Exist next wiedervorlage frist")
-	@Nested
-	class TestExistNextWiedervorlageFrist {
-
-		@Test
-		void shouldReturnTrueOnMatchingParameter() {
-			var exists = controller.existNextWiedervorlageFrist(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS);
-
-			assertThat(exists).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseOnOther() {
-			var exists = controller.existNextWiedervorlageFrist("quatsch");
-
-			assertThat(exists).isFalse();
-		}
-	}
-
-	@DisplayName("Vorgang with eingang")
-	@Nested
-	class TestVorgangWithEingang {
-
-		private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-		@BeforeEach
-		void initTest() {
-			when(vorgangService.findVorgangWithEingang(any())).thenReturn(VorgangWithEingangTestFactory.create());
-			when(modelAssembler.toModel(any())).then(i -> EntityModel.of(i.getArgument(0)));
-
-			ApplicationContext context = mock(ApplicationContext.class);
-			Environment environment = mock(Environment.class);
-			when(environment.getProperty(anyString())).thenReturn("test/");
-			when(context.getEnvironment()).thenReturn(environment);
-			urlProvider.setApplicationContext(context);
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			performRequest();
-
-			verify(vorgangService).findVorgangWithEingang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			performRequest();
-
-			verify(modelAssembler).toModel(any());
-		}
-
-		@Nested
-		class TestDataMapping {
-
-			@DisplayName("Single Field should be in json first level")
-			@Test
-			void singleField() throws Exception {
-				performRequest().andExpect(jsonPath("$.eingang.formData." + SINGLE_FIELD_NAME).value(SINGLE_FIELD_VALUE));
-			}
-
-			@DisplayName("Numeric field should be numeric in json")
-			@Test
-			void numericField() throws Exception {
-				performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).isNumber());
-				performRequest().andExpect(jsonPath("$.eingang.formData." + NUMERIC_FIELD_NAME).value(NUMERIC_FIELD_VALUE));
-			}
-
-			@DisplayName("SubForm should have name as key")
-			@Test
-			void keyOfsubForm() throws Exception {
-				performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME).isMap());
-			}
-
-			@DisplayName("SubForm-Field should be present")
-			@Test
-			void subFormField() throws Exception {
-				performRequest().andExpect(jsonPath("$.eingang.formData." + SUBFORM_NAME + "." + SUBFORM_FIELD_NAME).value(SUBFORM_FIELD_VALUE));
-			}
-
-		}
-
-		private ResultActions performRequest() throws Exception {
-			return mockMvc.perform(get(PATH + "/" + VorgangHeaderTestFactory.ID)).andExpect(status().isOk());
-		}
-	}
-
-	@DisplayName("Reset new postfachNachricht")
-	@Nested
-	class TestResetNewPostfachNachricht {
-
-		@Test
-		void resetNewPostfachNachricht() throws Exception {
-			performRequest("{\"hasNewPostfachNachricht\":false}").andExpect(status().isNoContent());
-
-			verify(clientAttributeService).resetPostfachNachricht(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldReturnUnprocessableEntity() throws Exception {
-			performRequest("{\"hasNewPostfachNachricht\":true}").andExpect(status().isUnprocessableEntity());
-
-			verify(clientAttributeService, never()).resetPostfachNachricht(VorgangHeaderTestFactory.ID);
-		}
-
-		private ResultActions performRequest(String body) throws Exception {
-			return mockMvc
-					.perform(put(RESET_POSTFACH_NACHRICHT_PATH, VorgangHeaderTestFactory.ID).contentType(MediaType.APPLICATION_JSON_VALUE)
-							.content(body));
-		}
-	}
-
-	@Nested
-	class TestIsEditable {
-
-		private final Vorgang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldCallService() {
-			controller.isEditable(vorgang);
-
-			verify(vorgangService).isVorgangEditable(vorgang);
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = {true, false})
-		void shouldReturnServiceResult(boolean serviceResult) {
-			when(vorgangService.isVorgangEditable(vorgang)).thenReturn(serviceResult);
-
-			var editable = controller.isEditable(vorgang);
-
-			assertThat(editable).isEqualTo(serviceResult);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeadTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeadTestFactory.java
deleted file mode 100644
index 2c064f1da49527cf51877e6faadb046e6c44195e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeadTestFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-public class VorgangHeadTestFactory {
-
-	public static VorgangHead create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangHead.VorgangHeadBuilder createBuilder() {
-		return VorgangHead.builder()
-				.serviceKonto(ServiceKontoTestFactory.create());
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapperTest.java
deleted file mode 100644
index 66927d5cf6f096c5a1d5a14835dfe2e2936e6d76..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderMapperTest.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-
-import java.time.format.DateTimeFormatter;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageTestFactory;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttribute;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-
-class VorgangHeaderMapperTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangHeaderMapper mapper = Mappers.getMapper(VorgangHeaderMapper.class);
-
-	@Spy
-	private UserIdMapper userIdMapper = Mappers.getMapper(UserIdMapper.class);
-
-	@Nested
-	class TestToVorgangHeader {
-
-		@Test
-		void shouldMapCreatedAt() {
-			var header = callMapper();
-
-			assertThat(header.getCreatedAt()).isEqualTo(CREATED_AT);
-		}
-
-		@Test
-		void shouldMapNummer() {
-			var header = callMapper();
-
-			assertThat(header.getNummer()).isEqualTo(NUMMER);
-		}
-
-		@Test
-		void shouldMapAktenzeichen() {
-			var header = callMapper();
-
-			assertThat(header.getAktenzeichen()).isEqualTo(AKTENZEICHEN);
-		}
-
-		@Test
-		void shouldMapStatus() {
-			var header = callMapper();
-
-			assertThat(header.getStatus()).isEqualTo(VorgangStatus.NEU);
-		}
-
-		@Test
-		void shouldMapAssignedTo() {
-			var header = callMapper();
-
-			assertThat(header.getAssignedTo()).isEqualTo(UserId.from(ASSIGNED_TO));
-		}
-
-		@Nested
-		class NextFrist {
-
-			private final GrpcClientAttributeValue value = GrpcClientAttributeValue.newBuilder()
-					.setStringValue(WiedervorlageTestFactory.FRIST.format(DateTimeFormatter.ISO_DATE)).build();
-
-			@Test
-			void shouldSetEmptyOptionalIfNotExist() {
-				var vorgangHeaderWithEmptyClientAttributes = GrpcVorgangHeaderTestFactory.createBuilder().clearClientAttributes().build();
-
-				var header = mapper.toVorgangHeader(vorgangHeaderWithEmptyClientAttributes);
-
-				assertThat(header.getNextFrist()).isNull();
-			}
-
-			@Test
-			void shouldNotSetIfWrongClient() {
-				var clientAttribute = GrpcClientAttribute.newBuilder()
-						.setAttributeName(ClientAttribute.WIEDERVORLAGE_NEXT_FRIST.getAttributeName())
-						.setValue(value)
-						.build();
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder()
-						.addClientAttributes(clientAttribute).build();
-
-				var header = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(header.getNextFrist()).isNull();
-
-			}
-
-			@Test
-			void shouldSetIfExists() {
-				var clientAttribute = GrpcClientAttribute.newBuilder()
-						.setAttributeName(ClientAttribute.WIEDERVORLAGE_NEXT_FRIST.getAttributeName())
-						.setClientName(ClientAttribute.WIEDERVORLAGE_NEXT_FRIST.getClientName().toString())
-						.setValue(value)
-						.build();
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder()
-						.addClientAttributes(clientAttribute).build();
-
-				var header = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(header.getNextFrist()).isEqualTo(WiedervorlageTestFactory.FRIST);
-			}
-
-		}
-
-		@Nested
-		class HasPostfachNachricht {
-			@Test
-			void shouldSetFalseIfNotExists() {
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().clearClientAttributes().build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasPostfachNachricht()).isFalse();
-			}
-
-			@Test
-			void shouldSetFalseForWrongClient() {
-				var clientAttribute = GrpcClientAttributeTestFactory.createBuilder()
-						.setValue(GrpcClientAttributeValue.newBuilder().setBoolValue(true).build())
-						.build();
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasPostfachNachricht()).isFalse();
-			}
-
-			@ParameterizedTest
-			@ValueSource(booleans = { true, false })
-			void shouldBeValueOfClientAttribute(boolean value) {
-				var clientAttribute = GrpcClientAttributeTestFactory.createWith(ClientAttribute.HAS_POSTFACH_NACHRICHT, value);
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasPostfachNachricht()).isEqualTo(value);
-			}
-		}
-
-		@Nested
-		class HasNewPostfachNachricht {
-			@Test
-			void shouldSetFalseIfNotExists() {
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().clearClientAttributes().build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasNewPostfachNachricht()).isFalse();
-			}
-
-			@Test
-			void shouldSetFalseForWrongClient() {
-				var clientAttribute = GrpcClientAttributeTestFactory.createBuilder()
-						.setValue(GrpcClientAttributeValue.newBuilder().setBoolValue(true).build())
-						.build();
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasPostfachNachricht()).isFalse();
-			}
-
-			@ParameterizedTest
-			@ValueSource(booleans = { true, false })
-			void shouldBeValueOfClientAttribute(boolean value) {
-				var clientAttribute = GrpcClientAttributeTestFactory.createWith(ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT, value);
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.isHasNewPostfachNachricht()).isEqualTo(value);
-			}
-		}
-
-		@Nested
-		class TestAntragBewilligt {
-			@Test
-			void shouldSetNull() {
-				var vorgangHeaderWithEmptyClientAttributes = GrpcVorgangHeaderTestFactory.createBuilder().clearClientAttributes().build();
-
-				var header = mapper.toVorgangHeader(vorgangHeaderWithEmptyClientAttributes);
-
-				assertThat(header.getAntragBewilligt()).isNull();
-			}
-
-			@ParameterizedTest
-			@ValueSource(booleans = { true, false })
-			void shouldBeValueOfClientAttribute(boolean value) {
-				var clientAttribute = GrpcClientAttributeTestFactory.createWith(ClientAttribute.ANTRAG_BEWILLIGT, value);
-				var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-				var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-				assertThat(mapped.getAntragBewilligt()).isEqualTo(value);
-			}
-		}
-
-		private VorgangHeader callMapper() {
-			return mapper.toVorgangHeader(GrpcVorgangHeaderTestFactory.create());
-		}
-	}
-
-	@Nested
-	class TestArchiving {
-
-		@Test
-		void shouldBeFalseIfClientAttributeIsMissing() {
-			var header = mapper.toVorgangHeader(GrpcVorgangHeaderTestFactory.create());
-
-			assertThat(header.isArchiving()).isFalse();
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { true, false })
-		void shouldBeValueOfClientAttribute(boolean value) {
-			var clientAttribute = GrpcClientAttributeTestFactory.createWith(ClientAttribute.ARCHIVING, value);
-			var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build();
-
-			var mapped = mapper.toVorgangHeader(vorgangHeader);
-
-			assertThat(mapped.isArchiving()).isEqualTo(value);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderTestFactory.java
deleted file mode 100644
index 5653c4e4a3f525f50a01127f02fb0768d6f7a971..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangHeaderTestFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.common.AlfaTestUtils.*;
-
-import java.time.ZonedDateTime;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.common.test.TestUtils;
-
-public class VorgangHeaderTestFactory {
-
-	public static final String ID = createMongoDbObjectId();
-	public static final long VERSION = 42L;
-	public static final String NAME = LoremIpsum.getInstance().getWords(10);
-	public static final VorgangStatus STATUS = VorgangStatus.NEU;
-	public static final String CREATED_AT_STR = "2021-01-10T10:30:00Z";
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-	public static final String NUMMER = "VorgangNummerTest123";
-	public static final String AKTENZEICHEN = "0123456789XY";
-	public static final String ASSIGNED_TO = "paul";
-
-	public static VorgangHeader create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangHeader.VorgangHeaderBuilder createBuilder() {
-		return VorgangHeader.builder()
-				.id(ID)
-				.version(VERSION)
-				.name(NAME)
-				.nummer(NUMMER)
-				.status(STATUS)
-				.createdAt(CREATED_AT)
-				.assignedTo(UserProfileTestFactory.ID);
-	}
-
-	public static String createHasNewPostfachNachrichtContent(boolean hasNewPostfachNachricht) {
-		return TestUtils.loadTextFile("jsonTemplates/command/hasNewPostfachNachricht.json.tmpl", String.valueOf(hasNewPostfachNachricht));
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangITCase.java
deleted file mode 100644
index 8b557304e3659685c7c3e3aab8c6a2c42bb1faa2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangITCase.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.io.File;
-import java.io.FileOutputStream;
-
-import org.apache.commons.io.FileUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.bescheid.BescheidService;
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import lombok.SneakyThrows;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class VorgangITCase {
-
-	@MockBean
-	private VorgangRemoteService remoteService;
-
-	@MockBean
-	private CommandController commandController;
-
-	@MockBean
-	private CurrentUserService userService;
-
-	@MockBean
-	private PostfachMailController postfachController;
-
-	@MockBean
-	private VorgangAttachedItemService vorgangAttachedItemService;
-	@MockBean
-	private BescheidService bescheidService;
-
-	@Autowired
-	private MockMvc mockMvc;
-
-	@WithMockUser
-	@Nested
-	class TestGetVorgangWithEingang {
-
-		static final String SINGLE_PATH = VorgangController.PATH + "/{id}";
-
-		@BeforeEach
-		void mockStub() {
-			when(postfachController.isPostfachConfigured()).thenReturn(true);
-			when(remoteService.findVorgangWithEingang(anyString(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-		}
-
-		@Test
-		void shouldReturnVorgangOnMatchingOrganisationseinheitId() throws Exception {
-			when(userService.getUser()).thenReturn(
-					UserProfileTestFactory.createBuilder().clearOrganisationseinheitIds()
-							.organisationseinheitId(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID).build());
-
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldReturnVorgangOnEmptyUserOrganisationseinheitIdList() throws Exception {
-			when(userService.getUser()).thenReturn(UserProfileTestFactory.createBuilder().clearOrganisationseinheitIds().build());
-
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Nested
-		class TestAuthorizationByRole {
-
-			@Nested
-			class TestForVerwaltungPoststelle {
-
-				@BeforeEach
-				void mockUserService() {
-					when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-				}
-
-				@DisplayName("should return http forbidden status if vorgangstatus is different to 'Neu'")
-				@ParameterizedTest
-				@EnumSource(value = VorgangStatus.class, names = { "ANGENOMMEN", "VERWORFEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN",
-						"WEITERGELEITET" })
-				void shouldReturnForbiddenStatus(VorgangStatus status) throws Exception {
-					when(remoteService.findVorgangWithEingang(anyString(), any()))
-							.thenReturn(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-
-					doRequest().andExpect(status().isForbidden());
-				}
-
-				@SneakyThrows
-				@DisplayName("should return http ok status if vorgangstatus is equal 'Neu'")
-				@Test
-				void shouldReturnOkStatus() {
-					when(bescheidService.existsBescheid(anyString())).thenReturn(true);
-					when(remoteService.findVorgangWithEingang(anyString(), any()))
-							.thenReturn(VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.NEU).build());
-
-					doRequest().andExpect(status().isOk());
-				}
-			}
-
-			@Nested
-			class TestForOtherRoles {
-
-				@BeforeEach
-				void mockUserRole() {
-					when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-					when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-					when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-				}
-
-				@DisplayName("should return true on role 'VERWALTUNG_USER' independent which vorgangstatus")
-				@ParameterizedTest
-				@EnumSource(value = VorgangStatus.class, names = { "NEU", "ANGENOMMEN", "VERWORFEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN",
-						"WEITERGELEITET" })
-				void shouldReturnTrue(VorgangStatus status) throws Exception {
-					when(remoteService.findVorgangWithEingang(anyString(), any()))
-							.thenReturn(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-
-					doRequest().andExpect(status().isOk());
-				}
-			}
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(SINGLE_PATH, VorgangHeaderTestFactory.ID));
-		}
-	}
-
-	@Disabled("Der Test schreibt die Datei auf die Platte.")
-	@Nested
-	class TestExport {
-
-		@SneakyThrows
-		@Test
-		void shouldCreateZip() {
-			when(remoteService.findVorgangWithEingang(any(), any())).thenReturn(VorgangWithEingangTestFactory.create());
-			when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-			var response = doRequest().andReturn().getResponse();
-			var content = response.getContentAsByteArray();
-			var fileName = getFileName(response);
-
-			writeFile(content, fileName);
-
-			var wroteableFile = FileUtils.getFile(fileName);
-			assertThat(wroteableFile).isNotNull();
-		}
-
-		private String getFileName(MockHttpServletResponse response) {
-			var header = response.getHeaders("Content-Disposition").get(0);
-			return header.substring(header.indexOf("filename=") + 9);
-		}
-
-		@SneakyThrows
-		private void writeFile(byte[] content, String fileName) {
-			var file = new File(fileName);
-			var fos = new FileOutputStream(file);
-			fos.write(content);
-			fos.close();
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(asyncDispatch(
-					mockMvc.perform(get(VorgangController.PATH + "/" + VorgangHeaderTestFactory.ID).header(HttpHeaders.ACCEPT,
-							MediaType.APPLICATION_OCTET_STREAM_VALUE)).andReturn()))
-					.andExpect(status().isOk());
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangListResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangListResponseTestFactory.java
deleted file mode 100644
index d1a9307662770d5b74a9a3c2c350ce9084151fd0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangListResponseTestFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-public class VorgangListResponseTestFactory {
-
-	public static final int TOTAL = 300;
-
-	public static VorgaengeHeaderResponse create() {
-		return createBuilder().build();
-	}
-
-	public static VorgaengeHeaderResponse.VorgaengeHeaderResponseBuilder createBuilder() {
-		return VorgaengeHeaderResponse.builder()
-				.total(TOTAL)
-				.vorgaengeHeader(createList());
-	}
-
-	public static List<VorgangHeader> createList() {
-		return IntStream.range(0, 10)
-				.mapToObj(i -> VorgangHeaderTestFactory.createBuilder().name(i + LoremIpsum.getInstance().getName()).build())
-				.collect(Collectors.toList());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java
deleted file mode 100644
index 94ae793fbbe99920ac5cb16dc8551675ecd9b93d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangModelAssemblerTest.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.statistic.StatisticTestFactory;
-
-class VorgangModelAssemblerTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangModelAssembler modelAssembler;
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private VorgangService vorgangService;
-
-	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	private static final int PAGE_SIZE = 100;
-
-	@DisplayName("To collectionModel")
-	@Nested
-	class TestCollectionModel {
-
-		@BeforeEach
-		void prepareBuilder() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@DisplayName("init model")
-		@Nested
-		class TestInitModel {
-
-			@Test
-			void shouldBeCalled() {
-				var requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder().searchBy(Optional.empty()).build();
-				var response = VorgaengeHeaderResponse.builder().vorgaengeHeader(Collections.emptyList()).total(PAGE_SIZE).build();
-				var entities = Stream.of(VorgangHeaderTestFactory.create());
-				var statistic = StatisticTestFactory.create();
-
-				modelAssembler.toCollectionModel(entities, response, requestCriteria, statistic);
-
-				verify(modelAssembler).initModel(entities, statistic);
-			}
-		}
-
-		@DisplayName("next link")
-		@Nested
-		class TestNextLink {
-
-			@Test
-			void shouldAddIfPagesLeft() {
-				var requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder().searchBy(Optional.empty()).build();
-				var response = VorgaengeHeaderResponse.builder().vorgaengeHeader(Collections.emptyList()).total(PAGE_SIZE).build();
-
-				var model = modelAssembler.toCollectionModel(Stream.of(VorgangHeaderTestFactory.create()), response, requestCriteria,
-						StatisticTestFactory.create());
-
-				assertThat(model.getLink(VorgangModelAssembler.REL_NEXT).get()).extracting(Link::getHref)
-						.isEqualTo(VorgangController.PATH + "?page=1&limit=100&assignedTo=" + UserProfileTestFactory.ID.toString() + "&status=NEU");
-			}
-
-			@Test
-			void shouldNotAddIfLastPage() {
-				var requestCriteria = FindVorgaengeRequestCriteriaTestFactory.create();
-
-				var response = VorgaengeHeaderResponse.builder()
-						.vorgaengeHeader(List.of(VorgangHeaderTestFactory.create()))
-						.total(1).build();
-
-				var model = modelAssembler.toCollectionModel(Stream.of(VorgangHeaderTestFactory.create()), response, requestCriteria,
-						StatisticTestFactory.create());
-
-				assertThat(model.getLink(VorgangModelAssembler.REL_NEXT)).isNotPresent();
-			}
-		}
-
-		@DisplayName("previous link")
-		@Nested
-		class TestPreviousLink {
-
-			@Test
-			void shouldAddIfNotFirstPage() {
-				var requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder()
-						.page(1)
-						.limit(1)
-						.searchBy(Optional.empty())
-						.build();
-				var response = VorgaengeHeaderResponse.builder()
-						.vorgaengeHeader(List.of(VorgangHeaderTestFactory.create()))
-						.total(200)
-						.build();
-
-				var model = modelAssembler.toCollectionModel(Stream.of(VorgangHeaderTestFactory.create(), VorgangHeaderTestFactory.create()),
-						response,
-						requestCriteria, StatisticTestFactory.create());
-
-				assertThat(model.getLink(VorgangModelAssembler.REL_PREVIOUS).get()).extracting(Link::getHref)
-						.isEqualTo(VorgangController.PATH + "?page=0&limit=1&assignedTo=" + UserProfileTestFactory.ID.toString() + "&status=NEU");
-			}
-
-			@Test
-			void shouldNotAddIfFirstPage() {
-				var requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder().page(0).build();
-				var response = VorgaengeHeaderResponse.builder().vorgaengeHeader(Collections.emptyList()).total(PAGE_SIZE).build();
-
-				var model = modelAssembler.toCollectionModel(Stream.of(VorgangHeaderTestFactory.create()), response, requestCriteria,
-						StatisticTestFactory.create());
-
-				assertThat(model.getLink(VorgangModelAssembler.REL_PREVIOUS)).isNotPresent();
-			}
-		}
-
-		@DisplayName("add self link")
-		@Nested
-		class TestSelfLink {
-
-			final FindVorgaengeHeaderRequestCriteria requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder()
-					.page(1)
-					.limit(1)
-					.build();
-			final VorgaengeHeaderResponse response = VorgaengeHeaderResponse.builder()
-					.vorgaengeHeader(List.of(VorgangHeaderTestFactory.create()))
-					.total(200)
-					.build();
-
-			@Test
-			void shouldAddLink() {
-				var model = modelAssembler.toCollectionModel(Stream.of(VorgangHeaderTestFactory.create(), VorgangHeaderTestFactory.create()),
-						response,
-						requestCriteria, StatisticTestFactory.create());
-
-				assertThat(model.getLink(IanaLinkRelations.SELF_VALUE)).isPresent();
-				assertThat(model.getLink(IanaLinkRelations.SELF_VALUE).get()).extracting(Link::getHref).isEqualTo(VorgangController.PATH);
-			}
-		}
-	}
-
-	@DisplayName("Build page link")
-	@Nested
-	class TestBuildPageLink {
-
-		private final String linkRel = "dummyLinkRel";
-		final FindVorgaengeHeaderRequestCriteria requestCriteria = FindVorgaengeRequestCriteriaTestFactory.createBuilder().build();
-
-		@Test
-		void shouldContainsPage() {
-			var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-			assertThat(link.getHref()).contains(VorgangController.PARAM_PAGE + "=0");
-		}
-
-		@Test
-		void shouldContainsLimit() {
-			var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-			assertThat(link.getHref()).contains(VorgangController.PARAM_LIMIT + "=" + FindVorgaengeRequestCriteriaTestFactory.LIMIT);
-		}
-
-		@Test
-		void shouldHaveLinkRel() {
-			var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-			assertThat(link.hasRel(linkRel)).isTrue();
-		}
-
-		@DisplayName("search by")
-		@Nested
-		class TestSearchBy {
-
-			@Test
-			void shouldAddAsParamIfExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-				assertThat(link.getHref())
-						.contains(VorgangController.PARAM_SEARCH + "="
-								+ FindVorgaengeRequestCriteriaTestFactory.SEARCH_BY.replace(StringUtils.SPACE, "%20"));
-			}
-
-			@Test
-			void shouldNOTaddIfNotExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria.toBuilder().searchBy(Optional.empty()).build());
-
-				assertThat(link.getHref()).doesNotContain(VorgangController.PARAM_SEARCH);
-			}
-		}
-
-		@DisplayName("assignedTo")
-		@Nested
-		class TestAssignedTo {
-
-			@Test
-			void shouldAddAsParamIfShouldFilter() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-				assertThat(link.getHref()).contains(VorgangController.PARAM_ASSIGNED_TO + "=" + UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldNOTaddIfShouldNotFilter() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria.toBuilder().filterCriteria(
-						FilterCriteriaTestFactory.createBuilder().filterByAssignedTo(false).build()).build());
-
-				assertThat(link.getHref()).doesNotContain(VorgangController.PARAM_ASSIGNED_TO);
-			}
-
-			@DisplayName("getAssignedToValue")
-			@Nested
-			class TestGetAssignedToValue {
-
-				@Test
-				void shouldReturnValueIfExists() {
-					var assignedToValue = modelAssembler.getAssignedToValue(FilterCriteriaTestFactory.create());
-
-					assertThat(assignedToValue).isEqualTo(UserProfileTestFactory.ID.toString());
-				}
-
-				@Test
-				void shouldReturnEmptyStringIfNotExists() {
-					var assignedToValue = modelAssembler
-							.getAssignedToValue(FilterCriteriaTestFactory.createBuilder().assignedTo(Optional.empty()).build());
-
-					assertThat(assignedToValue).isEqualTo(StringUtils.EMPTY);
-				}
-			}
-		}
-
-		@DisplayName("status")
-		@Nested
-		class TestStatus {
-
-			@Test
-			void shouldAddAsParamIfExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria);
-
-				assertThat(link.getHref()).contains(VorgangController.PARAM_STATUS + "=" + FilterCriteriaTestFactory.VORGANG_STATUS);
-			}
-
-			@Test
-			void shouldNOTaddIfNotExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria.toBuilder().filterCriteria(
-						FilterCriteriaTestFactory.createBuilder().status(Optional.empty()).build()).build());
-
-				assertThat(link.getHref()).doesNotContain(VorgangController.PARAM_STATUS);
-			}
-		}
-
-		@DisplayName("next wiedervorlage frist")
-		@Nested
-		class TestWiedervorlagen {
-
-			@Test
-			void shouldAddAsParamExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria.toBuilder()
-						.filterCriteria(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(true).build()).build());
-
-				assertThat(link.getHref())
-						.contains(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST + "=" + VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST_EXISTS);
-			}
-
-			@Test
-			void shouldNOTaddIfNotExists() {
-				var link = modelAssembler.buildPageLink(0, linkRel, requestCriteria.toBuilder().filterCriteria(
-						FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(false).build()).build());
-
-				assertThat(link.getHref()).doesNotContain(VorgangController.PARAM_NEXT_WIEDERVORLAGE_FRIST);
-			}
-		}
-	}
-
-	@Nested
-	class TestLinksOnModel {
-
-		private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void beforeEach() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = toModel().getLink(IanaLinkRelations.SELF_VALUE);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(VorgangController.PATH + "/" + VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveVorgangMitEingangLink() {
-			var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_MIT_EINGANG);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(VorgangController.PATH + "/" + VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveAssignLink() {
-			doReturn(true).when(modelAssembler).isAssigneable(vorgang);
-
-			var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(buildCommandLink());
-		}
-
-		@Test
-		void shouldNotHaveAssignLink() {
-			doReturn(false).when(modelAssembler).isAssigneable(vorgang);
-
-			var link = toModel().getLink(VorgangModelAssembler.REL_VORGANG_ASSIGN);
-
-			assertThat(link).isEmpty();
-		}
-
-		@Test
-		void shouldHaveWiedervorlagenLink() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-
-			var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref)
-					.isEqualTo("/api/wiedervorlages?vorgangId=" + VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldNotHaveWiedervorlagenLink() {
-			var link = toModel().getLink(VorgangModelAssembler.REL_WIEDERVORLAGEN);
-
-			assertThat(link).isEmpty();
-		}
-
-		private String buildCommandLink() {
-			return String.format("/api/vorgangs/%s/relations/%s/%s/commands", VorgangHeaderTestFactory.ID,
-					VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION);
-		}
-
-		private EntityModel<Vorgang> toModel() {
-			return modelAssembler.toModel(vorgang);
-		}
-	}
-
-	@Nested
-	class TestIsAssigneable {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shoudCheckIfVorgangIsEditable() {
-			givenVerwaltungUser();
-
-			modelAssembler.isAssigneable(vorgang);
-
-			verify(vorgangService).isVorgangEditable(vorgang);
-		}
-
-		@Test
-		void shouldReturnTrueForVerwaltungUser() {
-			givenVerwaltungUser();
-			givenVorgangIsEditable();
-
-			assertThat(modelAssembler.isAssigneable(vorgang)).isTrue();
-		}
-
-		@Test
-		void shouldReturnTrueForPoststelleUser() {
-			givenNotVerwaltungUser();
-			givenPoststelleUser();
-			givenVorgangIsEditable();
-
-			assertThat(modelAssembler.isAssigneable(vorgang)).isTrue();
-		}
-
-		@Test
-		void shouldReturnFalseForNotPoststelleUser() {
-			givenNotVerwaltungUser();
-			givenNotPoststelleUser();
-
-			assertThat(modelAssembler.isAssigneable(vorgang)).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseForVerwaltungUserAndVorgangNotEditable() {
-			givenVerwaltungUser();
-			givenVorgangIsNotEditable();
-
-			var assignable = modelAssembler.isAssigneable(vorgang);
-
-			assertThat(assignable).isFalse();
-		}
-
-		@Test
-		void shouldReturnFalseForPoststelleUserAndVorgangNotEditable() {
-			givenNotVerwaltungUser();
-			givenPoststelleUser();
-			givenVorgangIsNotEditable();
-
-			var assignable = modelAssembler.isAssigneable(vorgang);
-
-			assertThat(assignable).isFalse();
-		}
-
-		private void givenVerwaltungUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true);
-		}
-
-		private void givenNotVerwaltungUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(false);
-		}
-
-		private void givenPoststelleUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-		}
-
-		private void givenNotPoststelleUser() {
-			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-		}
-
-		private void givenVorgangIsEditable() {
-			doReturn(true).when(vorgangService).isVorgangEditable(vorgang);
-		}
-
-		private void givenVorgangIsNotEditable() {
-			doReturn(false).when(vorgangService).isVorgangEditable(vorgang);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java
deleted file mode 100644
index 06361c8e3919a0642f726ff8b9a7e7f2ff73d212..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
-
-public class VorgangPropertyTestFactory {
-
-	public static VorgangProperty create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangProperty.VorgangPropertyBuilder createBuilder() {
-		return VorgangProperty.builder()
-				.formEngineName(EingangHeaderTestFactory.FORM_ENGINE_NAME)
-				.formId(EingangHeaderTestFactory.FORM_ID);
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangRemoteServiceTest.java
deleted file mode 100644
index f3b2aa79d3b618844df34c2fada22c0d38d415ec..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangRemoteServiceTest.java
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangRemoteService.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.vorgang.common.GrpcQueryOperator;
-import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
-import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcQuery;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
-import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
-
-class VorgangRemoteServiceTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private VorgangRemoteService service;
-
-	@Mock
-	private VorgangServiceBlockingStub serviceStub;
-	@Mock
-	private VorgangHeaderMapper vorgangHeaderMapper;
-	@Mock
-	private VorgangWithEingangMapper vorgangWithEingangMapper;
-
-	private final GrpcFilterBy filterBy = GrpcFilterByTestFactory.create();
-
-	private final GrpcQuery query = GrpcQueryTestFactory.create();
-
-	@DisplayName("Find vorgaenge header")
-	@Nested
-	class TestFindVorgaengeHeader {
-
-		private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.create();
-
-		@DisplayName("should")
-		@Nested
-		class TestProzess {
-
-			private final FindVorgaengeHeaderRequestCriteria requestCriteria = FindVorgaengeRequestCriteriaTestFactory.create();
-
-			@BeforeEach
-			void initMockReturnValues() {
-				doReturn(query).when(service).createQuery(any());
-				doReturn(filterBy).when(service).createFilterBy(any());
-				doReturn(VorgangListResponseTestFactory.create()).when(service).buildVorgaengeHeaderResponse(any());
-			}
-
-			@Test
-			void callBuildRequest() {
-				callService();
-
-				verify(service).buildFindVorgangRequest(requestCriteria, filterCriteria);
-			}
-
-			@Test
-			void callCreateQuery() {
-				callService();
-
-				verify(service).createQuery(filterCriteria);
-			}
-
-			@Test
-			void callCreateFilterBy() {
-				callService();
-
-				verify(service).createFilterBy(filterCriteria);
-			}
-
-			@Test
-			void callStub() {
-				callService();
-
-				verify(serviceStub).findVorgang(any());
-			}
-
-			private VorgaengeHeaderResponse callService() {
-				return service.findVorgaengeHeader(requestCriteria, filterCriteria);
-			}
-		}
-
-		@DisplayName("build find vorgang request")
-		@Nested
-		class TestBuildFindVorgangRequest {
-
-			@BeforeEach
-			void initMockReturnValues() {
-				doReturn(query).when(service).createQuery(any());
-				doReturn(filterBy).when(service).createFilterBy(any());
-			}
-
-			@Test
-			void shouldSetLimit() {
-				var request = callService();
-
-				assertThat(request.getLimit()).isEqualTo(FindVorgaengeRequestCriteriaTestFactory.LIMIT);
-			}
-
-			@Test
-			void shouldSetOffset() {
-				var request = callService();
-
-				assertThat(request.getOffset())
-						.isEqualTo(FindVorgaengeRequestCriteriaTestFactory.PAGE * FindVorgaengeRequestCriteriaTestFactory.LIMIT);
-			}
-
-			@Test
-			void shouldSetQuery() {
-				var request = callService();
-
-				assertThat(request.getQuery()).isEqualTo(query);
-			}
-
-			@Test
-			void shouldSetFilterBy() {
-				var request = callService();
-
-				assertThat(request.getFilterBy()).isEqualTo(filterBy);
-			}
-
-			@Test
-			void shouldSetOrderBy() {
-				var request = callService();
-
-				assertThat(request.getOrderBy().name()).isEqualTo(FindVorgaengeRequestCriteriaTestFactory.ORDER_BY.name());
-			}
-
-			private GrpcFindVorgangRequest callService() {
-				return service.buildFindVorgangRequest(FindVorgaengeRequestCriteriaTestFactory.create(), filterCriteria);
-			}
-		}
-
-		@DisplayName("response")
-		@Nested
-		class TestResponse {
-
-			private final GrpcFindVorgangResponse findVorgangRespone = GrpcVorgangTestFactory.createVorgangResponse();
-			private final VorgangHeader vorgangHeader = VorgangHeaderTestFactory.create();
-
-			@BeforeEach
-			void initMockReturnValues() {
-				when(vorgangHeaderMapper.toVorgangHeader(any())).thenReturn(vorgangHeader);
-			}
-
-			@Test
-			void shouldReturnMappedVorgangHeader() {
-				var vorgangResponse = callService();
-
-				assertThat(vorgangResponse.getVorgaengeHeader()).hasSize(1);
-				assertThat(vorgangResponse.getVorgaengeHeader().get(0)).isEqualTo(vorgangHeader);
-			}
-
-			@Test
-			void shouldReturnTotal() {
-				var vorgangResponse = callService();
-
-				assertThat(vorgangResponse.getTotal()).isEqualTo(findVorgangRespone.getTotal());
-			}
-
-			@Test
-			void shouldMapVorgangHeader() {
-				callService();
-
-				verify(vorgangHeaderMapper).toVorgangHeader(any());
-			}
-
-			private VorgaengeHeaderResponse callService() {
-				return service.buildVorgaengeHeaderResponse(findVorgangRespone);
-			}
-		}
-	}
-
-	@Nested
-	class TestCreateQuery {
-
-		@Nested
-		class WhenHasUngeleseneNachrichtenIsTrue {
-
-			private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.createBuilder().hasUngeleseneNachrichten(true).build();
-
-			@Test
-			void shouldAddExpression() {
-				var query = service.createQuery(filterCriteria);
-
-				assertThat(query.getExpressionsList()).extracting(GrpcVorgangQueryExpression::getPath)
-						.containsOnlyOnce(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH);
-			}
-
-			@Test
-			void shouldHaveOperator() {
-				var expression = getExpression(service.createQuery(filterCriteria));
-
-				assertThat(expression.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
-			}
-
-			@Test
-			void shouldHaveOperandBoolValue() {
-				var expression = getExpression(service.createQuery(filterCriteria));
-
-				assertThat(expression.getOperandBoolValue()).isTrue();
-			}
-
-			private GrpcVorgangQueryExpression getExpression(GrpcQuery query) {
-				return query.getExpressionsList().stream()
-						.filter(expression -> expression.getPath().equals(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)).findFirst().orElseThrow();
-			}
-		}
-
-		@Nested
-		class WhenHasUngeleseneNachrichtenIsFalse {
-
-			private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.createBuilder().hasUngeleseneNachrichten(false).build();
-
-			@Test
-			void shouldNotAddExpression() {
-				var query = service.createQuery(filterCriteria);
-
-				assertThat(query.getExpressionsList()).extracting(GrpcVorgangQueryExpression::getPath)
-						.isNotEqualTo(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH);
-			}
-		}
-	}
-
-	@DisplayName("Create filterBy")
-	@Nested
-	class TestCreateFilterBy {
-
-		@Test
-		void shouldSetFilterByOrganisationsEinheitId() {
-			var filterCriteria = createFilterBy();
-
-			assertThat(filterCriteria.getFilterByOrganisationseinheitenId())
-					.isEqualTo(FilterCriteriaTestFactory.FILTER_BY_ORGANISATIONS_EINHEITEN_ID);
-		}
-
-		@Test
-		void shouldSetOrganisationsEinheitIds() {
-			var filterCriteria = createFilterBy();
-
-			assertThat(filterCriteria.getOrganisationseinheitIdList()).containsExactly(FilterCriteriaTestFactory.ORGANISATIONS_EINHEIT_ID);
-		}
-
-		@DisplayName("filterAssignedTo")
-		@Nested
-		class TestFilterAssignedTo {
-
-			@Test
-			void shouldBeSet() {
-				var filterCriteria = createFilterBy();
-
-				assertThat(filterCriteria.getFilterByAssignedTo()).isTrue();
-			}
-		}
-
-		@DisplayName("assignedTo")
-		@Nested
-		class TestAssignedTo {
-
-			@Test
-			void shouldBeSetIfExists() {
-				var filterCriteria = createFilterBy();
-
-				assertThat(filterCriteria.getAssignedTo()).isEqualTo(UserProfileTestFactory.ID.toString());
-			}
-
-			@Test
-			void shouldNotBeSetIfNotExist() {
-				var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().assignedTo(Optional.empty()).build());
-
-				assertThat(filterCriteria.getAssignedTo()).isEqualTo(StringUtils.EMPTY);
-			}
-		}
-
-		@DisplayName("status")
-		@Nested
-		class TestStatus {
-
-			@Test
-			void shouldBeSetIfExists() {
-				var filterCriteria = createFilterBy();
-
-				assertThat(filterCriteria.getStatusList()).containsExactly(FilterCriteriaTestFactory.VORGANG_STATUS.toString());
-			}
-
-			@Test
-			void shouldNotBeSetIfNotExist() {
-				var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().status(Optional.empty()).build());
-
-				assertThat(filterCriteria.getStatusCount()).isZero();
-
-			}
-		}
-
-		@DisplayName("hasNextWiedervorlageFrist")
-		@Nested
-		class TestHasNextWiedervorlageFrist {
-
-			@Test
-			void shouldBeSetToFalse() {
-				var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(false).build());
-
-				assertThat(filterCriteria.getHasNextWiedervorlageFrist()).isFalse();
-			}
-
-			@Test
-			void shouldNotBeSetToTrue() {
-				var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(true).build());
-
-				assertThat(filterCriteria.getHasNextWiedervorlageFrist()).isTrue();
-			}
-		}
-
-		private GrpcFilterBy createFilterBy() {
-			return createFilterBy(FilterCriteriaTestFactory.create());
-		}
-
-		private GrpcFilterBy createFilterBy(FilterCriteria filterCriteria) {
-			return service.createFilterBy(filterCriteria);
-		}
-	}
-
-	@DisplayName("Find vorgangWithEingang")
-	@Nested
-	class TestFindVorgangWithEingang {
-
-		private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.create();
-
-		@Nested
-		class TestCalls {
-
-			private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-			@BeforeEach
-			void mockReturnValue() {
-				when(serviceStub.findVorgangWithEingang(any()))
-						.thenReturn(GrpcVorgangWithEingangResponseTestFactory.createVorgangWithEingangResponse());
-				when(vorgangWithEingangMapper.toVorgangWithEingang(any())).thenReturn(vorgangWithEingang);
-				doReturn(filterBy).when(service).createFilterBy(any());
-			}
-
-			@Test
-			void shouldCreateFilterBy() {
-				callService();
-
-				verify(service).createFilterBy(any());
-			}
-
-			@Test
-			void shouldCallBuildRequest() {
-				callService();
-
-				verify(service).buildFindVorgangWithEingangRequest(VorgangHeaderTestFactory.ID, filterCriteria);
-			}
-
-			@Test
-			void shouldCallStub() {
-				callService();
-
-				verify(serviceStub).findVorgangWithEingang(any());
-			}
-
-			@Test
-			void shouldCallMapper() {
-				callService();
-
-				verify(vorgangWithEingangMapper).toVorgangWithEingang(any());
-			}
-
-			@Test
-			void shouldReturn() {
-				var result = callService();
-
-				assertThat(result).isEqualTo(vorgangWithEingang);
-			}
-		}
-
-		@DisplayName("build request")
-		@Nested
-		class TestBuildRequest {
-
-			@BeforeEach
-			void mockReturnValue() {
-				doReturn(filterBy).when(service).createFilterBy(any());
-			}
-
-			@Test
-			void shouldHaveFilter() {
-				var filter = service.buildFindVorgangWithEingangRequest(VorgangHeaderTestFactory.ID, filterCriteria);
-
-				assertThat(filter.getFilterBy()).isNotNull();
-			}
-
-			@Test
-			void shouldContainsVorgangId() {
-				var filter = service.buildFindVorgangWithEingangRequest(VorgangHeaderTestFactory.ID, filterCriteria);
-
-				assertThat(filter.getId()).isEqualTo(VorgangHeaderTestFactory.ID);
-			}
-		}
-
-		private VorgangWithEingang callService() {
-			return service.findVorgangWithEingang(VorgangHeaderTestFactory.ID, filterCriteria);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangServiceTest.java
deleted file mode 100644
index fa26b153010675a2873b292c5ae8716e90ce3f98..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangServiceTest.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-class VorgangServiceTest {
-
-	@Spy
-	@InjectMocks // NOSONAR
-	private VorgangService service;
-
-	@Mock
-	private VorgangRemoteService remoteService;
-
-	@Mock
-	private CurrentUserService userService;
-
-	@DisplayName("Find vorgaenge header")
-	@Nested
-	class TestFindVorgaengeHeader {
-
-		private final FindVorgaengeHeaderRequestCriteria requestCriteria = FindVorgaengeRequestCriteriaTestFactory.create();
-		private final FilterCriteria filterCriteria = FilterCriteria.builder().build();
-
-		@Test
-		void shouldCallRemoteService() {
-			doReturn(requestCriteria).when(service).setOrderBy(any());
-			doReturn(filterCriteria).when(service).buildFilterCriteria(any());
-
-			service.findVorgaengeHeader(requestCriteria);
-
-			verify(remoteService).findVorgaengeHeader(requestCriteria, filterCriteria);
-		}
-
-		@Test
-		void shouldBuildFilterCriteria() {
-			when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-			service.findVorgaengeHeader(requestCriteria);
-
-			verify(service).buildFilterCriteria(requestCriteria.getFilterCriteria());
-		}
-
-		@DisplayName("order by")
-		@Nested
-		class TestOrderBy {
-
-			@DisplayName("for " + UserRole.EINHEITLICHER_ANSPRECHPARTNER)
-			@Nested
-			class TestForEinheitlicherAnsprechpartner {
-
-				@BeforeEach
-				void mockUserService() {
-					when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-				}
-
-				@Test
-				void shouldSetEaPriority() {
-					var request = service.setOrderBy(FindVorgaengeRequestCriteriaTestFactory.create());
-
-					assertThat(request.getOrderBy()).isEqualTo(OrderBy.EA_PRIORITY);
-				}
-			}
-
-			@DisplayName("for " + UserRole.VERWALTUNG_POSTSTELLE)
-			@Nested
-			class TestForVerwaltungPoststelle {
-
-				@BeforeEach
-				void mockUserService() {
-					when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-					when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-				}
-
-				@Test
-				void shouldSetPriority() {
-
-					var request = service.setOrderBy(FindVorgaengeRequestCriteriaTestFactory.create());
-
-					assertThat(request.getOrderBy()).isEqualTo(OrderBy.PRIORITY);
-				}
-			}
-
-			@DisplayName("for " + UserRole.VERWALTUNG_USER)
-			@Nested
-			class TestForVerwaltungUser {
-
-				@BeforeEach
-				void mockUserService() {
-					when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-					when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-				}
-
-				@Test
-				void shouldSetToPriorityAsDefault() {
-					var request = service.setOrderBy(FindVorgaengeRequestCriteriaTestFactory.createBuilder()
-							.filterCriteria(FilterCriteriaTestFactory.createBuilder()
-									.hasNextWiedervorlageFrist(false).status(Optional.empty()).build())
-							.build());
-
-					assertThat(request.getOrderBy()).isEqualTo(OrderBy.PRIORITY);
-				}
-
-				@Test
-				void shouldSetToCreatedAtDescOnExistingStatus() {
-					var request = service.setOrderBy(FindVorgaengeRequestCriteriaTestFactory.createBuilder()
-							.filterCriteria(FilterCriteriaTestFactory.createBuilder()
-									.hasNextWiedervorlageFrist(false).build())
-							.build());
-
-					assertThat(request.getOrderBy()).isEqualTo(OrderBy.CREATED_AT_DESC);
-				}
-
-				@Test
-				void shouldSetToNextWiedervorlageFristIfItsTrue() {
-					var request = service.setOrderBy(FindVorgaengeRequestCriteriaTestFactory.createBuilder()
-							.filterCriteria(FilterCriteriaTestFactory.createBuilder()
-									.hasNextWiedervorlageFrist(true)
-									.status(Optional.empty()).build())
-							.build());
-
-					assertThat(request.getOrderBy()).isEqualTo(OrderBy.NEXT_WIEDERVORLAGE_FRIST);
-				}
-			}
-		}
-	}
-
-	@DisplayName("Build filter criteria")
-	@Nested
-	class TestBuildFilterCriteria {
-
-		@DisplayName("assignedTo")
-		@Nested
-		class TestAssignedTo {
-
-			@BeforeEach
-			void mockUserService() {
-				when(userService.hasRole(any())).thenReturn(false);
-				when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-			}
-
-			@Test
-			void shouldBeSetIfExists() {
-				var filterCriteria = buildFilterCriteria(FilterCriteriaTestFactory.create());
-
-				assertThat(filterCriteria.getAssignedTo()).hasValue(UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldNotBeSetIfNotExist() {
-				var filterCriteria = buildFilterCriteria(FilterCriteriaTestFactory.createBuilder().assignedTo(Optional.empty()).build());
-
-				assertThat(filterCriteria.getAssignedTo()).isNotPresent();
-
-			}
-		}
-
-		@DisplayName("status")
-		@Nested
-		class TestStatus {
-
-			@BeforeEach
-			void mockUserService() {
-				when(userService.hasRole(any())).thenReturn(false);
-				when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-			}
-
-			@Test
-			void shouldBeSetIfExists() {
-				var filterCriteria = buildFilterCriteria(FilterCriteriaTestFactory.create());
-
-				assertThat(filterCriteria.getStatus()).hasValue(VorgangStatus.NEU);
-			}
-
-			@Test
-			void shouldNotBeSetIfNotExist() {
-				var filterCriteria = buildFilterCriteria(FilterCriteriaTestFactory.createBuilder().status(Optional.empty()).build());
-
-				assertThat(filterCriteria.getStatus()).isNotPresent();
-
-			}
-		}
-
-		@DisplayName("for " + UserRole.VERWALTUNG_POSTSTELLE)
-		@Nested
-		class TestForVerwaltungPoststelle {
-
-			@BeforeEach
-			void mockUser() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(true);
-			}
-
-			@Test
-			void shouldFillFilterByOrganisationseinheiten() {
-				var filterBy = buildFilterCriteria();
-
-				assertThat(filterBy.isFilterByOrganisationseinheitenId()).isFalse();
-			}
-
-			@Test
-			void shouldFillStatus() {
-				var filterBy = buildFilterCriteria();
-
-				assertThat(filterBy.getStatus()).hasValue(VorgangStatus.NEU);
-			}
-		}
-
-		@DisplayName("for " + UserRole.EINHEITLICHER_ANSPRECHPARTNER)
-		@Nested
-		class TestForEa {
-
-			@BeforeEach
-			void mockUser() {
-				when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(false);
-				when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-			}
-
-			@Test
-			void shouldFillFilterByOrganisationseinheiten() {
-				var filterBy = buildFilterCriteria();
-
-				assertThat(filterBy.isFilterByOrganisationseinheitenId()).isFalse();
-			}
-		}
-
-		@DisplayName("for " + UserRole.VERWALTUNG_USER)
-		@Nested
-		class TestForVerwaltungUser {
-
-			@BeforeEach
-			void mockUser() {
-				when(userService.hasRole(anyString())).thenReturn(false);
-			}
-
-			@Test
-			void shouldCallUserService() {
-				when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-				buildFilterCriteria();
-
-				verify(userService).getUser();
-			}
-
-			@Test
-			void shouldFillFilterByOrganisationseinheitenId() {
-				when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-				var filterBy = buildFilterCriteria();
-
-				assertThat(filterBy.isFilterByOrganisationseinheitenId()).isTrue();
-			}
-
-			@Test
-			void shouldFillOrganisationseinheitenId() {
-				when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-				var filterBy = buildFilterCriteria();
-
-				assertThat(filterBy.getOrganisationsEinheitenId()).containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
-			}
-		}
-
-		private FilterCriteria buildFilterCriteria() {
-			return buildFilterCriteria(FilterCriteria.builder().build());
-		}
-
-		private FilterCriteria buildFilterCriteria(FilterCriteria filterCriteria) {
-			return service.buildFilterCriteria(filterCriteria);
-		}
-	}
-
-	@DisplayName("Find vorgangWithEingang")
-	@Nested
-	class TestFindVorgangWithEingang {
-
-		private final FilterCriteria filterCriteria = FilterCriteria.builder().build();
-
-		@Test
-		void shouldCallRemoteService() {
-			doReturn(filterCriteria).when(service).buildFilterCriteria(any());
-
-			service.findVorgangWithEingang(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findVorgangWithEingang(VorgangHeaderTestFactory.ID, filterCriteria);
-		}
-
-		@Test
-		void shouldBuildFilterCriteria() {
-			when(userService.getUser()).thenReturn(UserProfileTestFactory.create());
-
-			service.findVorgangWithEingang(VorgangHeaderTestFactory.ID);
-
-			verify(service).buildFilterCriteria(any(FilterCriteria.class));
-		}
-	}
-
-	@Nested
-	class TestIsVorgangEditable {
-
-		@Nested
-		class OnIsVorgangWithEingang {
-
-			private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-			@Test
-			void shouldCheckIfVorgangIsEditable() {
-				service.isVorgangEditable(vorgangWithEingang);
-
-				verify(service).isVorgangWithEingangEditable(vorgangWithEingang);
-			}
-
-			@ParameterizedTest
-			@ValueSource(booleans = { true, false })
-			void shouldReturnCheckResult(boolean checkResult) {
-				when(service.isVorgangWithEingangEditable(vorgangWithEingang)).thenReturn(checkResult);
-
-				var editable = service.isVorgangEditable(vorgangWithEingang);
-
-				assertThat(editable).isEqualTo(checkResult);
-			}
-		}
-
-		@Nested
-		class OnIsNotVorgangWithEingang {
-
-			private final Vorgang vorgang = VorgangHeaderTestFactory.create();
-			private final VorgangWithEingang vorgangWithEingang = VorgangWithEingangTestFactory.create();
-
-			@BeforeEach
-			void init() {
-				doReturn(vorgangWithEingang).when(service).findVorgangWithEingang(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldFindVorgangWithEingang() {
-				service.isVorgangEditable(vorgang);
-
-				verify(service).findVorgangWithEingang(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldCheckIfVorgangIsEditable() {
-				service.isVorgangEditable(vorgang);
-
-				verify(service).isVorgangWithEingangEditable(vorgangWithEingang);
-			}
-
-			@ParameterizedTest
-			@ValueSource(booleans = { true, false })
-			void shouldReturnCheckResult(boolean checkResult) {
-				when(service.isVorgangWithEingangEditable(vorgangWithEingang)).thenReturn(checkResult);
-
-				var editable = service.isVorgangEditable(vorgang);
-
-				assertThat(editable).isEqualTo(checkResult);
-			}
-		}
-	}
-
-	@Nested
-	class TestIsVorgangWithEingangEditable {
-
-		@ParameterizedTest
-		@EnumSource
-		void shouldBeFalseWhenVorgangIsLocked(VorgangStatus status) {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder().locked(true).build())
-					.status(status)
-					.build();
-
-			var editable = service.isVorgangWithEingangEditable(vorgang);
-
-			assertThat(editable).isFalse();
-		}
-
-		@Test
-		void shouldBeFalseWhenVorgangZuLoeschen() {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder().locked(false).build())
-					.status(VorgangStatus.ZU_LOESCHEN)
-					.build();
-
-			var editable = service.isVorgangWithEingangEditable(vorgang);
-
-			assertThat(editable).isFalse();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ZU_LOESCHEN")
-		void shouldBeTrueWhenVorgangIsNotZuLoeschen(VorgangStatus status) {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder()
-					.header(VorgangHeadTestFactory.createBuilder().locked(false).build())
-					.status(status)
-					.build();
-
-			var editable = service.isVorgangWithEingangEditable(vorgang);
-
-			assertThat(editable).isTrue();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ZU_LOESCHEN")
-		void shouldBeTrueIfHeaderIsNull(VorgangStatus status) {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder()
-					.header(null)
-					.status(status)
-					.build();
-
-			var editable = service.isVorgangWithEingangEditable(vorgang);
-
-			assertThat(editable).isTrue();
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java
deleted file mode 100644
index c0d0d621086cc1897b118c89dec48315eb47a45a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangURIResolverTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-
-class VorgangURIResolverTest {
-
-	private VorgangURIResolver resolver = new VorgangURIResolver();
-
-	@Nested
-	class TestResolve {
-
-		private static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-		@ParameterizedTest
-		@MethodSource("invalidVorgangUris")
-		void shouldReturnEmptyIfUriIsNotRecognized(String uri) {
-			var result = resolver.resolve(uri);
-
-			assertThat(result).isEmpty();
-		}
-
-		@ParameterizedTest
-		@MethodSource("validVorgangUris")
-		void shouldReturnLink(String uri) {
-			var result = resolver.resolve(uri);
-
-			assertThat(result).isPresent();
-		}
-
-		@Nested
-		class TestVorgangLink {
-
-			@ParameterizedTest
-			@MethodSource("de.ozgcloud.alfa.vorgang.VorgangURIResolverTest$TestResolve#validVorgangUris")
-			void shouldHaveCorrectRelValue(String uri) {
-				var result = resolver.resolve(uri);
-
-				assertThat(result).get().extracting(Link::getRel).extracting(LinkRelation::value).isEqualTo(VorgangURIResolver.REL_NAME);
-			}
-
-			@ParameterizedTest
-			@MethodSource("de.ozgcloud.alfa.vorgang.VorgangURIResolverTest$TestResolve#validVorgangUris")
-			void shouldHaveHrefOfVorgang(String uri) {
-				var result = resolver.resolve(uri);
-
-				assertThat(result).get().extracting(Link::getHref).isEqualTo("/api/vorgangs/" + VORGANG_ID);
-			}
-		}
-
-		private static Stream<String> validVorgangUris() {
-			return Stream.of(
-					"dns:///dummy.service/vorgangs/" + VORGANG_ID,
-					"dns:///dummy.service:123/vorgangs/" + VORGANG_ID,
-					"http://dummy.web.url/vorgangs/" + VORGANG_ID);
-		}
-
-		private static Stream<String> invalidVorgangUris() {
-			return Stream.of("dns:///dummy.service/res-a/" + VORGANG_ID,
-					"dns:///dummy.service/" + VORGANG_ID,
-					"dns:///dummy.service/vorgangs/xyz/" + VORGANG_ID,
-					"dns:///dummy.service/vorgangs/" + VORGANG_ID + "/" + VORGANG_ID);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperITCase.java
deleted file mode 100644
index ae4343470ef40e7defacebd787ae9386262c9248..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperITCase.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-import de.ozgcloud.vorgang.vorgang.GrpcFormData;
-import de.ozgcloud.vorgang.vorgang.GrpcFormField;
-
-@SpringBootTest
-class VorgangWithEingangMapperITCase {
-
-	@Autowired
-	private VorgangWithEingangMapper mapper;
-
-	@Nested
-	class TestToVorgangWithEingang {
-
-		@Nested
-		class TestMappingFormData {
-
-			@Test
-			void shouldMapListOfStrings() {
-				var vorgang = mapper.toVorgangWithEingang(GrpcVorgangWithEingangTestFactory.createWithEingang(buildEingang()));
-
-				assertThat(vorgang.getEingang().getFormData()).containsKey("TEST");
-				assertThat(getMapEntry(vorgang, "TEST")).containsEntry("value", List.of("VALUE1", "VALUE2"));
-			}
-
-			private GrpcEingang buildEingang() {
-				return GrpcEingangTestFactory.createBuilder().setFormData(GrpcFormData.newBuilder()
-								.addField(GrpcFormField.newBuilder().setName("TEST").setValue("VALUE1").build())
-								.addField(GrpcFormField.newBuilder().setName("TEST").setValue("VALUE2").build()))
-						.build();
-			}
-
-			@SuppressWarnings("unchecked")
-			private Map<String, Object> getMapEntry(VorgangWithEingang vorgang, String key) {
-				return MapUtils.getMap(vorgang.getEingang().getFormData(), key);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperTest.java
deleted file mode 100644
index d250ba9754edca347108767a369ddc4c152240b3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangMapperTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.MockedStatic.Verification;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.BaseTypesMapper;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttribute;
-import de.ozgcloud.alfa.common.clientattribute.ClientAttributeUtils;
-import de.ozgcloud.alfa.common.user.UserId;
-import de.ozgcloud.alfa.common.user.UserIdMapper;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcClientAttributeValue;
-import de.ozgcloud.vorgang.vorgang.GrpcVorgangWithEingang;
-
-class VorgangWithEingangMapperTest {
-
-	@Spy
-	@InjectMocks
-	private final VorgangWithEingangMapper mapper = Mappers.getMapper(VorgangWithEingangMapper.class);
-
-	@Spy
-	private final UserIdMapper userIdMapper = Mappers.getMapper(UserIdMapper.class);
-
-	@Spy
-	private final BaseTypesMapper baseTypesMapper = Mappers.getMapper(BaseTypesMapper.class);
-
-	private MockedStatic<ClientAttributeUtils> utilsMockedStatic;
-
-	@Mock
-	private EingangMapper eingangMapper;
-
-	@DisplayName("To VorgangWithEingang")
-	@Nested
-	class TestToVorgangWithEingang {
-		private GrpcVorgangWithEingang grpcVorgangMitEingang = GrpcVorgangWithEingangTestFactory.create();
-		private Verification staticClientAttributeUtilsCall = () -> ClientAttributeUtils.findGrpcValue(
-				ClientAttribute.HAS_NEW_POSTFACH_NACHRICHT,
-				grpcVorgangMitEingang.getClientAttributesList());
-
-		@BeforeEach
-		void setUpStaticMock() {
-			utilsMockedStatic = mockStatic(ClientAttributeUtils.class);
-		}
-
-		@AfterEach
-		void closeStaticMock() {
-			utilsMockedStatic.close();
-		}
-
-		@Test
-		void shouldMapCreatedAt() {
-			var vorgang = callMapper();
-
-			assertThat(vorgang.getCreatedAt()).isEqualTo(CREATED_AT);
-		}
-
-		@Test
-		void shouldMapNummer() {
-			var vorgang = callMapper();
-
-			assertThat(vorgang.getNummer()).isEqualTo(NUMMER);
-		}
-
-		@Test
-		void shouldMapAktenzeichen() {
-			var vorgang = callMapper();
-
-			assertThat(vorgang.getAktenzeichen()).isEqualTo(AKTENZEICHEN);
-		}
-
-		@Test
-		void shouldMapStatus() {
-			var vorgang = callMapper();
-
-			assertThat(vorgang.getStatus()).isEqualTo(VorgangStatus.NEU);
-		}
-
-		@Test
-		void shouldMapAssignedTo() {
-			var vorgang = callMapper();
-
-			assertThat(vorgang.getAssignedTo()).isEqualTo(UserId.from(ASSIGNED_TO));
-		}
-
-		@Test
-		void shouldMapClientAttributeHasNewPostfachNachrichtToDefault() {
-			utilsMockedStatic.when(staticClientAttributeUtilsCall)
-					.thenReturn(Optional.empty());
-
-			var vorgang = callMapper();
-
-			assertThat(vorgang.isHasNewPostfachNachricht()).isFalse();
-		}
-
-		@ParameterizedTest
-		@ValueSource(booleans = { true, false })
-		void shouldMapClientAttributeHasNewPostfachNachrichtToAttributeValue(boolean value) {
-			utilsMockedStatic
-					.when(staticClientAttributeUtilsCall)
-					.thenReturn(Optional.of(GrpcClientAttributeValue.newBuilder().setBoolValue(value).build()));
-
-			var vorgang = callMapper();
-
-			assertThat(vorgang.isHasNewPostfachNachricht()).isEqualTo(value);
-		}
-
-		@Test
-		void shouldMapLockedToFalseIfLockIsNotPresent() {
-			var grpcVorgang = GrpcVorgangWithEingangTestFactory.createBuilder().setHeader(GrpcVorgangHeadTestFactory.create()).build();
-
-			var vorgang = mapper.toVorgangWithEingang(grpcVorgang);
-
-			assertThat(vorgang.getHeader().isLocked()).isFalse();
-		}
-
-		@Test
-		void shouldMapLockedToTrueIfLockIsPresent() {
-			var grpcVorgang = GrpcVorgangWithEingangTestFactory.createBuilder()
-					.setHeader(GrpcVorgangHeadTestFactory.createBuilder().setLock(GrpcLockTestFactory.create()).build())
-					.build();
-
-			var vorgang = mapper.toVorgangWithEingang(grpcVorgang);
-
-			assertThat(vorgang.getHeader().isLocked()).isTrue();
-		}
-
-		private VorgangWithEingang callMapper() {
-			return mapper.toVorgangWithEingang(grpcVorgangMitEingang);
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java
deleted file mode 100644
index 87d377093b7b9438cef8bd144f1f736f34656072..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProcessorTest.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-import org.springframework.web.util.UriComponentsBuilder;
-import org.springframework.web.util.UriTemplate;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.postfach.PostfachMailController;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-
-class VorgangWithEingangProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangWithEingangProcessor processor;
-	@Mock
-	private PostfachMailController postfachMailController;
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private UserManagerUrlProvider userManagerUrlProvider;
-
-	@Mock
-	private VorgangProcessorProperties vorgangProcessorProperties;
-
-	private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@DisplayName("Attachments")
-	@Nested
-	class TestAttachments {
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@DisplayName("link")
-		@Nested
-		class TestLink {
-
-			private static final String PATH = "/api/vorgang/" + VorgangHeaderTestFactory.ID + "/attachments";
-			private final LinkRelation linkRel = VorgangWithEingangProcessor.REL_ATTACHMENTS;
-
-			@DisplayName("should be present if attachments exists")
-			@Test
-			void shouldBePresent() {
-				var link = processor.process(buildModelWithAttachments(1)).getLink(linkRel);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(PATH);
-			}
-
-			@Test
-			void shouldNotBePresent() {
-				var link = processor.process(buildModelWithAttachments(0)).getLink(linkRel);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		@DisplayName("download link")
-		@Nested
-		class TestDownloadLink {
-
-			private static final String PATH = "/api/vorgang/" + VorgangHeaderTestFactory.ID + "/attachments";
-			private final LinkRelation linkRel = VorgangWithEingangProcessor.REL_DOWNLOAD_ATTACHMENTS;
-
-			@DisplayName("should be present if attachments exists")
-			@Test
-			void shouldBePresent() {
-				var link = processor.process(buildModelWithAttachments(1)).getLink(linkRel);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(PATH);
-			}
-
-			@Test
-			void shouldNotBePresent() {
-				var link = processor.process(buildModelWithAttachments(0)).getLink(linkRel);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		private EntityModel<VorgangWithEingang> buildModelWithAttachments(int numberOfAttachments) {
-			return buildModelWithEingang(EingangTestFactory.createBuilder()
-					.numberOfAttachments(numberOfAttachments)
-					.build());
-		}
-
-		private EntityModel<VorgangWithEingang> buildModelWithEingang(Eingang eingang) {
-			return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build());
-		}
-	}
-
-	@DisplayName("Representations")
-	@Nested
-	class TestRepresentationsLink {
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		private static final String PATH = "/api/vorgang/" + VorgangHeaderTestFactory.ID + "/representations";
-
-		private final LinkRelation linkRel = VorgangWithEingangProcessor.REL_REPRESENTATIONS;
-
-		@DisplayName("should be present if representations exist")
-		@Test
-		void shouldBePresent() {
-			var link = processor.process(buildModelWithRepresentation(1)).getLink(linkRel);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(PATH);
-		}
-
-		@Test
-		void shouldNotBePresent() {
-			var link = processor.process(buildModelWithRepresentation(0)).getLink(linkRel);
-
-			assertThat(link).isNotPresent();
-		}
-
-		private EntityModel<VorgangWithEingang> buildModelWithRepresentation(int numberOfRepresentations) {
-			return buildModelWithEingang(EingangTestFactory.createBuilder()
-					.numberOfRepresentations(numberOfRepresentations)
-					.build());
-		}
-
-		private EntityModel<VorgangWithEingang> buildModelWithEingang(Eingang eingang) {
-			return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build());
-		}
-	}
-
-	@Nested
-	class TestPostfachMailsLink {
-
-		private final EntityModel<VorgangWithEingang> model = EntityModel.of(VorgangWithEingangTestFactory.create());
-
-		@Test
-		void shouldCallPostfachMailController() {
-			processor.process(model).getLink(VorgangWithEingangProcessor.REL_POSTFACH_MAILS);
-
-			verify(postfachMailController).isPostfachConfigured();
-		}
-
-		@Test
-		void shouldBePresentIfConfigured() {
-			when(postfachMailController.isPostfachConfigured()).thenReturn(true);
-
-			var link = processor.process(model).getLink(VorgangWithEingangProcessor.REL_POSTFACH_MAILS);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo("/api/postfachMails?vorgangId=" + VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldNotBePresentIfNotConfigured() {
-			when(postfachMailController.isPostfachConfigured()).thenReturn(false);
-
-			var link = processor.process(model).getLink(VorgangWithEingangProcessor.REL_POSTFACH_MAILS);
-
-			assertThat(link).isEmpty();
-		}
-	}
-
-	@Nested
-	class TestForwardingLink {
-
-		@DisplayName("should NOT be present in other Role then EA")
-		@ParameterizedTest
-		@EnumSource
-		void shouldNotBePresentWithoutRole(Vorgang.VorgangStatus status) {
-			when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-
-			var link = processor.process(buildVorgangInStatus(status)).getLink(VorgangWithEingangProcessor.REL_VORGANG_FORWARDING);
-
-			assertThat(link).isEmpty();
-		}
-
-		@DisplayName("with role EinheitlicherAnsprechpartner")
-		@Nested
-		class TestWithRoleEinheitlicherAnsprechpartner {
-			@BeforeEach
-			void init() {
-				when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-			}
-
-			@DisplayName("should be present in any Status")
-			@ParameterizedTest
-			@EnumSource()
-			void shouldBePresent(VorgangStatus status) {
-				var link = processor.process(buildVorgangInStatus(status)).getLink(VorgangWithEingangProcessor.REL_VORGANG_FORWARDING);
-
-				assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo("/api/forwardings?vorgangId=" + VorgangHeaderTestFactory.ID);
-			}
-		}
-
-		private EntityModel<VorgangWithEingang> buildVorgangInStatus(VorgangStatus status) {
-			return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().status(status).build());
-		}
-	}
-
-	@DisplayName("Historie Link")
-	@Nested
-	class TestHistorieLink {
-
-		@Test
-		void shouldBePresent() {
-			var link = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create())).getLink(VorgangWithEingangProcessor.REL_HISTORIE);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo("/api/histories?vorgangId=" + VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Search user profile link")
-	@Nested
-	class TestSearchUserProfileLink {
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@DisplayName("on configured for search user profile")
-		@Nested
-		class TestIsConfigured {
-
-			@BeforeEach
-			void init() {
-				when(userManagerUrlProvider.isConfiguredForSearchUserProfile()).thenReturn(true);
-			}
-
-			@Test
-			void shouldAddIfConfigured() {
-				when(userManagerUrlProvider.getSearchUserProfilesTemplate()).thenReturn(
-						UriComponentsBuilder.fromUriString("/api/userProfiles/?searchBy={searchBy}"));
-
-				var model = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_SEARCH_USER)).isPresent().get().extracting(Link::getHref).isEqualTo(
-						"/api/userProfiles/?searchBy={searchBy}&deleted=false&organisationsEinheitId="
-								+ ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
-			}
-
-			@Test
-			void shouldNotAddIfOrganisationsEinheitIdIsMissing() {
-				var model = processor.process(EntityModel.of(createVorgangWithoutOrganisationsEinheitId()));
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_SEARCH_USER)).isNotPresent();
-			}
-		}
-
-		@DisplayName("on not configured for search user profile")
-		@Nested
-		class TestIsNotConfigured {
-
-			@BeforeEach
-			void init() {
-				when(userManagerUrlProvider.isConfiguredForSearchUserProfile()).thenReturn(false);
-			}
-
-			@Test
-			void shouldNotAddifNotConfigured() {
-				var model = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_SEARCH_USER)).isNotPresent();
-			}
-
-			@Test
-			void shouldNotAddIfOrganisationsEinheitIdIsPresent() {
-				var model = processor.process(EntityModel.of(createVorgangWithoutOrganisationsEinheitId()));
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_SEARCH_USER)).isNotPresent();
-			}
-		}
-
-		private VorgangWithEingang createVorgangWithoutOrganisationsEinheitId() {
-			var zustaendigeStelle = ZustaendigeStelleTestFactory.createBuilder().organisationseinheitenId(null).build();
-			var eingang = EingangTestFactory.createBuilder().zustaendigeStelle(zustaendigeStelle).build();
-
-			return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build();
-		}
-	}
-
-	@DisplayName("Process vorgang")
-	@Nested
-	class TestProcessVorgang {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-		private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang);
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@DisplayName("on matching configuration")
-		@Nested
-		class TestOnMatchingConfiguration {
-
-			@BeforeEach
-			void init() {
-				when(vorgangProcessorProperties.getProcessor()).thenReturn(List.of(VorgangPropertyTestFactory.create()));
-			}
-
-			@Test
-			void shouldBeVisible() {
-				var entityModel = processor.process(vorgangEntityModel);
-
-				assertThat(entityModel.getLink(VorgangWithEingangProcessor.REL_PROCESS_VORGANG))
-						.isPresent().get().extracting(Link::getHref).isEqualTo(buildExpectedLink());
-			}
-
-			private String buildExpectedLink() {
-				return new UriTemplate(CommandByRelationController.COMMAND_BY_RELATION_PATH)
-						.expand(VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION).toString();
-			}
-		}
-
-		@DisplayName("on non matching configuration")
-		@Nested
-		class TestOnNonMatchingConfiguration {
-
-			@Test
-			void shouldNotBeVisibleOnWrongFormId() {
-				var properties = List.of(VorgangPropertyTestFactory.createBuilder().formId("quatsch").build());
-				when(vorgangProcessorProperties.getProcessor()).thenReturn(properties);
-
-				var model = processor.process(vorgangEntityModel);
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_PROCESS_VORGANG)).isNotPresent();
-			}
-
-			@Test
-			void shouldNotBeVisibleOnWrongFormEngineName() {
-				var properties = List.of(VorgangPropertyTestFactory.createBuilder().formEngineName("quatsch").build());
-				when(vorgangProcessorProperties.getProcessor()).thenReturn(properties);
-
-				var model = processor.process(vorgangEntityModel);
-
-				assertThat(model.getLink(VorgangWithEingangProcessor.REL_PROCESS_VORGANG)).isNotPresent();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTest.java
deleted file mode 100644
index 1e877a76938d73f46da9a17498e3fb96ce8ce38b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Test;
-
-class VorgangWithEingangTest {
-
-	@Test
-	void shouldGetOrganisationseinheitWhenSet() {
-		VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		String organisationseinheitenID = vorgang.getOrganisationseinheitenID();
-
-		assertThat(organisationseinheitenID).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
-	}
-
-	@Test
-	void shouldNotGetOrganisationseinheitWithEingangUnset() {
-		VorgangWithEingang vorgang = createVorgangWithNullEingang();
-
-		String organisationseinheitenID = vorgang.getOrganisationseinheitenID();
-
-		assertThat(organisationseinheitenID).isNull();
-	}
-
-	@Test
-	void shouldNotGetOrganisationseinheitWithZustaendigeStelleUnset() {
-		VorgangWithEingang vorgang = createVorgangWithNullZustaendigeStelle();
-
-		String organisationseinheitenID = vorgang.getOrganisationseinheitenID();
-
-		assertThat(organisationseinheitenID).isNull();
-	}
-
-	@Test
-	void shouldNotGetOrganisationseinheitWithOrganisationseinheitUnset() {
-		VorgangWithEingang vorgang = createVorgangWithNullOrganisationseinheit();
-
-		String organisationseinheitenID = vorgang.getOrganisationseinheitenID();
-
-		assertThat(organisationseinheitenID).isNull();
-	}
-
-	private VorgangWithEingang createVorgangWithNullEingang() {
-		return createVorgangWithEingang(null);
-	}
-
-	private VorgangWithEingang createVorgangWithNullZustaendigeStelle() {
-		Eingang eingang = EingangTestFactory.createBuilder().zustaendigeStelle(null).build();
-
-		return createVorgangWithEingang(eingang);
-	}
-
-	private VorgangWithEingang createVorgangWithNullOrganisationseinheit() {
-		ZustaendigeStelle zustaendigeStelle = ZustaendigeStelle.builder().organisationseinheitenId(null).build();
-		Eingang eingang = EingangTestFactory.createBuilder().zustaendigeStelle(zustaendigeStelle).build();
-
-		return createVorgangWithEingang(eingang);
-	}
-
-	private VorgangWithEingang createVorgangWithEingang(Eingang eingang) {
-		return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build();
-	}
-
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java
deleted file mode 100644
index 1a861d8dbf9fc746ec8bdd9db3fc2954840dee99..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory.*;
-
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-
-public class VorgangWithEingangTestFactory {
-
-	public static VorgangWithEingang create() {
-		return createBuilder().build();
-	}
-
-	public static VorgangWithEingang.VorgangWithEingangBuilder createBuilder() {
-		return VorgangWithEingang.builder()
-				.id(ID)
-				.version(VERSION)
-				.assignedTo(UserProfileTestFactory.ID)
-				.name(NAME)
-				.status(STATUS)
-				.nummer(NUMMER)
-				.aktenzeichen(AKTENZEICHEN)
-				.createdAt(CREATED_AT)
-				.hasNewPostfachNachricht(true)
-				.header(VorgangHeadTestFactory.create())
-				.eingang(EingangTestFactory.create());
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapperTest.java
deleted file mode 100644
index 1602c6a806145ebae7c5e315e20558969fca745b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleMapperTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-import static org.assertj.core.api.Assertions.*;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-
-public class ZustaendigeStelleMapperTest {
-	private final ZustaendigeStelleMapper mapper = Mappers.getMapper(ZustaendigeStelleMapper.class);
-
-	@Nested
-	class TestMapToZustaendigeStelle {
-
-		@Test
-		void shouldMap() {
-			var zustaendigeStelle = mapper.mapToZustaendigeStelle(GrpcZustaendigeStelleTestFactory.create());
-			assertThat(zustaendigeStelle).usingRecursiveComparison().isEqualTo(ZustaendigeStelleTestFactory.create());
-		}
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleTestFactory.java
deleted file mode 100644
index 5b02cb6d8d0b4b053e58dae5257db77546b2d272..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/ZustaendigeStelleTestFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang;
-
-public class ZustaendigeStelleTestFactory {
-	public static final String EMAIL = "test@test.de";
-	public static final String ORGANISATIONSEINHEITEN_ID = "123456";
-
-	public static ZustaendigeStelle create() {
-		return createBuilder().build();
-	}
-
-	public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() {
-		return ZustaendigeStelle.builder()
-				.email(EMAIL)
-				.organisationseinheitenId(ORGANISATIONSEINHEITEN_ID);
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java
deleted file mode 100644
index 83e431f870d0b470841cb427a4c4a4954b83acbf..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangCommandProcessorTest.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.command;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class VorgangCommandProcessorTest {
-
-	private static final String EXPECTED_COMMAND_LINK_TEMPL = "/api/vorgangs/%s/relations/%s/%d/commands";
-	private static final String EXPECTED_COMMAND_LINK = String.format(EXPECTED_COMMAND_LINK_TEMPL, CommandTestFactory.VORGANG_ID,
-			VorgangHeaderTestFactory.ID, VorgangHeaderTestFactory.VERSION);
-
-	@Spy
-	@InjectMocks
-	private VorgangCommandProcessor processor;
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private VorgangController vorgangController;
-
-	@Test
-	void shouldNotAddLinksIfVorgangIsNull() {
-		var entityModel = mock(EntityModel.class);
-
-		processor.process(entityModel);
-
-		verify(entityModel, never()).add(any(Link.class));
-	}
-
-	@ParameterizedTest
-	@EnumSource(value = VorgangStatus.class)
-	void shouldNotAddLinksIfVorgangIsNotEditable(VorgangStatus status) {
-		var vorgang = VorgangHeaderTestFactory.createBuilder().status(status).build();
-		when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-		var entityModel = processor.process(EntityModel.of(vorgang));
-
-		assertThat(entityModel.hasLinks()).isFalse();
-	}
-
-	@Nested
-	@DisplayName("add 'annehmen' link")
-	class TestAnnehmenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_ANNEHMEN;
-
-		@Test
-		void shouldBePresent() {
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
-		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'verwerfen' link")
-	class TestVerwerfenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_VERWERFEN;
-
-		@ParameterizedTest
-		@ValueSource(strings = { "EINHEITLICHER_ANSPRECHPARTNER", "VERWALTUNG_USER" })
-		void shouldBePresentAtStatusAndRole(String userRole) {
-			doReturn(userRole).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.NEU));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
-		void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) {
-			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "NEU" })
-		void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) {
-			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'zurueckholen' link")
-	class TestZurueckholenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_ZURUECKHOLEN;
-
-		@ParameterizedTest
-		@ValueSource(strings = { "EINHEITLICHER_ANSPRECHPARTNER", "VERWALTUNG_USER" })
-		void shouldBePresentAtStatusAndRole(String userRole) {
-			doReturn(userRole).when(processor).getUserRole();
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.VERWORFEN));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(names = { "NEU", "ANGENOMMEN" })
-		void shouldNOTbePresentAtStatusAndRoleVerwaltungUser(VorgangStatus status) {
-			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(names = { "NEU", "ANGENOMMEN" })
-		void shouldNOTbePresentAtStatusAndRoleEa(VorgangStatus status) {
-			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'bearbeiten' link")
-	class TestBearbeitenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_BEARBEITEN;
-
-		@Test
-		void shouldBePresent() {
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ANGENOMMEN));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref)
-					.isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "ANGENOMMEN", "ABGESCHLOSSEN" })
-		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'bescheiden' link")
-	class TestBescheidenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_BESCHEIDEN;
-
-		@Test
-		void shouldBePresent() {
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref)
-					.isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
-		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'zurueckstellen' link")
-	class TestZurueckstellenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_ZURUECKSTELLEN;
-
-		@Test
-		void shouldBePresent() {
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
-		void shouldNOTbePresentbyStatus(VorgangStatus status) {
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'abschliessen' link")
-	class TestAbschliessenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_ABSCHLIESSEN;
-
-		@Nested
-		class TestOnVerwaltungUser {
-
-			@BeforeEach
-			void mockUserRole() {
-				doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.INCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" })
-			void shouldBePresent(VorgangStatus status) {
-				var processed = processor.process(buildEditableVorgangInStatus(status));
-
-				assertThat(processed.getLink(linkRel)).isPresent().get()
-						.extracting(Link::getHref)
-						.isEqualTo(EXPECTED_COMMAND_LINK);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG", "BESCHIEDEN" })
-			void shouldNOTbePresentbyStatus(VorgangStatus status) {
-				var processed = processor.process(buildEditableVorgangInStatus(status));
-
-				assertThat(processed.getLink(linkRel)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestOnEinheitlicherAnsprechpartner {
-
-			@BeforeEach
-			void mockUserRole() {
-				doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
-			}
-
-			@Test
-			void shouldBePresent() {
-				var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.IN_BEARBEITUNG));
-
-				assertThat(processed.getLink(linkRel)).isPresent().get()
-						.extracting(Link::getHref)
-						.isEqualTo(EXPECTED_COMMAND_LINK);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "IN_BEARBEITUNG" })
-			void shouldNOTbePresentbyStatus(VorgangStatus status) {
-				var processed = processor.process(buildEditableVorgangInStatus(status));
-
-				assertThat(processed.getLink(linkRel)).isEmpty();
-			}
-		}
-	}
-
-	@Nested
-	@DisplayName("add 'wiedereroeffnen' link")
-	class TestWiedereroeffnenLink {
-
-		private final LinkRelation linkRel = VorgangCommandProcessor.REL_VORGANG_WIEDEREROEFFNEN;
-
-		@DisplayName("on Vorgang with Status Abgeschlossen")
-		@ParameterizedTest
-		@ValueSource(strings = { "EINHEITLICHER_ANSPRECHPARTNER", "VERWALTUNG_USER" })
-		void shouldBePresentOnStatusAbgeschlossen(String userRole) {
-			doReturn(userRole).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.ABGESCHLOSSEN));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@Test
-		@DisplayName("on Vorgang with Status Beschieden and Role VerwaltungUser")
-		void shouldBePresentOnStatusBeschieden() {
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo(EXPECTED_COMMAND_LINK);
-		}
-
-		@Test
-		@DisplayName("on Vorgang with Status Beschieden and Role EA")
-		void shouldBeNotPresentOnStatusBeschiedenAndRoleEA() {
-			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(VorgangStatus.BESCHIEDEN));
-
-			assertThat(processed.getLink(linkRel)).isNotPresent();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "ABGESCHLOSSEN", "BESCHIEDEN" })
-		void shouldNOTbePresentbyStatusAndRoleVerwaltungUser(VorgangStatus status) {
-			doReturn(UserRole.VERWALTUNG_USER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "ABGESCHLOSSEN", "BESCHIEDEN" })
-		void shouldNOTbePresentbyStatusAndRoleEA(VorgangStatus status) {
-			doReturn(UserRole.EINHEITLICHER_ANSPRECHPARTNER).when(processor).getUserRole();
-
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-	}
-
-	@Nested
-	class TestRoleVerwaltungPoststelle {
-		@BeforeEach
-		void init() {
-			when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(Boolean.FALSE);
-			when(userService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)).thenReturn(Boolean.TRUE);
-		}
-
-		@ParameterizedTest
-		@EnumSource()
-		void shouldNotBePresent(VorgangStatus status) {
-			var processed = processor.process(buildEditableVorgangInStatus(status));
-
-			assertThat(processed.getLinks()).isEmpty();
-		}
-	}
-
-	private EntityModel<Vorgang> buildEditableVorgangInStatus(VorgangStatus status) {
-		var vorgangInStatus = VorgangHeaderTestFactory.createBuilder().status(status).build();
-		when(vorgangController.isEditable(vorgangInStatus)).thenReturn(true);
-		return EntityModel.of(vorgangInStatus);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java
deleted file mode 100644
index 64fd8c50634f12d18c5e14de0e2226252ad21fa4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProcessorTest.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.command;
-
-import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.Link;
-import org.springframework.hateoas.LinkRelation;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.command.CommandController;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController;
-import de.ozgcloud.alfa.vorgang.forwarding.ForwardingTestFactory;
-
-class VorgangWithEingangCommandProcessorTest {
-
-	@Spy
-	@InjectMocks
-	private VorgangWithEingangCommandProcessor processor;
-	@Mock
-	private CurrentUserService userService;
-	@Mock
-	private CommandController commandController;
-	@Mock
-	private ForwardingController forwardingController;
-
-	private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-	private EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang);
-
-	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@Test
-	void shouldReturnEntityModel() {
-		initUserProfileUrlProvider(urlProvider);
-
-		var result = processor.process(vorgangEntityModel);
-
-		assertThat(result).isNotNull();
-	}
-
-	@Nested
-	class TestAddForwardLink {
-
-		private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.IN_BEARBEITUNG).build();
-
-		@BeforeEach
-		void init() {
-			when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
-		}
-
-		@DisplayName("should be true for Role EINHEITLICHER_ANSPRECHPARTNER, Status IN_BEARBEITUNG and Forwarding with Error")
-		@Test
-		void shouldBeTrue() {
-			when(forwardingController.findFailedForwardings(anyString())).thenReturn(Collections.singletonList(ForwardingTestFactory.create()));
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isTrue();
-		}
-
-		@Test
-		void shouldBeTrueInStatusNeu() {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.NEU).build();
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isTrue();
-		}
-
-		@Test
-		void shouldBeFalseForRoleNotEA() {
-			when(userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(false);
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isFalse();
-		}
-
-		@ParameterizedTest
-		@EnumSource(mode = Mode.EXCLUDE, names = { "NEU", "IN_BEARBEITUNG" })
-		void shouldBeFalseForVorgangInOtherStatus(VorgangStatus status) {
-			var vorgang = VorgangWithEingangTestFactory.createBuilder().status(status).build();
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isFalse();
-		}
-
-		@Test
-		void shouldBeFalseIfNoFailedForwarding() {
-			when(forwardingController.findFailedForwardings(anyString())).thenReturn(Collections.emptyList());
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isFalse();
-		}
-
-		@Test
-		void shouldBeFalseOnStatusWeitergeleitet() {
-			VorgangWithEingang vorgang = VorgangWithEingangTestFactory.createBuilder().status(VorgangStatus.WEITERGELEITET).build();
-
-			var addLink = processor.isForwardingAllowed(vorgang);
-
-			assertThat(addLink).isFalse();
-		}
-
-	}
-
-	@Nested
-	@DisplayName("add 'forward' link")
-	class TestForwardLink {
-
-		private final LinkRelation linkRel = VorgangWithEingangCommandProcessor.REL_VORGANG_FORWARD;
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@Test
-		void shouldNotBePresent() {
-			doReturn(false).when(processor).isForwardingAllowed(any());
-
-			var processed = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-
-			assertThat(processed.getLink(linkRel)).isEmpty();
-		}
-
-		@Test
-		void shouldBePresent() {
-			doReturn(true).when(processor).isForwardingAllowed(any());
-
-			var processed = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()));
-
-			assertThat(processed.getLink(linkRel)).isPresent().get()
-					.extracting(Link::getHref)
-					.isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/"
-							+ VorgangHeaderTestFactory.VERSION + "/commands");
-		}
-
-	}
-
-	@Nested
-	class TestPendingCommandsLink {
-
-		@BeforeEach
-		void init() {
-			initUserProfileUrlProvider(urlProvider);
-		}
-
-		@Test
-		void shouldExists() {
-			when(commandController.existsPendingCommands(any())).thenReturn(true);
-
-			var link = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()))
-					.getLink(VorgangWithEingangCommandProcessor.REL_PENDING_COMMANDS);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo("/api/commands?pending=true&vorgangId=" + VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldNotExists() {
-			when(commandController.existsPendingCommands(any())).thenReturn(false);
-
-			var link = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()))
-					.getLink(VorgangWithEingangCommandProcessor.REL_PENDING_COMMANDS);
-
-			assertThat(link).isNotPresent();
-		}
-
-		@DisplayName("should have link with user role " + UserRole.EINHEITLICHER_ANSPRECHPARTNER)
-		void shouldExistsByRoleEA() {
-			when(commandController.existsPendingCommands(any())).thenReturn(false);
-
-			var link = processor.process(EntityModel.of(VorgangWithEingangTestFactory.create()))
-					.getLink(VorgangWithEingangCommandProcessor.REL_PENDING_COMMANDS);
-
-			assertThat(link).isPresent().get().extracting(Link::getHref)
-					.isEqualTo("/api/commands?pending=true&vorgangId=" + VorgangHeaderTestFactory.ID);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java
deleted file mode 100644
index 670bbd3dcfbf08a51a52bc57e4d69c912a1bf801..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingControllerTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class ForwardingControllerTest {
-
-	@InjectMocks
-	private ForwardingController controller;
-	@Mock
-	private ForwardingService service;
-	@Mock
-	private ForwardingModelAssembler modelAssembler;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestFindByVorgang {
-		@Test
-		void shouldReturn200() throws Exception {
-			doRequest().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			doRequest();
-
-			verify(service).findByVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			doRequest();
-
-			verify(modelAssembler).toCollectionModel(Mockito.<Stream<Forwarding>>any());
-		}
-
-		private ResultActions doRequest() throws Exception {
-			return mockMvc.perform(get(ForwardingController.LIST_PATH).param(ForwardingController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID));
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java
deleted file mode 100644
index 7f237a504d9845ac8b0f1c36cbdd9b566ac673a2..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingLandesnetzInfoServiceTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.assertj.core.api.Assertions.*;
-
-import java.util.Arrays;
-import java.util.HashSet;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-import org.springframework.test.util.ReflectionTestUtils;
-
-class ForwardingLandesnetzInfoServiceTest {
-
-	@Spy
-	@InjectMocks
-	private ForwardingLandesnetzInfoService service;
-
-	@DisplayName("Is email in landesnetz")
-	@Nested
-	class TestIstInLandesnetz {
-
-		private final String EMAIL_NAME = "testEmailName@";
-
-		private final String IN_LANDESNETZ = "itvsh.de";
-		private final String IN_LANDESNETZ_WITH_DOTS = ".itvsh.old.de";
-
-		@BeforeEach
-		void initMap() throws Exception {
-			ReflectionTestUtils.setField(service, "landesnetzInfo", new HashSet<>(Arrays.asList(IN_LANDESNETZ, IN_LANDESNETZ_WITH_DOTS)));
-		}
-
-		@DisplayName("validate with email in Landesnetz")
-		@Nested
-		class TestWithMatchingEmail {
-
-			@Test
-			void shouldReturnTrueWithSingleDot() {
-				var result = service.isEmailInLandesnetz(EMAIL_NAME + IN_LANDESNETZ);
-
-				assertThat(result).isTrue();
-			}
-
-			@Test
-			void shouldReturnTrueWithMultipleDots() {
-				var result = service.isEmailInLandesnetz(EMAIL_NAME + IN_LANDESNETZ_WITH_DOTS);
-
-				assertThat(result).isTrue();
-			}
-
-			@Test
-			void shouldReturnTrueByConsideringJustTheEnd() {
-				var result = service.isEmailInLandesnetz(EMAIL_NAME + "me" + IN_LANDESNETZ_WITH_DOTS);
-
-				assertThat(result).isTrue();
-			}
-		}
-
-		@DisplayName("validate with email NOT in Landesnetz")
-		@Nested
-		class TestEndsWithMatching {
-
-			@Test
-			void shouldReturnFalseOnWrongDomain() {
-				var result = service.isEmailInLandesnetz(EMAIL_NAME + "me.gmx.de");
-
-				assertThat(result).isFalse();
-			}
-
-			@Test
-			void shouldReturnFalseOnConsideringJustTheEnd() {
-				var result = service.isEmailInLandesnetz(EMAIL_NAME + "me" + IN_LANDESNETZ_WITH_DOTS + ".nicht.gueltig.de");
-
-				assertThat(result).isFalse();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java
deleted file mode 100644
index bc9484c6d37e412a8bc0f602366b79a0edf5ec64..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingModelAssemblerTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.EnumSource.Mode;
-import org.mockito.InjectMocks;
-import org.mockito.Spy;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.Link;
-import org.springframework.stereotype.Component;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.forwarding.Forwarding.Status;
-
-@Component
-class ForwardingModelAssemblerTest {
-
-	@Spy // NOSONAR
-	@InjectMocks
-	private ForwardingModelAssembler modelAssembler;
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldReturnEntityModel() {
-			var model = modelAssembler.toModel(ForwardingTestFactory.create());
-
-			assertThat(model).isNotNull();
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = modelAssembler.toModel(ForwardingTestFactory.create());
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo("/api/forwardings/" + ForwardingTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestToCollectionModel {
-		@Test
-		void shouldCallToModel() {
-			modelAssembler.toCollectionModel(Stream.of(ForwardingTestFactory.create()));
-
-			verify(modelAssembler).toModel(any());
-		}
-
-		@Test
-		void shouldHaveSelfLink() {
-			var model = modelAssembler.toCollectionModel(Stream.of(ForwardingTestFactory.create()));
-
-			assertThat(model.getLink(IanaLinkRelations.SELF)).isPresent().get()
-					.extracting(Link::getHref).isEqualTo("/api/forwardings");
-		}
-	}
-
-	@Nested
-	class TestLinkOnModel {
-
-		private final String expectedLinkHref = "/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + ForwardingTestFactory.ID
-				+ "/-1/commands";
-
-		@Nested
-		class TestMarkAsSuccessLink {
-
-			@Test
-			void shouldBePresentInStatusSENT() {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(Status.SENT).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_MARK_AS_SUCCESS)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(expectedLinkHref);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "SENT" })
-			void shouldNOTBePresentInAnyOtherStatus(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_MARK_AS_SUCCESS)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestMarkAsFailLink {
-
-			@ParameterizedTest
-			@EnumSource(names = { "SENT", "SUCCESSFULL" })
-			void shouldBePresentInStatusSENT(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_MARK_AS_FAIL)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo(expectedLinkHref);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "SENT", "SUCCESSFULL" })
-			void shouldNOTBePresentInAnyOtherStatus(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_MARK_AS_FAIL)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestFailedLink {
-
-			@Test
-			void shouldBePresentInStatusFAILED() {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(Status.FAILED).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_FAILED)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo("/api/forwardings/" + ForwardingTestFactory.ID);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "FAILED" })
-			void shouldNOTBePresentInAnyOtherStatus(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_FAILED)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestSuccessfullLink {
-
-			@Test
-			void shouldBePresentInStatusSUCCESSFULL() {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(Status.SUCCESSFULL).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_SUCCESSFULL)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo("/api/forwardings/" + ForwardingTestFactory.ID);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "SUCCESSFULL" })
-			void shouldNOTBePresentInAnyOtherStatus(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_SUCCESSFULL)).isEmpty();
-			}
-		}
-
-		@Nested
-		class TestSendErrorLink {
-
-			@Test
-			void shouldBePresentInStatusSEND_ERROR() {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(Status.SEND_ERROR).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_ERROR)).isPresent().get()
-						.extracting(Link::getHref).isEqualTo("/api/forwardings/" + ForwardingTestFactory.ID);
-			}
-
-			@ParameterizedTest
-			@EnumSource(mode = Mode.EXCLUDE, names = { "SEND_ERROR" })
-			void shouldNOTBePresentInAnyOtherStatus(Status status) {
-				var model = modelAssembler.toModel(ForwardingTestFactory.createBuilder().status(status).build());
-
-				assertThat(model.getLink(ForwardingModelAssembler.REL_ERROR)).isEmpty();
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java
deleted file mode 100644
index 406376542a0ba7962304aefd24cbf64b87131971..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingPasswordValidatorTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import jakarta.validation.ConstraintValidatorContext;
-import jakarta.validation.ConstraintValidatorContext.ConstraintViolationBuilder;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.vorgang.RedirectRequestTestFactory;
-
-class ForwardingPasswordValidatorTest {
-
-	@Spy
-	@InjectMocks
-	private ForwardingPasswordValidator validator = new ForwardingPasswordValidator();
-	@Mock
-	private ConstraintValidatorContext context;
-	@Mock
-	private ForwardingLandesnetzInfoService landesnetzInfoService;
-
-	@DisplayName("Is valid")
-	@Nested
-	class TestIsValid {
-
-		@DisplayName("with null/empty")
-		@Nested
-		class TestOnNullOrEmptyEmail {
-
-			@Test
-			void shouldReturnTrue() {
-				var isValid = validator.isValid(RedirectRequestTestFactory.createBuilder().email(StringUtils.EMPTY).build(), context);
-
-				assertThat(isValid).isTrue();
-			}
-		}
-
-		@DisplayName("for a doman in landesnetz")
-		@Nested
-		class TestOnIsInLandesnetz {
-
-			@BeforeEach
-			void mock() {
-				when(landesnetzInfoService.isEmailInLandesnetz(anyString())).thenReturn(true);
-			}
-
-			@Test
-			void shouldNotDoPasswordValidation() {
-				validator.isValid(RedirectRequestTestFactory.create(), context);
-
-				verify(validator, never()).isValidPassword(any());
-			}
-		}
-
-		@DisplayName("for domain NOT in landesnetz")
-		@Nested
-		class TestOnIfNOTInLandesnetz {
-
-			@Mock
-			private ConstraintViolationBuilder contraintBuilder;
-
-			@BeforeEach
-			void mock() {
-				when(landesnetzInfoService.isEmailInLandesnetz(anyString())).thenReturn(false);
-				doNothing().when(validator).prepareConstraint(any());
-			}
-
-			@Test
-			void shouldDoPasswordValidation() {
-				validator.isValid(RedirectRequestTestFactory.create(), context);
-
-				verify(validator).isValidPassword(any());
-			}
-		}
-
-		@DisplayName("password")
-		@Nested
-		class TestPasswordValidation {
-			@Test
-			void shouldReturnFalseOnLowerSize() {
-				var isValid = isValid("notEnou".toCharArray());
-
-				assertThat(isValid).isFalse();
-			}
-
-			@Test
-			void shouldReturnFalseOnLargerSize() {
-				var isValid = isValid(RandomStringUtils.randomAlphabetic(41).toCharArray());
-
-				assertThat(isValid).isFalse();
-			}
-
-			@Test
-			void shouldReturnFalseOnNull() {
-				var isValid = isValid(null);
-
-				assertThat(isValid).isFalse();
-			}
-
-			@Test
-			void shouldReturnTrueOnValidSize() {
-				var isValid = isValid(RedirectRequestTestFactory.PASSWORD);
-
-				assertThat(isValid).isTrue();
-			}
-
-			private boolean isValid(char[] password) {
-				return validator.isValidPassword(RedirectRequest.builder().password(password).build());
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java
deleted file mode 100644
index 82aa2a6652bc58b4e09c8ed805a1b3c5fa0ce392..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingRemoteServiceTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-
-import de.ozgcloud.alfa.common.callcontext.ContextService;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.forwarding.ForwardingServiceGrpc.ForwardingServiceBlockingStub;
-import de.ozgcloud.vorgang.forwarding.GrpcFindForwardingsRequest;
-import de.ozgcloud.vorgang.forwarding.GrpcForwarding;
-import de.ozgcloud.vorgang.forwarding.GrpcForwardingsResponse;
-import de.ozgcloud.vorgang.grpc.command.GrpcCallContext;
-
-class ForwardingRemoteServiceTest {
-
-	@InjectMocks // NOSONAR
-	private ForwardingRemoteService service;
-
-	@Mock
-	private ForwardingServiceBlockingStub serviceStub;
-	@Mock
-	private ForwardingMapper mapper;
-
-	@Mock
-	private ContextService contextService;
-
-	@Captor
-	private ArgumentCaptor<GrpcFindForwardingsRequest> requestCaptor;
-
-	private GrpcCallContext callContext = GrpcCallContext.newBuilder().build();
-
-	@BeforeEach
-	void initContextService() {
-		when(contextService.createCallContext()).thenReturn(callContext);
-	}
-
-	@Nested
-	class TestFindForwardings {
-		private GrpcForwarding grpcForwarding = GrpcForwarding.newBuilder().build();
-		private GrpcForwardingsResponse response = GrpcForwardingsResponse.newBuilder().addForwardings(grpcForwarding).build();
-
-		@BeforeEach
-		void initStub() {
-			when(serviceStub.findForwardings(any())).thenReturn(response);
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.findForwardings(VorgangHeaderTestFactory.ID);
-
-			verify(serviceStub).findForwardings(any());
-		}
-
-		@Test
-		void shouldFillCallContext() {
-			service.findForwardings(VorgangHeaderTestFactory.ID);
-
-			verify(serviceStub).findForwardings(requestCaptor.capture());
-			assertThat(requestCaptor.getValue().getContext()).isSameAs(callContext);
-		}
-
-		@Test
-		void shouldHaveVorgangId() {
-			service.findForwardings(VorgangHeaderTestFactory.ID);
-
-			verify(serviceStub).findForwardings(requestCaptor.capture());
-			assertThat(requestCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallMapper() {
-			service.findForwardings(VorgangHeaderTestFactory.ID).forEach(v -> {
-			});
-
-			verify(mapper).fromGrpc(grpcForwarding);
-		}
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java
deleted file mode 100644
index 5b834aa838b32ccc81f29c9c0cc9189992e44d88..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingTestFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import java.util.UUID;
-
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-public class ForwardingTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final String VORGANG_ID = VorgangHeaderTestFactory.ID;
-
-	public static Forwarding create() {
-		return createBuilder().build();
-	}
-
-	public static Forwarding.ForwardingBuilder createBuilder() {
-		return Forwarding.builder()
-				.id(ID)
-				.vorgangId(VORGANG_ID);
-
-	}
-
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java
deleted file mode 100644
index a2291ca870f98ece338f36e19a7842a395f41022..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/LandesnetzInfoReadServiceTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.vorgang.forwarding;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.io.InputStream;
-import java.util.Optional;
-import java.util.Scanner;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-import org.mockito.Spy;
-
-import de.ozgcloud.common.test.TestUtils;
-
-class LandesnetzInfoReadServiceTest {
-
-	@Spy
-	private LandesnetzInfoReadService service = new LandesnetzInfoReadService();
-
-	@Nested
-	class TestStartOfSection {
-
-		@Test
-		void shouldAcceptStartSectionLine() {
-			boolean isStartOfSection = service.isStartOfSection("############################## Beginn Schleswig-Holstein ##########################");
-
-			assertThat(isStartOfSection).isTrue();
-		}
-
-		@DisplayName("should return FALSE when")
-		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "###", "abs.de 	esm", "################## Schleswig-Holstein ########"})
-		void shouldDeclineAnotherLines(String line) {
-			boolean isStartOfSection = service.isStartOfSection(line);
-
-			assertThat(isStartOfSection).isFalse();
-		}
-	}
-
-	@Nested
-	class TestEndOfSection {
-
-		@Test
-		void shouldAcceptStartSectionLine() {
-			boolean isEndOfSection = service.isEndOfSection("############################## Ende Schleswig-Holstein ##########################");
-
-			assertThat(isEndOfSection).isTrue();
-		}
-
-		@DisplayName("should return FALSE when")
-		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "###", "abs.de 	esm","################## Schleswig-Holstein ########"})
-		void shouldDeclineAnotherLines(String line) {
-			boolean isEndOfSection = service.isEndOfSection(line);
-
-			assertThat(isEndOfSection).isFalse();
-		}
-	}
-
-	@Nested
-	class TestIsComment {
-
-		@Test
-		void shouldAcceptCommentLine() {
-			boolean isCommentedLine = service.isCommentedLine("# Kommentar");
-
-			assertThat(isCommentedLine).isTrue();
-		}
-
-		@DisplayName("should return FALSE when")
-		@ParameterizedTest(name = "\"{0}\"")
-		@ValueSource(strings = {"", "0", "abs.de 	esm"})
-		void shouldDeclineAnotherLines(String line) {
-			boolean isCommentedLine = service.isCommentedLine(line);
-
-			assertThat(isCommentedLine).isFalse();
-		}
-	}
-
-	@Nested
-	class TestGetFirsColumn {
-
-		@Test
-		void shouldReturnFirstColumn() {
-			var firstColumn = service.getFirstColumn("abs.de 	esm");
-
-			assertThat(firstColumn).get().isEqualTo("abs.de");
-		}
-
-		@Test
-		void shouldReturnEmptyOptionalIfLineIsEmpty() {
-			var firstColumn = service.getFirstColumn("");
-
-			assertThat(firstColumn).isEmpty();
-		}
-
-	}
-
-	@Nested
-	class TestReadSection {
-
-		@Test
-		void shouldReturnEmptyResult() {
-			var section = service.readSection(new Scanner(""));
-
-			assertThat(section).isEmpty();
-		}
-
-		@Test
-		void shouldCallIsCommentedLine() {
-			var row = "# comment";
-
-			service.readSection(new Scanner(row));
-
-			verify(service).isCommentedLine(row);
-		}
-
-		@Test
-		void shouldCallIsEndOfSection() {
-			var line = "row";
-
-			service.readSection(new Scanner(line));
-
-			verify(service).isEndOfSection(line);
-		}
-
-		@Test
-		void shouldCallGetFirstColumn() {
-			var line = "row";
-
-			service.readSection(new Scanner(line));
-
-			verify(service).getFirstColumn(line);
-		}
-
-		@Test
-		void shouldCollectFirstColumn() {
-			var line = "row";
-			doReturn(Optional.of(line)).when(service).getFirstColumn(anyString());
-
-			var section = service.readSection(new Scanner(line+ "\n# Ende Schleswig-Holstein"));
-
-			assertThat(section).containsExactly(line);
-		}
-	}
-
-	@Nested
-	class TestParseFile {
-
-		private InputStream TEXT_INPUT_STREAM;
-
-		@BeforeEach
-		void initResource() {
-			TEXT_INPUT_STREAM = TestUtils.loadFile("files/mailertable.txt");
-		}
-
-		@Test
-		void shouldReadFileIfExist() {
-			var parsedDomainList = service.readFile(TEXT_INPUT_STREAM);
-
-			assertThat(parsedDomainList).hasSize(3);
-		}
-
-		@Test
-		void shouldReturnEmptyListIfFileNotExist() {
-			var parsedDomainList = service.readFile(InputStream.nullInputStream());
-
-			assertThat(parsedDomainList).isEmpty();
-		}
-
-	}
-}
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/AttachmentsByWiedervorlageControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/AttachmentsByWiedervorlageControllerTest.java
deleted file mode 100644
index 78ce8df48b98bc2ae5dd8014940b20a62acd89e4..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/AttachmentsByWiedervorlageControllerTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageController.AttachmentsByWiedervorlageController;
-
-class AttachmentsByWiedervorlageControllerTest {
-
-	private final static String PATH = AttachmentsByWiedervorlageController.PATH.replace("{wiedervorlageId}", WiedervorlageTestFactory.ID)
-			+ "/attachments";
-
-	@Spy
-	@InjectMocks
-	private AttachmentsByWiedervorlageController controller;
-	@Mock
-	private WiedervorlageService service;
-	@Mock
-	private BinaryFileController binaryFileController;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetAttachments {
-
-		@BeforeEach
-		void mockService() {
-			when(service.getById(any())).thenReturn(WiedervorlageTestFactory.create());
-		}
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			callEndpoint().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).getById(WiedervorlageTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallBinaryFileController() throws Exception {
-			callEndpoint();
-
-			verify(binaryFileController).getFiles(List.of(BinaryFileTestFactory.FILE_ID));
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(PATH));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java
deleted file mode 100644
index e8ba19c5a464fa5f8060bbe97d23b61c8ce2b3d0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageCommandController.WiedervorlageCommandByVorgangController;
-import lombok.SneakyThrows;
-
-class WiedervorlageCommandByVorgangControllerTest {
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageCommandByVorgangController controller;
-
-	@Mock
-	private WiedervorlageService service;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Create command")
-	@Nested
-	class TestCreateCommand {
-
-		@Captor
-		private ArgumentCaptor<Wiedervorlage> wiedervorlageCaptor;
-
-		@BeforeEach
-		void mockUserService() {
-			when(service.createWiedervorlage(any(), any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@Nested
-		class ServiceMethod {
-
-			@Test
-			void shouldCallService() {
-				doRequest();
-
-				verify(service).createWiedervorlage(wiedervorlageCaptor.capture(), eq(VorgangHeaderTestFactory.ID));
-				assertThat(wiedervorlageCaptor.getValue().getAttachments().getFirst()).isEqualTo(BinaryFileTestFactory.FILE_ID);
-			}
-
-			@Test
-			void shouldCallServiceToUpdateNextFrist() {
-				doRequest();
-
-				verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), wiedervorlageCaptor.capture());
-				assertThat(wiedervorlageCaptor.getValue())
-						.usingRecursiveComparison()
-						.comparingOnlyFields("betreff", "beschreibung", "frist", "attachments")
-						.isEqualTo(WiedervorlageTestFactory.create());
-			}
-
-			@SneakyThrows
-			@Test
-			void returnReturnCreated() {
-				doRequest().andExpect(status().isCreated());
-			}
-		}
-	}
-
-	@SneakyThrows
-	private ResultActions doRequest() {
-		return mockMvc.perform(
-						post(WiedervorlageCommandByVorgangController.WIEDERVORLAGE_COMMANDS_BY_VORGANG,
-								VorgangHeaderTestFactory.ID)
-								.content(createRequestContent())
-								.contentType(MediaType.APPLICATION_JSON))
-				.andExpect(status().is2xxSuccessful());
-	}
-
-	private String createRequestContent() {
-		var createCommand = CommandTestFactory.createCreateCommandBuilder().body(WiedervorlageTestFactory.create())
-				.order(LegacyOrder.EDIT_WIEDERVORLAGE)
-				.build();
-		return WiedervorlageTestFactory.createRequestContent(createCommand);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java
deleted file mode 100644
index 9d038017cd75ff56766a8ff35926459007d3ca96..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.time.LocalDate;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.FileId;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandOrder;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.errorhandling.TechnicalException;
-import lombok.SneakyThrows;
-
-class WiedervorlageCommandControllerTest {
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageCommandController controller;
-	@Mock
-	private WiedervorlageService service;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void init() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@DisplayName("Update wiedervorlage")
-	@Nested
-	class TestUpdateWiedervorlage {
-
-		private static final String RESPONSE_HEADER = "http://localhost/api/commands/" + CommandTestFactory.ID;
-
-		@Nested
-		class ControllerMethods {
-
-			@Captor
-			private ArgumentCaptor<Wiedervorlage> wiedervorlageCaptor;
-
-			@BeforeEach
-			void init() {
-				when(service.getById(any())).thenReturn(WiedervorlageTestFactory.create());
-				when(service.editWiedervorlage(any(), any(), anyLong())).thenReturn(CommandTestFactory.createBuilder()
-						.order(CommandOrder.UPDATE_ATTACHED_ITEM.name())
-						.body(WiedervorlageTestFactory.createAsMap()).build());
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldCallServiceGetById() {
-				doRequest();
-
-				verify(service).getById(WiedervorlageTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallServiceUpdateNextFrist() {
-				doRequest();
-
-				verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), wiedervorlageCaptor.capture());
-				assertThat(wiedervorlageCaptor.getValue())
-						.usingRecursiveComparison()
-						.comparingOnlyFields("betreff", "beschreibung", "frist", "attachments")
-						.isEqualTo(WiedervorlageTestFactory.create());
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldReturnCreatedStatus() {
-				var response = doRequest();
-
-				response.andExpect(status().isCreated());
-			}
-
-			@SneakyThrows
-			@Test
-			void shouldResponseWithLocationHeader() {
-				var response = doRequest();
-
-				response.andExpect(header().string("Location", RESPONSE_HEADER));
-			}
-
-			@Test
-			void shouldCreateCommand() {
-				doRequest();
-
-				verify(controller).createCommand(any(Wiedervorlage.class), any(CreateCommand.class));
-			}
-
-			@SneakyThrows
-			private ResultActions doRequest() {
-				return mockMvc.perform(
-								post(WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS, WiedervorlageTestFactory.ID, WiedervorlageTestFactory.VERSION)
-										.content(createRequestContent()).contentType(MediaType.APPLICATION_JSON))
-						.andExpect(status().is2xxSuccessful());
-			}
-
-			private String createRequestContent() {
-				return WiedervorlageTestFactory
-						.createRequestContent(
-								CommandTestFactory.createCreateCommandBuilder()
-										.order("EDIT_WIEDERVORLAGE")
-										.body(WiedervorlageTestFactory.create())
-										.build());
-			}
-		}
-
-		@DisplayName("create command")
-		@Nested
-		class TestCreateCommand {
-
-			@Captor
-			private ArgumentCaptor<Wiedervorlage> wiedervorlageArgumentCaptor;
-
-			@DisplayName("for order 'erledigen'")
-			@Nested
-			class TestOnErledigenOrder {
-
-				@Test
-				void shouldCallService() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_ERLEDIGEN);
-
-					verify(service).erledigen(any(Wiedervorlage.class));
-				}
-
-				@Test
-				void shouldUpdateNextFrist() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_ERLEDIGEN);
-
-					verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), any(Wiedervorlage.class));
-				}
-
-				@Test
-				void shouldSetWiedervorlageAsDone() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_ERLEDIGEN);
-
-					verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), wiedervorlageArgumentCaptor.capture());
-					assertThat(wiedervorlageArgumentCaptor.getValue())
-							.usingRecursiveComparison()
-							.isEqualTo(WiedervorlageTestFactory.createBuilder().done(true).build());
-				}
-			}
-
-			@DisplayName("for order 'wiedereroeffnen'")
-			@Nested
-			class TestOnWiedereroeffnenOrder {
-
-				@Test
-				void shouldCallService() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN);
-
-					verify(service).wiedereroeffnen(any(Wiedervorlage.class));
-				}
-
-				@Test
-				void shouldUpdateNextFrist() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN);
-
-					verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), any(Wiedervorlage.class));
-				}
-
-				@Test
-				void shouldSetWiedervorlageAsOpen() {
-					callCreateCommand(LegacyOrder.WIEDERVORLAGE_WIEDEREROEFFNEN);
-
-					verify(service).updateNextFrist(eq(VorgangHeaderTestFactory.ID), wiedervorlageArgumentCaptor.capture());
-					assertThat(wiedervorlageArgumentCaptor.getValue())
-							.usingRecursiveComparison()
-							.isEqualTo(WiedervorlageTestFactory.createBuilder().done(false).build());
-				}
-			}
-
-			@DisplayName("for order 'edit'")
-			@Nested
-			class TestOnEditOrder {
-
-				@Test
-				void shouldCallService() {
-					callCreateCommand(LegacyOrder.EDIT_WIEDERVORLAGE);
-
-					verify(service).editWiedervorlage(any(Wiedervorlage.class), eq(WiedervorlageTestFactory.ID),
-							eq(WiedervorlageTestFactory.VERSION));
-				}
-
-				@Test
-				void shouldUpdateNextFrist() {
-					var wiedervorlage = WiedervorlageTestFactory.create();
-					doReturn(wiedervorlage).when(controller).updateWiedervorlageByCommand(any(), any());
-
-					callCreateCommand(LegacyOrder.EDIT_WIEDERVORLAGE);
-
-					verify(service).updateNextFrist(VorgangHeaderTestFactory.ID, wiedervorlage);
-				}
-
-				@DisplayName("update wiedervorlage by given command")
-				@Nested
-				class TestUpdateWiedervorlageByCommand {
-
-					private final static FileId ATTACHMENT_ID = FileId.from("73");
-					private final static String BETREFF = "Neuer Betreff";
-					private final static String BESCHREIBUNG = "Neuer Beschreibung";
-					private final static LocalDate FRIST = LocalDate.now();
-
-					@Test
-					void shouldHaveSetAttachments() {
-						var updatedWiedervorlage = update();
-
-						assertThat(updatedWiedervorlage.getAttachments()).hasSize(1);
-						assertThat(updatedWiedervorlage.getAttachments().get(0)).isEqualTo(ATTACHMENT_ID);
-					}
-
-					@Test
-					void shouldHaveSetBetreff() {
-						var updatedWiedervorlage = update();
-
-						assertThat(updatedWiedervorlage.getBetreff()).isEqualTo(BETREFF);
-					}
-
-					@Test
-					void shouldHaveSetBeschreibung() {
-						var updatedWiedervorlage = update();
-
-						assertThat(updatedWiedervorlage.getBeschreibung()).isEqualTo(BESCHREIBUNG);
-					}
-
-					@Test
-					void shouldHaveSetFrist() {
-						var updatedWiedervorlage = update();
-
-						assertThat(updatedWiedervorlage.getFrist()).isEqualTo(FRIST);
-					}
-
-					private Wiedervorlage update() {
-						return controller.updateWiedervorlageByCommand(WiedervorlageTestFactory.create(), buildWiedervorlage());
-					}
-
-					private Wiedervorlage buildWiedervorlage() {
-						return WiedervorlageTestFactory.createBuilder()
-								.clearAttachments().attachment(ATTACHMENT_ID)
-								.betreff(BETREFF)
-								.beschreibung(BESCHREIBUNG)
-								.frist(FRIST)
-								.build();
-					}
-				}
-			}
-
-			@Nested
-			class OnUnsupportedOrder {
-
-				@Test
-				void shouldThrowException() {
-					var wiedervorlage = WiedervorlageTestFactory.create();
-					var command = CommandTestFactory.createCreateCommandBuilder()
-							.order(CommandOrder.CREATE_ATTACHED_ITEM.name())
-							.body(wiedervorlage).build();
-
-					assertThatExceptionOfType(TechnicalException.class)
-							.isThrownBy(() -> controller.createCommand(wiedervorlage, command));
-				}
-			}
-
-			private Command callCreateCommand(String order) {
-				return controller.createCommand(WiedervorlageTestFactory.create(),
-						CommandTestFactory.createCreateCommandBuilder().body(WiedervorlageTestFactory.create())
-								.order(order)
-								.build());
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandITCase.java
deleted file mode 100644
index b04692f73b411433c560a782a9c6c4fc8c7f2b6d..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandITCase.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.time.LocalDate;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.mock.mockito.SpyBean;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.ValidationMessageCodes;
-import de.ozgcloud.alfa.common.command.CommandRemoteService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.common.command.LegacyOrder;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.wiedervorlage.WiedervorlageCommandController.WiedervorlageCommandByVorgangController;
-import lombok.SneakyThrows;
-
-@AutoConfigureMockMvc
-@SpringBootTest
-@WithMockUser
-class WiedervorlageCommandITCase {
-
-	@Autowired
-	private MockMvc mockMvc;
-	@MockBean
-	private CommandRemoteService commandRemoteService;
-	@MockBean
-	private WiedervorlageRemoteService wiedervorlageRemoteService;
-
-	@SpyBean
-	private CurrentUserService userService;
-
-	@DisplayName("Create edit command")
-	@WithMockUser
-	@Nested
-	class TestCreateEditCommand {
-
-		@BeforeEach
-		void initTest() {
-			when(wiedervorlageRemoteService.getById(anyString())).thenReturn(WiedervorlageTestFactory.create());
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCreateCommand() {
-			doRequest(createEditWiedervorlageRequestContent()).andExpect(status().isCreated());
-
-			verify(commandRemoteService).createCommand(any());
-		}
-
-		@WithMockUser
-		@DisplayName("should return validation error")
-		@Nested
-		class TestValidation {
-
-			@SneakyThrows
-			@DisplayName("for null Betreff")
-			@Test
-			void createCommandWithInvalidBetreff() {
-				String content = buildContentWithBetreff(null);
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editWiedervorlage.wiedervorlage.betreff"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-			@SneakyThrows
-			@DisplayName("for only 1 character in Betreff")
-			@Test
-			void createcommandWithShortBetreff() {
-				String content = buildContentWithBetreff("a");
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editWiedervorlage.wiedervorlage.betreff"));
-
-			}
-
-			@SneakyThrows
-			@DisplayName("for invalid betreff should have paramter")
-			@Test
-			void minMaxParameter() {
-				String content = buildContentWithBetreff("a");
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].constraintParameters.length()").value(2));
-			}
-
-			@SneakyThrows
-			@DisplayName("for 41 character in Betreff")
-			@Test
-			void createCommandWithLongBetreff() {
-				var content = buildContentWithBetreff(RandomStringUtils.random(41));
-
-				doRequest(content).andExpect(status().isUnprocessableEntity());
-			}
-
-			private String buildContentWithBetreff(String betreff) {
-				return createEditContent(WiedervorlageTestFactory.createBuilder().betreff(betreff).build());
-			}
-
-			@SneakyThrows
-			@DisplayName("for frist in past")
-			@Test
-			void createCommandWithInvalidDate() {
-				String content = createEditContent(WiedervorlageTestFactory.createBuilder().frist(LocalDate.parse("2020-01-01")).build());
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editWiedervorlage.wiedervorlage.frist"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_DATE_PAST));
-			}
-
-			@SneakyThrows
-			@DisplayName("for empty frist")
-			@Test
-			void createCommandWithoutDate() {
-				String content = createEditContent(WiedervorlageTestFactory.createBuilder().frist(null).build());
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("editWiedervorlage.wiedervorlage.frist"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-			private String createEditContent(Wiedervorlage wiedervorlage) {
-				return WiedervorlageTestFactory
-						.createRequestContent(createWithWiedervorlage(wiedervorlage).toBuilder().order(LegacyOrder.EDIT_WIEDERVORLAGE).build());
-			}
-
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(String content) {
-			return mockMvc.perform(
-					post(WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS, WiedervorlageTestFactory.ID, WiedervorlageTestFactory.VERSION)
-							.with(csrf())
-							.contentType(MediaType.APPLICATION_JSON)
-							.content(content));
-		}
-	}
-
-	@DisplayName("Create create command")
-	@WithMockUser
-	@Nested
-	class TestCreateCreateCommand {
-
-		private static final long RELATION_ID_ON_CREATE = -1;
-
-		@BeforeEach
-		void initTest() {
-			when(commandRemoteService.createCommand(any())).thenReturn(CommandTestFactory.create());
-			when(wiedervorlageRemoteService.getById(anyString())).thenReturn(WiedervorlageTestFactory.create());
-
-			doReturn(UserProfileTestFactory.ID).when(userService).getUserId();
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldCallCreateCommand() {
-			doRequest(createEditWiedervorlageRequestContent());
-
-			verify(commandRemoteService).createCommand(any());
-		}
-
-		@SneakyThrows
-		@Test
-		void shouldReturnCreatedStatus() {
-			var response = doRequest(createEditWiedervorlageRequestContent());
-
-			response.andExpect(status().isCreated());
-		}
-
-		@WithMockUser
-		@DisplayName("should return validation error")
-		@Nested
-		class TestValidation {
-
-			@SneakyThrows
-			@DisplayName("for null Betreff")
-			@Test
-			void createCommandWithInvalidBetreff() {
-				String content = buildContentWithBetreff(null);
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("createWiedervorlage.wiedervorlage.betreff"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-			@SneakyThrows
-			@DisplayName("for only 1 character in Betreff")
-			@Test
-			void createcommandWithShortBetreff() {
-				String content = buildContentWithBetreff("a");
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].name").value("createWiedervorlage.wiedervorlage.betreff"));
-
-			}
-
-			@SneakyThrows
-			@DisplayName("for invalid betreff should have paramter")
-			@Test
-			void minMaxParameter() {
-				String content = buildContentWithBetreff("a");
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams[0].constraintParameters.length()").value(2));
-			}
-
-			@SneakyThrows
-			@DisplayName("for 41 character in Betreff")
-			@Test
-			void createCommandWithLongBetreff() {
-				var content = buildContentWithBetreff(RandomStringUtils.randomAlphanumeric(41));
-
-				doRequest(content).andExpect(status().isUnprocessableEntity());
-			}
-
-			private String buildContentWithBetreff(String betreff) {
-				return WiedervorlageTestFactory
-						.createRequestContent(createWithWiedervorlage(WiedervorlageTestFactory.createBuilder().betreff(betreff).build()));
-			}
-
-			@SneakyThrows
-			@DisplayName("for frist in past")
-			@Test
-			void createCommandWithInvalidDate() {
-				String content = WiedervorlageTestFactory.createRequestContent(
-						createWithWiedervorlage(WiedervorlageTestFactory.createBuilder().frist(LocalDate.parse("2020-01-01")).build()));
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("createWiedervorlage.wiedervorlage.frist"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_DATE_PAST));
-			}
-
-			@SneakyThrows
-			@DisplayName("for empty frist")
-			@Test
-			void createCommandWithoutDate() {
-				String content = WiedervorlageTestFactory.createRequestContent(
-						createWithWiedervorlage(WiedervorlageTestFactory.createBuilder().frist(null).build()));
-
-				doRequest(content).andExpect(status().isUnprocessableEntity())
-						.andExpect(jsonPath("$.invalidParams.length()").value(1))
-						.andExpect(jsonPath("$.invalidParams[0].name").value("createWiedervorlage.wiedervorlage.frist"))
-						.andExpect(jsonPath("$.invalidParams[0].reason").value(ValidationMessageCodes.FIELD_IS_EMPTY));
-			}
-
-		}
-
-		@SneakyThrows
-		private ResultActions doRequest(String content) {
-			return mockMvc.perform(post(WiedervorlageCommandByVorgangController.WIEDERVORLAGE_COMMANDS_BY_VORGANG, VorgangHeaderTestFactory.ID,
-					RELATION_ID_ON_CREATE)
-							.with(csrf())
-							.contentType(MediaType.APPLICATION_JSON)
-							.content(content));
-		}
-	}
-
-	private String createEditWiedervorlageRequestContent() {
-		var createCommand = CommandTestFactory.createCreateCommandBuilder().body(WiedervorlageTestFactory.create())
-				.order(LegacyOrder.EDIT_WIEDERVORLAGE).build();
-		return WiedervorlageTestFactory.createRequestContent(createCommand);
-	}
-
-	private CreateCommand createWithWiedervorlage(Wiedervorlage wiedervorlage) {
-		return CommandTestFactory.createCreateCommandBuilder()
-				.body(wiedervorlage)
-				.order("EDIT_WIEDERVORLAGE")
-				.build();
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerITCase.java
deleted file mode 100644
index 47dc52737fd501dcabafbe44a7d96a220612257b..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerITCase.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-
-import de.ozgcloud.alfa.common.user.UserRole;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-@WithMockUser
-@AutoConfigureMockMvc
-@SpringBootTest
-public class WiedervorlageControllerITCase {
-
-	@MockBean
-	private WiedervorlageService service;
-	@MockBean
-	private VorgangController vorgangController;
-	@Autowired
-	private MockMvc mockMvc;
-
-	@WithMockUser
-	@Nested
-	class TestGetById {
-
-		@BeforeEach
-		void beforeEach() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
-		}
-
-		@WithMockUser(roles = { UserRole.EINHEITLICHER_ANSPRECHPARTNER })
-		@Nested
-		class OnRoleEinheitlicherAnsprechpartner {
-
-			@Test
-			void shouldReturnForbidden() throws Exception {
-				callEndpoint().andExpect(status().isForbidden());
-			}
-		}
-
-		@WithMockUser(roles = UserRole.VERWALTUNG_POSTSTELLE)
-		@Nested
-		class OnRoleVerwaltungPoststelle {
-
-			@Test
-			void shouldReturnForbidden() throws Exception {
-				callEndpoint().andExpect(status().isForbidden());
-			}
-		}
-
-		@WithMockUser(roles = UserRole.VERWALTUNG_USER)
-		@Nested
-		class OnRoleVerwaltungUser {
-
-			@BeforeEach
-			void mockController() {
-				when(service.getById(any())).thenReturn(WiedervorlageTestFactory.create());
-			}
-
-			@Test
-			void shouldReturnStatusOk() throws Exception {
-				callEndpoint().andExpect(status().isOk());
-			}
-
-			@Test
-			void shouldReturnResult() throws Exception {
-				callEndpoint().andExpect(jsonPath("$._links.self").exists())
-						.andExpect(jsonPath("$._links.createdBy").exists())
-						.andExpect(jsonPath("$.createdAt").value(WiedervorlageTestFactory.CREATED_AT_STR))
-						.andExpect(jsonPath("$.frist").value(WiedervorlageTestFactory.FRIST_STR));
-			}
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(WiedervorlageController.WIEDERVORLAGE_PATH + "/" + WiedervorlageTestFactory.ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java
deleted file mode 100644
index 9223e8e87e0db4f66bb0bfb7bef14aebd99bb894..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageControllerTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentMatchers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class WiedervorlageControllerTest {
-
-	private final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH + "/";
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageController controller;
-	@Mock
-	private WiedervorlageService service;
-	@Mock
-	private WiedervorlageModelAssembler modelAssembler;
-	@Mock
-	private BinaryFileController binaryFileController;
-	@Mock
-	private WiedervorlageMapper mapper;
-
-	private MockMvc mockMvc;
-
-	@BeforeEach
-	void initTest() {
-		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
-	}
-
-	@Nested
-	class TestGetById {
-
-		private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.getById(any())).thenReturn(wiedervorlage);
-		}
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			callEndpoint().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).getById(WiedervorlageTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toModel(wiedervorlage);
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(PATH + WiedervorlageTestFactory.ID));
-		}
-	}
-
-	@Nested
-	class TestFindByVorgang {
-
-		private Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-
-		@BeforeEach
-		void mockService() {
-			when(service.findByVorgangId(any())).thenReturn(Stream.of(wiedervorlage));
-		}
-
-		@Test
-		void shouldReturnStatusOk() throws Exception {
-			callEndpoint().andExpect(status().isOk());
-		}
-
-		@Test
-		void shouldCallService() throws Exception {
-			callEndpoint();
-
-			verify(service).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallModelAssembler() throws Exception {
-			callEndpoint();
-
-			verify(modelAssembler).toCollectionModel(ArgumentMatchers.<Stream<Wiedervorlage>>any(), eq(VorgangHeaderTestFactory.ID));
-		}
-
-		private ResultActions callEndpoint() throws Exception {
-			return mockMvc.perform(get(PATH).param(WiedervorlageController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID));
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapperTest.java
deleted file mode 100644
index 6ac848248819ccf9fac2a26eea57a054812ad199..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageMapperTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mapstruct.factory.Mappers;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.binaryfile.FileIdMapper;
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper;
-
-class WiedervorlageMapperTest {
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageMapper mapper = Mappers.getMapper(WiedervorlageMapper.class);
-	@Spy
-	private FileIdMapper fileIdMapper = Mappers.getMapper(FileIdMapper.class);
-	@Mock
-	private GrpcObjectMapper grpcObjectMapper;
-
-	@DisplayName("Map from item")
-	@Nested
-	class TestFromItem {
-
-		@BeforeEach
-		void mockMapper() {
-			when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(WiedervorlageTestFactory.createAsMap());
-		}
-
-		@Test
-		void shouldCallGrpcObjectMapper() {
-			mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM);
-		}
-
-		@Test
-		void shouldCallMapperFromItemMap() {
-			mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
-
-			verify(mapper).fromItemMap(WiedervorlageTestFactory.createAsMap(), VorgangAttachedItemTestFactory.VERSION);
-		}
-	}
-
-	@DisplayName("Map from item map")
-	@Nested
-	class TestFromItemMap {
-
-		@Test
-		void shouldMapId() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getId()).isEqualTo(WiedervorlageTestFactory.ID);
-		}
-
-		@Test
-		void shouldMapVersion() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getVersion()).isEqualTo(WiedervorlageTestFactory.VERSION);
-		}
-
-		@Test
-		void shouldMapDone() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.isDone()).isEqualTo(WiedervorlageTestFactory.DONE);
-		}
-
-		@Test
-		void shouldMapCreatedBy() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getCreatedBy()).isEqualTo(WiedervorlageTestFactory.CREATED_BY);
-		}
-
-		@Test
-		void shouldMapCreatedAt() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getCreatedAt()).isEqualTo(WiedervorlageTestFactory.CREATED_AT);
-		}
-
-		@Test
-		void shouldMapBetreff() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getBetreff()).isEqualTo(WiedervorlageTestFactory.BETREFF);
-		}
-
-		@Test
-		void shouldMapBeschreibung() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getBeschreibung()).isEqualTo(WiedervorlageTestFactory.BESCHREIBUNG);
-		}
-
-		@Test
-		void shouldMapFrist() {
-			var wiedervorlage = map();
-
-			assertThat(wiedervorlage.getFrist()).isEqualTo(WiedervorlageTestFactory.FRIST);
-		}
-
-		@Nested
-		class Attachments {
-
-			@Test
-			void shouldReturnEmptyListOnNull() {
-				var wiedervorlageWithoutAttachments = new HashMap<String, Object>();
-				wiedervorlageWithoutAttachments.putAll(WiedervorlageTestFactory.createAsMap());
-				wiedervorlageWithoutAttachments.remove(WiedervorlageMapper.ATTACHMENTS);
-
-				var wiedervorlage = mapper.fromItemMap(wiedervorlageWithoutAttachments, WiedervorlageTestFactory.VERSION);
-
-				assertThat(wiedervorlage.getAttachments()).isEmpty();
-			}
-
-			@Test
-			void shouldMapSingleAttachment() {
-				var wiedervorlage = map();
-
-				assertThat(wiedervorlage.getAttachments()).contains(BinaryFileTestFactory.FILE_ID);
-			}
-
-			@Test
-			void shouldMapAttachmentList() {
-				var wiedervorlage = mapper.fromItemMap(createWiedervorlageAsMapWithMultipleAttachments(), WiedervorlageTestFactory.VERSION);
-
-				assertThat(wiedervorlage.getAttachments()).hasSize(2);
-				assertThat(wiedervorlage.getAttachments().get(0)).isEqualTo(BinaryFileTestFactory.FILE_ID);
-				assertThat(wiedervorlage.getAttachments().get(0)).isEqualTo(BinaryFileTestFactory.FILE_ID);
-			}
-
-			private HashMap<String, Object> createWiedervorlageAsMapWithMultipleAttachments() {
-				var wiedervorlageItem = new HashMap<String, Object>();
-				wiedervorlageItem.putAll(WiedervorlageTestFactory.createAsMap());
-				wiedervorlageItem.put(WiedervorlageMapper.ATTACHMENTS, List.of(BinaryFileTestFactory.ID, BinaryFileTestFactory.ID));
-				return wiedervorlageItem;
-			}
-		}
-
-		private Wiedervorlage map() {
-			return mapper.fromItemMap(WiedervorlageTestFactory.createAsMap(), WiedervorlageTestFactory.VERSION);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java
deleted file mode 100644
index 01cbb98f06ab930c917ae0bff08a2afd6d90e7aa..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageModelAssemblerTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Collections;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.env.Environment;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.hateoas.IanaLinkRelations;
-import org.springframework.hateoas.server.EntityLinks;
-
-import de.ozgcloud.alfa.common.UserProfileUrlProvider;
-import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangController;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
-import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
-
-class WiedervorlageModelAssemblerTest {
-
-	private final String PATH = WiedervorlageController.WIEDERVORLAGE_PATH + "/";
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageModelAssembler modelAssembler;
-
-	@Mock
-	private EntityLinks entityLinks;
-	@Mock
-	private VorgangController vorgangController;
-
-	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
-
-	@BeforeEach
-	void initTest() {
-		var context = mock(ApplicationContext.class);
-		var environment = mock(Environment.class);
-		when(environment.getProperty(anyString())).thenReturn("test/");
-		when(context.getEnvironment()).thenReturn(environment);
-		urlProvider.setApplicationContext(context);
-	}
-
-	@Nested
-	class TestToModel {
-
-		@Test
-		void shouldLoadVorgang() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(VorgangWithEingangTestFactory.create());
-
-			modelAssembler.toModel(WiedervorlageTestFactory.create());
-
-			verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldBuildModel() {
-			var wiedervorlage = WiedervorlageTestFactory.create();
-			var vorgang = VorgangWithEingangTestFactory.create();
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-
-			modelAssembler.toModel(wiedervorlage);
-
-			verify(modelAssembler).buildModel(wiedervorlage, vorgang);
-		}
-	}
-
-	@Nested
-	class TestLinksOnModel {
-		private static final String COMMAND_BY_WIEDERVORLAGE_PATH = WiedervorlageCommandController.WIEDERVORLAGE_COMMANDS
-				.replace("{wiedervorlageId}", WiedervorlageTestFactory.ID)
-				.replace("{wiedervorlageVersion}", String.valueOf(WiedervorlageTestFactory.VERSION));
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@Test
-		void shouldHaveSelfLink() {
-			var link = buildModel().getLink(IanaLinkRelations.SELF);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(PATH + WiedervorlageTestFactory.ID);
-		}
-
-		@Test
-		void shouldHaveEditLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-			var link = buildModel().getLink(WiedervorlageModelAssembler.REL_EDIT);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo(COMMAND_BY_WIEDERVORLAGE_PATH);
-		}
-
-		@Test
-		void shouldNotHaveEditLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-			var link = buildModel().getLink(WiedervorlageModelAssembler.REL_EDIT);
-
-			assertThat(link).isEmpty();
-		}
-
-		@Nested
-		class TestErledigenLink {
-
-			@Test
-			void shouldHaveLink() {
-				var link = buildModel().getLink(WiedervorlageModelAssembler.REL_ERLEDIGEN);
-
-				assertThat(link).isPresent();
-				assertThat(link.get().getHref()).isEqualTo(COMMAND_BY_WIEDERVORLAGE_PATH);
-			}
-
-			@Test
-			void shouldNotHaveLink() {
-				EntityModel<Wiedervorlage> entityModel = modelAssembler.buildModel(WiedervorlageTestFactory.createBuilder().done(true).build(),
-						VorgangWithEingangTestFactory.create());
-
-				var link = entityModel.getLink(WiedervorlageModelAssembler.REL_ERLEDIGEN);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		@Nested
-		class TestWiedereroeffnenLink {
-			@Test
-			void shouldHaveLink() {
-				EntityModel<Wiedervorlage> entityModel = modelAssembler.buildModel(WiedervorlageTestFactory.createBuilder().done(true).build(),
-						VorgangWithEingangTestFactory.create());
-
-				var link = entityModel.getLink(WiedervorlageModelAssembler.REL_WIEDEREROEFFNEN);
-
-				assertThat(link).isPresent();
-				assertThat(link.get().getHref()).isEqualTo(COMMAND_BY_WIEDERVORLAGE_PATH);
-			}
-
-			@Test
-			void shouldNotHaveLink() {
-				EntityModel<Wiedervorlage> entityModel = modelAssembler.buildModel(WiedervorlageTestFactory.create(),
-						VorgangWithEingangTestFactory.create());
-
-				var link = entityModel.getLink(WiedervorlageModelAssembler.REL_WIEDEREROEFFNEN);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		@Nested
-		class TestAttachmentsLink {
-
-			@Test
-			void shouldHaveLink() {
-				EntityModel<Wiedervorlage> entityModel = modelAssembler
-						.buildModel(WiedervorlageTestFactory.createBuilder().attachment(OzgFileTestFactory.ID).build(),
-								VorgangWithEingangTestFactory.create());
-
-				var link = entityModel.getLink(WiedervorlageModelAssembler.REL_ATTACHMENTS);
-
-				assertThat(link).isPresent();
-				assertThat(link.get().getHref()).isEqualTo("/api/wiedervorlages/" + WiedervorlageTestFactory.ID + "/attachments");
-			}
-
-			@Test
-			void shouldNotHaveLink() {
-				EntityModel<Wiedervorlage> entityModel = modelAssembler
-						.buildModel(WiedervorlageTestFactory.createBuilder().clearAttachments().build(), VorgangWithEingangTestFactory.create());
-
-				var link = entityModel.getLink(WiedervorlageModelAssembler.REL_ATTACHMENTS);
-
-				assertThat(link).isNotPresent();
-			}
-		}
-
-		private EntityModel<Wiedervorlage> buildModel() {
-			return modelAssembler.buildModel(WiedervorlageTestFactory.create(), vorgang);
-		}
-	}
-
-	@Nested
-	class TestLinksOnCollectionModel {
-
-		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
-
-		@BeforeEach
-		void beforeEach() {
-			when(vorgangController.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
-		}
-
-		@Test
-		void shouldBuildModel() {
-			var wiedervorlage = WiedervorlageTestFactory.create();
-
-			modelAssembler.toCollectionModel(Stream.of(wiedervorlage), VorgangHeaderTestFactory.ID);
-
-			verify(modelAssembler).buildModel(wiedervorlage, vorgang);
-		}
-
-		@Test
-		void shouldHaveCreateWiedervorlageLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(true);
-
-			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(WiedervorlageTestFactory.create()).stream(),
-					VorgangHeaderTestFactory.ID);
-			var link = collectionModel.getLink(WiedervorlageModelAssembler.REL_CREATE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/wiedervorlageCommands");
-		}
-
-		@Test
-		void shouldNotHaveCreateWiedervorlageLink() {
-			when(vorgangController.isEditable(vorgang)).thenReturn(false);
-
-			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(WiedervorlageTestFactory.create()).stream(),
-					VorgangHeaderTestFactory.ID);
-			var link = collectionModel.getLink(WiedervorlageModelAssembler.REL_CREATE);
-
-			assertThat(link).isEmpty();
-		}
-
-		@Test
-		void shouldHaveUploadFileLink() {
-			var collectionModel = modelAssembler.toCollectionModel(Collections.singleton(WiedervorlageTestFactory.create()).stream(),
-					VorgangHeaderTestFactory.ID);
-
-			var link = collectionModel.getLink(WiedervorlageModelAssembler.REL_UPLOAD_FILE);
-
-			assertThat(link).isPresent();
-			assertThat(link.get().getHref()).isEqualTo("/api/binaryFiles/" + VorgangHeaderTestFactory.ID + "/wiedervorlageAttachment/file");
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteServiceTest.java
deleted file mode 100644
index 3cb41192e665d213e4743b4e6450771d2d5de997..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageRemoteServiceTest.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.springframework.context.ApplicationContext;
-
-import de.ozgcloud.alfa.ApplicationTestFactory;
-import de.ozgcloud.alfa.vorgang.GrpcVorgangAttachedItemTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.vorgang.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcAccessPermission;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcDeleteClientAttributeRequest;
-import de.ozgcloud.vorgang.grpc.clientAttribute.GrpcSetClientAttributeRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
-import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItemResponse;
-import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
-
-class WiedervorlageRemoteServiceTest {
-
-	@Spy // NOSONAR
-	@InjectMocks
-	private WiedervorlageRemoteService service;
-
-	@Mock
-	private ClientAttributeServiceBlockingStub clientAttributeServiceStub;
-	@Mock
-	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
-	@Mock
-	private WiedervorlageMapper mapper;
-	@Mock
-	private ApplicationContext applicationContext;
-
-	@Nested
-	class TestFindByVorgangId {
-
-		private final GrpcFindVorgangAttachedItemResponse response = GrpcFindVorgangAttachedItemResponse.newBuilder()
-				.addVorgangAttachedItems(GrpcVorgangAttachedItemTestFactory.create())
-				.build();
-
-		@Nested
-		class ServiceMethod {
-
-			@BeforeEach
-			void initMocks() {
-				when(vorgangAttachedItemServiceStub.find(any())).thenReturn(response);
-			}
-
-			@Test
-			void shouldCallVorgangAttachedItemStub() {
-				service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-				verify(vorgangAttachedItemServiceStub).find(any(GrpcFindVorgangAttachedItemRequest.class));
-			}
-
-			@Nested
-			class Mapper {
-
-				@BeforeEach
-				void mockGrpcMapper() {
-					when(mapper.fromItem(any())).thenReturn(WiedervorlageTestFactory.create());
-				}
-
-				@Test
-				void shouldCallForWiedervorlage() {
-					callFindById();
-
-					verify(mapper).fromItem(GrpcVorgangAttachedItemTestFactory.create());
-				}
-
-				private void callFindById() {
-					var result = service.findByVorgangId(VorgangHeaderTestFactory.ID);
-					collectStreamElementsToTriggerLazyStream(result);
-				}
-
-				private void collectStreamElementsToTriggerLazyStream(Stream<Wiedervorlage> stream) {
-					stream.collect(Collectors.toList());
-				}
-			}
-		}
-
-		@Nested
-		class BuildRequest {
-
-			@Test
-			void shouldSetVorgangId() {
-				var request = buildRequest();
-
-				assertThat(request.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldSetItemName() {
-				var request = buildRequest();
-
-				assertThat(request.getItemName()).isEqualTo(WiedervorlageRemoteService.ITEM_NAME);
-			}
-
-			private GrpcFindVorgangAttachedItemRequest buildRequest() {
-				return service.buildFindRequest(VorgangHeaderTestFactory.ID);
-			}
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		private final GrpcVorgangAttachedItemRequest request = GrpcVorgangAttachedItemRequest.newBuilder()
-				.setId(WiedervorlageTestFactory.ID).build();
-		private final GrpcVorgangAttachedItemResponse response = GrpcVorgangAttachedItemResponse.newBuilder()
-				.setVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create())
-				.build();
-
-		@BeforeEach
-		void initMocks() {
-			when(vorgangAttachedItemServiceStub.getById(any())).thenReturn(response);
-			when(mapper.fromItem(any())).thenReturn(WiedervorlageTestFactory.create());
-		}
-
-		@Test
-		void shouldCallStub() {
-			service.getById(WiedervorlageTestFactory.ID);
-
-			verify(vorgangAttachedItemServiceStub).getById(request);
-		}
-
-		@Test
-		void shouldCallWiedervorlageMapper() {
-			service.getById(WiedervorlageTestFactory.ID);
-
-			verify(mapper).fromItem(GrpcVorgangAttachedItemTestFactory.create());
-		}
-
-		@Test
-		void shouldSetVorgangId() {
-			var wiedervorlage = service.getById(WiedervorlageTestFactory.ID);
-
-			assertThat(wiedervorlage.getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestUpdateNextFrist {
-
-		private static final LocalDate NEXT_FRIST = LocalDate.now();
-
-		@Test
-		void shouldSetOnExistingFrist() {
-			service.updateNextFrist(VorgangHeaderTestFactory.ID, Optional.of(NEXT_FRIST));
-
-			verify(service).setNextFrist(VorgangHeaderTestFactory.ID, NEXT_FRIST);
-		}
-
-		@Test
-		void shouldDeleteOnNull() {
-			doNothing().when(service).deleteNextFrist(any());
-
-			service.updateNextFrist(VorgangHeaderTestFactory.ID, Optional.empty());
-
-			verify(service).deleteNextFrist(VorgangHeaderTestFactory.ID);
-		}
-
-		@Nested
-		class OnExisting {
-
-			@Captor
-			private ArgumentCaptor<GrpcSetClientAttributeRequest> requestCaptor;
-
-			@Test
-			void shouldCallSetServiceStub() {
-				setNextFrist();
-
-				verify(clientAttributeServiceStub).set(any(GrpcSetClientAttributeRequest.class));
-			}
-
-			@Test
-			void shouldSetAccessPermissionToReadOnly() {
-				setNextFrist();
-
-				verify(clientAttributeServiceStub).set(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getAttribute().getAccess()).isEqualTo(GrpcAccessPermission.READ_ONLY);
-			}
-
-			@Test
-			void shouldSetAttributeName() {
-				setNextFrist();
-
-				verify(clientAttributeServiceStub).set(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getAttribute().getAttributeName())
-						.isEqualTo(WiedervorlageRemoteService.CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST);
-			}
-
-			@Test
-			void shouldSetAttributeValue() {
-				setNextFrist();
-
-				verify(clientAttributeServiceStub).set(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getAttribute().getValue().getStringValue())
-						.isEqualTo(NEXT_FRIST.format(DateTimeFormatter.ISO_DATE));
-			}
-
-			private void setNextFrist() {
-				service.setNextFrist(VorgangHeaderTestFactory.ID, NEXT_FRIST);
-			}
-		}
-
-		@Nested
-		class OnNonExisting {
-
-			@Captor
-			private ArgumentCaptor<GrpcDeleteClientAttributeRequest> requestCaptor;
-
-			@BeforeEach
-			void init() {
-				when(applicationContext.getId()).thenReturn(ApplicationTestFactory.CONTEXT_ID);
-			}
-
-			@Test
-			void shouldCallDeleteOnServiceStub() {
-				deleteNextFrist();
-
-				verify(clientAttributeServiceStub).delete(any(GrpcDeleteClientAttributeRequest.class));
-			}
-
-			@Test
-			void shouldCallWithAttributeName() {
-				deleteNextFrist();
-
-				verify(clientAttributeServiceStub).delete(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getAttributeName())
-						.isEqualTo(WiedervorlageRemoteService.CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST);
-			}
-
-			@Test
-			void shouldCallWithVorgangId() {
-				deleteNextFrist();
-
-				verify(clientAttributeServiceStub).delete(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getVorgangId()).isEqualTo(VorgangHeaderTestFactory.ID);
-			}
-
-			@Test
-			void shouldCallWithClient() {
-				deleteNextFrist();
-
-				verify(clientAttributeServiceStub).delete(requestCaptor.capture());
-				assertThat(requestCaptor.getValue().getClientName()).isEqualTo(ApplicationTestFactory.CONTEXT_ID);
-			}
-
-			private void deleteNextFrist() {
-				service.deleteNextFrist(VorgangHeaderTestFactory.ID);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java
deleted file mode 100644
index cfbec5ee80580d9ec3ab9e9c0a80b59be6280d4f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.*;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-
-import de.ozgcloud.alfa.common.attacheditem.VorgangAttachedItemService;
-import de.ozgcloud.alfa.common.command.Command;
-import de.ozgcloud.alfa.common.command.CommandService;
-import de.ozgcloud.alfa.common.command.CommandTestFactory;
-import de.ozgcloud.alfa.common.user.CurrentUserService;
-import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-
-class WiedervorlageServiceTest {
-
-	@Spy
-	@InjectMocks
-	private WiedervorlageService service;
-	@Mock
-	private WiedervorlageRemoteService remoteService;
-	@Mock
-	private VorgangAttachedItemService vorgangAttachedItemService;
-	@Mock
-	private CommandService commandService;
-	@Mock
-	private CurrentUserService currentUserService;
-
-	@DisplayName("Create wiedervorlage")
-	@Nested
-	class TestCreateWiedervorlage {
-
-		@DisplayName("should")
-		@Nested
-		class TestCalls {
-
-			@BeforeEach
-			void mockServices() {
-				doReturn(WiedervorlageTestFactory.create()).when(service).addCreated(any());
-				when(vorgangAttachedItemService.createNewWiedervorlage(any(), any())).thenReturn(CommandTestFactory.create());
-			}
-
-			@DisplayName("add created")
-			@Test
-			void shouldAddCreated() {
-				callCreateWiedervorlage();
-
-				verify(service).addCreated(any(Wiedervorlage.class));
-			}
-
-			@DisplayName("call vorgangattacheditem service")
-			@Test
-			void shouldCallVorgangAttachedItemService() {
-				callCreateWiedervorlage();
-
-				verify(vorgangAttachedItemService).createNewWiedervorlage(any(Wiedervorlage.class), eq(VorgangHeaderTestFactory.ID));
-			}
-		}
-
-		@DisplayName("Add created")
-		@Nested
-		class TestAddCreated {
-
-			@BeforeEach
-			void mockServices() {
-				when(currentUserService.getUserId()).thenReturn(UserProfileTestFactory.ID);
-			}
-
-			@Test
-			void shouldSetCreatedAt() throws Exception {
-				var wiedervorlage = callAddCreated();
-
-				assertThat(wiedervorlage.getCreatedAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(2, ChronoUnit.SECONDS));
-			}
-
-			@Test
-			void shouldSetCreatedBy() throws Exception {
-				var wiedervorlage = callAddCreated();
-
-				assertThat(wiedervorlage.getCreatedBy()).isEqualTo(UserProfileTestFactory.ID.toString());
-			}
-
-			private Wiedervorlage callAddCreated() {
-				return service.addCreated(WiedervorlageTestFactory.createBuilder().createdAt(null).createdBy(null).build());
-			}
-		}
-
-		private Command callCreateWiedervorlage() {
-			return service.createWiedervorlage(WiedervorlageTestFactory.create(), VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@DisplayName("Edit wiedervorlage")
-	@Nested
-	class TestEditWiedervorlage {
-
-		@Captor
-		private ArgumentCaptor<Wiedervorlage> wiedervorlageCaptor;
-
-		@Test
-		void shouldCallVorgangAttachedItemService() {
-			callEditWiedervorlage();
-
-			verify(vorgangAttachedItemService).editWiedervorlage(any(Wiedervorlage.class), any(), anyLong());
-		}
-
-		private Command callEditWiedervorlage() {
-			return service.editWiedervorlage(WiedervorlageTestFactory.create(), WiedervorlageTestFactory.ID, WiedervorlageTestFactory.VERSION);
-		}
-	}
-
-	@Nested
-	class TestGetById {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.getById(WiedervorlageTestFactory.ID);
-
-			verify(remoteService).getById(WiedervorlageTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestFindByVorgangId {
-
-		@Test
-		void shouldCallRemoteService() {
-			service.findByVorgangId(VorgangHeaderTestFactory.ID);
-
-			verify(remoteService).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-	}
-
-	@Nested
-	class TestUpdateNextFrist {
-
-		private final Wiedervorlage wiedervorlage = WiedervorlageTestFactory.create();
-		private final Wiedervorlage foundWiedervorlage = WiedervorlageTestFactory.create();
-
-		@Captor
-		private ArgumentCaptor<Stream<Wiedervorlage>> allWiedervorlagen;
-
-		@BeforeEach
-		void mockService() {
-			when(remoteService.findByVorgangId(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(foundWiedervorlage));
-			doReturn(Optional.of(WiedervorlageTestFactory.FRIST)).when(service).calculateNextFrist(any());
-		}
-
-		@Test
-		void shouldDoCalculation() {
-			callUpdateNextFrist();
-
-			verify(service).calculateNextFrist(any());
-		}
-
-		@Test
-		void shouldAddWiedervorlageToFoundWiedervorlagen() {
-			callUpdateNextFrist();
-
-			verify(service).calculateNextFrist(allWiedervorlagen.capture());
-			assertThat(allWiedervorlagen.getValue()).containsExactly(wiedervorlage);
-		}
-
-		@Test
-		void shouldCallFindByVorgangId() {
-			callUpdateNextFrist();
-
-			verify(service).findByVorgangId(VorgangHeaderTestFactory.ID);
-		}
-
-		@Test
-		void shouldCallRemoteService() {
-			callUpdateNextFrist();
-
-			verify(remoteService).updateNextFrist(VorgangHeaderTestFactory.ID, Optional.of(WiedervorlageTestFactory.FRIST));
-		}
-
-		private void callUpdateNextFrist() {
-			service.updateNextFrist(VorgangHeaderTestFactory.ID, wiedervorlage);
-		}
-	}
-
-	@Nested
-	class TestCalculateNextFrist {
-
-		@Test
-		void shouldReturnNullOnAllDone() {
-			var wiedervorlage = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().plus(1, ChronoUnit.DAYS)).done(true).build();
-
-			var nextFrist = calculateNextFrist(Stream.of(wiedervorlage));
-
-			assertThat(nextFrist).isEmpty();
-		}
-
-		@Test
-		void shouldReturnEarliestFrist() {
-			var fristPast2Days = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().minus(2, ChronoUnit.DAYS)).done(false)
-					.build();
-			var fristPast1Day = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().minus(1, ChronoUnit.DAYS)).done(false).build();
-			var fristFuture1Day = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().plus(1, ChronoUnit.DAYS)).done(false)
-					.build();
-			var fristFuture2Days = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().plus(2, ChronoUnit.DAYS)).done(false)
-					.build();
-
-			var nextFrist = calculateNextFrist(Stream.of(fristPast2Days, fristPast1Day, fristFuture1Day, fristFuture2Days));
-
-			assertThat(nextFrist).contains(LocalDate.now().minus(2, ChronoUnit.DAYS));
-		}
-
-		@Test
-		void shouldReturnFristIgnoringDone() {
-			var fristPast1DayNotDone = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().plus(1, ChronoUnit.DAYS)).done(false)
-					.build();
-			var fristPast1DayDone = WiedervorlageTestFactory.createBuilder().frist(LocalDate.now().minus(1, ChronoUnit.DAYS)).done(true)
-					.build();
-
-			var nextFrist = calculateNextFrist(Stream.of(fristPast1DayNotDone, fristPast1DayDone));
-
-			assertThat(nextFrist).contains(LocalDate.now().plus(1, ChronoUnit.DAYS));
-		}
-
-		private Optional<LocalDate> calculateNextFrist(Stream<Wiedervorlage> wiedervorlagen) {
-			return service.calculateNextFrist(wiedervorlagen);
-		}
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageTestFactory.java
deleted file mode 100644
index 31a2aade46b08ee5db350607d0378b2dbc3c014f..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageTestFactory.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-package de.ozgcloud.alfa.wiedervorlage;
-
-import java.time.LocalDate;
-import java.time.ZonedDateTime;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.thedeanda.lorem.LoremIpsum;
-
-import de.ozgcloud.alfa.common.binaryfile.BinaryFileTestFactory;
-import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
-import de.ozgcloud.common.test.TestUtils;
-
-public class WiedervorlageTestFactory {
-
-	public static final String ID = UUID.randomUUID().toString();
-	public static final long VERSION = 73;
-	public static final boolean DONE = false;
-	public static final String CREATED_BY = UUID.randomUUID().toString();
-	public static final String CREATED_BY_NAME = LoremIpsum.getInstance().getName();
-
-	public static final String BETREFF = "Lorem Ipsum";
-	public static final String BESCHREIBUNG = "Lorem Ipsum dolores est";
-	public static final String FRIST_STR = "2121-01-04";
-	public static final LocalDate FRIST = LocalDate.parse(FRIST_STR);
-	public static final String CREATED_AT_STR = "2021-01-10T10:30:00Z";
-	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
-
-	public static Wiedervorlage create() {
-		return createBuilder().build();
-	}
-
-	public static Wiedervorlage.WiedervorlageBuilder createBuilder() {
-		return Wiedervorlage.builder()
-				.id(ID)
-				.version(VERSION)
-				.done(DONE)
-				.betreff(BETREFF)
-				.beschreibung(BESCHREIBUNG)
-				.createdBy(CREATED_BY)
-				.createdAt(CREATED_AT)
-				.frist(FRIST)
-				.vorgangId(VorgangHeaderTestFactory.ID)
-				.attachment(BinaryFileTestFactory.FILE_ID);
-	}
-
-	public static Map<String, Object> createAsMap() {
-		return Map.of(
-				WiedervorlageMapper.ID, ID,
-				WiedervorlageMapper.DONE, String.valueOf(DONE),
-				WiedervorlageMapper.CREATED_BY, CREATED_BY,
-				WiedervorlageMapper.CREATED_BY_NAME, CREATED_BY_NAME,
-				WiedervorlageMapper.BETREFF, BETREFF,
-				WiedervorlageMapper.BESCHREIBUNG, BESCHREIBUNG,
-				WiedervorlageMapper.FRIST, FRIST_STR,
-				WiedervorlageMapper.CREATED_AT, CREATED_AT_STR,
-				WiedervorlageMapper.ATTACHMENTS, BinaryFileTestFactory.ID);
-	}
-
-	public static String createRequestContent(CreateCommand command) {
-		var wiedervorlage = (Wiedervorlage) command.getBody();
-		return TestUtils.loadTextFile("jsonTemplates/command/createCommandWithWiedervorlage.json.tmpl",
-				command.getOrder(),
-				TestUtils.addQuote(wiedervorlage.getBetreff()),
-				wiedervorlage.getBeschreibung(),
-				Optional.ofNullable(wiedervorlage.getFrist()).map(String::valueOf).orElse(StringUtils.EMPTY),
-				"/api/binaryFiles/" + BinaryFileTestFactory.FILE_ID);
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/alfa-service/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
deleted file mode 100644
index 79b126e6cdb86bec1f4f08c205de8961bde1934a..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
+++ /dev/null
@@ -1 +0,0 @@
-org.mockito.junit.jupiter.MockitoExtension
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/application-itcase.yml b/alfa-service/src/test/resources/application-itcase.yml
deleted file mode 100644
index fac9b02ef0adae1671ca00ef19d29e60cab7e6c7..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/application-itcase.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-logging:
-  level:
-    ROOT: ERROR
-    
-ozgcloud:
-  upload:
-    maxFileSize:
-      postfachNachrichtAttachment: 3MB
-    content-types:
-      attachment:
-        - application/pdf
-        - image/png
-  user-manager:
-    url: https://localhost
-    internalurl: http://localhost:8080
-    search-template: /api/userProfiles/?searchBy={searchBy}
-    profile-template: /api/userProfiles/%s
diff --git a/alfa-service/src/test/resources/application.yml b/alfa-service/src/test/resources/application.yml
deleted file mode 100644
index ea81cad0839dc0d94a6ee477c178dd42c66b44fe..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/application.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-logging:
-  level:
-    ROOT: WARN
-    '[de.ozgcloud]': INFO,
-    '[org.springframework.security]': WARN
-
-ozgcloud:
-  auth:
-    token:
-      secret: XPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6YwoirXPPWagXn3rDwKG6Ywoir
-      validity: 60000
-  keycloak:
-    auth-server-url: https://sso.dev.by.ozg-cloud.de
-    realm: by-kiel-dev
-    resource: ${jwt.auth.converter.resource-id}
-  production: true
-  upload:
-    maxFileSize:
-      postfachNachrichtAttachment: 3MB
-      wiedervorlageAttachment: 40MB
-  user-manager:
-    url: https://localhost
-    profile-template: /api/userProfiles/%s
-    search-template: /api/userProfiles/?searchBy={searchBy}
-
-jwt:
-  auth:
-    converter:
-      resource-id: alfa
-      principle-attribute: preferred_username
-
-spring:
-  mvc:
-    pathmatch:
-      matching-strategy: ant-path-matcher
-  application:
-    name: Alfa
-  jackson:
-    deserialization:
-      'ADJUST_DATES_TO_CONTEXT_TIME_ZONE': false
-  servlet:
-    multipart:
-      max-file-size: 2GB
-      max-request-size: 2GB
-  config:
-    import: optional:configserver:http://localhost:8888/
-  security:
-    oauth2:
-      resourceserver:
-        jwt:
-          issuer-uri: ${ozgcloud.keycloak.auth-server-url}/realms/${ozgcloud.keycloak.realm}
-          jwk-set-uri: ${spring.security.oauth2.resourceserver.jwt.issuer-uri}/protocol/openid-connect/certs
-
-server:
-  http2:
-    enabled: true
-  error:
-    include-stacktrace: never
-
-management:
-  server:
-    port: 8081
-  health:
-    livenessState:
-      enabled: true
-    readinessState:
-      enabled: true
-  endpoint:
-    health:
-      group:
-        exploratory:
-          include: livenessState,readinessState,ping
-          show-details: always
-      probes:
-        enabled: true
-    prometheus:
-      enabled: true
-  endpoints:
-    web:
-      exposure:
-        include: health,prometheus,refresh
-
-grpc:
-  client:
-    vorgang-manager:
-      address: static://127.0.0.1:9090
-      negotiationType: PLAINTEXT
-    user-manager:
-      address: static://127.0.0.1:9000
-      negotiationType: TLS
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/commandAssignedToBody b/alfa-service/src/test/resources/jsonTemplates/command/commandAssignedToBody
deleted file mode 100644
index 4858e4f247bfbbc6de0a37a048982fb0551893c0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/commandAssignedToBody
+++ /dev/null
@@ -1,3 +0,0 @@
- {
- 	"assignedTo": %s
- }
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBescheid.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBescheid.json.tmpl
deleted file mode 100644
index 440597de52230f9a1db024d2ad5854db23a39dcc..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBescheid.json.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-	"order": "%s",
-	"body": {
-		"beschiedenAm": "%s",
-		"bewilligt": "%s"
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBody.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBody.json.tmpl
deleted file mode 100644
index 41b89955e8ec974e571d5ff8a6586ed49ca4c8c3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithBody.json.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-	"order": "%s",
-	"body": %s
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithInvalidBescheid.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithInvalidBescheid.json.tmpl
deleted file mode 100644
index 98cbb1c3360deae091b8e4b28d3efc3ff4345348..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithInvalidBescheid.json.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-	"order": "%s",
-	"body": {
-		"beschiedenAm": null,
-		"bewilligt": "%s"
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl
deleted file mode 100644
index 072af9c1c4afb4c6546c741b4fe0f0479be53e11..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithKommentar.json.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-	"order": "%s",
-	"body": {
-		"text": %s,
-    	"attachments": []
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithPostfachMail.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithPostfachMail.json.tmpl
deleted file mode 100644
index 084dba61ed9df1bf10dcac68da7d19ca79dec891..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithPostfachMail.json.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-	"order": "%s",
-	"body": {
-		"replyOption": "%s",
-		"subject": %s,
-		"mailBody": %s,
-		"attachments": %s
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl
deleted file mode 100644
index 0e1be8961d1f1bdc4010e188d7e4ebce2331d637..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithRedirectRequest.json.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-	"order": "%s",
-	"redirectRequest": {
-		"email": %s,
-		"password": %s
-	},
-	"body": null
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithWiedervorlage.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithWiedervorlage.json.tmpl
deleted file mode 100644
index 4ef1fb4b5dbf2c90689c192c210ed32157bece63..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createCommandWithWiedervorlage.json.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-	"order": "%s",
-	"body": {
-		"betreff": %s,
-		"beschreibung": "%s",
-		"frist": "%s",
-		"attachments": ["%s"]
-	}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl
deleted file mode 100644
index fc927a2bb2ff911d26199aac44aa39dd658f9d47..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/createVorgangCommand.json.tmpl
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-	"order": "%s",
-	"body": null
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/hasNewPostfachNachricht.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/hasNewPostfachNachricht.json.tmpl
deleted file mode 100644
index 419bb5bcbb5a8951482425d305d39aa40a9dd9e0..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/hasNewPostfachNachricht.json.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"hasNewPostfachNachricht": %s
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/patchStatus.json b/alfa-service/src/test/resources/jsonTemplates/command/patchStatus.json
deleted file mode 100644
index 20a5c9066e1becb0e595789f03b82da35a833aea..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/patchStatus.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"status": "%s"
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/command/statusPatch.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/command/statusPatch.json.tmpl
deleted file mode 100644
index 3710fc4af4d0c0c1071cf32e0d83e678177809f3..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/command/statusPatch.json.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
- {
- 	"status": "%s"
- }
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/downloadTokenRequest.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/downloadTokenRequest.json.tmpl
deleted file mode 100644
index b7889317e3109cb467a78aa6c8a43f56b2bf10cd..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/downloadTokenRequest.json.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-	"fileId":"%s"
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/jsonTemplates/vorgangWithEingang.json.tmpl b/alfa-service/src/test/resources/jsonTemplates/vorgangWithEingang.json.tmpl
deleted file mode 100644
index f549216198f886c64ef591c958b19fa7031946ba..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/jsonTemplates/vorgangWithEingang.json.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{	
-	"name": "testName",
-	"status": "NEU",
-	"createdAt": "2012-04-23T18:25:43.511Z",
-	"aktenzeichen": "sadfjkhw7r3",
-	"nummer": "1234567788",
-	"hasNewPostfachNachricht": false,
-	"eingang": {}
-}
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/junit-platform.properties b/alfa-service/src/test/resources/junit-platform.properties
deleted file mode 100644
index 1cebb76d5a58ac034b2627d12411d82d1e85821e..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/junit-platform.properties
+++ /dev/null
@@ -1 +0,0 @@
-junit.jupiter.extensions.autodetection.enabled = true
\ No newline at end of file
diff --git a/alfa-service/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/alfa-service/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
deleted file mode 100644
index ca6ee9cea8ec189a088d50559325d4e84ff8ad09..0000000000000000000000000000000000000000
--- a/alfa-service/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
+++ /dev/null
@@ -1 +0,0 @@
-mock-maker-inline
\ No newline at end of file
diff --git a/release-erstellen.sh b/release-erstellen.sh
index 22249e9bd5e5847f25e367a1ac11db3f129a1d0e..182ce07649b687a7ac150227283ae58547da58ec 100755
--- a/release-erstellen.sh
+++ b/release-erstellen.sh
@@ -42,6 +42,8 @@ find . -name pom.xml -exec sed $SED_PARAMS 's/-SNAPSHOT//g' {} +
 ## release version auslesen
 NEWVERSION=$(xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v '//w:project/w:version' -n pom.xml)
 
+(cd alfa-client && nx release version --projects alfa -d $NEWVERSION)
+
 echo
 echo "NEXT STEPS:"
 echo "***********"
diff --git a/src/main/helm/.helmignore b/src/main/helm/.helmignore
deleted file mode 100644
index f48713aefc38112aeca6d64b5a57bea78aff5375..0000000000000000000000000000000000000000
--- a/src/main/helm/.helmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-unit-tests/
-tests/
\ No newline at end of file
diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml
deleted file mode 100644
index 57827741a713d3dca92265712d74efbeccf17dcb..0000000000000000000000000000000000000000
--- a/src/main/helm/Chart.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: v1
-appVersion: "1.1"
-description: A Helm chart for Alfa
-name: alfa
-version: 0.0.0-MANAGED-BY-JENKINS
-icon: https://simpleicons.org/icons/helm.svg
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
deleted file mode 100644
index 8aef70cf6b97a391e3cc7befe478936dcbb62600..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/_helpers.tpl
+++ /dev/null
@@ -1,203 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{/* vim: set filetype=mustache: */}}
-
-{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}}
-{{/* Namespace */}}
-{{- define "app.namespace" -}}
-{{- if gt (len (.Release.Namespace)) 63 -}}
-{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}}
-{{- end -}}
-{{ printf "%s" .Release.Namespace }}
-{{- end -}}
-
-{{/* Chart: Name + Version */}}
-{{- define "app.chart" -}}
-{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}}
-{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}}
-{{- end -}}
-{{ printf "%s-%s" .Chart.Name .Chart.Version }}
-{{- end -}}
-
-{{/* Managed-by -> On Helm, this value is always Helm */}}
-{{- define "app.managedBy" -}}
-{{- if gt (len (.Release.Service)) 63 -}}
-{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}}
-{{- end -}}
-{{ printf "%s" .Release.Service }}
-{{- end -}}
-
-{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}}
-{{- define "app.defaultLabels" }}
-app.kubernetes.io/instance: alfa
-app.kubernetes.io/managed-by: {{ include "app.managedBy" . }}
-app.kubernetes.io/name: {{ .Release.Name }}
-app.kubernetes.io/part-of: ozgcloud
-app.kubernetes.io/version: {{ .Chart.Version }}
-app.kubernetes.io/namespace: {{ include "app.namespace" . }}
-helm.sh/chart: {{ include "app.chart" . }}
-{{- end -}}
-
-{{- define "app.matchLabels" }}
-app.kubernetes.io/name: {{ .Release.Name }}
-app.kubernetes.io/namespace: {{ include "app.namespace" . }}
-{{- end -}}
-
-{{- define "app.envSpringProfiles" }}
-{{- if (.Values.env).overrideSpringProfiles -}}
-{{ printf "%s" (.Values.env).overrideSpringProfiles }}
-{{- else -}}
-{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.grpcClientVorgangManagerAddress" -}}
-{{ printf "dns:///%s.%s:9090" ( coalesce .Values.vorgangManagerName "vorgang-manager" ) .Release.Namespace | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end -}}
-
-{{- define "app.grpc_client_archive_manager_address" -}}
-{{ printf "dns:///%s.%s:9090" ( coalesce .Values.archiveManagerName "vorgang-manager" ) .Release.Namespace | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end -}}
-
-{{- define "app.grpc_client_user-manager_address" -}}
-{{ printf "dns:///%s.%s:9000" ( coalesce .Values.usermanagerName "user-manager" ) .Release.Namespace }}
-{{- end -}}
-
-{{- define "app.zufiNamespace" -}}
-{{ printf "%s" ( required "zufiManager.namespace must be set if zufiManager server is enabled" (.Values.zufiManager).namespace ) }}
-{{- end -}}
-
-{{- define "app.grpcClientZufiServerAddress" -}}
-{{ printf "dns:///%s.%s:9090" .Values.zufiManager.serverName (include "app.zufiNamespace" . ) }}
-{{- end -}}
-
-{{- define "app.grpc_client_collaboration-manager_address" -}}
-{{ printf "dns:///%s.%s:9090" ( coalesce .Values.collaborationManagerName "vorgang-manager" ) .Release.Namespace | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end -}}
-
-{{- define "app.spring_cloud_config_administration_address" -}}
-{{ printf "http://%s.%s:8080" ( coalesce .Values.administrationName "administration" ) .Release.Namespace }}
-{{- end -}}
-
-{{- define "app.baseUrl" -}}
-{{- required "baseUrl muss angegeben sein" .Values.baseUrl }}
-{{- end -}}
-
-{{- define "app.ozgcloud_user-manager_url" -}}
-{{- if (.Values).usermanagerUrl -}}
-{{ printf "%s" (.Values).usermanagerUrl }}
-{{- else -}}
-{{ printf "https://%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.usermanagerName (include "app.baseUrl" .) }}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.ozgcloudBundesland" -}}
-{{- required "Bundesland muss angegeben sein" (.Values.ozgcloud).bundesland }}
-{{- end -}}
-
-{{- define "app.ozgcloudBezeichner" -}}
-{{- required "ozgcloud.bezeichner muss angegeben sein" (.Values.ozgcloud).bezeichner -}}
-{{- if lt 46 (len (.Values.ozgcloud).bezeichner) -}}
-{{ fail (printf "ozgcloud.bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) }}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.ozgcloudEnvironment" -}}
-{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}}
-{{- end -}}
-
-{{- define "app.ssoRealm" -}}
-{{ printf "%s-%s-%s" (include "app.ozgcloudBundesland" .) ( include "app.ozgcloudBezeichner" . ) ( include "app.ozgcloudEnvironment" . ) | trunc 63 | trimSuffix "-" }}
-{{- end -}}
-
-{{- define "app.ssoClientName" -}}
-{{- if (.Values.sso).client_name -}}
-{{ printf "%s" (.Values.sso).client_name }}
-{{- else -}}
-{{ printf "alfa" }}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.ssoRealmDisplayName" -}}
-{{- if (.Values.sso).displayName -}}
-{{ printf "%s" (.Values.sso).displayName }}
-{{- else if eq (include "app.ozgcloudEnvironment" . ) "prod" -}}
-{{ printf "Realm für %s" (include "app.ozgcloudBezeichner" . | title ) }}
-{{- else -}}
-{{ printf "Realm für %s (%s)" (include "app.ozgcloudBezeichner" . | title ) (include "app.ozgcloudEnvironment" .) }}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.ssoServerUrl" -}}
-{{- required "sso.serverUrl muss angegeben sein" (.Values.sso).serverUrl -}}
-{{- end -}}
-
-{{- define "app.baseDomain" -}}
-{{- printf "%s.%s" (include "app.ozgcloudBezeichner" .) (include "app.baseUrl" .) }}
-{{- end -}}
-
-{{- define "app.generateKeycloakGroupRessourceName" -}}
-{{- $kebabcaseGroupName := . | title | nospace | kebabcase }}
-{{- $alphanumericGroupName :=  (include "app.replaceAllNonAlphanumeric" $kebabcaseGroupName ) }}
-{{- printf "%s-keycloak-group"  ( $alphanumericGroupName | trunc 20) }}
-{{- end -}}
-
-{{- define "app.replaceAllNonAlphanumeric" -}}
-{{- trimAll "-" ( regexReplaceAll "[^a-zA-Z0-9-]" . "" ) }}
-{{- end -}}
-
-{{- define "app.generateKeycloakUserRessourceName" -}}
-{{- $lowerUserName := . | lower }}
-{{- $alphanumericUserName :=  (include "app.replaceAllNonAlphanumeric" $lowerUserName ) }}
-{{- printf "%s-keycloak-user"  ( $alphanumericUserName | trunc 20) }}
-{{- end -}}
-
-{{- define "app.generateKeycloakClientRessourceName" -}}
-{{- $lowerClientName := . | lower }}
-{{- $alphanumericClientName :=  (include "app.replaceAllNonAlphanumeric" $lowerClientName ) }}
-{{- printf "%s-keycloak-client"  ( $alphanumericClientName | trunc 20) }}
-{{- end -}}
-
-{{- define "app.serviceAccountName" -}}
-{{ printf "%s" ( (.Values.serviceAccount).name | default "alfa-service-account" ) }}
-{{- end -}}
-
-{{- define "app.getCustomList" -}}
-{{- with (.Values.env).customList -}}
-{{- if kindIs "map" . -}}
-{{ include "app.dictToList" . }}
-{{- else if kindIs "slice" . -}}
-{{ . | toYaml }}
-{{- end -}}
-{{- end -}}
-{{- end -}}
-
-{{- define "app.dictToList" -}}
-{{- $customList := list -}}
-{{- range $key, $value := . -}}
-{{- $customList = append $customList (dict "name" $key "value" $value) }}
-{{- end -}}
-{{- $customList | toYaml -}}
-{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/bindings_type_configmap.yaml b/src/main/helm/templates/bindings_type_configmap.yaml
deleted file mode 100644
index 0d020726c2bb91fa1edad433e0b00a2416b87d37..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/bindings_type_configmap.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: alfa-bindings-type
-  namespace: {{ include "app.namespace" . }}
-data:
-  type: |
-    ca-certificates
\ No newline at end of file
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
deleted file mode 100644
index 6048e63b56257bb1b427aa53470d7733b203bff4..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/deployment.yaml
+++ /dev/null
@@ -1,243 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: {{ .Release.Name }}
-  namespace: {{ include "app.namespace" . }}
-  labels:
-    {{- include "app.defaultLabels" . | indent 4 }}
-spec:
-  progressDeadlineSeconds: 600
-  replicas: {{ .Values.replicaCount }}
-  revisionHistoryLimit: 10
-  selector:
-    matchLabels:
-      {{- include "app.matchLabels" . | indent 6 }}
-  strategy:
-    rollingUpdate:
-      maxSurge: 1
-      maxUnavailable: 0
-    type: RollingUpdate
-  template:
-    metadata:
-      labels:
-        {{- include "app.defaultLabels" . | indent 8 }}
-        component: alfa
-    spec:
-      {{- if (.Values.serviceAccount).create }}
-      serviceAccountName: {{ include "app.serviceAccountName" . }}
-      {{- end }}
-      topologySpreadConstraints:
-      - maxSkew: 1
-        topologyKey: kubernetes.io/hostname
-        whenUnsatisfiable: ScheduleAnyway
-        labelSelector:
-          matchLabels:
-            app.kubernetes.io/name: {{ .Release.Name }}
-      affinity:
-        nodeAffinity:
-          requiredDuringSchedulingIgnoredDuringExecution:
-            nodeSelectorTerms:
-            - matchExpressions:
-              - key: alfaable
-                operator: NotIn
-                values:
-                - "false"
-      containers:
-      - env:
-        - name: SERVICE_BINDING_ROOT
-          value: "/bindings"
-        - name: grpc_client_vorgang-manager_address
-          value: {{ include "app.grpcClientVorgangManagerAddress" . }}
-        - name: grpc_client_vorgang-manager_negotiationType
-          value: {{ (.Values.vorgangManager).grpcClientNegotiationType | default "TLS" }}
-        - name: grpc_client_user-manager_address
-          value: {{ include "app.grpc_client_user-manager_address" . }}
-        - name: grpc_client_user-manager_negotiationType
-          value: {{ (.Values.userManager).grpcClientNegotiationType | default "TLS" }}
-        - name: grpc_client_collaboration-manager_address
-          value: {{ include "app.grpc_client_collaboration-manager_address" . }}
-        - name: grpc_client_collaboration-manager_negotiationType
-          value: {{ (.Values.collaborationManager).grpcClientNegotiationType | default "TLS" }}
-        - name: grpc_client_archive-manager_address
-          value: {{ include "app.grpc_client_archive_manager_address" . }}
-        - name: grpc_client_archive-manager_negotiationType
-          value: {{ (.Values.archiveManager).grpcClientNegotiationType | default "TLS" }}
-        - name: spring_profiles_active
-          value: {{ include "app.envSpringProfiles" . }}
-        - name: keycloak_realm
-          value: {{ include "app.ssoRealm" . }}
-        - name: keycloak_resource
-          value: {{ include "app.ssoClientName" . }}
-        - name: keycloak_auth-server-url
-          value: {{ include "app.ssoServerUrl" . }}
-        - name: ozgcloud_user-manager_url
-          value: {{ include "app.ozgcloud_user-manager_url" . }}
-        {{- if (((.Values.ozgcloud).user_assistance).documentation).url }}
-        - name: ozgcloud_user-assistance_documentation_url
-          value: {{ .Values.ozgcloud.user_assistance.documentation.url }}
-        {{- end }}
-        {{- with include "app.getCustomList" . }}
-{{ . | indent 8 }}
-        {{- end }}
-        {{- if ((.Values.ozgcloud).vorgang).bescheid}}
-        {{- range $index, $bescheid := ((.Values.ozgcloud).vorgang).bescheid }}
-        - name: ozgcloud_vorgang_bescheid_{{ $index }}_formId
-          value: {{ $bescheid.formId | quote }}
-        - name: ozgcloud_vorgang_bescheid_{{ $index }}_formEngineName
-          value: {{ $bescheid.formEngineName }}
-        {{- end }}
-        {{- end}}
-        - name: ozgcloud_administration_address
-          value: {{ include "app.spring_cloud_config_administration_address" . }}
-{{- if ((.Values.ozgcloud).feature).collaborationEnabled }}
-        - name: grpc_client_zufi-manager_address
-          value: {{ include "app.grpcClientZufiServerAddress" . }}
-        - name: grpc_client_zufi-manager_negotiationType
-          value: {{ (.Values.zufiManager).grpcClientNegotiationType | default "TLS" }}
-{{- end }}
-        {{- if ((.Values.ozgcloud).feature).collaborationEnabled }}
-        - name: ozgcloud_feature_collaborationEnabled
-          value: {{ ((.Values.ozgcloud).feature).collaborationEnabled | quote }}
-        {{- end }}
-        - name: ozgcloud_barrierefreiheitUrl
-          value: {{ required "ozgcloud.barrierefreiheitUrl muss angegeben sein" (.Values.ozgcloud).barrierefreiheitUrl }}
-        image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}"
-        imagePullPolicy: Always
-        name: alfa
-        ports:
-        - containerPort: 8080
-          name: 8080tcp1
-          protocol: TCP
-        - containerPort: 8081
-          name: metrics
-          protocol: TCP
-        readinessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /actuator/health/readiness
-            port: 8081
-            scheme: HTTP
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 3
-        startupProbe:
-          failureThreshold: 10
-          httpGet:
-            path: /actuator/health/readiness
-            port: 8081
-            scheme: HTTP
-          initialDelaySeconds: 30
-          periodSeconds: 5
-          successThreshold: 1
-          timeoutSeconds: 5
-        {{- if .Values.enableLivenessProbe }}
-        livenessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /actuator/health/liveness
-            port: 8081
-            scheme: HTTP
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 3
-        {{- end }}
-        resources:
-        {{- with .Values.resources }}
-{{ toYaml . | indent 10 }}
-        {{- end }}
-        securityContext:
-          allowPrivilegeEscalation: false
-          privileged: false
-          readOnlyRootFilesystem: false
-          runAsNonRoot: true
-          {{- with (.Values.securityContext).runAsUser }}
-          runAsUser: {{ . }}
-          {{- end }}
-          {{- with (.Values.securityContext).runAsGroup }}
-          runAsGroup: {{ . }}
-          {{- end }}
-          {{- with (.Values.securityContext).capabilities }}
-          capabilities:
-{{ toYaml . | indent 12 }}
-          {{- end }}
-        stdin: true
-        terminationMessagePath: /dev/termination-log
-        terminationMessagePolicy: File
-        tty: true
-        volumeMounts:
-         - name: bindings
-           mountPath: "/bindings/ca-certificates/type"
-           subPath: type
-           readOnly: true
-         - name: temp-dir
-           mountPath: "/tmp"
-        {{- if (.Values.sso).tlsCertName }}
-         - name: sso-tls-certificate
-           mountPath: "/bindings/ca-certificates/sso-tls-crt.pem"
-           subPath: tls.crt
-           readOnly: true
-        {{- end }}
-         - name: namespace-ca-cert
-           mountPath: "/bindings/namespace-certificate"
-           readOnly: true
-      volumes:
-         - name: bindings
-           configMap:
-              name: alfa-bindings-type
-         - name: temp-dir
-           emptyDir: {}
-        {{- if (.Values.sso).tlsCertName }}
-         - name: sso-tls-certificate
-           secret:
-              secretName: {{ .Values.sso.tlsCertName }}
-        {{- end }}
-         - name: namespace-ca-cert
-           projected:
-             sources:
-             - secret:
-                 name: {{ include "app.namespace" . }}-ca-cert
-                 optional: true
-                 items:
-                   - key: ca.crt
-                     path: ca.crt
-             - configMap:
-                 name: alfa-bindings-type
-      dnsConfig: {}
-      dnsPolicy: ClusterFirst
-      imagePullSecrets:
-      - name: {{ required "imagePullSecret must be set" .Values.imagePullSecret }}
-      restartPolicy: Always
-      {{- with .Values.hostAliases }}
-      hostAliases:
-{{ toYaml . | indent 8 }}
-      {{- end }}
-      schedulerName: default-scheduler
-      {{- with .Values.podSecurityContext }}
-      securityContext:
-{{ toYaml . | indent 8 }}
-      {{- end }}
-      terminationGracePeriodSeconds: 30
diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml
deleted file mode 100644
index b82457c910dd8cc9a20d8f0b71ff39a441b1e0c9..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/ingress.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
-  annotations:
-    {{- with (.Values.ingress).annotations }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-    {{- if not (.Values.ingress).disableDefaultCertManager }}
-    {{- if (.Values.ingress).use_staging_cert }}
-    cert-manager.io/cluster-issuer: letsencrypt-staging
-    {{- else }}
-    cert-manager.io/cluster-issuer: letsencrypt-prod
-    {{- end }}
-    {{- end }}
-  name: {{ .Release.Name }}
-  namespace: {{ include "app.namespace" . }}
-spec:
-  {{- if (.Values.ingress).className }}
-  ingressClassName: {{ .Values.ingress.className }}
-  {{- end }}
-  rules:
-    - http:
-        paths:
-          - backend:
-              service:
-                port:
-                  number: 8080
-                name: {{ .Release.Name }}
-            path: ''
-            pathType: ImplementationSpecific
-      host: {{ include "app.baseDomain" . }}
-  tls:
-    - hosts:
-      - {{ include "app.baseDomain" . }}
-      {{- if not (.Values.ingress).skipTlsSecret -}}
-      {{- if (.Values.ingress).tlsSecretName }}
-      secretName: {{ (.Values.ingress).tlsSecretName }}
-      {{- else }}
-      secretName: {{ .Values.ozgcloud.bezeichner }}-{{ .Release.Name }}-tls
-      {{- end }}
-      {{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak_client_crd.yaml b/src/main/helm/templates/keycloak_client_crd.yaml
deleted file mode 100644
index 329ae2cc862a106e4c752dd61cf7aa6569b932fd..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/keycloak_client_crd.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator -}}
-{{ range $client := (.Values.sso).keycloak_clients }}
----
-apiVersion: operator.ozgcloud.de/v1
-kind: OzgCloudKeycloakClient
-metadata:
-  name: {{ include "app.generateKeycloakClientRessourceName" $client.client_name }}
-  namespace: {{ include "app.namespace" $ }}
-spec:
-  keep_after_delete: {{ $.Values.sso.keep_after_delete | default false }}
-  client_name: {{ $client.client_name }}
-{{- if $client.client_base_url }}
-  client_base_url: {{ $client.client_base_url }}
-{{- else }}
-  client_base_url: https://{{ include "app.baseDomain" $ }}
-{{- end }}
-{{- if $client.client_web_origins }}
-  client_web_origins:
-    {{- with $client.client_web_origins }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-{{- else }}
-  client_web_origins:
-    - https://{{ include "app.baseDomain" $ }}
-{{- end }}
-  {{- if $client.override_redirect_uris }}
-  client_redirect_uris:
-    {{- with $client.override_redirect_uris }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-  {{- else }}
-  client_redirect_uris:
-    - https://{{ include "app.baseDomain" $ }}
-    - https://{{ include "app.baseDomain" $ }}/*
-  {{- if $client.additional_redirect_uris }}
-    {{- with $client.additional_redirect_uris }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-  {{- end }}
-  {{- end }}
-  {{- if $client.client_roles }}
-  client_roles:
-    {{- with $client.client_roles }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-  {{- end }}
-  {{- if $client.protocol_mappers }}
-  protocol_mappers:
-    {{- with $client.protocol_mappers }}
-{{ toYaml . | indent 4 }}
-    {{- end }}
-  {{- end }}
-{{ end }}
-{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak_crd.yaml b/src/main/helm/templates/keycloak_crd.yaml
deleted file mode 100644
index 7351fbf91f88c64c6da19fc88b2a526c4a2c191e..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/keycloak_crd.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{ if not (.Values.sso).disableOzgOperator -}}
-apiVersion: operator.ozgcloud.de/v1
-kind: OzgCloudKeycloakRealm
-metadata:
-  name: {{ include "app.namespace" . }}-keycloak
-  namespace: {{ include "app.namespace" . }}
-spec:
-  keep_after_delete: {{ (.Values.sso).keep_after_delete | default false }}
-  displayName: {{ include "app.ssoRealmDisplayName" . }}
-  bundesland: {{ include "app.ozgcloudBundesland" . }}
-  {{- with ((.Values.sso).keycloak_realm).roles }}
-  realmRoles: 
-{{ toYaml . | indent 4}}
-  {{- end }}
-  {{- with ((.Values.sso).keycloak_realm).smtpServer }}
-  smtpServer:
-{{ toYaml . | indent 4}}
-  {{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak_group_crd.yaml b/src/main/helm/templates/keycloak_group_crd.yaml
deleted file mode 100644
index 005aa9070fe9ef3e0c09629822052e8cf14538b2..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/keycloak_group_crd.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator -}}
-{{ range $group := (.Values.sso).keycloak_groups }}
----
-apiVersion: operator.ozgcloud.de/v1
-kind: OzgCloudKeycloakGroup
-metadata:
-  name: {{ include "app.generateKeycloakGroupRessourceName" (deepCopy $group.name) }}
-  namespace: {{ include "app.namespace" $ }}
-spec:
-  keep_after_delete: {{ $.Values.sso.keep_after_delete | default false }}
-  group_name: {{ $group.name | quote }}
-  {{- if $group.attributes }}
-  group_attributes:
-    {{- range $attribute := $group.attributes }}
-    - name: {{ $attribute.name }}
-      value: {{ $attribute.value }}
-    {{- end }}
-  {{- end }}
-{{ end }}
-{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak_user_crd.yaml b/src/main/helm/templates/keycloak_user_crd.yaml
deleted file mode 100644
index 870068694a1c39dc1f33cc399e87dd7a915f4181..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/keycloak_user_crd.yaml
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator -}}
-{{ range $user := concat ((.Values.sso).api_users | default list) ((.Values.sso).keycloak_users | default list) }}
----
-apiVersion: operator.ozgcloud.de/v1
-kind: OzgCloudKeycloakUser
-metadata:
-  name: {{ include "app.generateKeycloakUserRessourceName" (deepCopy $user.name) }}
-  namespace: {{ include "app.namespace" $ }}
-spec:
-  keep_after_delete: {{ $.Values.sso.keep_after_delete | default false }}
-  update_user: {{ $user.update_user | default false }}
-  keycloak_user:
-    username: {{ $user.name | lower }}
-    first_name: {{ $user.first_name | default "" }}
-    last_name: {{ $user.last_name | default "" }}
-    email: {{ $user.email | default "" }}
-  {{- if $user.groups }}
-    groups: {{ $user.groups | toJson }}
-  {{- else }}
-    groups: []
-  {{- end }}
-  {{- if $user.password }}
-    password: {{ $user.password }}
-  {{- end }}
-  {{- if $user.realm_roles }}
-    realm_roles:
-    {{- with $user.realm_roles }}
-{{ toYaml . | indent 6 }}
-    {{- end }}
-  {{- end }}
-  {{- if $user.client_roles }}
-    client_roles:
-    {{- with $user.client_roles }}
-{{ toYaml . | indent 6 }}
-    {{- end }}
-  {{- end }}
-{{ end }}
-{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml
deleted file mode 100644
index f1e383bf84bb7247521187b08ec2d3e58a02d265..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/network_policy.yaml
+++ /dev/null
@@ -1,112 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.networkPolicy).disabled }}
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
-  name: network-policy-alfa
-  namespace: {{ .Release.Namespace }}
-spec:
-  podSelector:
-    matchLabels:
-      component: alfa
-  policyTypes:
-    - Ingress
-    - Egress
-  ingress:
-  - ports:
-    - port: 8080
-  - from:
-    - namespaceSelector:
-        matchLabels:
-          name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }}
-    ports:
-    - protocol: TCP
-      port: 8081
-{{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
-{{ toYaml . | indent 2 }}
-{{- end }}
-{{- with (.Values.networkPolicy).additionalIngressConfigGlobal }}
-{{ toYaml . | indent 2 }}
-{{- end }}
-  egress:
-{{- if ((.Values.ozgcloud).feature).collaborationEnabled }}
-  - to:
-    - namespaceSelector:
-        matchLabels:
-          kubernetes.io/metadata.name: {{ include "app.zufiNamespace" . }}
-      podSelector:
-        matchLabels:
-          component: zufi-server
-    ports:
-      - port: 9090
-        protocol: TCP
-{{- end }}
-  - to:
-    - podSelector:
-        matchLabels:
-          component: vorgang-manager
-    ports:
-      - port: 9090
-        protocol: TCP
-  - to:
-    - podSelector:
-        matchLabels:
-          component: administration
-    ports:
-      - port: 8080
-        protocol: TCP
-  # public keycloak ip
-  - to:
-    - ipBlock:
-        cidr:  {{ required "networkPolicy.ssoPublicIp must be set" (.Values.networkPolicy).ssoPublicIp }}
-  - to:
-    - namespaceSelector:
-        matchLabels:
-          kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }}
-    ports:
-      - port: 53
-        protocol: UDP
-      - port: 53
-        protocol: TCP
-      - port: 5353
-        protocol: UDP
-      - port: 5353
-        protocol: TCP
-  - to:
-    - podSelector:
-        matchLabels:
-          component: user-manager
-    ports:
-      - port: 9000
-        protocol: TCP
-{{- with (.Values.networkPolicy).additionalEgressConfigLocal }}
-{{ toYaml . | indent 2 }}
-{{- end }}
-{{- with (.Values.networkPolicy).additionalEgressConfigGlobal }}
-{{ toYaml . | indent 2 }}
-{{- end }}
-
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
deleted file mode 100644
index 230b10a66bb2486cea4e420fdf93855e99c32d28..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator }}
-{{- if or ((.Values.sso).keycloak_users) ((.Values.sso).api_users) }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: ozgcloud-keycloak-operator-secrets-read-role-alfa
-  namespace: {{ include "app.namespace" $ }}
-rules:
-  - apiGroups:
-      - "*"
-    resourceNames:
-    {{ range $user := concat (.Values.sso.keycloak_users | default list) (.Values.sso.api_users | default list) }}
-      - {{ regexReplaceAll "[^a-zA-Z0-9]" $user.name "" }}-credentials    
-    {{ end }} 
-    resources:
-      - secrets
-    verbs:
-      - get
-      - list
-{{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
deleted file mode 100644
index 06e02c9b623bd928c4e7e7b5015c2e4246e01d7e..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator }}
-{{- if or ((.Values.sso).keycloak_users) ((.Values.sso).api_users) }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: ozgcloud-keycloak-operator-secrets-read-role-binding-alfa
-  namespace: {{ include "app.namespace" . }}
-subjects:
-  - kind: ServiceAccount
-    name: ozgcloud-keycloak-operator-serviceaccount
-    namespace: {{ required "sso.operatorNamespace muss angegeben sein" .Values.sso.operatorNamespace }}
-roleRef:
-  kind: Role
-  name: ozgcloud-keycloak-operator-secrets-read-role-alfa
-  apiGroup: rbac.authorization.k8s.io
-{{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
deleted file mode 100644
index 86c883a6612cc086dc2057a292eb1e1b66da8751..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator }}
-{{- if or ((.Values.sso).keycloak_users) ((.Values.sso).api_users) }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: ozgcloud-keycloak-operator-secrets-write-role-alfa
-  namespace: {{ include "app.namespace" $ }}
-rules:
-  - apiGroups:
-      - "*"
-    resources:
-      - secrets
-    verbs:
-      - create
-{{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
deleted file mode 100644
index 8cb0612dc2f2005e3ce3404cf124f700e9a20764..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if not (.Values.sso).disableOzgOperator }}
-{{- if or ((.Values.sso).keycloak_users) ((.Values.sso).api_users) }}
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: ozgcloud-keycloak-operator-secrets-write-role-binding-alfa
-  namespace: {{ include "app.namespace" . }}
-subjects:
-  - kind: ServiceAccount
-    name: ozgcloud-keycloak-operator-serviceaccount
-    namespace: {{ required "sso.operatorNamespace muss angegeben sein" .Values.sso.operatorNamespace }}
-roleRef:
-  kind: Role
-  name: ozgcloud-keycloak-operator-secrets-write-role-alfa
-  apiGroup: rbac.authorization.k8s.io
-{{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml
deleted file mode 100644
index b1dbeff62cad6a001b808144834bf5ace1185d58..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/service.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ .Release.Name }}
-  namespace: {{ include "app.namespace" . }}
-  labels:
-    {{- include "app.defaultLabels" . | indent 4 }}
-    component: alfa-service
-spec:
-  type: ClusterIP
-  ports:
-    - name: http
-      port: 8080
-      protocol: TCP
-      targetPort: 8080
-    - name: metrics
-      port: 8081
-      protocol: TCP
-  selector:
-    {{- include "app.matchLabels" . | indent 4 }}
-    component: alfa
\ No newline at end of file
diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml
deleted file mode 100644
index 33de9e322a48d971bb26c21b7c87859c2e01fdfc..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/service_account.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-{{- if (.Values.serviceAccount).create }}
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: {{ include "app.serviceAccountName" . }}
-  namespace: {{ include "app.namespace" . }}
-{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml
deleted file mode 100644
index 6fb8df4dd7836be20a774ba58ba343aa9cfe632d..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/service_monitor.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: monitoring.coreos.com/v1
-kind: ServiceMonitor
-metadata:
-  name: {{ .Release.Name }}
-  namespace: {{ include "app.namespace" . }}
-  labels:
-    {{- include "app.defaultLabels" . | indent 4 }}
-    component: alfa-service-monitor
-spec:
-  endpoints:
-  - port: metrics
-    path: /actuator/prometheus
-  namespaceSelector:
-    matchNames:
-    - {{ include "app.namespace" . }}
-  selector:
-    matchLabels:
-      {{- include "app.matchLabels" . | indent 6 }}
-      component: alfa-service
\ No newline at end of file
diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml
deleted file mode 100644
index ded8beac5ea5c447458ab73dac698a2ef002fc6a..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/tests/test-ingress-connection.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: v1
-kind: Pod
-metadata:
-  name: "{{ .Release.Name }}-test-ingress"
-  labels:
-    {{- include "app.matchLabels" . | nindent 4 }}
-  annotations:
-    "helm.sh/hook": test
-spec:
-  containers:
-    - name: wget
-      image: busybox
-      command: ['wget']
-      args: 
-        - {{ include "app.baseDomain" . }}
-  restartPolicy: Never
diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml
deleted file mode 100644
index e6bcae1e9d8e11288106f39c47aa978d0cf2f225..0000000000000000000000000000000000000000
--- a/src/main/helm/templates/tests/test-service-connection.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-apiVersion: v1
-kind: Pod
-metadata:
-  name: "{{ .Release.Name }}-test-connection"
-  labels:
-    {{- include "app.matchLabels" . | nindent 4 }}
-  annotations:
-    "helm.sh/hook": test
-spec:
-  containers:
-    - name: wget
-      image: busybox
-      command: ['wget']
-      args: ['{{ .Release.Name }}:8080']
-  restartPolicy: Never
diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml
deleted file mode 100644
index f096912a363c18e1a932ffcc91401255a5366b6a..0000000000000000000000000000000000000000
--- a/src/main/helm/values.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-image:
-  repo: docker.ozg-sh.de
-  name: alfa
-  tag: latest # [default: latest]
-
-replicaCount: 2 # [default: 2]
-
-usermanagerName: user-manager
-
-zufiManager:
-  serverName: zufi-server
-
-# env:
-#   overrideSpringProfiles: "oc,prod"
-#   customList: # add name value pair for additional environments
-#     - name: Dinge
-#       value: true
-
-# host: # [default: https://<name>.<level>.by.ozg-cloud, if level == "prod" https://<name>.by.ozg-cloud] optional, host override value. Be aware that XXX.dev.by.ozg-cloud can be used in the dev cluster only.
-
-# resources:
-#   limits:
-#     cpu: 1
-#     memory: 1000Mi
-#   requests:
-#     cpu: 50m
-#     memory: 500Mi
-
-# vorgangManagerName: vorgang-manager # [default: vorgang-manager]
-# sso: # Most values are set according to namespace name (<bundesland>-<name>-<level>) and are optional
-  # serverUrl: https://sso.<level>.by.ozg-cloud.de # [default: https://sso.dev.by.ozg-cloud.de, if level == "stage|prod" https://sso.by.ozg-cloud.de]
-  # apiPassword:   # Required value
-  # role_einheitlicher_ansprechpartner: false # [default: false]
-  # displayName: "Hüttener Berge" [default: "Realm für <sso.name> (<sso.level>"] The custom display name to write on top of the login page.
-
-
-# ozgcloud:
-#   bundesland: sh
-#   bezeichner: kiel
-#   environment: dev
-
-
diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml
deleted file mode 100644
index 19666c081eeaac51667ffaf96c141145af63e042..0000000000000000000000000000000000000000
--- a/src/test/helm-linter-values.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-baseUrl: test.company.local
-
-ozgcloud:
-  bundesland: sh
-  bezeichner: helm
-  environment: test
-  barrierefreiheitUrl: http://barrierefreiheit.lint.url
-
-networkPolicy:
-  ssoPublicIp: 51.89.117.53/32
-  dnsServerNamespace: dummy-dns
-
-sso:
-  serverUrl: https://sso.company.local
-
-imagePullSecret: image-pull-secret
-
-zufiManager:
-  namespace: namespace
diff --git a/src/test/helm/bindings_type_configmap_test.yaml b/src/test/helm/bindings_type_configmap_test.yaml
deleted file mode 100644
index 6e20b2a04da46a925f0fc1e1a6c0285671df586b..0000000000000000000000000000000000000000
--- a/src/test/helm/bindings_type_configmap_test.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: Certificate ConfigMap Binding
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/bindings_type_configmap.yaml
-tests:
-  - it: validate configMap values
-    asserts:
-      - isKind:
-          of: ConfigMap
-      - isAPIVersion:
-          of: v1
-      - equal:
-          path: metadata.name
-          value: alfa-bindings-type
-      - equal:
-          path: metadata.namespace
-          value: sh-helm-test
-      - equal:
-          path: data
-          value:
-            type: | 
-              ca-certificates
\ No newline at end of file
diff --git a/src/test/helm/deployment_63_char_test.yaml b/src/test/helm/deployment_63_char_test.yaml
deleted file mode 100644
index 28fa4858c874ef7f6a783a6d5ecadb9666ab797a..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_63_char_test.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deyploment less than 63 chars
-release:
-  name: alfa
-  namespace: sh-helm-test
-
-chart:
-  name: alfa
-
-templates:
-  - templates/deployment.yaml
-set:
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  baseUrl: test.company.local
-  imagePullSecret: image-pull-secret
-
-tests:
-  - it: should fail on .Release.Namespace length longer than 63 characters
-    release:
-      namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890
-    asserts:
-      - failedTemplate:
-          errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen)
-  - it: should not fail on .Release.Namespace length less than 63 characters
-    asserts:
-      - notFailedTemplate: {}
-  - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters
-    chart:
-      version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890
-    asserts:
-      - failedTemplate:
-          errorMessage: .Chart.Name-.Chart.Version alfa-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen)
-  - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters
-    asserts:
-      - notFailedTemplate: {}
diff --git a/src/test/helm/deployment_archive_manager_address_env_test.yaml b/src/test/helm/deployment_archive_manager_address_env_test.yaml
deleted file mode 100644
index 62c21c0178121e18e317b25c107785fe6bc86a74..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_archive_manager_address_env_test.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment archive-manager address
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set the archive-manager name
-    set:
-      archiveManagerName: my-test-archive-manager-name
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_archive-manager_address
-            value: dns:///my-test-archive-manager-name.sh-helm-test:9090
diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml
deleted file mode 100644
index 1a97acbf75dfc76a29657b0e031ff3c72a3e819c..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_bindings_test.yaml
+++ /dev/null
@@ -1,141 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: deployment bindings
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  baseUrl: test.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should have volume mounts
-    set: 
-       usermanagerName: user-manager
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: bindings
-            mountPath: "/bindings/ca-certificates/type"
-            subPath: type
-            readOnly: true
-      - contains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: temp-dir
-            mountPath: "/tmp"
-      - notContains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: sso-tls-certificate
-            mountPath: "/bindings/ca-certificates/ssl-tls-ca.pem"
-            subPath: ca.crt
-            readOnly: true
-      - contains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: namespace-ca-cert
-            mountPath: "/bindings/namespace-certificate"
-            readOnly: true
-  - it: should have volumes
-    set: 
-       usermanagerName: user-manager
-    asserts:
-      - contains:
-          path: spec.template.spec.volumes
-          content:
-            name: bindings
-            configMap:
-              name: alfa-bindings-type
-      - contains:
-          path: spec.template.spec.volumes
-          content:
-            name: temp-dir
-            emptyDir: {}
-      - notContains:
-          path: spec.template.spec.volumes
-          content:
-            name: sso-tls-certificate
-      - contains:
-          path: spec.template.spec.volumes
-          content:
-              name: namespace-ca-cert
-              projected:
-                sources:
-                  - secret:
-                      items:
-                        - key: ca.crt
-                          path: ca.crt
-                      name: sh-helm-test-ca-cert
-                      optional: true
-                  - configMap:
-                      name: alfa-bindings-type
-  - it: should have sso tls cert mount
-    set:
-      usermanagerName: user-manager
-      sso:
-        tlsCertName: sso-tls-cert
-        serverUrl: https://sso.company.local
-    asserts:
-      - contains:
-          path: spec.template.spec.volumes
-          content:
-            name: sso-tls-certificate
-            secret:
-              secretName: sso-tls-cert
-      - contains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: sso-tls-certificate
-            mountPath: "/bindings/ca-certificates/sso-tls-crt.pem"
-            subPath: tls.crt
-            readOnly: true
-  - it: should not mount user-manager tls cert
-    set:
-      disableUserManagerGrpcTls: true
-    asserts:
-      - notContains:
-          path: spec.template.spec.containers[0].volumeMounts
-          content:
-            name: user-manager-tls-certificate
-          any: true
-  - it: should not have user-manager tls volume
-    set:
-      disableUserManagerGrpcTls: true
-    asserts:
-      - notContains:
-          path: spec.template.spec.volumes
-          content:
-            name: user-manager-tls-certificate
-          any: true
diff --git a/src/test/helm/deployment_collaboration_env_test.yaml b/src/test/helm/deployment_collaboration_env_test.yaml
deleted file mode 100644
index 5c3f8cffca25edc716ec5b20a9e78bf1d36654c5..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_collaboration_env_test.yaml
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: deployment collaboration env
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set zufi server address
-    set:
-      zufiManager:
-        namespace: namespace
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_zufi-manager_address
-            value: dns:///zufi-server.namespace:9090
-  - it: should not set zufi server address
-    asserts:
-      - notContains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_zufi-manager_address
-          any: true
-  - it: should enable collaboration
-    set:
-      zufiManager:
-        namespace: namespace
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_feature_collaborationEnabled
-            value: "true"
-  - it: should not enable collaboration
-    asserts:
-      - notContains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_feature_collaborationEnabled
-          any: true
-  - it: should set negotiation type
-    set:
-      zufiManager:
-        namespace: namespace
-        grpcClientNegotiationType: PLAINTEXT
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_zufi-manager_negotiationType
-            value: PLAINTEXT
-  - it: negotiation type is TLS in standard
-    set:
-      zufiManager:
-        namespace: namespace
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_zufi-manager_negotiationType
-            value: TLS
-  - it: should not set negotiation type
-    asserts:
-      - notContains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_zufi-manager_negotiationType
-          any: true
diff --git a/src/test/helm/deployment_collaboration_manager_address_env_test.yaml b/src/test/helm/deployment_collaboration_manager_address_env_test.yaml
deleted file mode 100644
index 2d1d4f2ce1668ebca72e9ea166c0e379584d31fd..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_collaboration_manager_address_env_test.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment collaboration-manager address
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set the collaboration-manager name
-    set:
-      collaborationManagerName: my-test-collaboration-manager-name
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_collaboration-manager_address
-            value: dns:///my-test-collaboration-manager-name.sh-helm-test:9090
diff --git a/src/test/helm/deployment_config_client_env_test.yaml b/src/test/helm/deployment_config_client_env_test.yaml
deleted file mode 100644
index 22160f51c47ae09585a6a9ec76895d536d53cd6c..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_config_client_env_test.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: deployment collaboration env
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set default administration server address
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_administration_address
-            value: http://administration.sh-helm-test:8080
-  - it: should have set administration server address
-    set:
-      administrationName: custom_admin_name
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_administration_address
-            value: http://custom_admin_name.sh-helm-test:8080
diff --git a/src/test/helm/deployment_customList_env_test.yaml b/src/test/helm/deployment_customList_env_test.yaml
deleted file mode 100644
index 747718c3086265f3f7fa0279f1be4f3cbd16445e..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_customList_env_test.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test environments customList
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check customList as list
-    set:
-      env.customList:
-        - name: my_test_environment_name
-          value: "A test value"
-        - name: test_environment
-          value: "B test value"
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: my_test_environment_name
-            value: "A test value"
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: test_environment
-            value: "B test value"
-  - it: check customList as dict
-    set:
-      env.customList:
-        my_test_environment_name: "A test value"
-        test_environment: "B test value"
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: my_test_environment_name
-            value: "A test value"
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: test_environment
-            value: "B test value"
-  - it: check customList test value is not set by default
-    asserts:
-      - notContains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: my_test_environment_name
-            value: "A test value"
diff --git a/src/test/helm/deployment_defaults_affinity_test.yaml b/src/test/helm/deployment_defaults_affinity_test.yaml
deleted file mode 100644
index f6f74091d43288639d332c800f4076fc857ca4ee..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_affinity_test.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment affinity
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  baseUrl: test.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should work
-    asserts:
-      - equal:
-          path: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key
-          value: alfaable
-      - equal:
-          path: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].operator
-          value: NotIn
-      - equal:
-          path: spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].values[0]
-          value: "false"
diff --git a/src/test/helm/deployment_defaults_env_test.yaml b/src/test/helm/deployment_defaults_env_test.yaml
deleted file mode 100644
index 8c1ec32ef046e2ca9b86757199a9957e77eb3bba..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_env_test.yaml
+++ /dev/null
@@ -1,239 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: deployment env
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check default values
-    set:
-      usermanagerName: user-manager
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - isKind:
-          of: Deployment
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_vorgang-manager_address
-            value: dns:///vorgang-manager.sh-helm-test:9090
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_user-manager_address
-            value: dns:///user-manager.sh-helm-test:9000
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_collaboration-manager_address
-            value: dns:///vorgang-manager.sh-helm-test:9090
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_archive-manager_address
-            value: dns:///vorgang-manager.sh-helm-test:9090
-
-  - it: should have service binding root
-    set:
-      usermanagerName: user-manager
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: SERVICE_BINDING_ROOT
-            value: "/bindings"
-
-  - it: should have user assistance documentation url
-    set:
-      ozgcloud:
-        user_assistance:
-          documentation:
-            url: http://
-        environment: test
-        bundesland: sh
-        bezeichner: helm
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_user-assistance_documentation_url
-            value: http://
-
-  - it: should have create Bescheid Konfiguration
-    set:
-      ozgcloud:
-        environment: test
-        bundesland: sh
-        bezeichner: helm
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-        vorgang:
-          bescheid:
-            - formEngineName: AFM
-              formId: form_id_1
-            - formEngineName: FormSolutions
-              formId: 2290
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_vorgang_bescheid_0_formId
-            value: form_id_1
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_vorgang_bescheid_0_formEngineName
-            value: AFM
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_vorgang_bescheid_1_formId
-            value: "2290"
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_vorgang_bescheid_1_formEngineName
-            value: FormSolutions
-
-  - it: should set user-manager negotiationType plaintext
-    set:
-      userManager.grpcClientNegotiationType: PLAINTEXT
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_user-manager_negotiationType
-            value: PLAINTEXT
-
-  - it: should contain default user-manager negotiationType tls
-    set:
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_user-manager_negotiationType
-            value: TLS
-
-  - it: should set vorgang-manager negotiationType plaintext
-    set:
-      vorgangManager.grpcClientNegotiationType: PLAINTEXT
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_vorgang-manager_negotiationType
-            value: PLAINTEXT
-
-  - it: should contain default vorgang-manager negotiationType tls
-    set:
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_vorgang-manager_negotiationType
-            value: TLS
-  - it: should set collaboration-manager negotiationType plaintext
-    set:
-      collaborationManager.grpcClientNegotiationType: PLAINTEXT
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_collaboration-manager_negotiationType
-            value: PLAINTEXT
-
-  - it: should contain default collaboration-manager negotiationType tls
-    set:
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_collaboration-manager_negotiationType
-            value: TLS
-
-  - it: should set archive-manager negotiationType plaintext
-    set:
-      archiveManager.grpcClientNegotiationType: PLAINTEXT
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_archive-manager_negotiationType
-            value: PLAINTEXT
-
-  - it: should contain default archive-manager negotiationType tls
-    set:
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_archive-manager_negotiationType
-            value: TLS
-
-  - it: should set barrierefreiheitUrl
-    set:
-      ozgcloud:
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_barrierefreiheitUrl
-            value: http://barrierefreiheit.test.url
-
-  - it: should fail without barrierefreiheitUrl
-    asserts:
-      - failedTemplate:
-          errorMessage: ozgcloud.barrierefreiheitUrl muss angegeben sein
\ No newline at end of file
diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml
deleted file mode 100644
index 4a173586663da27ef10943810af89033747cc021..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_labels_test.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment default labels
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check default labels
-    asserts:
-      - equal:
-          path: metadata.labels
-          value:
-            app.kubernetes.io/instance: alfa
-            app.kubernetes.io/managed-by: Helm
-            app.kubernetes.io/name: alfa
-            app.kubernetes.io/namespace: sh-helm-test
-            app.kubernetes.io/part-of: ozgcloud
-            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
-            helm.sh/chart: alfa-0.0.0-MANAGED-BY-JENKINS
diff --git a/src/test/helm/deployment_defaults_spec_containers_health_test.yaml b/src/test/helm/deployment_defaults_spec_containers_health_test.yaml
deleted file mode 100644
index b794b72cdcbdca2426a579b5369c4716639d2967..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_spec_containers_health_test.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment health check
-release:
-    name: alfa
-    namespace: sh-helm-test
-templates:
-    - templates/deployment.yaml
-set:
-    baseUrl: test.company.local
-    ozgcloud:
-        environment: test
-        bundesland: sh
-        bezeichner: helm
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    sso:
-        serverUrl: https://sso.company.local
-    imagePullSecret: image-pull-secret
-tests:
-    - it: should have correct valaues for health check
-      asserts:
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.failureThreshold
-                value: 3
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.httpGet.path
-                value: /actuator/health/readiness
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.httpGet.port
-                value: 8081
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.httpGet.scheme
-                value: HTTP
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.periodSeconds
-                value: 10
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.successThreshold
-                value: 1
-          - equal:
-                path: spec.template.spec.containers[0].readinessProbe.timeoutSeconds
-                value: 3
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.failureThreshold
-                value: 10
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.httpGet.path
-                value: /actuator/health/readiness
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.httpGet.port
-                value: 8081
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.httpGet.scheme
-                value: HTTP
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.initialDelaySeconds
-                value: 30
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.periodSeconds
-                value: 5
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.successThreshold
-                value: 1
-          - equal:
-                path: spec.template.spec.containers[0].startupProbe.timeoutSeconds
-                value: 5
diff --git a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml b/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml
deleted file mode 100644
index 76c0fb55c3a19cb36a101657f7d75dd5e8851788..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml
+++ /dev/null
@@ -1,96 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment security context
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check default values
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation
-          value: false
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.privileged
-          value: false
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem
-          value: false
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.runAsNonRoot
-          value: true
-      - isNull:
-          path: spec.template.spec.containers[0].securityContext.runAsUser
-      - isNull:
-          path: spec.template.spec.containers[0].securityContext.runAsGroup
-      - isNull:
-          path: spec.template.spec.securityContext.fsGroup
-      - isNull:
-          path: spec.template.spec.containers[0].securityContext.capabilities
-  - it: check runAsUser
-    set:
-      securityContext.runAsUser: 1000
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.runAsUser
-          value: 1000
-  - it: check runAsGroup
-    set:
-      securityContext.runAsGroup: 1000
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.runAsGroup
-          value: 1000
-  - it: check fsGroup
-    set:
-      podSecurityContext.fsGroup: 1000
-    asserts:
-      - equal:
-          path: spec.template.spec.securityContext.fsGroup
-          value: 1000
-  - it: check capabilities
-    set:
-      securityContext:
-        capabilities:
-          drop:
-            - ALL
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].securityContext.capabilities
-          value:
-            drop:
-              - ALL
diff --git a/src/test/helm/deployment_defaults_spec_containers_test.yaml b/src/test/helm/deployment_defaults_spec_containers_test.yaml
deleted file mode 100644
index 4a09b1cdef7539b6d4fb44a53d0d02bf2df30a9c..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_spec_containers_test.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment container spec
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check for some standard values
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].image
-          value: "docker.ozg-sh.de/alfa:latest"
-      - equal:
-          path: spec.template.spec.containers[0].imagePullPolicy
-          value: Always
-      - equal:
-          path: spec.template.spec.containers[0].name
-          value: alfa
-      - equal:
-          path: spec.template.spec.containers[0].ports[0].containerPort
-          value: 8080
-      - equal:
-          path: spec.template.spec.containers[0].ports[0].name
-          value: 8080tcp1
-      - equal:
-          path: spec.template.spec.containers[0].ports[0].protocol
-          value: TCP
-      - equal:
-          path: spec.template.spec.containers[0].stdin
-          value: true
-      - equal:
-          path: spec.template.spec.containers[0].terminationMessagePath
-          value: /dev/termination-log
-      - equal:
-          path: spec.template.spec.containers[0].terminationMessagePolicy
-          value: File
-      - equal:
-          path: spec.template.spec.containers[0].tty
-          value: true
-      - equal:
-          path: spec.template.spec.containers[0].ports[1].containerPort
-          value: 8081
-      - equal:
-          path: spec.template.spec.containers[0].ports[1].name
-          value: metrics
-      - equal:
-          path: spec.template.spec.containers[0].ports[1].protocol
-          value: TCP
diff --git a/src/test/helm/deployment_defaults_sso_env_test.yaml b/src/test/helm/deployment_defaults_sso_env_test.yaml
deleted file mode 100644
index e64213f66ec1af7f2bb97626431513ba23c622ca..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_sso_env_test.yaml
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment sso
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check default values
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: keycloak_realm
-            value: sh-helm-test
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: keycloak_resource
-            value: alfa
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: keycloak_auth-server-url
-            value: https://sso.company.local
-
-  - it: check realm with long namespace
-    set:
-      ozgcloud:
-        bezeichner: eins-zwei-drei
-        environment: dev
-        bundesland: sh
-    asserts:
-      - isKind:
-          of: Deployment
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: keycloak_realm
-            value: sh-eins-zwei-drei-dev
-
-  - it: check different client name
-    set:
-      sso:
-        client_name: different-client
-        serverUrl: https://sso.company.local
-    asserts:
-      - isKind:
-          of: Deployment
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: keycloak_resource
-            value: different-client
diff --git a/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml b/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml
deleted file mode 100644
index f89897b0503e14346d0b518166829067209ade5c..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_defaults_topologySpreadConstraints_test.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment topology
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: check default values
-    asserts:
-      - equal:
-          path: spec.template.spec.topologySpreadConstraints[0].maxSkew
-          value: 1
-      - equal:
-          path: spec.template.spec.topologySpreadConstraints[0].topologyKey
-          value: kubernetes.io/hostname
-      - equal:
-          path: spec.template.spec.topologySpreadConstraints[0].whenUnsatisfiable
-          value: ScheduleAnyway
-      - equal:
-          path: spec.template.spec.topologySpreadConstraints[0].labelSelector.matchLabels["app.kubernetes.io/name"]
-          value: alfa
diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml
deleted file mode 100644
index 42caa76552fc17d74de41b6b9a344180d9005837..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_host_aliases_test.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: deployment host aliases
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should not set hostAliases
-    asserts:
-      - isNull:
-          path: spec.template.spec.hostAliases
-  - it: should set hostAliases
-    set:
-      hostAliases:
-        - ip: "127.0.0.1"
-          hostname:
-            - "eins"
-            - "zwei"
-    asserts:
-      - contains:
-          path: spec.template.spec.hostAliases
-          content:
-            ip: "127.0.0.1"
-            hostname:
-              - "eins"
-              - "zwei"
diff --git a/src/test/helm/deployment_imageTag_test.yaml b/src/test/helm/deployment_imageTag_test.yaml
deleted file mode 100644
index 883f93ea580f320165c1a655b70fbd5d64fca0a4..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_imageTag_test.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment imagetag
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set the latest imageTag
-    set:
-      image.tag: latest
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].image
-          value: docker.ozg-sh.de/alfa:latest
diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml
deleted file mode 100644
index 3a7972b0fc3f59305aabef90e3f359b81f09a0d7..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_imagepull_secret_test.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment image pull secret
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-tests:
-  - it: should set the imagePull secret
-    set:
-      imagePullSecret: image-pull-secret
-    asserts:
-      - equal:
-          path: spec.template.spec.imagePullSecrets[0].name
-          value: image-pull-secret
-  - it: should fail template if imagepullsecret not set
-    asserts:
-      - failedTemplate:
-          errormessage: imagePullSecret must be set
diff --git a/src/test/helm/deployment_liveness_probe_test.yaml b/src/test/helm/deployment_liveness_probe_test.yaml
deleted file mode 100644
index 78f9912ff33fa920866124af06f5bf35bb00d353..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_liveness_probe_test.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment liveness probe
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: livenessProbe should be disabled by default
-    template: deployment.yaml
-    asserts:
-      - notExists:
-          path: spec.template.spec.containers[0].livenessProbe
-
-  - it: enable livenessProbe
-    set:
-      enableLivenessProbe: true
-    asserts:
-      - isSubset:
-          path: spec.template.spec.containers[0].livenessProbe
-          content:
-            failureThreshold: 3
-            httpGet:
-              path: /actuator/health/liveness
-              port: 8081
-              scheme: HTTP
-            periodSeconds: 10
-            successThreshold: 1
-            timeoutSeconds: 3
-  - it: not enable livenessProbe by default
-    asserts:
-      - isNull:
-          path: spec.template.spec.containers[0].livenessProbe
diff --git a/src/test/helm/deployment_pod_default_spec_values_test.yaml b/src/test/helm/deployment_pod_default_spec_values_test.yaml
deleted file mode 100644
index 32ae31e9d60ae995e8b39526c54876fa063e17fc..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_pod_default_spec_values_test.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment container basics
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should have correct pod template values
-    asserts:
-      - isEmpty:
-          path: spec.template.spec.dnsConfig
-      - equal:
-          path: spec.template.spec.dnsPolicy
-          value: "ClusterFirst"
-      - equal:
-          path: spec.template.spec.restartPolicy
-          value: "Always"
-      - equal:
-          path: spec.template.spec.schedulerName
-          value: "default-scheduler"
-      - equal:
-          path: spec.template.spec.terminationGracePeriodSeconds
-          value: 30
diff --git a/src/test/helm/deployment_realm_name_length_test.yaml b/src/test/helm/deployment_realm_name_length_test.yaml
deleted file mode 100644
index be7f37f6581fcd1a8f6585b4e5328aec2e28328c..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_realm_name_length_test.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ozgcloud bezeichner length
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-
-tests:
-  - it: should fail on bezeichner length longer than 46 characters
-    set:
-      ozgcloud:
-        bezeichner: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890
-        environment: test
-        bundesland: by
-        barrierefreiheitUrl: http://barrierefreiheit.test.url
-    asserts:
-      - failedTemplate:
-          errorMessage: ozgcloud.bezeichner test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 46 Zeichen)
\ No newline at end of file
diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml
deleted file mode 100644
index ced5244c8602a69e86f9a68a511422c851422ab3..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_resources_test.yaml
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment resources
-release:
-  name: alfa
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: test resources
-    set:
-      resources:
-        limits:
-          cpu: "11m"
-          memory: "22Mi"
-        requests:
-          cpu: "33m"
-          memory: "44Mi"
-    asserts:
-      - equal:
-          path: spec.template.spec.containers[0].resources.limits.cpu
-          value: 11m
-      - equal:
-          path: spec.template.spec.containers[0].resources.limits.memory
-          value: 22Mi
-      - equal:
-          path: spec.template.spec.containers[0].resources.requests.cpu
-          value: 33m
-      - equal:
-          path: spec.template.spec.containers[0].resources.requests.memory
-          value: 44Mi
-  - it: test empty resources
-    asserts:
-      - isEmpty:
-          path: spec.template.spec.containers[0].resources
diff --git a/src/test/helm/deployment_springProfile_env_test.yaml b/src/test/helm/deployment_springProfile_env_test.yaml
deleted file mode 100644
index 075e2d7b3fb0837ee5041da019c973c093dc6732..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_springProfile_env_test.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment spring profile
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should override the spring profiles
-    set:
-      env.overrideSpringProfiles: oc,test,ea
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: spring_profiles_active
-            value: oc,test,ea
-  - it: should generate the spring profiles
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: spring_profiles_active
-            value: oc, test
diff --git a/src/test/helm/deployment_usermanager_address_env_test.yaml b/src/test/helm/deployment_usermanager_address_env_test.yaml
deleted file mode 100644
index fdcd6d45a6de7deed49c9d1fe25bf909d157ab09..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_usermanager_address_env_test.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment usermanager address env
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should build the usermanager url for test environment
-    set:
-      usermanagerName: my-test-usermanager-name
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_user-manager_url
-            value: https://helm-my-test-usermanager-name.test.company.local
-  - it: should use usermanager url from values
-    set:
-      usermanagerUrl: http://test.domain.local
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: ozgcloud_user-manager_url
-            value: http://test.domain.local
diff --git a/src/test/helm/deployment_vorgang_manager_address_env_test.yaml b/src/test/helm/deployment_vorgang_manager_address_env_test.yaml
deleted file mode 100644
index 905ae5162abb166d730d410a4813afbf5b155c3f..0000000000000000000000000000000000000000
--- a/src/test/helm/deployment_vorgang_manager_address_env_test.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment vorgang-manager address
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-tests:
-  - it: should set the vorgang-manager name
-    set:
-      vorgangManagerName: my-test-vorgang-manager-name
-    asserts:
-      - contains:
-          path: spec.template.spec.containers[0].env
-          content:
-            name: grpc_client_vorgang-manager_address
-            value: dns:///my-test-vorgang-manager-name.sh-helm-test:9090
diff --git a/src/test/helm/deyploment_general_value_and_default_spec_test.yaml b/src/test/helm/deyploment_general_value_and_default_spec_test.yaml
deleted file mode 100644
index b22a8c5ec095bfb0c7985665f1baab40c492ce91..0000000000000000000000000000000000000000
--- a/src/test/helm/deyploment_general_value_and_default_spec_test.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment general values
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/deployment.yaml
-set:
-  baseUrl: test.company.local
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-    barrierefreiheitUrl: http://barrierefreiheit.test.url
-  sso:
-    serverUrl: https://sso.company.local
-  imagePullSecret: image-pull-secret
-
-tests:
-  - it: should have correct apiVersion
-    asserts:
-      - isKind:
-          of: Deployment
-      - isAPIVersion:
-          of: "apps/v1"
-
-  - it: should have correct deployment metadata
-    asserts:
-      - equal:
-          path: metadata.name
-          value: alfa
-      - equal:
-          path: metadata.namespace
-          value: sh-helm-test
-
-  - it: should have correct deyployment general spec values
-    asserts:
-      - equal:
-          path: spec.progressDeadlineSeconds
-          value: 600
-      - equal:
-          path: spec.replicas
-          value: 2
-      - equal:
-          path: spec.revisionHistoryLimit
-          value: 10
-  - it: should have correct deployment spec strategy values
-    asserts:
-      - equal:
-          path: spec.strategy
-          value:
-            rollingUpdate:
-              maxSurge: 1
-              maxUnavailable: 0
-            type: RollingUpdate
diff --git a/src/test/helm/ingress_defaults_annotation_test.yaml b/src/test/helm/ingress_defaults_annotation_test.yaml
deleted file mode 100644
index 41543b42327dd1b15772cd84fd624222722b0148..0000000000000000000000000000000000000000
--- a/src/test/helm/ingress_defaults_annotation_test.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/ingress.yaml
-set:
-  ozgcloud:
-    environment: test
-    bundesland: sh
-    bezeichner: helm
-  
-tests:
-  - it: check ingress annotaions for nginx
-    set:
-      baseUrl: "test.by.ozg-cloud.de"
-    asserts:
-      - isKind:
-          of: Ingress
-      - isAPIVersion:
-          of: networking.k8s.io/v1
-      - equal:
-          path: metadata.annotations["cert-manager.io/cluster-issuer"]
-          value: letsencrypt-prod
-      - isNull:
-          path: spec.ingressClassName
-      - equal:
-          path: spec.tls[0].secretName
-          value: helm-alfa-tls
diff --git a/src/test/helm/ingress_nginx_test.yaml b/src/test/helm/ingress_nginx_test.yaml
deleted file mode 100644
index 815ca9460ee325240c36784dc4fa76d5ec865875..0000000000000000000000000000000000000000
--- a/src/test/helm/ingress_nginx_test.yaml
+++ /dev/null
@@ -1,120 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ingress options
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/ingress.yaml
-set:  
-  ozgcloud:
-    bundesland: by
-    bezeichner: helm
-    environment: test
-  baseUrl: test.by.ozg-cloud.de
-
-tests:
-  - it: should create ingress tls
-    asserts:
-      - equal:
-          path: spec.tls[0].secretName
-          value: helm-alfa-tls
-
-  - it: should set tls secretName
-    set:
-      ingress.tlsSecretName: alfa-ingress-tls
-    asserts:
-      - equal:
-          path: spec.tls[0].secretName
-          value: alfa-ingress-tls
-
-  - it: should not set secretName
-    set:
-      ingress.skipTlsSecret: true
-    asserts:
-      - isNull:
-          path: spec.tls[0].secretName
-  
-  - it: should use default letsencrypt-prod cluster-issuer
-    asserts:
-      - equal:
-          path: metadata.annotations["cert-manager.io/cluster-issuer"]
-          value: letsencrypt-prod
-
-  - it: should use letsencrypt-staging cluster-issuer
-    set:
-      ingress.use_staging_cert: true
-    asserts:
-      - equal:
-          path: metadata.annotations["cert-manager.io/cluster-issuer"]
-          value: letsencrypt-staging
-
-  - it: should use letsencrypt-prod cluster-issuer
-    set:
-      ingress.use_staging_cert: false
-    asserts:
-      - equal:
-          path: metadata.annotations["cert-manager.io/cluster-issuer"]
-          value: letsencrypt-prod
-
-  - it: should disable default cert-manager
-    set:
-      ingress.disableDefaultCertManager: true
-    asserts:
-      - notExists:
-          path: metadata.annotations["cert-manager.io/cluster-issuer"]
-
-  - it: should set ingress annotation proxy body size to 42m
-    set:
-      ingress:
-        annotations:
-          nginx.ingress.kubernetes.io/proxy-body-size: 42m
-    asserts:
-      - equal:
-          path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"]
-          value: 42m
-  - it: should not set ingressClassName
-    asserts:
-      - isNull:
-          path: spec.ingressClassName
-  - it: should set ingressClassName
-    set:
-      ingress.className: nginx
-    asserts:
-      - equal:
-          path: spec.ingressClassName
-          value: nginx
-
-  - it: should create hostname correctly
-    asserts:
-      - equal:
-          path: spec.rules[0].host
-          value: helm.test.by.ozg-cloud.de
-
-  - it: should create tls hosts name correctly
-    asserts:
-      - equal:
-          path: spec.tls[0].hosts[0]
-          value: helm.test.by.ozg-cloud.de
\ No newline at end of file
diff --git a/src/test/helm/keycloak_client_crd_test.yaml b/src/test/helm/keycloak_client_crd_test.yaml
deleted file mode 100644
index 8ded500ba59b0f23f1b511b2c691fc24f8bb8632..0000000000000000000000000000000000000000
--- a/src/test/helm/keycloak_client_crd_test.yaml
+++ /dev/null
@@ -1,218 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: Keycloak Client crd
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/keycloak_client_crd.yaml
-set:
-  ozgcloud:
-    bundesland: by
-    bezeichner: helm
-    environment: test
-tests:
-  - it: should contain header data
-    set:
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-    asserts:
-      - isAPIVersion:
-          of: operator.ozgcloud.de/v1
-      - isKind:
-          of: OzgCloudKeycloakClient
-  - it: should have metadata
-    set:
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-    asserts:
-      - equal:
-          path: metadata.name
-          value: alfa-keycloak-client
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have default Values
-    set:
-      baseUrl: test.by.ozg-cloud.de
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.client_name
-          value: alfa
-      - isNull:
-          path: spec.client_roles
-      - equal:
-          path: spec.client_base_url
-          value: https://helm.test.by.ozg-cloud.de
-      - equal:
-          path: spec.client_web_origins
-          value: ["https://helm.test.by.ozg-cloud.de"]
-      - equal:
-          path: spec.client_redirect_uris
-          value: ["https://helm.test.by.ozg-cloud.de", "https://helm.test.by.ozg-cloud.de/*"]
-
-
-  - it: should override default redirect uris
-    set:
-      baseUrl: test.by.ozg-cloud.de
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-            override_redirect_uris:
-              - https://override.test.by.ozg-cloud.de
-              - https://override.test.by.ozg-cloud.de/*
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.client_name
-          value: alfa
-      - isNull:
-          path: spec.client_roles
-      - equal:
-          path: spec.client_base_url
-          value: https://helm.test.by.ozg-cloud.de
-      - equal:
-          path: spec.client_web_origins
-          value: ["https://helm.test.by.ozg-cloud.de"]
-      - equal:
-          path: spec.client_redirect_uris
-          value: ["https://override.test.by.ozg-cloud.de", "https://override.test.by.ozg-cloud.de/*"]
-
-  - it: should contain additional redirect uris
-    set:
-      baseUrl: test.by.ozg-cloud.de
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-            additional_redirect_uris:
-              - https://additional.test.by.ozg-cloud.de
-              - https://additional.test.by.ozg-cloud.de/*
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.client_name
-          value: alfa
-      - isNull:
-          path: spec.client_roles
-      - equal:
-          path: spec.client_base_url
-          value: https://helm.test.by.ozg-cloud.de
-      - equal:
-          path: spec.client_web_origins
-          value: ["https://helm.test.by.ozg-cloud.de"]
-      - equal:
-          path: spec.client_redirect_uris
-          value: ["https://helm.test.by.ozg-cloud.de", "https://helm.test.by.ozg-cloud.de/*", "https://additional.test.by.ozg-cloud.de", "https://additional.test.by.ozg-cloud.de/*"]
-
-  - it: should contain client roles
-    set:
-      baseUrl: test.by.ozg-cloud.de
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-            client_roles:
-              - name: ERSTE_ROLLE
-              - name: ZWEITE_ROLLE
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.client_name
-          value: alfa
-      - equal:
-          path: spec.client_roles
-          value: ["name": "ERSTE_ROLLE", "name": "ZWEITE_ROLLE"]
-      - equal:
-          path: spec.client_base_url
-          value: https://helm.test.by.ozg-cloud.de
-      - equal:
-          path: spec.client_web_origins
-          value: ["https://helm.test.by.ozg-cloud.de"]
-      - equal:
-          path: spec.client_redirect_uris
-          value: ["https://helm.test.by.ozg-cloud.de", "https://helm.test.by.ozg-cloud.de/*"]
-
-  - it: should map client protocol mapper
-    set:
-      baseUrl: test.by.ozg-cloud.de
-      sso:
-        keycloak_clients:
-          - client_name: alfa
-            protocol_mappers:
-              - name: organisationseinheitIdMapper
-                protocol: openid-connect
-                protocolMapper: oidc-usermodel-attribute-mapper
-                config:
-                  user.attribute: organisationseinheitId
-                  claim.name: organisationseinheitId
-                  jsonType.label: int
-                  id.token.claim: "true"
-                  access.token.claim: "true"
-                  userinfo.token.claim: "true"
-                  multivalued: "true"
-                  aggregate.attrs: "true"
-    asserts:
-      - equal:
-          path: spec.protocol_mappers
-          value:
-            - name: organisationseinheitIdMapper
-              protocol: openid-connect
-              protocolMapper: oidc-usermodel-attribute-mapper
-              config:
-                user.attribute: organisationseinheitId
-                claim.name: organisationseinheitId
-                jsonType.label: int
-                id.token.claim: "true"
-                access.token.claim: "true"
-                userinfo.token.claim: "true"
-                multivalued: "true"
-                aggregate.attrs: "true"
-
-  - it: should not create client cr if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        keycloak_clients:
-          - client_name: alfa
-            client_roles:
-              - name: ERSTE_ROLLE
-    asserts:
-      - hasDocuments:
-          count: 0
\ No newline at end of file
diff --git a/src/test/helm/keycloak_crd_test.yaml b/src/test/helm/keycloak_crd_test.yaml
deleted file mode 100644
index f414d92814cc3af01a22d8c68ccb689457c811d2..0000000000000000000000000000000000000000
--- a/src/test/helm/keycloak_crd_test.yaml
+++ /dev/null
@@ -1,145 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: Keycloak crd
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/keycloak_crd.yaml
-set:
-  ozgcloud:
-    environment: test
-    bezeichner: helm
-    bundesland: sh
-tests:
-  - it: should contain header data
-    asserts:
-      - isAPIVersion:
-          of: operator.ozgcloud.de/v1
-      - isKind:
-          of: OzgCloudKeycloakRealm
-  - it: should have metadata
-    asserts:
-      - equal:
-          path: metadata.name
-          value: by-helm-test-keycloak
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have default Values
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-  - it: should have Keycloak Values
-    set:
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keep_after_delete: true
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: true
-      - equal:
-          path: spec.displayName
-          value: Realm für Helm (test)
-
-  - it: should not create keycloak cr if ozg operator is disabled
-    set:
-      sso.disableOzgOperator: true
-    asserts:
-      - hasDocuments:
-          count: 0
-  - it: should not have smtp spec if smtpServer value not set
-    set: 
-      smtpServer:
-    asserts:
-      - isNull:
-          path: spec.smtpServer
-
-  - it: should have smtp server Values 
-    set:
-      sso:
-        keycloak_realm:
-          smtpServer:
-            user: user0
-            from: user0@test.de
-            password: psw
-            fromDisplayName: displayed name
-            starttls: true
-            auth: true
-            port: 587
-            host: host0
-    asserts:
-      - equal:
-          path: spec.smtpServer.host
-          value: host0
-      - equal:
-          path: spec.smtpServer.port
-          value: 587
-      - equal:
-          path: spec.smtpServer.user
-          value: user0
-      - equal:
-          path: spec.smtpServer.from
-          value: user0@test.de
-      - equal:
-          path: spec.smtpServer.auth
-          value: true
-      - equal:
-          path: spec.smtpServer.starttls
-          value: true
-      - equal:
-          path: spec.smtpServer.password
-          value: psw
-      - equal:
-          path: spec.smtpServer.fromDisplayName
-          value: displayed name
-  
-  - it: should create realm roles if set
-    set:
-      sso:
-        keycloak_realm:
-          roles:
-            - name: role1
-            - name: role0
-    asserts:
-      - contains:
-          path: spec.realmRoles
-          content: 
-            name: role0
-      - contains:
-          path: spec.realmRoles
-          content: 
-            name: role1
-  - it: should not create realm roles by default
-    asserts:
-      - isNull:
-          path: spec.realmRoles
-  - it: should have a bundesland
-    asserts:
-      - equal:
-          path: spec.bundesland
-          value: sh
\ No newline at end of file
diff --git a/src/test/helm/keycloak_group_crd_test.yaml b/src/test/helm/keycloak_group_crd_test.yaml
deleted file mode 100644
index e57deea335a21b81c0ffcd387878d44f6a3edcef..0000000000000000000000000000000000000000
--- a/src/test/helm/keycloak_group_crd_test.yaml
+++ /dev/null
@@ -1,211 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: Keycloak Group crd
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/keycloak_group_crd.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        keycloak_groups:
-          - name: 'Abtl. 10.0.1 Versammlungsbehörde, Identitätsfeststellung, Fundbüro'
-            attributes:
-              - name: organisationseinheitId
-                value: "9030229"
-    asserts:
-      - isAPIVersion:
-          of: operator.ozgcloud.de/v1
-      - isKind:
-          of: OzgCloudKeycloakGroup
-  - it: should have metadata
-    set:
-      sso:
-        keycloak_groups:
-          - name: "test gruppe"
-    asserts:
-      - equal:
-          path: metadata.name
-          value: test-gruppe-keycloak-group
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have default Values
-    set:
-      sso:
-        keycloak_groups:
-          - name: "test gruppe"
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-  - it: should have Keycloak Group without attributes
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_groups:
-          - name: "test gruppe"
-        keep_after_delete: true
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: true
-      - equal:
-          path: spec.group_name
-          value: "test gruppe"
-      - isNull:
-          path: spec.group_attributes
-  - it: should have Keycloak Group with attributes
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_groups:
-          - name: "test gruppe"
-            attributes:
-              - name: testAttribute
-                value: 1234
-        keep_after_delete: true
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: true
-      - equal:
-          path: spec.group_name
-          value: "test gruppe"
-      - contains:
-          path: spec.group_attributes
-          content:
-            name: testAttribute
-            value: 1234
-  - it: should have Keycloak Group with two attributes
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_groups:
-          - name: "test gruppe"
-            attributes:
-              - name: firstAttribute
-                value: 1Eins
-              - name: secondAttribute
-                value: 2Zwei
-        keep_after_delete: true
-    asserts:
-      - contains:
-          path: spec.group_attributes
-          content:
-              name: firstAttribute
-              value: 1Eins
-      - contains:
-          path: spec.group_attributes
-          content:
-              name: secondAttribute
-              value: 2Zwei
-  - it: should contain two Keycloak Groups
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_groups:
-          - name: "erste gruppe"
-            attributes:
-              - name: firstAttribute
-                value: 1Eins
-          - name: "zweite gruppe"
-        keep_after_delete: true
-    asserts:
-      - hasDocuments:
-          count: 2
-      - equal:
-          path: spec.group_name
-          value: "erste gruppe"
-        documentIndex: 0
-      - contains:
-          path: spec.group_attributes
-          content:
-              name: firstAttribute
-              value: 1Eins
-        documentIndex: 0
-      - equal:
-          path: spec.group_name
-          value: "zweite gruppe"
-        documentIndex: 1
-  - it: should have valid ressource name
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_groups:
-          - name: ".erste gruppe"
-          - name: "Ältere gruppe"
-          - name: "Abtl. 1.0.0 test"
-          - name: "Besonders langer Gruppenname"
-        keep_after_delete: true
-    asserts:
-      - equal:
-          path: metadata.name
-          value: "erste-gruppe-keycloak-group"
-        documentIndex: 0
-      - equal:
-          path: metadata.name
-          value: "ltere-gruppe-keycloak-group"
-        documentIndex: 1
-      - equal:
-          path: metadata.name
-          value: "abtl100-test-keycloak-group"
-        documentIndex: 2
-      - equal:
-          path: metadata.name
-          value: "besonders-langer-gru-keycloak-group"
-        documentIndex: 3
-
-  - it: should not create group cr if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        keycloak_groups:
-          - name: ".erste gruppe"
-    asserts:
-      - hasDocuments:
-          count: 0
\ No newline at end of file
diff --git a/src/test/helm/keycloak_user_crd_test.yaml b/src/test/helm/keycloak_user_crd_test.yaml
deleted file mode 100644
index 9fcd5edfecbbe6e3b51b2a011543e08d7143ca6b..0000000000000000000000000000000000000000
--- a/src/test/helm/keycloak_user_crd_test.yaml
+++ /dev/null
@@ -1,565 +0,0 @@
-#
-# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: Keycloak User crd
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/keycloak_user_crd.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        api_users:
-          - name: testapiuser
-    asserts:
-      - isAPIVersion:
-          of: operator.ozgcloud.de/v1
-      - isKind:
-          of: OzgCloudKeycloakUser
-  - it: should have metadata
-    set:
-      sso:
-        api_users:
-          - name: testapiuser
-    asserts:
-      - equal:
-          path: metadata.name
-          value: testapiuser-keycloak-user
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have default Values
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      sso:
-        api_users:
-          - name: testapiuser
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.first_name
-          values: ""
-      - equal:
-          path: spec.keycloak_user.last_name
-          values: ""
-      - equal:
-          path: spec.keycloak_user.email
-          values: ""
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.password
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-
-  - it: should have Keycloak User without roles
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_users:
-          - name: dorothea
-            first_name: Dorothea
-            last_name: Doe
-            email: dorothea@ozg-sh.de
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: dorothea
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Dorothea
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: Doe
-      - equal:
-          path: spec.keycloak_user.email
-          value: dorothea@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-
-  - it: should have Keycloak User with client role
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_users:
-          - name: dorothea
-            first_name: Dorothea
-            last_name: Doe
-            email: dorothea@ozg-sh.de
-            client_roles:
-              - name: alfa
-                role: VERWALTUNG_USER
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: dorothea
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Dorothea
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: Doe
-      - equal:
-          path: spec.keycloak_user.email
-          value: dorothea@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - contains:
-          path: spec.keycloak_user.client_roles
-          content:
-            name: alfa
-            role: VERWALTUNG_USER
-
-  - it: should have Keycloak User with realm role
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_users:
-          - name: dorothea
-            first_name: Dorothea
-            last_name: Doe
-            email: dorothea@ozg-sh.de
-            realm_roles:
-              - "offline_access"
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: dorothea
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Dorothea
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: Doe
-      - equal:
-          path: spec.keycloak_user.email
-          value: dorothea@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.client_roles
-      - contains:
-          path: spec.keycloak_user.realm_roles
-          content:
-            offline_access
-
-  - it: should have Keycloak User with group
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        keycloak_users:
-          - name: dorothea
-            first_name: Dorothea
-            last_name: Doe
-            email: dorothea@ozg-sh.de
-            groups:
-              - Bauamt
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: dorothea
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Dorothea
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: Doe
-      - equal:
-          path: spec.keycloak_user.email
-          value: dorothea@ozg-sh.de
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-      - contains:
-          path: spec.keycloak_user.groups
-          content:
-            Bauamt
-
-  - it: should have Keycloak API User without roles
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        api_users:
-          - name: testapiuser
-            first_name: Api
-            last_name: User
-            email: testapiuser@ozg-sh.de
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Api
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: User
-      - equal:
-          path: spec.keycloak_user.email
-          value: testapiuser@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-
-  - it: should have Keycloak API User with client role
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        api_users:
-          - name: testapiuser
-            first_name: Api
-            last_name: User
-            email: testapiuser@ozg-sh.de
-            client_roles:
-              - name: realm-management
-                role: view-users
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Api
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: User
-      - equal:
-          path: spec.keycloak_user.email
-          value: testapiuser@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - contains:
-          path: spec.keycloak_user.client_roles
-          content:
-            name: realm-management
-            role: view-users
-
-  - it: should have Keycloak API User with realm role
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        api_users:
-          - name: testapiuser
-            first_name: Api
-            last_name: User
-            email: testapiuser@ozg-sh.de
-            realm_roles:
-              - "offline_access"
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Api
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: User
-      - equal:
-          path: spec.keycloak_user.email
-          value: testapiuser@ozg-sh.de
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.client_roles
-      - contains:
-          path: spec.keycloak_user.realm_roles
-          content:
-            offline_access
-
-  - it: should have Keycloak API User with group
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        api_users:
-          - name: testapiuser
-            first_name: Api
-            last_name: User
-            email: testapiuser@ozg-sh.de
-            groups:
-              - Bauamt
-    asserts:
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Api
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: User
-      - equal:
-          path: spec.keycloak_user.email
-          value: testapiuser@ozg-sh.de
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-      - contains:
-          path: spec.keycloak_user.groups
-          content:
-            Bauamt
-
-  - it: should have Keycloak User and Keycloak API User
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      baseUrl: "test.by.ozg-cloud.de"
-      sso:
-        api_users:
-          - name: testapiuser
-            first_name: Api
-            last_name: User
-            email: testapiuser@ozg-sh.de
-            realm_roles:
-              - "offline_access"
-            client_roles:
-              - name: realm-management
-                role: view-users
-        keycloak_users:
-          - name: dorothea
-            first_name: Dorothea
-            last_name: Doe
-            email: dorothea@ozg-sh.de
-            realm_roles:
-              - "offline_access"
-            client_roles:
-              - name: alfa
-                role: VERWALTUNG_USER
-            groups:
-              - Bauamt
-    asserts:
-      - hasDocuments:
-          count: 2
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-        documentIndex: 0
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-        documentIndex: 0
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Api
-        documentIndex: 0
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: User
-        documentIndex: 0
-      - equal:
-          path: spec.keycloak_user.email
-          value: testapiuser@ozg-sh.de
-        documentIndex: 0
-      - contains:
-          path: spec.keycloak_user.client_roles
-          content:
-            name: realm-management
-            role: view-users
-        documentIndex: 0
-      - contains:
-          path: spec.keycloak_user.realm_roles
-          content:
-            offline_access
-        documentIndex: 0
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-        documentIndex: 1
-      - equal:
-          path: spec.keycloak_user.username
-          value: dorothea
-        documentIndex: 1
-      - equal:
-          path: spec.keycloak_user.first_name
-          value: Dorothea
-        documentIndex: 1
-      - equal:
-          path: spec.keycloak_user.last_name
-          value: Doe
-        documentIndex: 1
-      - equal:
-          path: spec.keycloak_user.email
-          value: dorothea@ozg-sh.de
-        documentIndex: 1
-      - contains:
-          path: spec.keycloak_user.groups
-          content:
-            Bauamt
-        documentIndex: 1
-      - contains:
-          path: spec.keycloak_user.client_roles
-          content:
-            name: alfa
-            role: VERWALTUNG_USER
-        documentIndex: 1
-      - contains:
-          path: spec.keycloak_user.realm_roles
-          content:
-            offline_access
-        documentIndex: 1
-
-  - it: should have lowercase username
-    set:
-      ozgcloud:
-        bundesland: by
-        bezeichner: helm
-        environment: test
-      sso:
-        api_users:
-          - name: testApiUser
-    asserts:
-      - equal:
-          path: spec.keycloak_user.username
-          value: testapiuser
-      - equal:
-          path: spec.keep_after_delete
-          value: false
-      - equal:
-          path: spec.keycloak_user.first_name
-          values: ""
-      - equal:
-          path: spec.keycloak_user.last_name
-          values: ""
-      - equal:
-          path: spec.keycloak_user.email
-          values: ""
-      - isEmpty:
-          path: spec.keycloak_user.groups
-      - isNull:
-          path: spec.keycloak_user.password
-      - isNull:
-          path: spec.keycloak_user.realm_roles
-      - isNull:
-          path: spec.keycloak_user.client_roles
-
-  - it: should not create user cr if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        keycloak_users:
-          - name: kop
-    asserts:
-      - hasDocuments:
-          count: 0
-
-  - it: should set updateUser
-    set:
-      sso:
-        api_users:
-          - name: testapiuser
-            update_user: true
-    asserts:
-    - equal:
-        path: spec.update_user
-        value: true
-
-  - it: should set default updateUser to false
-    set:
-      sso:
-        api_users:
-          - name: testapiuser
-    asserts:
-    - equal:
-        path: spec.update_user
-        value: false
\ No newline at end of file
diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml
deleted file mode 100644
index 8d61ef951565b2b768f23bbbe5060a7013eced42..0000000000000000000000000000000000000000
--- a/src/test/helm/network_policy_test.yaml
+++ /dev/null
@@ -1,293 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: network policy alfa test
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/network_policy.yaml
-
-tests:
-  - it: should match apiVersion
-    set:
-      networkPolicy:
-        dnsServerNamespace: kube-system
-        ssoPublicIp: 1.1.1.1/32
-    asserts:
-      - isAPIVersion:
-          of: networking.k8s.io/v1
-
-  - it: should match kind
-    set:
-      networkPolicy:
-        dnsServerNamespace: kube-system
-        ssoPublicIp: 1.1.1.1/32
-    asserts:
-      - isKind:
-          of: NetworkPolicy
-  - it: validate metadata
-    set:
-      networkPolicy:
-        dnsServerNamespace: kube-system
-        ssoPublicIp: 1.1.1.1/32
-    asserts:
-      - equal:
-          path: metadata
-          value:
-            name: network-policy-alfa
-            namespace: by-helm-test
-  - it: validate spec
-    set:
-      networkPolicy:
-        dnsServerNamespace: kube-system
-        ssoPublicIp: 1.1.1.1/32
-    asserts:
-      - equal:
-          path: spec
-          value:
-            podSelector:
-              matchLabels:
-                component: alfa
-            policyTypes:
-              - Ingress
-              - Egress
-            ingress:
-            - ports:
-              - port: 8080
-            - from:
-              - namespaceSelector:
-                  matchLabels:
-                    name: openshift-user-workload-monitoring
-              ports:
-                - port: 8081
-                  protocol: TCP
-            egress:
-            - to:
-              - podSelector:
-                  matchLabels:
-                    component: vorgang-manager
-              ports:
-                - port: 9090
-                  protocol: TCP
-            - to:
-              - podSelector:
-                  matchLabels:
-                    component: administration
-              ports:
-                - port: 8080
-                  protocol: TCP
-            # public keycloak ip
-            - to:
-              - ipBlock:         
-                  cidr: 1.1.1.1/32
-            - to:
-              - namespaceSelector:
-                  matchLabels:
-                    kubernetes.io/metadata.name: kube-system
-              ports:
-                - port: 53
-                  protocol: UDP
-                - port: 53
-                  protocol: TCP
-                - port: 5353
-                  protocol: UDP
-                - port: 5353
-                  protocol: TCP
-            - to:
-              - podSelector: 
-                  matchLabels:
-                    component: user-manager
-              ports:
-                - port: 9000
-                  protocol: TCP
-
-  - it: add ingress rule by values local
-    set:
-      networkPolicy:
-        ssoPublicIp: 51.89.117.53/32
-        dnsServerNamespace: test-namespace-dns
-        additionalIngressConfigLocal:
-        - from:
-          - podSelector: 
-              matchLabels:
-                component: client2
-    asserts:
-      - contains:
-          path: spec.ingress
-          content:
-            from:
-            - podSelector: 
-                matchLabels:
-                  component: client2
-  - it: add ingress rule by values global
-    set:
-      networkPolicy:
-        ssoPublicIp: 51.89.117.53/32
-        dnsServerNamespace: test-namespace-dns
-        additionalIngressConfigGlobal:
-        - from:
-          - podSelector: 
-              matchLabels:
-                component: client2
-    asserts:
-      - contains:
-          path: spec.ingress
-          content:
-            from:
-            - podSelector: 
-                matchLabels:
-                  component: client2
-
-  - it: add egress rules by values local
-    set:
-      networkPolicy:
-        ssoPublicIp: 51.89.117.53/32
-        dnsServerNamespace: test-dns-namespace
-        additionalEgressConfigLocal:
-        - to:
-          - ipBlock:
-              cidr: 1.2.3.4/32
-    asserts:
-    - contains:
-        path: spec.egress
-        content:
-          to:
-          - ipBlock:
-              cidr: 1.2.3.4/32
-  - it: add egress rules by values Global
-    set:
-      networkPolicy:
-        ssoPublicIp: 51.89.117.53/32
-        dnsServerNamespace: test-dns-namespace
-        additionalEgressConfigGlobal:
-        - to:
-          - ipBlock:
-              cidr: 1.2.3.4/32
-    asserts:
-    - contains:
-        path: spec.egress
-        content:
-          to:
-          - ipBlock:
-              cidr: 1.2.3.4/32
-
-  - it: test network policy disabled
-    set:
-      networkPolicy:
-        disabled: true
-    asserts:
-      - hasDocuments:
-          count: 0
-
-  - it: test network policy unset should be disabled
-    set:
-      networkPolicy:
-        ssoPublicIp: 1.1.1.1
-        disabled: false
-        dnsServerNamespace: test-dns-server-namespace
-    asserts:
-      - hasDocuments:
-          count: 1
-
-  - it: test network policy dnsServerNamespace must be set message
-    set:
-      networkPolicy:
-        disabled: false
-        ssoPublicIp: 1.1.1.1/32
-    asserts:
-      - failedTemplate:
-          errorMessage: networkPolicy.dnsServerNamespace must be set
-
-
-  - it: test network policy ssoPublicIp must be set message
-    set:
-      networkPolicy:
-        disabled: false
-        dnsServerNamespace: test-dns-server-namespace
-    asserts:
-      - failedTemplate:
-          errorMessage: networkPolicy.ssoPublicIp must be set
-  
-  - it: test network policy should be enabled by default
-    set:
-      networkPolicy:
-        ssoPublicIp: 1.1.1.1
-        dnsServerNamespace: test-dns-server-namespace
-    asserts:
-      - hasDocuments:
-          count: 1
-
-  - it: should set egress for zufi if configured
-    set:
-      networkPolicy:
-        ssoPublicIp: 1.1.1.1
-        dnsServerNamespace: test-dns-server-namespace
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-      zufiManager:
-        namespace: by-zufi-dev
-    asserts:
-      - contains:
-          path: spec.egress
-          content:
-            to:
-              - podSelector:
-                  matchLabels:
-                    component: zufi-server
-                namespaceSelector:
-                  matchLabels:
-                    kubernetes.io/metadata.name: by-zufi-dev
-            ports:
-              - port: 9090
-                protocol: TCP
-  - it: should fail to set egress for zufi if namespace is missing
-    set:
-      networkPolicy:
-        ssoPublicIp: 1.1.1.1
-        dnsServerNamespace: test-dns-server-namespace
-      ozgcloud:
-        feature:
-          collaborationEnabled: true
-    asserts:
-      - failedTemplate:
-          errorMessage: zufiManager.namespace must be set if zufiManager server is enabled
-  - it: should set monitoring namesapce
-    set:
-      networkPolicy:
-        ssoPublicIp: 1.1.1.1
-        dnsServerNamespace: test-dns-server-namespace
-        monitoringNamespace: test-monitoring
-    asserts:
-      - contains:
-          path: spec.ingress
-          content:
-            from:
-              - namespaceSelector:
-                  matchLabels:
-                    name: test-monitoring
-            ports:
-              - protocol: TCP
-                port: 8081
\ No newline at end of file
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml
deleted file mode 100644
index 00c650aaf35cd63462109f2329289278758af577..0000000000000000000000000000000000000000
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ozg_operator_secrets_read_role_binding
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - isAPIVersion:
-          of: rbac.authorization.k8s.io/v1
-      - isKind:
-          of: RoleBinding
-  - it: should have metadata
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - equal:
-          path: metadata.name
-          value: ozgcloud-keycloak-operator-secrets-read-role-binding-alfa
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have subjects values
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - contains:
-          path: subjects
-          content:
-            kind: ServiceAccount
-            name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
-  - it: should have roleRef values
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - equal:
-          path: roleRef.kind
-          value: Role
-      - equal:
-          path: roleRef.name
-          value: ozgcloud-keycloak-operator-secrets-read-role-alfa
-      - equal:
-          path: roleRef.apiGroup
-          value: rbac.authorization.k8s.io
-  - it: should not create RoleBinding if no keycloak users available
-    asserts:
-      - hasDocuments:
-          count: 0
-  - it: should have subjects values on api_users
-    set:
-      sso:
-        api_users:
-          - name: apiUser
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - contains:
-          path: subjects
-          content:
-            kind: ServiceAccount
-            name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
-
-  - it: should not create RoleBinding if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        api_users:
-          - name: apiUser
-    asserts:
-      - hasDocuments:
-          count: 0
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml
deleted file mode 100644
index c7e4fd320a18fbae40f45669f680d62b63304228..0000000000000000000000000000000000000000
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ozg_operator_secrets_read_role
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-    asserts:
-      - isAPIVersion:
-          of: rbac.authorization.k8s.io/v1
-      - isKind:
-          of: Role
-  - it: should have metadata
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-    asserts:
-      - equal:
-          path: metadata.name
-          value: ozgcloud-keycloak-operator-secrets-read-role-alfa
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have subjects values
-    set:
-      sso:
-        keycloak_users:
-          - name: peter
-          - name: sabine
-          - name: _with_underscore_
-          - name: .with.dot.
-    asserts:
-      - contains:
-          path: rules
-          content:
-            apiGroups:
-               - "*"
-            resourceNames:
-               - peter-credentials
-               - sabine-credentials
-               - withunderscore-credentials
-               - withdot-credentials
-            resources:
-               - secrets
-            verbs:
-               - get
-               - list
-  - it: should not create RoleBinding if no keycloak users available
-    asserts:
-      - hasDocuments:
-          count: 0
-  - it: should have subjects values on api_users
-    set:
-      sso:
-        api_users:
-          - name: apiUser
-    asserts:
-      - contains:
-          path: rules
-          content:
-            apiGroups:
-               - "*"
-            resourceNames:
-               - apiUser-credentials
-            resources:
-               - secrets
-            verbs:
-               - get
-               - list
-
-  - it: should not create Role if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        api_users:
-          - name: apiUser
-    asserts:
-      - hasDocuments:
-          count: 0
\ No newline at end of file
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml
deleted file mode 100644
index 1c8fb343784f080a64c36ca9af2f7b816d3bd9ec..0000000000000000000000000000000000000000
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ozg_operator_secrets_role_binding
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - isAPIVersion:
-          of: rbac.authorization.k8s.io/v1
-      - isKind:
-          of: RoleBinding
-  - it: should have metadata
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - equal:
-          path: metadata.name
-          value: ozgcloud-keycloak-operator-secrets-write-role-binding-alfa
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have subjects values
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - contains:
-          path: subjects
-          content:
-            kind: ServiceAccount
-            name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
-  - it: should have roleRef values
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - equal:
-          path: roleRef.kind
-          value: Role
-      - equal:
-          path: roleRef.name
-          value: ozgcloud-keycloak-operator-secrets-write-role-alfa
-      - equal:
-          path: roleRef.apiGroup
-          value: rbac.authorization.k8s.io
-  - it: should not create RoleBinding if no keycloak users available
-    asserts:
-      - hasDocuments:
-          count: 0
-  - it: should have subjects values on api_users
-    set:
-      sso:
-        api_users:
-          - name: apiUsers
-        operatorNamespace: test-operator-namespace
-    asserts:
-      - contains:
-          path: subjects
-          content:
-            kind: ServiceAccount
-            name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
-
-  - it: should not create RoleBinding if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        api_users:
-          - name: apiUser
-    asserts:
-      - hasDocuments:
-          count: 0
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml
deleted file mode 100644
index 00ffcf6feb5728e249ccc8293115b635e2b9fdee..0000000000000000000000000000000000000000
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test ozg_operator_secrets_write_role
-release:
-  name: alfa
-  namespace: by-helm-test
-templates:
-  - templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
-tests:
-  - it: should contain header data
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-    asserts:
-      - isAPIVersion:
-          of: rbac.authorization.k8s.io/v1
-      - isKind:
-          of: Role
-  - it: should have metadata
-    set:
-      sso:
-        keycloak_users:
-          - name: sabine
-    asserts:
-      - equal:
-          path: metadata.name
-          value: ozgcloud-keycloak-operator-secrets-write-role-alfa
-      - equal:
-          path: metadata.namespace
-          value: by-helm-test
-  - it: should have subjects values
-    set:
-      sso:
-        keycloak_users:
-          - name: peter
-          - name: sabine
-    asserts:
-      - contains:
-          path: rules
-          content:
-            apiGroups:
-               - "*"
-            resources:
-               - secrets
-            verbs:
-               - create
-  - it: should not create RoleBinding if no keycloak users available
-    asserts:
-      - hasDocuments:
-          count: 0
-  - it: should have subjects values on api_users
-    set:
-      sso:
-        api_users:
-          - name: apiUser
-    asserts:
-      - contains:
-          path: rules
-          content:
-            apiGroups:
-               - "*"
-            resources:
-               - secrets
-            verbs:
-               - create
-
-  - it: should not create Role if ozg operator is disabled
-    set:
-      sso:
-        disableOzgOperator: true
-        api_users:
-          - name: apiUser
-    asserts:
-      - hasDocuments:
-          count: 0
\ No newline at end of file
diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml
deleted file mode 100644
index bb0fefabe733be6e94facbda8222799d5b190f74..0000000000000000000000000000000000000000
--- a/src/test/helm/service_account_test.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test service account
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/service_account.yaml
-tests:
-  - it: should create service account with default name
-    set:
-      serviceAccount:
-        create: true
-    asserts:
-      - isKind:
-          of: ServiceAccount
-      - isAPIVersion:
-          of: v1
-      - equal:
-          path: metadata.name
-          value: alfa-service-account
-      - equal:
-          path: metadata.namespace
-          value: sh-helm-test
-  - it: should create service account with name
-    set:
-      serviceAccount:
-        create: true
-        name: helm-service-account
-    asserts:
-      - isKind:
-          of: ServiceAccount
-      - equal:
-          path: metadata.name
-          value: helm-service-account
-      - equal:
-          path: metadata.namespace
-          value: sh-helm-test
-  - it: should not create service account
-    asserts:
-      - hasDocuments:
-        count: 0
\ No newline at end of file
diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml
deleted file mode 100644
index a22bfee713dff5c6be4674cd431c4bfe5505577c..0000000000000000000000000000000000000000
--- a/src/test/helm/service_monitor_test.yaml
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment
-release:
-  name: alfa
-  namespace: sh-helm-test
-templates:
-  - templates/service_monitor.yaml
-tests:
-  - it: should have basic info and the label component with value alfa-service-monitor attached
-    asserts:
-      - isKind:
-          of: ServiceMonitor
-      - isAPIVersion:
-          of: monitoring.coreos.com/v1
-      - equal:
-          path: metadata.name
-          value: alfa
-      - equal:
-          path: metadata.namespace
-          value: sh-helm-test
-      - equal:
-          path: metadata.labels["component"]
-          value: alfa-service-monitor
-      
-  - it: should contain default lables and component lables
-    asserts:
-      - equal:
-          path: metadata.labels
-          value:
-            app.kubernetes.io/instance: alfa
-            app.kubernetes.io/managed-by: Helm
-            app.kubernetes.io/name: alfa
-            app.kubernetes.io/namespace: sh-helm-test
-            app.kubernetes.io/part-of: ozgcloud
-            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
-            component: alfa-service-monitor
-            helm.sh/chart: alfa-0.0.0-MANAGED-BY-JENKINS
-
-  - it: should have the metrics endpoint configured by default
-    set:
-      env.springProfiles: oc,stage
-    asserts:
-      - contains:
-          path: spec.endpoints
-          content:
-            port: metrics
-            path: /actuator/prometheus
-  - it: should be able to enable the endpoint
-    asserts:
-      - contains:
-          path: spec.endpoints
-          content:
-            port: metrics
-            path: /actuator/prometheus
-  - it: namespace selector should contain the namespace
-    asserts:
-      - contains:
-          path: spec.namespaceSelector.matchNames
-          content: sh-helm-test
-  - it: selector should contain the component label with the value alfa-service
-    asserts:
-      - equal:
-          path: spec.selector.matchLabels["component"]
-          value: alfa-service
-  - it: selector should contain helm recommended labels name and namespace
-    asserts:
-      - equal:
-          path: spec.selector.matchLabels["app.kubernetes.io/name"]
-          value: alfa
-      - equal:
-          path: spec.selector.matchLabels["app.kubernetes.io/namespace"]
-          value: sh-helm-test
diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml
deleted file mode 100644
index 9749ab1b953f4bce475e5f7902257a4e2af743cd..0000000000000000000000000000000000000000
--- a/src/test/helm/service_test.yaml
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
-# Ministerpräsidenten des Landes Schleswig-Holstein
-# Staatskanzlei
-# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
-#
-# Lizenziert unter der EUPL, Version 1.2 oder - sobald
-# diese von der Europäischen Kommission genehmigt wurden -
-# Folgeversionen der EUPL ("Lizenz");
-# Sie dürfen dieses Werk ausschließlich gemäß
-# dieser Lizenz nutzen.
-# Eine Kopie der Lizenz finden Sie hier:
-#
-# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
-#
-# Sofern nicht durch anwendbare Rechtsvorschriften
-# gefordert oder in schriftlicher Form vereinbart, wird
-# die unter der Lizenz verbreitete Software "so wie sie
-# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-# ausdrücklich oder stillschweigend - verbreitet.
-# Die sprachspezifischen Genehmigungen und Beschränkungen
-# unter der Lizenz sind dem Lizenztext zu entnehmen.
-#
-
-suite: test deployment
-release:
-  name: alfa
-  namespace: helm-test
-templates:
-  - templates/service.yaml
-tests:
-  - it: should have basics and the label component with value alfa-service attached
-    asserts:
-      - isKind:
-          of: Service
-      - isAPIVersion:
-          of: v1
-      - equal:
-          path: metadata.labels["component"]
-          value: alfa-service
-      - equal:
-          path: metadata.name
-          value: alfa
-      - equal:
-          path: metadata.namespace
-          value: helm-test
-  - it: should be of type ClusterIP
-    asserts:
-      - equal:
-          path: spec.type
-          value: ClusterIP
-  - it: ports should contain the 8080 default http port
-    asserts:
-      - contains:
-          path: spec.ports
-          content:
-            name: http
-            port: 8080
-            protocol: TCP
-            targetPort: 8080
-          count: 1
-          any: true
-  - it: ports should contain the metrics port
-    asserts:
-      - contains:
-          path: spec.ports
-          content:
-            name: metrics
-            port: 8081
-            protocol: TCP
-          count: 1
-          any: true
-  - it: selector should contain the component label with the value alfa
-    asserts:
-      - equal:
-          path: spec.selector["component"]
-          value: alfa
-  - it: selector should contain helm recommended labels name and namespace
-    asserts:
-      - equal:
-          path: spec.selector["app.kubernetes.io/name"]
-          value: alfa
-      - equal:
-          path: spec.selector["app.kubernetes.io/namespace"]
-          value: helm-test
-  
-  - it: selector should contain the component label with the value alfa
-    asserts:
-      - equal:
-          path: spec.selector.component
-          value: alfa
-
-  - it: should contain default lables and component lables
-    asserts:
-      - equal:
-          path: metadata.labels
-          value:
-            app.kubernetes.io/instance: alfa
-            app.kubernetes.io/managed-by: Helm
-            app.kubernetes.io/name: alfa
-            app.kubernetes.io/namespace: helm-test
-            app.kubernetes.io/part-of: ozgcloud
-            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
-            component: alfa-service
-            helm.sh/chart: alfa-0.0.0-MANAGED-BY-JENKINS
-           
\ No newline at end of file