diff --git a/.gitignore b/.gitignore
index 41f692f8929306bf0430e65bcc8eccb01e92fd02..c10edf4e5214be3a14fbe0fa4512f95f87fd6662 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,6 @@
 .factorypath
 
 target
+
+.idea
+*.iml
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java
deleted file mode 100644
index b06f858334184616993106402f712b2580458fd1..0000000000000000000000000000000000000000
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java
+++ /dev/null
@@ -1,130 +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.
- */
-package de.itvsh.kop.common.binaryfile;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-
-import org.apache.commons.io.IOUtils;
-
-import de.itvsh.kop.common.errorhandling.TechnicalException;
-import io.grpc.stub.CallStreamObserver;
-import io.grpc.stub.StreamObserver;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.NonNull;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class GrpcFileUploadUtils {
-
-	static final int CHUNK_SIZE = 255 * 1024;
-
-	/*
-	 * Q = Request Type; S = Response Type
-	 */
-	public static <Q, S> FileSender<Q, S> createSender(Function<byte[], Q> chunkBuilder, InputStream inputStream,
-			Function<StreamObserver<S>, CallStreamObserver<Q>> reqObserverBuilder) {
-		return new FileSender<>(chunkBuilder, reqObserverBuilder, inputStream);
-	}
-
-	public static class FileSender<Q, S> {
-		private final Function<byte[], Q> chunkBuilder;
-		private final InputStream inputStream;
-
-		private final CompletableFuture<S> resultFuture = new CompletableFuture<>();
-		private final StreamObserver<S> responseObserver = BinaryFileUploadStreamObserver.<S>create(resultFuture);
-		private final CallStreamObserver<Q> requestObserver;
-
-		private Optional<Q> metaData = Optional.empty();
-
-		FileSender(Function<byte[], Q> chunkBuilder, Function<StreamObserver<S>, CallStreamObserver<Q>> reqObserverBuilder, InputStream inputStream) {
-			this.chunkBuilder = chunkBuilder;
-			this.inputStream = inputStream;
-
-			requestObserver = reqObserverBuilder.apply(responseObserver);
-		}
-
-		public FileSender<Q, S> withMetaData(@NonNull Q metaData) {
-			this.metaData = Optional.of(metaData);
-			return this;
-		}
-
-		public CompletableFuture<S> send() {
-			sendMetaData();
-			sendAsChunks();
-			requestObserver.onCompleted();
-
-			return resultFuture;
-		}
-
-		void sendAsChunks() {
-			try (var bufferUploadStream = getAsBufferedStream(inputStream)) {
-				while (hasDataToRead(bufferUploadStream)) {
-					sendNextChunk(bufferUploadStream);
-				}
-			} catch (IOException e) {
-				throw new TechnicalException("Error on closing input file stream", e);
-			}
-		}
-
-		BufferedInputStream getAsBufferedStream(InputStream fileContent) {
-			return IOUtils.buffer(fileContent);
-		}
-
-		boolean hasDataToRead(BufferedInputStream uploadStream) throws IOException {
-			return uploadStream.available() > 0;
-		}
-
-		void sendNextChunk(BufferedInputStream uploadStream) {
-			if (requestObserver.isReady()) {
-				sendChunk(uploadStream);
-			}
-		}
-
-		void sendChunk(BufferedInputStream uploadStream) {
-			byte[] content = readFromStream(uploadStream, CHUNK_SIZE);
-
-			var chunk = chunkBuilder.apply(content);
-
-			requestObserver.onNext(chunk);
-		}
-
-		private byte[] readFromStream(BufferedInputStream uploadStream, int size) {
-			try {
-				return uploadStream.readNBytes(size);
-			} catch (IOException e) {
-				throw new TechnicalException("Error on sending a single chunk", e);
-			}
-		}
-
-		private void sendMetaData() {
-			metaData.ifPresent(requestObserver::onNext);
-		}
-	}
-
-}
\ No newline at end of file
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtilsTest.java b/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtilsTest.java
deleted file mode 100644
index 4ba9e9a444eecff0d3b3783246dcb17e210abc5e..0000000000000000000000000000000000000000
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtilsTest.java
+++ /dev/null
@@ -1,234 +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.
- */
-package de.itvsh.kop.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.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.Function;
-
-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 de.itvsh.kop.common.binaryfile.BinaryFileTestFactory.TestRequestType;
-import de.itvsh.kop.common.binaryfile.BinaryFileTestFactory.TestResponseType;
-import de.itvsh.kop.common.binaryfile.GrpcFileUploadUtils.FileSender;
-import de.itvsh.kop.common.errorhandling.TechnicalException;
-import io.grpc.stub.CallStreamObserver;
-import io.grpc.stub.StreamObserver;
-
-class GrpcFileUploadUtilsTest {
-
-	@Spy
-	private GrpcFileUploadUtils service;
-
-	@Mock
-	private Function<byte[], TestRequestType> chunkBuilder;
-	@Mock
-	private Function<StreamObserver<TestResponseType>, CallStreamObserver<TestRequestType>> reqObserverBuilder;
-	@Mock
-	private CallStreamObserver<TestRequestType> requestObserver;
-	@Mock
-	private InputStream inputStream;
-
-	private FileSender<TestRequestType, TestResponseType> fileSender;
-
-	@Mock
-	private TestRequestType metaData;
-
-	@BeforeEach
-	void init() {
-		when(reqObserverBuilder.apply(any())).thenReturn(requestObserver);
-		fileSender = spy(GrpcFileUploadUtils.createSender(chunkBuilder, inputStream, reqObserverBuilder));
-	}
-
-	@Nested
-	class TestCreateFileSender {
-
-		@Test
-		void shouldCreateRequestObserver() {
-			GrpcFileUploadUtils.createSender(chunkBuilder, inputStream, reqObserverBuilder);
-
-			verify(reqObserverBuilder, atLeastOnce()).apply(notNull());
-		}
-	}
-
-	@Nested
-	class TestSendBinaryFile {
-
-		@BeforeEach
-		void mockSendAsChunks() {
-			doNothing().when(fileSender).sendAsChunks();
-		}
-
-		@Test
-		void shouldCallNextWithMetaData() {
-			fileSender.withMetaData(metaData).send();
-
-			verify(requestObserver).onNext(metaData);
-		}
-
-		@Test
-		void shouldSendChunks() {
-			callService();
-
-			verify(fileSender).sendAsChunks();
-		}
-
-		@Test
-		void shouldCallOnComplete() {
-			callService();
-
-			verify(requestObserver).onCompleted();
-		}
-
-		@Test
-		void shouldReturnFuture() {
-			var result = callService();
-
-			assertThat(result).isNotNull();
-		}
-
-		private CompletableFuture<TestResponseType> callService() {
-			return fileSender.send();
-		}
-	}
-
-	@Nested
-	class TestSendAsChunks {
-
-		@Mock
-		private BufferedInputStream bufferedUploadStream;
-
-		@BeforeEach
-		void mock() {
-			doReturn(bufferedUploadStream).when(fileSender).getAsBufferedStream(any(InputStream.class));
-		}
-
-		@Test
-		void shouldCallHasDataToRead() throws IOException {
-			callService();
-
-			verify(fileSender).hasDataToRead(bufferedUploadStream);
-		}
-
-		@Test
-		void shouldSendNextChunk() throws IOException {
-			doNothing().when(fileSender).sendNextChunk(any());
-			doReturn(true, false).when(fileSender).hasDataToRead(any());
-
-			callService();
-
-			verify(fileSender, atLeastOnce()).sendNextChunk(bufferedUploadStream);
-		}
-
-		@Test
-		void shouldThrowException() throws IOException {
-			doThrow(IOException.class).when(fileSender).hasDataToRead(any());
-
-			assertThrows(TechnicalException.class, () -> callService());
-		}
-
-		private void callService() {
-			fileSender.sendAsChunks();
-		}
-	}
-
-	@Nested
-	class TestSendNextChunk {
-
-		@Mock
-		private BufferedInputStream bufferedUploadStream;
-
-		@Test
-		void shouldSendNextChunk() {
-			doNothing().when(fileSender).sendChunk(any());
-			when(requestObserver.isReady()).thenReturn(true);
-
-			callService();
-
-			verify(fileSender).sendChunk(bufferedUploadStream);
-		}
-
-		@Test
-		void shouldNotSendNextChunkWhenNotReady() {
-			when(requestObserver.isReady()).thenReturn(false);
-
-			callService();
-
-			verify(fileSender, never()).sendChunk(bufferedUploadStream);
-		}
-
-		private void callService() {
-			fileSender.sendNextChunk(bufferedUploadStream);
-		}
-	}
-
-	@Nested
-	class TestSendChunk {
-
-		@Mock
-		private BufferedInputStream uploadStream;
-
-		private final byte[] chunkPart = "ChunkPartContent".getBytes();
-
-		@Test
-		void shouldApplyBuildChunk() throws IOException {
-			doReturn(chunkPart).when(uploadStream).readNBytes(anyInt());
-
-			callService();
-
-			verify(chunkBuilder).apply(chunkPart);
-		}
-
-		@Test
-		void shouldCallOnNext() throws IOException {
-			doReturn(chunkPart).when(uploadStream).readNBytes(anyInt());
-
-			callService();
-
-			verify(requestObserver).onNext(any());
-		}
-
-		@Test
-		void shouldThrowException() throws IOException {
-			doThrow(IOException.class).when(uploadStream).readNBytes(anyInt());
-
-			assertThrows(TechnicalException.class, () -> callService());
-		}
-
-		private void callService() {
-			fileSender.sendChunk(uploadStream);
-		}
-	}
-}
\ No newline at end of file
diff --git a/lombok.config b/lombok.config
index c39610edca34274113f8d831fac9b279fcfe4f4f..81661f0fd9c5f6e2f40f39aa9ee13f7017fc2726 100644
--- a/lombok.config
+++ b/lombok.config
@@ -1,28 +1,30 @@
-#   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:
+# 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
 #
-#   https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
-#   Sofern nicht durch anwendbare Rechtsvorschriften
-#   gefordert oder in schriftlicher Form vereinbart, wird
-#   die unter der Lizenz verbreitete Software "so wie sie
-#   ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
-#   ausdrücklich oder stillschweigend - verbreitet.
-#   Die sprachspezifischen Genehmigungen und Beschränkungen
-#   unter der Lizenz sind dem Lizenztext zu entnehmen. 
 
 lombok.log.fieldName=LOG
 lombok.log.slf4j.flagUsage = ERROR
 lombok.log.log4j.flagUsage = ERROR
 lombok.data.flagUsage = ERROR
 lombok.nonNull.exceptionType = IllegalArgumentException
-lombok.addLombokGeneratedAnnotation = true
+lombok.addLombokGeneratedAnnotation = true
\ No newline at end of file
diff --git a/kop-common-dependencies/pom.xml b/ozgcloud-common-dependencies/pom.xml
similarity index 57%
rename from kop-common-dependencies/pom.xml
rename to ozgcloud-common-dependencies/pom.xml
index e3e9a6cb0ef70b7a92f5d570f9060e4306a0212e..64967a3b453890bdf3e57309db3a025f606218c8 100644
--- a/kop-common-dependencies/pom.xml
+++ b/ozgcloud-common-dependencies/pom.xml
@@ -1,6 +1,6 @@
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -23,48 +23,58 @@
     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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
-		<groupId>de.itvsh.kop.common</groupId>
-		<artifactId>kop-common</artifactId>
-		<version>1.3.0</version>
+		<groupId>de.ozgcloud.common</groupId>
+		<artifactId>ozgcloud-common</artifactId>
+		<version>3.0.1</version>
 	</parent>
 
-	<artifactId>kop-common-dependencies</artifactId>
-	<name>Kop Common - Dependencies</name>
+	<artifactId>ozgcloud-common-dependencies</artifactId>
+	<name>OzgCloud Common - Dependencies</name>
 	<packaging>pom</packaging>
-	<description>Dependenencies management for kop projects</description>
+	<description>Dependenencies management for ozgcloud projects</description>
 
 	<properties>
-		<pluto.version>0.31.0</pluto.version>
+		<vorgang-manager.version>2.1.0</vorgang-manager.version>
+		<license.version>1.6.0</license.version>
 
 		<java.version>17</java.version>
-		<maven.compiler.source>${java.version}</maven.compiler.source>
-		<maven.compiler.target>${java.version}</maven.compiler.target>
+		<maven.compiler.source>17</maven.compiler.source>
+		<maven.compiler.target>17</maven.compiler.target>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-		<spring-boot.version>2.7.3</spring-boot.version>
-		<spring.version>5.3.23</spring.version>
+		<spring-boot.version>3.1.8</spring-boot.version>
+		<spring.version>6.0.16</spring.version>
 
-		<grpc.spring-boot-starter.version>2.13.1.RELEASE</grpc.spring-boot-starter.version>
-		<grpc.version>1.48.1</grpc.version>
+		<grpc.spring-boot-starter.version>5.0.0</grpc.spring-boot-starter.version>
 
-		<mapstruct.version>1.5.3.Final</mapstruct.version>
-		<commons-io.version>2.11.0</commons-io.version>
+		<net.devh.grpc.spring-boot-server-starter.version>2.14.0.RELEASE</net.devh.grpc.spring-boot-server-starter.version>
+		<net.devh.grpc.spring-boot-client-starter.version>2.14.0.RELEASE</net.devh.grpc.spring-boot-client-starter.version>
+		<grpc.version>1.59.0</grpc.version>
+
+
+		<protoc-jar-plugin.version>3.11.4</protoc-jar-plugin.version>
+
+		<protobuf.version>3.25.1</protobuf.version>
+		<protoc-gen.version>1.59.0</protoc-gen.version>
+
+		<mapstruct.version>1.5.5.Final</mapstruct.version>
+		<commons-io.version>2.15.0</commons-io.version>
 		<commons-beanutils.version>1.9.4</commons-beanutils.version>
-		<commons-lang3.version>3.12.0</commons-lang3.version>
+		<commons-lang3.version>3.14.0</commons-lang3.version>
 		<commons-collections.version>4.4</commons-collections.version>
 
-		<java-jwt.version>4.2.1</java-jwt.version>
-		<jjwt.version>0.11.5</jjwt.version>
+		<java-jwt.version>4.4.0</java-jwt.version>
+		<jjwt.version>0.12.3</jjwt.version>
 
-<!--TODO update - welche version verwendet ops -->
-		<keycloak-adapter.version>18.0.0</keycloak-adapter.version>
-		<keycloak-spring-boot-starter.version>18.0.0</keycloak-spring-boot-starter.version>
 		<jakarta.version>2.1.0</jakarta.version>
-		
-		<protoc-jar-plugin.version>3.11.4</protoc-jar-plugin.version>
+
+		<quarkus.platform.version>3.5.3</quarkus.platform.version>
 
 		<!-- Test -->
 		<lorem.version>2.1</lorem.version>
@@ -84,39 +94,44 @@
 
 			<!-- own projects -->
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-lib</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-lib</artifactId>
+				<version>${ozgcloud-common.version}</version>
 			</dependency>
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-test</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-test</artifactId>
+				<version>${ozgcloud-common.version}</version>
 				<scope>test</scope>
 			</dependency>
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-license</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-license</artifactId>
+				<version>${license.version}</version>
 			</dependency>
 
 			<dependency>
-				<groupId>de.itvsh.ozg.pluto</groupId>
-				<artifactId>pluto-interface</artifactId>
-				<version>${pluto.version}</version>
+				<groupId>de.ozgcloud.vorgang-manager</groupId>
+				<artifactId>vorgang-manager-interface</artifactId>
+				<version>${vorgang-manager.version}</version>
 			</dependency>
 			<dependency>
-				<groupId>de.itvsh.ozg.pluto</groupId>
-				<artifactId>pluto-utils</artifactId>
-				<version>${pluto.version}</version>
+				<groupId>de.ozgcloud.vorgang-manager</groupId>
+				<artifactId>vorgang-manager-utils</artifactId>
+				<version>${vorgang-manager.version}</version>
 			</dependency>
 			<dependency>
-				<groupId>de.itvsh.ozg.pluto</groupId>
-				<artifactId>pluto-utils</artifactId>
+				<groupId>de.ozgcloud.vorgang-manager</groupId>
+				<artifactId>vorgang-manager-utils</artifactId>
 				<type>test-jar</type>
-				<version>${pluto.version}</version>
+				<version>${vorgang-manager.version}</version>
 				<scope>test</scope>
 			</dependency>
+			<dependency>
+				<groupId>de.ozgcloud.vorgang-manager</groupId>
+				<artifactId>vorgang-manager-command</artifactId>
+				<version>${vorgang-manager.version}</version>
+			</dependency>
 
 			<!-- spring -->
 			<dependency>
@@ -156,15 +171,26 @@
 
 			<!-- grpc -->
 			<dependency>
-				<groupId>net.devh</groupId>
+				<groupId>io.github.lognet</groupId>
+				<artifactId>grpc-spring-boot-starter</artifactId>
+				<version>${grpc.spring-boot-starter.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>io.github.lognet</groupId>
 				<artifactId>grpc-client-spring-boot-starter</artifactId>
 				<version>${grpc.spring-boot-starter.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>net.devh</groupId>
+				<artifactId>grpc-client-spring-boot-starter</artifactId>
+				<version>${net.devh.grpc.spring-boot-client-starter.version}</version>
+			</dependency>
 			<dependency>
 				<groupId>net.devh</groupId>
 				<artifactId>grpc-server-spring-boot-starter</artifactId>
-				<version>${grpc.spring-boot-starter.version}</version>
+				<version>${net.devh.grpc.spring-boot-server-starter.version}</version>
 			</dependency>
+
 			<dependency>
 				<groupId>io.grpc</groupId>
 				<artifactId>grpc-stub</artifactId>
@@ -175,6 +201,17 @@
 				<artifactId>grpc-protobuf</artifactId>
 				<version>${grpc.version}</version>
 			</dependency>
+			<!-- protobuf -->
+			<dependency>
+				<groupId>com.google.protobuf</groupId>
+				<artifactId>protobuf-java</artifactId>
+				<version>${protobuf.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>com.google.protobuf</groupId>
+				<artifactId>protobuf-java-util</artifactId>
+				<version>${protobuf.version}</version>
+			</dependency>
 
 			<!-- keycloak -->
 			<dependency>
@@ -204,6 +241,17 @@
 				<artifactId>jjwt-api</artifactId>
 				<version>${jjwt.version}</version>
 			</dependency>
+			<dependency>
+				<groupId>io.jsonwebtoken</groupId>
+				<artifactId>jjwt-impl</artifactId>
+				<version>${jjwt.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>io.jsonwebtoken</groupId>
+				<artifactId>jjwt-jackson</artifactId>
+				<version>${jjwt.version}</version>
+				<scope>runtime</scope>
+			</dependency>
 			<!-- TODO legacy - pleace remove -->
 			<dependency>
 				<groupId>io.jsonwebtoken</groupId>
@@ -235,6 +283,15 @@
 				<version>${faker.version}</version>
 				<scope>test</scope>
 			</dependency>
+
+			<!-- Quarkus -->
+			<dependency>
+				<groupId>io.quarkus.platform</groupId>
+				<artifactId>quarkus-bom</artifactId>
+				<version>${quarkus.platform.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>
 
@@ -250,5 +307,12 @@
 			<url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
 		</snapshotRepository>
 	</distributionManagement>
+	<dependencies>
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+	</dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/kop-common-lib/pom.xml b/ozgcloud-common-lib/pom.xml
similarity index 82%
rename from kop-common-lib/pom.xml
rename to ozgcloud-common-lib/pom.xml
index bd1ba53ffdf7e47cb8d0ff77e3e9ff066d78ba8b..8efcc254a982914ce481aad0e701f6852bf5e070 100644
--- a/kop-common-lib/pom.xml
+++ b/ozgcloud-common-lib/pom.xml
@@ -1,6 +1,6 @@
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -28,26 +28,27 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<groupId>de.itvsh.kop.common</groupId>
-		<artifactId>kop-common</artifactId>
-		<version>1.3.0</version>
+		<groupId>de.ozgcloud.common</groupId>
+		<artifactId>ozgcloud-common</artifactId>
+		<version>3.0.1</version>
 	</parent>
 
-	<artifactId>kop-common-lib</artifactId>
-	<name>Kop Common - Shared Lib</name>
+	<artifactId>ozgcloud-common-lib</artifactId>
+	<name>OzgCloud Common - Shared Lib</name>
 
 	<properties>
 		<maven.compiler.source>17</maven.compiler.source>
 		<maven.compiler.target>17</maven.compiler.target>
-		<mockito.version>4.8.1</mockito.version>
+		<mockito.version>5.7.0</mockito.version>
+		
 	</properties>
 
 	<dependencyManagement>
 		<dependencies>
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-dependencies</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-dependencies</artifactId>
+				<version>${ozgcloud-common.version}</version>
 				<type>pom</type>
 				<scope>import</scope>
 			</dependency>
@@ -70,6 +71,11 @@
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-context</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<scope>runtime</scope>
+		</dependency>
 		<!-- grpc -->
 		<dependency>
 			<groupId>io.grpc</groupId>
@@ -94,6 +100,14 @@
 			<groupId>com.fasterxml.jackson.core</groupId>
 			<artifactId>jackson-annotations</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>org.apache.logging.log4j</groupId>
 			<artifactId>log4j-core</artifactId>
@@ -133,13 +147,11 @@
 		<dependency>
 			<groupId>org.mockito</groupId>
 			<artifactId>mockito-core</artifactId>
-			<version>${mockito.version}</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.mockito</groupId>
 			<artifactId>mockito-junit-jupiter</artifactId>
-			<version>${mockito.version}</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserver.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserver.java
similarity index 63%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserver.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserver.java
index 250f52bdda9f4292d0aa15c8cd55474fafd0044a..cdef78110d420b352910afcdc61a877352d19ea5 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserver.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserver.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,27 +21,36 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.binaryfile;
+package de.ozgcloud.common.binaryfile;
 
 import java.util.concurrent.CompletableFuture;
 
-import io.grpc.stub.StreamObserver;
+import io.grpc.stub.ClientCallStreamObserver;
+import io.grpc.stub.ClientResponseObserver;
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
 
+@Log4j2
 @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-public class BinaryFileUploadStreamObserver<R> implements StreamObserver<R> {
+public class BinaryFileUploadStreamObserver<ReqT, R> implements ClientResponseObserver<ReqT, R> {
 
 	private final CompletableFuture<R> future;
+	private final Runnable onReadyHandler;
 
-	public static <R> BinaryFileUploadStreamObserver<R> create(CompletableFuture<R> future) {
-		return new BinaryFileUploadStreamObserver<>(future);
+	public static <ReqT, R> BinaryFileUploadStreamObserver<ReqT, R> create(CompletableFuture<R> future, Runnable onReadyHandler) {
+		return new BinaryFileUploadStreamObserver<>(future, onReadyHandler);
 	}
 
 	@Getter
 	private R response;
 
+	@Override
+	public void beforeStart(ClientCallStreamObserver<ReqT> requestStream) {
+		requestStream.setOnReadyHandler(onReadyHandler);
+	}
+
 	@Override
 	public void onNext(R response) {
 		this.response = response;
@@ -49,11 +58,14 @@ public class BinaryFileUploadStreamObserver<R> implements StreamObserver<R> {
 
 	@Override
 	public void onError(Throwable t) {
+		LOG.error("Error on uploading file. Completing Future.", t);
 		future.completeExceptionally(t);
 	}
 
 	@Override
 	public void onCompleted() {
+		LOG.debug("Complete future...");
 		future.complete(response);
 	}
+
 }
\ No newline at end of file
diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileDataDeserializer.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileDataDeserializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..6eb1727b64e083a28cb8dee8ce4e1ff01ae65c20
--- /dev/null
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileDataDeserializer.java
@@ -0,0 +1,56 @@
+/*
+ * 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.common.binaryfile;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JacksonException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+import lombok.SneakyThrows;
+
+public class FileDataDeserializer extends StdDeserializer<File> {
+
+	protected FileDataDeserializer() {
+		super(File.class);
+	}
+
+	@SneakyThrows
+	@Override
+	public File deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException {
+		var tempFile = TempFileUtils.createTmpFile();
+
+		try (var out = new FileOutputStream(tempFile.toFile())) {
+			p.readBinaryValue(out);
+			out.flush();
+		}
+
+		return tempFile.toFile();
+	}
+
+}
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileId.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileId.java
similarity index 82%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileId.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileId.java
index 2bf5619710d525457beff5584ca950c0180178f3..090d4203158ea13ec36ce8d97f561e3ccdbff3b0 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/FileId.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/FileId.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,11 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.binaryfile;
+package de.ozgcloud.common.binaryfile;
 
+import java.util.Objects;
 import java.util.UUID;
 
-import de.itvsh.kop.common.datatype.StringBasedValue;
+import de.ozgcloud.common.datatype.StringBasedValue;
 import lombok.EqualsAndHashCode;
 
 @EqualsAndHashCode(callSuper = true)
@@ -42,6 +43,9 @@ public class FileId extends StringBasedValue {
 	}
 
 	public static FileId from(String fileId) {
-		return new FileId(fileId);
+		if (Objects.nonNull(fileId)) {
+			return new FileId(fileId);
+		}
+		return null;
 	}
 }
\ No newline at end of file
diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtils.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..b12a237ed6169be35307be45b372cb515221ce6f
--- /dev/null
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtils.java
@@ -0,0 +1,223 @@
+/*
+ * 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.common.binaryfile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+import org.apache.commons.io.IOUtils;
+
+import de.ozgcloud.common.errorhandling.TechnicalException;
+import io.grpc.stub.CallStreamObserver;
+import io.grpc.stub.StreamObserver;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class GrpcFileUploadUtils {
+
+	static final int CHUNK_SIZE = 4 * 1024;
+
+	/*
+	 * Q = Request Type; S = Response Type
+	 */
+	public static <Q, S> FileSender<Q, S> createSender(BiFunction<byte[], Integer, Q> chunkBuilder, InputStream inputStream,
+			Function<StreamObserver<S>, CallStreamObserver<Q>> reqObserverBuilder) {
+		return new FileSender<>(chunkBuilder, reqObserverBuilder, inputStream);
+	}
+
+	public static class FileSender<Q, S> {
+		private final BiFunction<byte[], Integer, Q> chunkBuilder;
+		private final InputStream inputStream;
+
+		@Getter
+		private final CompletableFuture<S> resultFuture = new CompletableFuture<>();
+		private final Function<StreamObserver<S>, CallStreamObserver<Q>> reqObserverBuilder;
+		private CallStreamObserver<Q> requestObserver;
+
+		private Optional<Q> metaData = Optional.empty();
+		private final AtomicBoolean metaDataSent = new AtomicBoolean(false);
+		private final AtomicBoolean done = new AtomicBoolean(false);
+
+		private final StreamReader streamReader;
+
+		FileSender(BiFunction<byte[], Integer, Q> chunkBuilder, Function<StreamObserver<S>, CallStreamObserver<Q>> reqObserverBuilder,
+				InputStream inputStream) {
+			this.chunkBuilder = chunkBuilder;
+			this.inputStream = inputStream;
+			this.reqObserverBuilder = reqObserverBuilder;
+
+			this.streamReader = new StreamReader(this.inputStream);
+		}
+
+		public FileSender<Q, S> withMetaData(@NonNull Q metaData) {
+			this.metaData = Optional.of(metaData);
+			return this;
+		}
+
+		public FileSender<Q, S> send() {
+			LOG.debug("Start sending File.");
+			var responseObserver = BinaryFileUploadStreamObserver.create(resultFuture, this::sendNext);
+			requestObserver = reqObserverBuilder.apply(responseObserver);
+
+			return this;
+		}
+
+		public void cancelOnTimeout() {
+			LOG.warn("File transfer canceled on timeout");
+			resultFuture.cancel(true);
+			requestObserver.onError(new TechnicalException("Timeout on waiting for upload."));
+		}
+
+		public void cancelOnError(Throwable t) {
+			LOG.error("File tranfer canceled on error.", t);
+			resultFuture.cancel(true);
+			requestObserver.onError(t);
+		}
+
+		void sendNext() {
+			if (!done.get()) {
+				waitForOberver();
+				sendMetaData();
+				do {
+					LOG.debug("Sending next chunk.");
+					sendNextChunk();
+				} while (!done.get() && isReady());
+				LOG.debug("Finished or waiting to become ready.");
+			}
+		}
+
+		private boolean isReady() {
+			return requestObserver.isReady();
+		}
+
+		private void waitForOberver() {
+			synchronized (this) {
+				while (Objects.isNull(requestObserver)) {
+					try {
+						LOG.debug("wait for observer");
+						wait(300);
+					} catch (InterruptedException e) {
+						LOG.error("Error on waiting for request Observer.", e);
+						Thread.currentThread().interrupt();
+					}
+				}
+			}
+
+		}
+
+		long sendNextChunk() {
+			byte[] contentToSend = streamReader.getNextData();
+
+			if (streamReader.getLastReadSize() > 0) {
+				sendChunk(contentToSend, streamReader.getLastReadSize());
+			} else {
+				endTransfer();
+			}
+			return contentToSend.length;
+		}
+
+		private void endTransfer() {
+			requestObserver.onCompleted();
+			done.set(true);
+			LOG.debug("File Transfer done. Closing stream.");
+			IOUtils.closeQuietly(inputStream);
+			streamReader.close();
+		}
+
+		void sendChunk(byte[] content, int length) {
+			LOG.debug("Sending {} byte Data.", length);
+			var chunk = chunkBuilder.apply(content, length);
+			requestObserver.onNext(chunk);
+		}
+
+		byte[] readFromStream() {
+			try {
+				return inputStream.readNBytes(CHUNK_SIZE);
+			} catch (IOException e) {
+				throw new TechnicalException("Error on sending a single chunk", e);
+			}
+		}
+
+		void sendMetaData() {
+			metaData.filter(md -> !metaDataSent.get()).ifPresent(this::doSendMetaData);
+		}
+
+		private void doSendMetaData(Q metadata) {
+			LOG.debug("Sending Metadata.");
+			requestObserver.onNext(metadata);
+			metaDataSent.set(true);
+		}
+
+		void checkForEndOfStream(long sentSize) {
+			if (sentSize < CHUNK_SIZE) {
+				LOG.debug("File Transfer done. Closing stream.");
+				IOUtils.closeQuietly(inputStream);
+				requestObserver.onCompleted();
+				done.set(true);
+			} else {
+				LOG.debug("File Transfer not jet done - need to tranfer another chunk.");
+			}
+		}
+
+		@RequiredArgsConstructor
+		private class StreamReader {
+			private final InputStream inStream;
+			private final byte[] buffer = new byte[CHUNK_SIZE];
+			@Getter
+			private int lastReadSize = 0;
+			@Getter
+			private final AtomicBoolean done = new AtomicBoolean(false);
+
+			byte[] getNextData() {
+				readNext();
+				return buffer;
+			}
+
+			void close() {
+				IOUtils.closeQuietly(inStream);
+			}
+
+			void readNext() {
+				try {
+					lastReadSize = inStream.read(buffer, 0, CHUNK_SIZE);
+				} catch (IOException e) {
+					throw new TechnicalException("Error on reading a single chunk", e);
+				}
+			}
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/TempFileUtils.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/TempFileUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..adb78c0f43441cd239bf164578d0686ae75dcffb
--- /dev/null
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/TempFileUtils.java
@@ -0,0 +1,97 @@
+/*
+ * 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.common.binaryfile;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+
+import org.apache.commons.io.FileUtils;
+
+import de.ozgcloud.common.errorhandling.TechnicalException;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class TempFileUtils {
+	static final String TMP_FILE_PREFIX = "filecached-inputstream";
+	static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp";
+
+	private static final String ERROR_MSG = "Error writing file to temp file.";
+
+	public static File writeTmpFile(InputStream contentStream) {
+		try {
+			var tmpFile = createTmpFile();
+
+			Files.copy(contentStream, tmpFile, StandardCopyOption.REPLACE_EXISTING);
+			contentStream.close();
+			return tmpFile.toFile();
+		} catch (IOException e) {
+			throw new TechnicalException(ERROR_MSG, e);
+		}
+	}
+
+	public static File writeTmpFile(String stringData) {
+		try {
+			Path tmpFile = createTmpFile();
+
+			try (var writer = new FileWriter(tmpFile.toFile())) {
+				writer.write(stringData);
+				writer.flush();
+			}
+
+			return tmpFile.toFile();
+		} catch (IOException e) {
+			throw new TechnicalException(ERROR_MSG, e);
+		}
+	}
+
+	public static File writeTmpFile(byte[] data) {
+		try {
+			Path tmpFile = createTmpFile();
+
+			FileUtils.writeByteArrayToFile(tmpFile.toFile(), data);
+
+			return tmpFile.toFile();
+		} catch (IOException e) {
+			throw new TechnicalException(ERROR_MSG, e);
+		}
+
+	}
+
+	public static Path createTmpFile() {
+		try {
+			var tmpFile = Files.createTempFile(TMP_FILE_PREFIX, TMP_FILE_SUFFIX);
+			tmpFile.toFile().deleteOnExit();
+			return tmpFile;
+		} catch (IOException e) {
+			throw new TechnicalException("Error creating temporary file.", e);
+		}
+
+	}
+}
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/datatype/StringBasedValue.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/datatype/StringBasedValue.java
similarity index 93%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/datatype/StringBasedValue.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/datatype/StringBasedValue.java
index 6ae9794d8a188dea381db69cb5f7f16cb0befcbf..f30743ea2be1e2ef2c0876abafa729fb817f90fc 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/datatype/StringBasedValue.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/datatype/StringBasedValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.datatype;
+package de.ozgcloud.common.datatype;
 
 import java.io.Serializable;
 
@@ -52,5 +52,4 @@ public abstract class StringBasedValue implements Serializable {
 	public String toString() {
 		return value;
 	}
-
 }
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/ExceptionUtil.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/ExceptionUtil.java
similarity index 92%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/ExceptionUtil.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/ExceptionUtil.java
index 4a96957772d60ce8e7892f31962ca1afdc831089..6f0a35c2f64ae4e35b9e164ec33151f0e1dfe9ae 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/ExceptionUtil.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/ExceptionUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/FunctionalErrorCode.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/FunctionalErrorCode.java
similarity index 90%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/FunctionalErrorCode.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/FunctionalErrorCode.java
index a9c2d478af739f3f6505573107c5923f1635dc06..76989dd6ed782ad37f9070728813f7f9c99c6156 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/FunctionalErrorCode.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/FunctionalErrorCode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 import java.io.Serializable;
 
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/IdentifiableException.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/IdentifiableException.java
similarity index 90%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/IdentifiableException.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/IdentifiableException.java
index 774dc68c7a1f626f5115dc949712dad346ff8f26..2f6fd602a468a14ebb1ccc7a11fd89091e25dd80 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/IdentifiableException.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/IdentifiableException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 public interface IdentifiableException {
 
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/TechnicalException.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/TechnicalException.java
similarity index 93%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/TechnicalException.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/TechnicalException.java
index 9c99d9b9fdde4e4626708a4a6a4240fcc7ba3676..d001fbaac657fc02f27d0223f477644f2c5e4e0a 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/errorhandling/TechnicalException.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/errorhandling/TechnicalException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 import java.util.UUID;
 
diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/grpc/GrpcUtil.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/grpc/GrpcUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..b72f200e94861e74e4b83459235e74b274f96ba6
--- /dev/null
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/grpc/GrpcUtil.java
@@ -0,0 +1,75 @@
+/*
+ * 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.common.grpc;
+
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+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 Key<byte[]> HEADER_KEY_USER_ID = createKeyOf("USER_ID-bin");
+	public static final Key<byte[]> HEADER_KEY_CLIENT_NAME = createKeyOf("CLIENT_NAME-bin");
+	public static final Key<byte[]> HEADER_KEY_REQUEST_ID = createKeyOf("REQUEST_ID-bin");
+
+	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 Optional<String> getFromHeaders(String key, Metadata headers) {
+		return getFromHeaders(createKeyOf(key), headers);
+	}
+
+	public static Optional<String> getFromHeaders(Key<byte[]> key, Metadata headers) {
+		return Optional.ofNullable(headers.get(key)).map(GrpcUtil::byteToString);
+	}
+
+	public static Collection<String> getCollection(String key, Metadata headers) {
+		final List<String> result = new ArrayList<>();
+		var valuesOptional = Optional.ofNullable(headers.getAll(createKeyOf(key)));
+		valuesOptional.ifPresent(valuesBytes -> result.addAll(StreamSupport.stream(valuesBytes.spliterator(), false)
+				.map(GrpcUtil::byteToString)
+				.toList()));
+
+		return result;
+	}
+
+	private static String byteToString(byte[] bytes) {
+		return new String(bytes, StandardCharsets.UTF_8);
+	}
+
+}
\ No newline at end of file
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectLoggingUtils.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectLoggingUtils.java
similarity index 89%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectLoggingUtils.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectLoggingUtils.java
index 53d0fa361697fff4da5e24f38c73fca5e3ddf214..be0380f7ecc96985ff56eec34f156daa56dbc842 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectLoggingUtils.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectLoggingUtils.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,15 +21,16 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
 
-import de.itvsh.kop.common.logging.logger.AspectLogger;
-import de.itvsh.kop.common.logging.logger.InterceptingLogger;
 import jakarta.interceptor.InvocationContext;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.aspectj.lang.JoinPoint;
 
+import de.ozgcloud.common.logging.logger.AspectLogger;
+import de.ozgcloud.common.logging.logger.InterceptingLogger;
+
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class AspectLoggingUtils {
 
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectPointcuts.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectPointcuts.java
similarity index 78%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectPointcuts.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectPointcuts.java
index 4bf8694284277d1d43d12ac36ca78f4fec6b1295..ed83992570330c39d3f6da3b6262350cba60bbe9 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/AspectPointcuts.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/AspectPointcuts.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
 
 import org.aspectj.lang.annotation.Pointcut;
 
@@ -32,17 +32,17 @@ public class AspectPointcuts {
 		// aspect pointcut - no implementation needed
 	}
 
-	@Pointcut("within(de.itvsh..*)")
-	void anythingInKOP() {
+	@Pointcut("within(de.ozgcloud..*)")
+	void anythingInOzgCloud() {
 		// aspect pointcut - no implementation needed
 	}
 
-	@Pointcut("anyPublicMethods() && anythingInKOP()")
-	void anyPublicMethodInKOP() {
+	@Pointcut("anyPublicMethods() && anythingInOzgCloud()")
+	void anyPublicMethodInOzgCloud() {
 		// aspect pointcut - no implementation needed
 	}
 
-	@Pointcut("anyPublicMethodInKOP() && @target(org.springframework.stereotype.Service)")
+	@Pointcut("anyPublicMethodInOzgCloud() && @target(org.springframework.stereotype.Service)")
 	void anyPublicServiceMethod() {
 		// aspect pointcut - no implementation needed
 	}
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLogging.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLogging.java
similarity index 90%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLogging.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLogging.java
index 685b0e4c84a30628bd07a73ad1c298d651bc3331..1fc17dcd81c13de4a1a7c057e645adb3418d6002 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLogging.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLogging.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
 
 import jakarta.interceptor.InterceptorBinding;
 
@@ -36,6 +36,6 @@ import static java.lang.annotation.RetentionPolicy.*;
 @Retention(RUNTIME)
 @Documented
 @InterceptorBinding
-public @interface KopLogging {
+public @interface OzgCloudLogging {
 
 }
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingAspect.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingAspect.java
similarity index 91%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingAspect.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingAspect.java
index eef0028f40216bdb7420538cc0dba98116ffe361..4485310f4fe15624b07a6c8beb872f029a43cbcb 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingAspect.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingAspect.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
 
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Component;
 
 @Aspect
 @Component
-public class KopLoggingAspect extends AspectPointcuts {
+public class OzgCloudLoggingAspect extends AspectPointcuts {
 
 	@Before("anyPublicServiceMethod()")
 	public void onServiceMethod(JoinPoint joinPoint) {
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingInterceptor.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptor.java
similarity index 90%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingInterceptor.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptor.java
index 7c665d67e9bc3c87964096fd682b1ab8a11ad5e5..7095c94e23630a5467299e770b118f856383757c 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/KopLoggingInterceptor.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,17 +21,17 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
 
 import jakarta.annotation.Priority;
 import jakarta.interceptor.AroundInvoke;
 import jakarta.interceptor.Interceptor;
 import jakarta.interceptor.InvocationContext;
 
-@KopLogging
+@OzgCloudLogging
 @Priority(10)
 @Interceptor
-public class KopLoggingInterceptor {
+public class OzgCloudLoggingInterceptor {
 
 	@AroundInvoke
 	Object logging(InvocationContext context) throws Exception {
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/AspectLogger.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/AspectLogger.java
similarity index 93%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/AspectLogger.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/AspectLogger.java
index e1cc4b6a2adecbc1ad4c56c3dafce7b73dfa3202..2aa2c629d9a7aa06574c035e245692f0a4069c0f 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/AspectLogger.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/AspectLogger.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging.logger;
+package de.ozgcloud.common.logging.logger;
 
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.reflect.MethodSignature;
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/CommonLogger.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/CommonLogger.java
similarity index 95%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/CommonLogger.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/CommonLogger.java
index 8e72530b179687a355424ebd379e7887ffdc8ac5..2b6982c4a3b8aae0d6de1d42e097bda6122a7400 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/CommonLogger.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/CommonLogger.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,17 +21,18 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging.logger;
+package de.ozgcloud.common.logging.logger;
+
+import java.util.Collection;
+import java.util.StringJoiner;
 
-import de.itvsh.kop.common.datatype.StringBasedValue;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Collection;
-import java.util.StringJoiner;
+import de.ozgcloud.common.datatype.StringBasedValue;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
 
 @RequiredArgsConstructor
 @Log4j2
@@ -136,7 +137,7 @@ abstract class CommonLogger<T> {
 		var sb = new StringBuilder();
 		sb.append("<").append(value.getClass().getSimpleName());
 		if (value.getClass().isArray()) {
-			sb.insert(sb.length()-1, ArrayUtils.getLength(value));
+			sb.insert(sb.length() - 1, ArrayUtils.getLength(value));
 		}
 		sb.append(">");
 		return sb.toString();
diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/InterceptingLogger.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/InterceptingLogger.java
similarity index 93%
rename from kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/InterceptingLogger.java
rename to ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/InterceptingLogger.java
index 90c2431712a5f23f3f8ec53c3226f721497bbc7c..0962c6a999c322c824a7b83d1edd189517def01d 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/logging/logger/InterceptingLogger.java
+++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/logging/logger/InterceptingLogger.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging.logger;
+package de.ozgcloud.common.logging.logger;
 
 import jakarta.interceptor.InvocationContext;
 
diff --git a/kop-common-lib/src/main/resources/log4j2-local.xml b/ozgcloud-common-lib/src/main/resources/log4j2-local.xml
similarity index 100%
rename from kop-common-lib/src/main/resources/log4j2-local.xml
rename to ozgcloud-common-lib/src/main/resources/log4j2-local.xml
diff --git a/kop-common-lib/src/main/resources/log4j2.xml b/ozgcloud-common-lib/src/main/resources/log4j2.xml
similarity index 100%
rename from kop-common-lib/src/main/resources/log4j2.xml
rename to ozgcloud-common-lib/src/main/resources/log4j2.xml
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileTestFactory.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileTestFactory.java
similarity index 90%
rename from kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileTestFactory.java
rename to ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileTestFactory.java
index 0ba2cd4b0d05ae3a6ff6145f5d52eabc0da5570f..38ab1da6f1f64a0c64b8831ffcc974d7bcf64765 100644
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileTestFactory.java
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileTestFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.binaryfile;
+package de.ozgcloud.common.binaryfile;
 
 public class BinaryFileTestFactory {
 
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserverTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserverTest.java
similarity index 84%
rename from kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserverTest.java
rename to ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserverTest.java
index 50c926a77608f1da37db009ba4c1acf111d389b9..d4cc0fd02cc323f2aacdf0b1c5abda9a3de733bf 100644
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/binaryfile/BinaryFileUploadStreamObserverTest.java
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/BinaryFileUploadStreamObserverTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.binaryfile;
+package de.ozgcloud.common.binaryfile;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -33,12 +33,13 @@ import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 
-import de.itvsh.kop.common.binaryfile.BinaryFileTestFactory.TestResponseType;
+import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestRequestType;
+import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType;
 
 class BinaryFileUploadStreamObserverTest {
 
 	@InjectMocks
-	private BinaryFileUploadStreamObserver<TestResponseType> uploadStreamObserver;
+	private BinaryFileUploadStreamObserver<TestRequestType, TestResponseType> uploadStreamObserver;
 	@Mock
 	private CompletableFuture<TestResponseType> future;
 
diff --git a/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtilsTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtilsTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b532cb4b1a3a410f35ce379df476203dfc9387e7
--- /dev/null
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcFileUploadUtilsTest.java
@@ -0,0 +1,192 @@
+/*
+ * 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.common.binaryfile;
+
+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.util.function.BiFunction;
+import java.util.function.Function;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+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.common.binaryfile.BinaryFileTestFactory.TestRequestType;
+import de.ozgcloud.common.binaryfile.BinaryFileTestFactory.TestResponseType;
+import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender;
+import de.ozgcloud.common.errorhandling.TechnicalException;
+import io.grpc.stub.CallStreamObserver;
+import io.grpc.stub.StreamObserver;
+
+class GrpcFileUploadUtilsTest {
+
+	@InjectMocks
+	private GrpcFileUploadUtils service;
+
+	@Mock
+	private BiFunction<byte[], Integer, TestRequestType> chunkBuilder;
+	@Mock
+	private Function<StreamObserver<TestResponseType>, CallStreamObserver<TestRequestType>> reqObserverBuilder;
+	@Mock
+	private CallStreamObserver<TestRequestType> requestObserver;
+	@Mock
+	private InputStream inputStream;
+
+	private FileSender<TestRequestType, TestResponseType> fileSender;
+
+	@Mock
+	private TestRequestType metaData;
+
+	@BeforeEach
+	void init() {
+		when(reqObserverBuilder.apply(any())).thenReturn(requestObserver);
+		fileSender = spy(GrpcFileUploadUtils.createSender(chunkBuilder, inputStream, reqObserverBuilder));
+	}
+
+	@Nested
+	class TestCreateFileSender {
+
+		@Test
+		void shouldCreateRequestObserver() {
+			GrpcFileUploadUtils.createSender(chunkBuilder, inputStream, reqObserverBuilder).send();
+
+			verify(reqObserverBuilder, atLeastOnce()).apply(notNull());
+		}
+	}
+
+	@Nested
+	class TestSendBinaryFile {
+
+		@Captor
+		private ArgumentCaptor<Runnable> runnableCaptor;
+
+		@Test
+		void shouldReturnSenderWithFuture() {
+			var result = fileSender.send();
+
+			assertThat(result).isNotNull().extracting(FileSender::getResultFuture).isNotNull();
+		}
+	}
+
+	@Nested
+	class TestSendNext {
+
+		@BeforeEach
+		void initObserver() {
+			fileSender.send();
+		}
+
+		@Test
+		void shouldCallSendMetaData() {
+			fileSender.sendNext();
+
+			verify(fileSender).sendMetaData();
+		}
+
+		@Test
+		void shouldSendNextChunk() {
+			fileSender.sendNext();
+
+			verify(fileSender).sendNextChunk();
+		}
+
+	}
+
+	@Nested
+	class TestSendChunk {
+
+		private static final byte[] CHUNK_PART = "ChunkPartContent".getBytes();
+
+		@BeforeEach
+		void initObserver() {
+			fileSender.send();
+		}
+
+		@Test
+		void shouldApplyBuildChunk() throws IOException {
+			fileSender.sendChunk(CHUNK_PART, 5);
+
+			verify(chunkBuilder).apply(CHUNK_PART, 5);
+		}
+
+		@Test
+		void shouldCallOnNext() throws IOException {
+			fileSender.sendChunk(CHUNK_PART, 5);
+
+			verify(requestObserver).onNext(any());
+		}
+	}
+
+	@Nested
+	class TestSendMetaData {
+
+		@BeforeEach
+		void initObserver() {
+			fileSender.send();
+		}
+
+		@Test
+		void shouldNotSendWithoutMetadata() {
+			fileSender.sendMetaData();
+
+			verify(requestObserver, never()).onNext(any());
+		}
+
+		@Test
+		void shouldSendMetadata() {
+			fileSender.withMetaData(metaData).sendMetaData();
+
+			verify(requestObserver).onNext(metaData);
+		}
+
+		@Test
+		void shouldSendMetadataOnlyOnce() {
+			fileSender.withMetaData(metaData).sendMetaData();
+			fileSender.sendMetaData();
+
+			verify(requestObserver).onNext(metaData);
+		}
+	}
+
+	@Disabled("unused")
+	@Nested
+	class TestReadFromStream {
+		@Test
+		void shouldThrowException() throws IOException {
+			doThrow(IOException.class).when(inputStream).read(any(), anyInt(), anyInt());
+
+			assertThatThrownBy(() -> fileSender.readFromStream()).isInstanceOf(TechnicalException.class);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/ExceptionUtilTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/ExceptionUtilTest.java
similarity index 91%
rename from kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/ExceptionUtilTest.java
rename to ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/ExceptionUtilTest.java
index 8f2d9049206302318696fe54d0ad7be61823b3e4..994b0bbec435752ea0dfbe38f5fe74d86a2bcece 100644
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/ExceptionUtilTest.java
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/ExceptionUtilTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 import static org.assertj.core.api.Assertions.*;
 
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/TechnicalExceptionTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/TechnicalExceptionTest.java
similarity index 92%
rename from kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/TechnicalExceptionTest.java
rename to ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/TechnicalExceptionTest.java
index 880f69ad87577eb0cf48b4f7163138defe961662..4981ad84511233fa8ccdf1c39850e0dcc0ede43f 100644
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/errorhandling/TechnicalExceptionTest.java
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/errorhandling/TechnicalExceptionTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.errorhandling;
+package de.ozgcloud.common.errorhandling;
 
 import static org.assertj.core.api.Assertions.*;
 
diff --git a/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/grpc/GrpcUtilTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/grpc/GrpcUtilTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d78dc68ef20c24dd6cdae726838e7f4194cbf204
--- /dev/null
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/grpc/GrpcUtilTest.java
@@ -0,0 +1,129 @@
+/*
+ * 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.common.grpc;
+
+import static org.assertj.core.api.Assertions.*;
+
+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 io.grpc.Metadata;
+
+class GrpcUtilTest {
+	private static final String KEY_VALUE_BIN = "key_value-bin";
+	private static final String KEY_VALUE_STRING = "key_value";
+	private static final String UNKNOWN_KEY_BIN = "unknown_key-bin";
+
+	@DisplayName("Test Grpc Utility methods")
+	@Nested
+	class TestGrpcUtils {
+
+		@DisplayName("Test creation of MetaData keys")
+		@Nested
+		class TestKeyGeneration {
+
+			@Test
+			void shouldCreateBinaryKey() {
+				var key = GrpcUtil.createKeyOf(KEY_VALUE_BIN);
+
+				assertThat(key.name()).isEqualTo(KEY_VALUE_BIN);
+			}
+
+			@Test
+			void shouldThrowExceptionBecauseOfMissingBinSuffix() {
+				assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> GrpcUtil.createKeyOf("key"));
+			}
+
+			@Test
+			void shouldCreateAsciiKey() {
+				var key = GrpcUtil.keyOfString(KEY_VALUE_STRING);
+
+				assertThat(key.name()).isEqualTo(KEY_VALUE_STRING);
+			}
+
+			@Test
+			void shouldThrowExceptionBecauseOfBinSuffix() {
+				assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> GrpcUtil.keyOfString(KEY_VALUE_BIN));
+			}
+		}
+
+		@DisplayName("Test reading values from the grpc header")
+		@Nested
+		class TestReadingFromHeader {
+			private static final String TEST_VALUE = "test-value";
+
+			private Metadata header = new Metadata();
+
+			@BeforeEach
+			void initMetadata() {
+				header.put(GrpcUtil.createKeyOf(KEY_VALUE_BIN), TEST_VALUE.getBytes());
+			}
+
+			@Test
+			void shouldReadFromHeader() {
+				var value = GrpcUtil.getFromHeaders(KEY_VALUE_BIN, header);
+
+				assertThat(value).isEqualTo(TEST_VALUE);
+			}
+
+			@Test
+			void shouldReturnNullOnUnknownKey() {
+				var value = GrpcUtil.getFromHeaders(UNKNOWN_KEY_BIN, header);
+
+				assertThat(value).isNull();
+			}
+		}
+
+		@DisplayName("Test reading multiple values of a key from the grpc header")
+		@Nested
+		class TestReadingCollection {
+			private static final String TEST_VALUE_1 = "test-value-1";
+			private static final String TEST_VALUE_2 = "test-value-2";
+
+			private Metadata header = new Metadata();
+
+			@BeforeEach
+			void initMetadata() {
+				header.put(GrpcUtil.createKeyOf(KEY_VALUE_BIN), TEST_VALUE_1.getBytes());
+				header.put(GrpcUtil.createKeyOf(KEY_VALUE_BIN), TEST_VALUE_2.getBytes());
+			}
+
+			@Test
+			void shouldReadFromHeader() {
+				var values = GrpcUtil.getCollection(KEY_VALUE_BIN, header);
+
+				assertThat(values).hasSize(2).contains(TEST_VALUE_1, TEST_VALUE_2);
+			}
+
+			@Test
+			void shouldGetEmptyCollectionOnUnknownKey() {
+				var values = GrpcUtil.getCollection(UNKNOWN_KEY_BIN, header);
+
+				assertThat(values).isEmpty();
+			}
+		}
+	}
+}
diff --git a/kop-common-lib/src/test/java/de/itvsh/kop/common/logging/KopLoggingInterceptorTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptorTest.java
similarity index 92%
rename from kop-common-lib/src/test/java/de/itvsh/kop/common/logging/KopLoggingInterceptorTest.java
rename to ozgcloud-common-lib/src/test/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptorTest.java
index 988d241e9d1e62d58fbfe28c4133a653b20ad6aa..24da0f5f0bd83d34ad62e34ea2cb44e17f1c47d5 100644
--- a/kop-common-lib/src/test/java/de/itvsh/kop/common/logging/KopLoggingInterceptorTest.java
+++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/logging/OzgCloudLoggingInterceptorTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,9 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.logging;
+package de.ozgcloud.common.logging;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 import jakarta.interceptor.InvocationContext;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -32,13 +36,9 @@ import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockedStatic;
 
+class OzgCloudLoggingInterceptorTest {
 
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-class KopLoggingInterceptorTest {
-
-	private final KopLoggingInterceptor interceptor = new KopLoggingInterceptor();
+	private final OzgCloudLoggingInterceptor interceptor = new OzgCloudLoggingInterceptor();
 
 	@DisplayName("Logging")
 	@Nested
diff --git a/kop-common-lib/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/ozgcloud-common-lib/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
similarity index 100%
rename from kop-common-lib/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
rename to ozgcloud-common-lib/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
diff --git a/kop-common-lib/src/test/resources/junit-platform.properties b/ozgcloud-common-lib/src/test/resources/junit-platform.properties
similarity index 100%
rename from kop-common-lib/src/test/resources/junit-platform.properties
rename to ozgcloud-common-lib/src/test/resources/junit-platform.properties
diff --git a/kop-common-lib/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/ozgcloud-common-lib/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
similarity index 100%
rename from kop-common-lib/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
rename to ozgcloud-common-lib/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
diff --git a/kop-common-license/LICENSE b/ozgcloud-common-license/LICENSE
similarity index 86%
rename from kop-common-license/LICENSE
rename to ozgcloud-common-license/LICENSE
index bdd879281181876d3ad4d49556110e4087271cc2..a78805b39fbca0bfe4c44dd85892823404a7e079 100644
--- a/kop-common-license/LICENSE
+++ b/ozgcloud-common-license/LICENSE
@@ -1,4 +1,4 @@
-Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch das
+Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das
 Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
 Zentrales IT-Management
 
@@ -17,4 +17,4 @@ die unter der Lizenz verbreitete Software "so wie sie
 ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
 ausdrücklich oder stillschweigend - verbreitet.
 Die sprachspezifischen Genehmigungen und Beschränkungen
-unter der Lizenz sind dem Lizenztext zu entnehmen.
\ No newline at end of file
+unter der Lizenz sind dem Lizenztext zu entnehmen.
diff --git a/kop-common-license/pom.xml b/ozgcloud-common-license/pom.xml
similarity index 84%
rename from kop-common-license/pom.xml
rename to ozgcloud-common-license/pom.xml
index beb17c320e789828f2319368a1e09c54d045c318..64d9236ef6a57ebed91f7dd79a24db054cb5f1b9 100644
--- a/kop-common-license/pom.xml
+++ b/ozgcloud-common-license/pom.xml
@@ -27,17 +27,14 @@
 <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.itvsh.kop.common</groupId>
-		<artifactId>kop-common</artifactId>
-		<version>1.3.0</version>
-	</parent>
 
-	<artifactId>kop-common-license</artifactId>
+	<groupId>de.ozgcloud.common</groupId>
+	<artifactId>ozgcloud-common-license</artifactId>
+	<version>1.6.0</version>
 	<packaging>jar</packaging>
 
-	<name>Kop Common - OS license provider</name>
-	<description>A Maven project for providing the license to all KOP Projects</description>
+	<name>OzgCloud Common - OS license provider</name>
+	<description>A Maven project for providing the license to all OzgCloud Projects</description>
 	
 	<properties>
 		<java.version>17</java.version>
diff --git a/kop-common-license/readme.md b/ozgcloud-common-license/readme.md
similarity index 82%
rename from kop-common-license/readme.md
rename to ozgcloud-common-license/readme.md
index b4eb890605c2cccb5b4ac812e61612666cea7865..c471a27f5c0752fa04206b506656f5b7d1902187 100644
--- a/kop-common-license/readme.md
+++ b/ozgcloud-common-license/readme.md
@@ -1,6 +1,6 @@
-com.mycila# KOP Common license
+com.mycila# OzgCloud Common license
 
-This is a basic Maven-based project that can be used as license provider for all KOP Projects
+This is a basic Maven-based project that can be used as license provider for all OzgCloud Projects
 
 It provides the the header and full text of the german [EUPL Version 1.2 license][license]
 
@@ -12,7 +12,7 @@ It is a library, meant to be included as a dependency on any project which may w
 To use it add
 
 ```xml
-<kop.license.version>1.3.0-SNAPSHOT</kop.license.version>
+<ozgcloud.license.version>1.4.0</ozgcloud.license.version>
 ```
 to the properties section of the pom.xml file.
 
@@ -38,9 +38,9 @@ In the plugins section add
 	</configuration>
 	<dependencies>
         <dependency>
-            <groupId>de.itvsh.kop.common</groupId>
-            <artifactId>kop-common-license</artifactId>
-            <version>${kop.license.version}</version>
+            <groupId>de.ozgcloud.common</groupId>
+            <artifactId>ozgcloud-common-license</artifactId>
+            <version>${ozgcloud.license.version}</version>
         </dependency>
     </dependencies>
 </plugin>
diff --git a/kop-common-license/src/main/resources/license/eupl_v1_2_de/header.txt b/ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/header.txt
similarity index 92%
rename from kop-common-license/src/main/resources/license/eupl_v1_2_de/header.txt
rename to ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/header.txt
index adf6269212fbf7e68b03280a8c7d38a9fddd92b9..48c75c2baf004a8624155b7ccf33e3f7e5aff6ce 100644
--- a/kop-common-license/src/main/resources/license/eupl_v1_2_de/header.txt
+++ b/ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/header.txt
@@ -1,4 +1,4 @@
-Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den 
+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
diff --git a/kop-common-license/src/main/resources/license/eupl_v1_2_de/license.txt b/ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/license.txt
similarity index 99%
rename from kop-common-license/src/main/resources/license/eupl_v1_2_de/license.txt
rename to ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/license.txt
index abe3f4490c312b617f058f89de830d09d06ce1c6..e582cb1b65483bc3861845f4a0519ef56c8ad043 100644
--- a/kop-common-license/src/main/resources/license/eupl_v1_2_de/license.txt
+++ b/ozgcloud-common-license/src/main/resources/license/eupl_v1_2_de/license.txt
@@ -1,4 +1,4 @@
-Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den 
+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
@@ -103,4 +103,4 @@ Anlage
 —  European Union Public Licence (EUPL) v. 1.1, v. 1.2 
 —  Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) oder Strong Reciprocity (LiLiQ-R+)
 Die Europäische Kommission kann diesen Anhang aktualisieren, um neuere Fassungen der obigen Lizenzen aufzunehmen, ohne hierfür eine neue Fassung der EUPL auszuarbeiten, solange diese Lizenzen die in Artikel 2 gewährten Rechte gewährleisten und den erfassten Quellcode vor ausschließlicher Aneignung schützen.
-Alle sonstigen Änderungen oder Ergänzungen dieses Anhangs bedürfen der Ausarbeitung einer neuen Version der EUPL.  
\ No newline at end of file
+Alle sonstigen Änderungen oder Ergänzungen dieses Anhangs bedürfen der Ausarbeitung einer neuen Version der EUPL.  
diff --git a/kop-common-parent/pom.xml b/ozgcloud-common-parent/pom.xml
similarity index 78%
rename from kop-common-parent/pom.xml
rename to ozgcloud-common-parent/pom.xml
index 4a40bbc21fc3f47134ec3b57b3fba9728837ff6d..48953ed82fbbcb1318d4481208ae42b2a3e6db4f 100644
--- a/kop-common-parent/pom.xml
+++ b/ozgcloud-common-parent/pom.xml
@@ -1,6 +1,6 @@
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -31,43 +31,48 @@
 	<parent>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.7.3</version>
+		<version>3.1.8</version>
 		<relativePath />
 	</parent>
 
-	<groupId>de.itvsh.kop.common</groupId>
-	<artifactId>kop-common-parent</artifactId>
+	<groupId>de.ozgcloud.common</groupId>
+	<artifactId>ozgcloud-common-parent</artifactId>
+	<version>3.0.1</version>
+
 	<packaging>pom</packaging>
-	<name>Kop Common - Parent</name>
-	<description>Parent for all KOP spring boot projects</description>
-	<version>1.3.0</version>
+	<name>OzgCloud Common - Parent</name>
+	<description>Parent for all OzgCloud spring boot projects</description>
 
 	<properties>
 		<java.version>17</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-		<kop-common.version>1.3.0</kop-common.version>
-		<kop.license.version>1.3.0</kop.license.version>
+		<ozgcloud-common.version>3.0.1</ozgcloud-common.version>
+		<ozgcloud.license.version>1.6.0</ozgcloud.license.version>
 
-		<!-- TODO update to 1.5.x -->
-		<mapstruct.version>1.4.2.Final</mapstruct.version>
-		<spring-boot.version>2.7.3</spring-boot.version>
+		<mapstruct.version>1.5.5.Final</mapstruct.version>
+		<spring-boot.version>3.1.8</spring-boot.version>
 
 		<!-- plugins -->
-		<maven-surefire-plugin.version>3.0.0-M7</maven-surefire-plugin.version>
-		<maven-failsafe-plugin.version>3.0.0-M7</maven-failsafe-plugin.version>
-		<jacoco.plugin.version>0.8.8</jacoco.plugin.version>
-		
+		<maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>
+		<maven-failsafe-plugin.version>3.2.2</maven-failsafe-plugin.version>
+		<jacoco.plugin.version>0.8.11</jacoco.plugin.version>
+
 		<sonarqube.version>3.9.1.2184</sonarqube.version>
+		<license.plugin.version>4.1</license.plugin.version>
+		<rewrite.plugin.version>4.38.2</rewrite.plugin.version>
+
+		<!--overriden to fix security issue CVE-2022-1471 -->
+		<snakeyaml.version>2.2</snakeyaml.version>
 	</properties>
 
 	<dependencyManagement>
 		<dependencies>
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-dependencies</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-dependencies</artifactId>
+				<version>${ozgcloud-common.version}</version>
 				<type>pom</type>
 				<scope>import</scope>
 			</dependency>
@@ -76,7 +81,7 @@
 			<dependency>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-starter</artifactId>
-				<version>${spring-boot.version}</version>
+				<version>3.0.5</version>
 				<exclusions>
 					<exclusion>
 						<groupId>org.springframework.boot</groupId>
@@ -90,12 +95,12 @@
 	<dependencies>
 		<!-- own project -->
 		<dependency>
-			<groupId>de.itvsh.kop.common</groupId>
-			<artifactId>kop-common-test</artifactId>
+			<groupId>de.ozgcloud.common</groupId>
+			<artifactId>ozgcloud-common-test</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>de.itvsh.kop.common</groupId>
-			<artifactId>kop-common-lib</artifactId>
+			<groupId>de.ozgcloud.common</groupId>
+			<artifactId>ozgcloud-common-lib</artifactId>
 		</dependency>
 
 		<!-- spring -->
@@ -159,6 +164,11 @@
 			<artifactId>micrometer-registry-prometheus</artifactId>
 			<scope>runtime</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<scope>runtime</scope>
+		</dependency>
 	</dependencies>
 
 	<build>
@@ -198,6 +208,16 @@
 				<plugin>
 					<groupId>org.springframework.boot</groupId>
 					<artifactId>spring-boot-maven-plugin</artifactId>
+					<configuration>
+						<image>
+							<!-- cann be removed when using spring-boot 3.2-->
+							<builder>paketobuildpacks/builder-jammy-base</builder>
+							<env>
+								<BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
+								<BPE_APPEND_JAVA_TOOL_OPTIONS>-Dfile.encoding=UTF-8</BPE_APPEND_JAVA_TOOL_OPTIONS>
+							</env>
+						</image>
+					</configuration>
 					<executions>
 						<execution>
 							<id>repackage</id>
@@ -295,7 +315,7 @@
 				<plugin>
 					<groupId>com.mycila</groupId>
 					<artifactId>license-maven-plugin</artifactId>
-					<version>4.1</version>
+					<version>${license.plugin.version}</version>
 					<configuration>
 						<licenseSets>
 							<licenseSet>
@@ -310,14 +330,22 @@
 					</configuration>
 					<dependencies>
 						<dependency>
-							<groupId>de.itvsh.kop.common</groupId>
-							<artifactId>kop-common-license</artifactId>
-							<version>${kop.license.version}</version>
+							<groupId>de.ozgcloud.common</groupId>
+							<artifactId>ozgcloud-common-license</artifactId>
+							<version>${ozgcloud.license.version}</version>
 						</dependency>
 					</dependencies>
 				</plugin>
 			</plugins>
 		</pluginManagement>
+		
+		<plugins>
+			<plugin>
+				<groupId>org.openrewrite.maven</groupId>
+				<artifactId>rewrite-maven-plugin</artifactId>
+				<version>${rewrite.plugin.version}</version>
+		    </plugin>
+		</plugins>
 	</build>
 
 	<distributionManagement>
@@ -345,4 +373,4 @@
 		</snapshotRepository>
 	</distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/kop-common-pdf/pom.xml b/ozgcloud-common-pdf/pom.xml
similarity index 81%
rename from kop-common-pdf/pom.xml
rename to ozgcloud-common-pdf/pom.xml
index f749e59df6c1c7bc8506ade681a86c94ded0ba0d..c8289dfd558f67beab0ecaf2bbdb83c31ac08e5d 100644
--- a/kop-common-pdf/pom.xml
+++ b/ozgcloud-common-pdf/pom.xml
@@ -1,6 +1,6 @@
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -26,15 +26,15 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<groupId>de.itvsh.kop.common</groupId>
-		<artifactId>kop-common</artifactId>
-		<version>1.3.0</version>
+		<groupId>de.ozgcloud.common</groupId>
+		<artifactId>ozgcloud-common</artifactId>
+		<version>3.0.1</version>
 	</parent>
-	<artifactId>kop-common-pdf</artifactId>
-	<name>Kop Common - PDF Export library</name>
+	<artifactId>ozgcloud-common-pdf</artifactId>
+	<name>OzgCloud Common - PDF Export library</name>
 
 	<properties>
-		<!-- TODO move to kop-common-dependencies -->
+		<!-- TODO move to ozgcloud-common-dependencies -->
 		<jakarta.cdi-api.version>4.0.1</jakarta.cdi-api.version>
 		<fop.version>2.7</fop.version>
 	</properties>
@@ -42,9 +42,9 @@
 	<dependencyManagement>
 		<dependencies>
 			<dependency>
-				<groupId>de.itvsh.kop.common</groupId>
-				<artifactId>kop-common-dependencies</artifactId>
-				<version>${kop-common.version}</version>
+				<groupId>de.ozgcloud.common</groupId>
+				<artifactId>ozgcloud-common-dependencies</artifactId>
+				<version>${ozgcloud-common.version}</version>
 				<type>pom</type>
 				<scope>import</scope>
 			</dependency>
@@ -53,8 +53,8 @@
 
 	<dependencies>
 		<dependency>
-			<groupId>de.itvsh.kop.common</groupId>
-			<artifactId>kop-common-lib</artifactId>
+			<groupId>de.ozgcloud.common</groupId>
+			<artifactId>ozgcloud-common-lib</artifactId>
 		</dependency>
 
 		<!-- For Injection-Annotations -->
@@ -110,8 +110,9 @@
 			<artifactId>assertj-core</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>de.itvsh.kop.common</groupId>
-			<artifactId>kop-common-test</artifactId>
+			<groupId>de.ozgcloud.common</groupId>
+			<artifactId>ozgcloud-common-test</artifactId>
 		</dependency>
 	</dependencies>
+	
 </project>
\ No newline at end of file
diff --git a/kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/PdfService.java b/ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/PdfService.java
similarity index 91%
rename from kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/PdfService.java
rename to ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/PdfService.java
index 1e94a70502dd0066b05fe59a2fd5bfed2d0fc51c..d8fcd90581dcf3801e5a8c1e4c2d97d974095a0b 100644
--- a/kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/PdfService.java
+++ b/ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/PdfService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.pdf;
+package de.ozgcloud.common.pdf;
 
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -29,7 +29,7 @@ import java.io.OutputStream;
 import org.springframework.lang.NonNull;
 import org.springframework.stereotype.Service;
 
-import de.itvsh.kop.common.pdf.fop.FopPdfService;
+import de.ozgcloud.common.pdf.fop.FopPdfService;
 import jakarta.enterprise.context.ApplicationScoped;
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
diff --git a/kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/fop/FopPdfService.java b/ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/fop/FopPdfService.java
similarity index 95%
rename from kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/fop/FopPdfService.java
rename to ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/fop/FopPdfService.java
index 1b79ea291cc38000c80914609ff906966fc21d2c..373fee28e3bfd0a10cc00520ed01a1a840ae5b76 100644
--- a/kop-common-pdf/src/main/java/de/itvsh/kop/common/pdf/fop/FopPdfService.java
+++ b/ozgcloud-common-pdf/src/main/java/de/ozgcloud/common/pdf/fop/FopPdfService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.pdf.fop;
+package de.ozgcloud.common.pdf.fop;
 
 import java.io.BufferedOutputStream;
 import java.io.IOException;
@@ -32,9 +32,9 @@ import java.net.URISyntaxException;
 import java.util.Objects;
 
 import javax.xml.XMLConstants;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.util.JAXBSource;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.JAXBException;
+import jakarta.xml.bind.util.JAXBSource;
 import javax.xml.transform.Result;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
@@ -58,7 +58,8 @@ import org.apache.xmlgraphics.util.MimeConstants;
 import org.springframework.lang.NonNull;
 import org.springframework.stereotype.Service;
 
-import de.itvsh.kop.common.errorhandling.TechnicalException;
+import de.ozgcloud.common.errorhandling.TechnicalException;
+
 import jakarta.enterprise.context.ApplicationScoped;
 import lombok.extern.log4j.Log4j2;
 
diff --git a/kop-common-pdf/src/main/resources/fop/fop_conf.xml b/ozgcloud-common-pdf/src/main/resources/fop/fop_conf.xml
similarity index 100%
rename from kop-common-pdf/src/main/resources/fop/fop_conf.xml
rename to ozgcloud-common-pdf/src/main/resources/fop/fop_conf.xml
diff --git a/kop-common-pdf/src/main/resources/fop/master-template.xsl b/ozgcloud-common-pdf/src/main/resources/fop/master-template.xsl
similarity index 100%
rename from kop-common-pdf/src/main/resources/fop/master-template.xsl
rename to ozgcloud-common-pdf/src/main/resources/fop/master-template.xsl
diff --git a/kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/PdfServiceTest.java b/ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/PdfServiceTest.java
similarity index 92%
rename from kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/PdfServiceTest.java
rename to ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/PdfServiceTest.java
index add1b57cb3be566926056a2bf0629e3ea6761d97..aed318d0244cfde86b947d99ca3eeb2e6c3a4be3 100644
--- a/kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/PdfServiceTest.java
+++ b/ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/PdfServiceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.pdf;
+package de.ozgcloud.common.pdf;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 
-import de.itvsh.kop.common.pdf.fop.FopPdfService;
+import de.ozgcloud.common.pdf.fop.FopPdfService;
 
 class PdfServiceTest {
 
diff --git a/kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/fop/FopPdfServiceTest.java b/ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/fop/FopPdfServiceTest.java
similarity index 92%
rename from kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/fop/FopPdfServiceTest.java
rename to ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/fop/FopPdfServiceTest.java
index 08963db05510c9c90e494fbbfa3414b1b5a5e0a7..cf6ea051fb685dd546d4ea61a0b805b5f2f19dfe 100644
--- a/kop-common-pdf/src/test/java/de/itvsh/kop/common/pdf/fop/FopPdfServiceTest.java
+++ b/ozgcloud-common-pdf/src/test/java/de/ozgcloud/common/pdf/fop/FopPdfServiceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.pdf.fop;
+package de.ozgcloud.common.pdf.fop;
 
 import static org.assertj.core.api.Assertions.*;
 
@@ -32,8 +32,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.StringWriter;
 
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
@@ -42,10 +40,13 @@ import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.stream.StreamResult;
 
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlRootElement;
+
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 
-import de.itvsh.kop.common.test.TestUtils;
+import de.ozgcloud.common.test.TestUtils;
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -97,7 +98,7 @@ class FopPdfServiceTest {
 	@Test
 	@SneakyThrows
 	void shouldRenderToFile() {
-		var tempFile = File.createTempFile("kop_", ".pdf");
+		var tempFile = File.createTempFile("ozgcloud_", ".pdf");
 		tempFile.deleteOnExit();
 		OutputStream out = new FileOutputStream(tempFile);
 
diff --git a/kop-common-pdf/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/ozgcloud-common-pdf/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
similarity index 100%
rename from kop-common-pdf/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
rename to ozgcloud-common-pdf/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
diff --git a/kop-common-pdf/src/test/resources/junit-platform.properties b/ozgcloud-common-pdf/src/test/resources/junit-platform.properties
similarity index 100%
rename from kop-common-pdf/src/test/resources/junit-platform.properties
rename to ozgcloud-common-pdf/src/test/resources/junit-platform.properties
diff --git a/kop-common-pdf/src/test/resources/log4j2.xml b/ozgcloud-common-pdf/src/test/resources/log4j2.xml
similarity index 100%
rename from kop-common-pdf/src/test/resources/log4j2.xml
rename to ozgcloud-common-pdf/src/test/resources/log4j2.xml
diff --git a/kop-common-pdf/src/test/resources/test-template.xsl b/ozgcloud-common-pdf/src/test/resources/test-template.xsl
similarity index 100%
rename from kop-common-pdf/src/test/resources/test-template.xsl
rename to ozgcloud-common-pdf/src/test/resources/test-template.xsl
diff --git a/kop-common-test/pom.xml b/ozgcloud-common-test/pom.xml
similarity index 78%
rename from kop-common-test/pom.xml
rename to ozgcloud-common-test/pom.xml
index bb89e951ebed00531f6c57b71417b097c7c3fd06..3547a6f8178ef469581b87151f8e892544c196c1 100644
--- a/kop-common-test/pom.xml
+++ b/ozgcloud-common-test/pom.xml
@@ -1,6 +1,6 @@
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -28,24 +28,19 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<groupId>de.itvsh.kop.common</groupId>
-		<artifactId>kop-common-dependencies</artifactId>
-		<version>1.3.0</version>
-		<relativePath>../kop-common-dependencies</relativePath>
+		<groupId>de.ozgcloud.common</groupId>
+		<artifactId>ozgcloud-common-dependencies</artifactId>
+		<version>3.0.1</version>
+		<relativePath>../ozgcloud-common-dependencies</relativePath>
 	</parent>
 
-	<artifactId>kop-common-test</artifactId>
-	<name>Kop Common - Test Lib</name>
+	<artifactId>ozgcloud-common-test</artifactId>
+	<name>OzgCloud Common - Test Lib</name>
 	
-	<properties>
-		<testcontainers-mongodb.version>1.16.2</testcontainers-mongodb.version>
-	</properties>
-
 	<dependencies>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
-			<version>${spring-boot.version}</version>
 			<scope>compile</scope>
 			<exclusions>
 				<exclusion>
@@ -57,7 +52,11 @@
 		<dependency>
 			<groupId>org.testcontainers</groupId>
 			<artifactId>mongodb</artifactId>
-			<version>${testcontainers-mongodb.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<scope>runtime</scope>
 		</dependency>
 		
 		<dependency>
diff --git a/kop-common-test/src/main/java/de/itvsh/kop/common/test/DataITCase.java b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DataITCase.java
similarity index 93%
rename from kop-common-test/src/main/java/de/itvsh/kop/common/test/DataITCase.java
rename to ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DataITCase.java
index a965877f31c04242a0f45fd1c40a46adaf10eeff..f61ea2e62722a770edc5ce85186ebed4536b8530 100644
--- a/kop-common-test/src/main/java/de/itvsh/kop/common/test/DataITCase.java
+++ b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DataITCase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.test;
+package de.ozgcloud.common.test;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
diff --git a/kop-common-test/src/main/java/de/itvsh/kop/common/test/DbInitializer.java b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DbInitializer.java
similarity index 95%
rename from kop-common-test/src/main/java/de/itvsh/kop/common/test/DbInitializer.java
rename to ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DbInitializer.java
index 43f3a653c4cad719290789ab70c0dc16f6c74073..2f1b24a44b43a0cb07fef41ed3b84f8a2e49c6c5 100644
--- a/kop-common-test/src/main/java/de/itvsh/kop/common/test/DbInitializer.java
+++ b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/DbInitializer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.test;
+package de.ozgcloud.common.test;
 
 import org.springframework.boot.test.util.TestPropertyValues;
 import org.springframework.context.ApplicationContextInitializer;
diff --git a/kop-common-test/src/main/java/de/itvsh/kop/common/test/ITCase.java b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/ITCase.java
similarity index 93%
rename from kop-common-test/src/main/java/de/itvsh/kop/common/test/ITCase.java
rename to ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/ITCase.java
index f66964629c96909d3cda33359d82758a3752e74b..1190ccb27a953df435ffcdb38500c43e476e4d79 100644
--- a/kop-common-test/src/main/java/de/itvsh/kop/common/test/ITCase.java
+++ b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/ITCase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,7 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.test;
+package de.ozgcloud.common.test;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
diff --git a/kop-common-test/src/main/java/de/itvsh/kop/common/test/TestUtils.java b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/TestUtils.java
similarity index 81%
rename from kop-common-test/src/main/java/de/itvsh/kop/common/test/TestUtils.java
rename to ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/TestUtils.java
index 7b98fbf738c15cac5e26b55880873073832700bb..4951161c4169c0c71b5058466b3cb43bba8b78cb 100644
--- a/kop-common-test/src/main/java/de/itvsh/kop/common/test/TestUtils.java
+++ b/ozgcloud-common-test/src/main/java/de/ozgcloud/common/test/TestUtils.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+ * 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
@@ -21,8 +21,9 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-package de.itvsh.kop.common.test;
+package de.ozgcloud.common.test;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
@@ -62,4 +63,15 @@ public class TestUtils {
 	public static String addQuote(String str) {
 		return Objects.isNull(str) ? "null" : String.format("\"%s\"", str);
 	}
+
+	public static byte[] contentStreamToByteArray(InputStream contentStream) {
+		var outputStream = new ByteArrayOutputStream();
+		try {
+			IOUtils.copy(contentStream, outputStream);
+		} catch (IOException e) {
+			throw new RuntimeException("Error on reading stream", e);
+		}
+
+		return outputStream.toByteArray();
+	}
 }
diff --git a/pom.xml b/pom.xml
index ba720ce76349a442dffe79c38bab6b5dd48414d7..792ba86bdee50a60f6ac1330872c1dbf4fc915a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+    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
@@ -27,29 +27,31 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
-	<groupId>de.itvsh.kop.common</groupId>
-	<artifactId>kop-common</artifactId>
-	<version>1.3.0</version>
+	<groupId>de.ozgcloud.common</groupId>
+	<artifactId>ozgcloud-common</artifactId>
+	<version>3.0.1</version>
 	<packaging>pom</packaging>
 
-	<name>Kop Common</name>
+	<name>OzgCloud Common</name>
 
 	<modules>
-		<module>kop-common-dependencies</module>
-		<module>kop-common-parent</module>
-		<module>kop-common-lib</module>
-		<module>kop-common-test</module>
-		<module>kop-common-pdf</module>
-		<module>kop-common-license</module>
+		<module>ozgcloud-common-dependencies</module>
+		<module>ozgcloud-common-parent</module>
+		<module>ozgcloud-common-lib</module>
+		<module>ozgcloud-common-pdf</module>
+		<module>ozgcloud-common-license</module>
+		<module>ozgcloud-common-test</module>
 	</modules>
 
 	<properties>
-		<kop-common.version>1.3.0</kop-common.version>
-		<kop.license.version>1.3.0</kop.license.version>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+		<ozgcloud-common.version>3.0.1</ozgcloud-common.version>
+		<ozgcloud.license.version>1.6.0</ozgcloud.license.version>
 
 		<java.version>17</java.version>
-		<maven.compiler.target>${java.version}</maven.compiler.target>
-		<maven.compiler.source>${java.version}</maven.compiler.source>
+		<maven.compiler.target>17</maven.compiler.target>
+		<maven.compiler.source>17</maven.compiler.source>
 	</properties>
 
 	<distributionManagement>
@@ -64,15 +66,26 @@
 			<url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
 		</snapshotRepository>
 	</distributionManagement>
-	
+	<dependencies>
+		<dependency>
+			<groupId>org.glassfish.jaxb</groupId>
+			<artifactId>jaxb-runtime</artifactId>
+			<version>3.0.2</version>
+			<scope>runtime</scope>
+		</dependency>
+	</dependencies>
+
 	<build>
 		<pluginManagement>
-		    <plugins>
+			<plugins>
 				<plugin>
 					<groupId>com.mycila</groupId>
 					<artifactId>license-maven-plugin</artifactId>
 					<version>4.1</version>
 					<configuration>
+						<mapping>
+							<config>SCRIPT_STYLE</config>
+						</mapping>
 						<licenseSets>
 							<licenseSet>
 								<header>license/eupl_v1_2_de/header.txt</header>
@@ -86,13 +99,33 @@
 					</configuration>
 					<dependencies>
 						<dependency>
-							<groupId>de.itvsh.kop.common</groupId>
-							<artifactId>kop-common-license</artifactId>
-							<version>${kop.license.version}</version>
+							<groupId>de.ozgcloud.common</groupId>
+							<artifactId>ozgcloud-common-license</artifactId>
+							<version>${ozgcloud.license.version}</version>
 						</dependency>
 					</dependencies>
 				</plugin>
-			</plugins>
+				
+				<plugin>
+				<groupId>org.openrewrite.maven</groupId>
+				<artifactId>rewrite-maven-plugin</artifactId>
+				<version>4.38.2</version>
+				<configuration>
+					<activeRecipes>
+						<recipe>org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_0</recipe>
+					</activeRecipes>
+				</configuration>
+				<dependencies>
+					<dependency>
+						<groupId>org.openrewrite.recipe</groupId>
+						<artifactId>rewrite-spring</artifactId>
+						<version>4.31.0</version>
+					</dependency>
+				</dependencies>
+			</plugin>
+		</plugins>
 		</pluginManagement>
+		
+		
 	</build>
-</project>
\ No newline at end of file
+</project>
diff --git a/release-erstellen.sh b/release-erstellen.sh
new file mode 100755
index 0000000000000000000000000000000000000000..20ce45d990067df122a1a79c095c7b614ea7284d
--- /dev/null
+++ b/release-erstellen.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# 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 [ "$#" -ne 1 ]; then
+    echo "Aufruf: release-erstellen.sh JA"
+    echo "Als Parameter bitte 'JA' eintragen zur Sicherheit"
+    exit 1
+fi
+
+
+## alle -SNAPSHOT in pom.xmls entfernen
+find . -name pom.xml -exec sed -i '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)
+
+echo
+echo "NEXT STEPS:"
+echo "***********"
+echo "Änderungen prüfen"
+echo "git commit -a -m 'release version "$NEWVERSION"'"
+echo "git push"
+echo "git tag "$NEWVERSION
+echo "git push --tags"