diff --git a/Makefile b/Makefile
index 7ec54ad9a2fc2e94ae7a95fdd5aab982335d4a28..bd25de9c3fe44401f48d192e2327abc2cc4cc66b 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ TRIVY_VERSION ?= v0.41.0
 
 all:
 
-build-backend: build-metadata-db build-database-service build-query-service build-table-service build-identifier-service build-container-service build-discovery-service build-gateway-service build-metadata-service build-analyse-service build-user-service
+build-backend: build-metadata-db build-database-service build-query-service build-table-service build-identifier-service build-container-service build-metadata-service build-analyse-service build-user-service
 
 build-metadata-db:
 	mvn -f ./dbrepo-metadata-db/pom.xml clean install
@@ -22,12 +22,6 @@ build-container-service: build-metadata-db
 build-database-service: build-metadata-db
 	mvn -f ./dbrepo-database-service/pom.xml clean package -DskipTests
 
-build-discovery-service: build-metadata-db
-	mvn -f ./dbrepo-discovery-service/pom.xml clean package -DskipTests
-
-build-gateway-service: build-metadata-db
-	mvn -f ./dbrepo-gateway-service/pom.xml clean package -DskipTests
-
 build-query-service: build-metadata-db
 	mvn -f ./dbrepo-query-service/pom.xml clean package -DskipTests
 
diff --git a/dbrepo-container-service/Dockerfile b/dbrepo-container-service/Dockerfile
index de2b0a1463246614a3f0fce1022afc80f9d94323..bfef8f03d27c88de7b2400223dc4fda0121749e9 100644
--- a/dbrepo-container-service/Dockerfile
+++ b/dbrepo-container-service/Dockerfile
@@ -23,6 +23,8 @@ RUN mvn -q clean package -DskipTests
 FROM openjdk:17-alpine as runtime
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
+RUN apk --no-cache add bash
+
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
 ENV METADATA_PASSWORD=dbrepo
diff --git a/dbrepo-container-service/pom.xml b/dbrepo-container-service/pom.xml
index df49de3c81535e0011fc094ddd1119b54c8d4809..286be07560852c79f76480948c12b3e0bd97b218 100644
--- a/dbrepo-container-service/pom.xml
+++ b/dbrepo-container-service/pom.xml
@@ -32,10 +32,6 @@
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-container-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-database-service/Dockerfile b/dbrepo-database-service/Dockerfile
index b676839354a6fb0f90bf83ed560bc9f80ed130d9..052654fbb83f5439c1125231354a1eb00ea5b91a 100644
--- a/dbrepo-database-service/Dockerfile
+++ b/dbrepo-database-service/Dockerfile
@@ -23,6 +23,8 @@ RUN mvn -q clean package -DskipTests
 FROM openjdk:17-alpine as runtime
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
+RUN apk --no-cache add bash
+
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
 ENV METADATA_PASSWORD=dbrepo
diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml
index 5ab357dea19a5ad969d78db8e5f86f84ac515ce4..414a7afe17da563adbfdd88d3808a216cd6b9451 100644
--- a/dbrepo-database-service/pom.xml
+++ b/dbrepo-database-service/pom.xml
@@ -29,14 +29,11 @@
         <swagger.version>2.2.9</swagger.version>
         <jacoco.version>0.8.10</jacoco.version>
         <jwt.version>4.3.0</jwt.version>
-        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
+        <c3p0.version>0.9.5.5</c3p0.version>
+        <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -93,6 +90,16 @@
             <version>${spring-cloud.version}</version>
         </dependency>
         <!-- Data Source -->
+        <dependency>
+            <groupId>com.mchange</groupId>
+            <artifactId>c3p0</artifactId>
+            <version>${c3p0.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-c3p0</artifactId>
+            <version>${c3p0-hibernate.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
@@ -121,11 +128,6 @@
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-c3p0</artifactId>
-            <version>${hibernate-c3po.version}</version>
-        </dependency>
         <!-- Testing -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
index cf0c63513c1083a29b63862d8a6c218e137d3859..58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
@@ -22,10 +22,10 @@ public class ElasticsearchConfig {
     @Value("${spring.elasticsearch.uris}")
     private String elasticEndpoint;
 
-    @Value("${fda.elastic.username}")
+    @Value("${spring.elasticsearch.username}")
     private String elasticUsername;
 
-    @Value("${fda.elastic.password}")
+    @Value("${spring.elasticsearch.password}")
     private String elasticPassword;
 
     @Bean
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-identifier-service/Dockerfile b/dbrepo-identifier-service/Dockerfile
index 007db79cf5730574b5eca4c83b255d64fbb10b66..9269801f90d788072c5f4e4942c77d799c7dd029 100644
--- a/dbrepo-identifier-service/Dockerfile
+++ b/dbrepo-identifier-service/Dockerfile
@@ -3,7 +3,8 @@ FROM dbrepo-metadata-db:latest as dependency
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 ###### SECOND STAGE ######
-FROM maven:slim as build
+FROM maven:3-openjdk-17 as build
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./pom.xml ./
 
@@ -20,7 +21,10 @@ COPY ./report ./report
 RUN mvn -q clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM openjdk:11-jre-slim as runtime
+FROM openjdk:17-alpine as runtime
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
+
+RUN apk --no-cache add bash
 
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
diff --git a/dbrepo-identifier-service/pom.xml b/dbrepo-identifier-service/pom.xml
index 2e3749b2b744bc4ffeda3b8e95607828bfe911a3..cbd895ea27da773ebe3dcf156491da76350d38d1 100644
--- a/dbrepo-identifier-service/pom.xml
+++ b/dbrepo-identifier-service/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.10.RELEASE</version>
+        <version>3.0.6</version>
     </parent>
 
     <groupId>at.tuwien</groupId>
@@ -23,24 +23,21 @@
     </modules>
 
     <properties>
-        <java.version>11</java.version>
-        <spring-cloud.version>3.0.1</spring-cloud.version>
-        <mapstruct.version>1.4.2.Final</mapstruct.version>
-        <swagger.version>2.1.7</swagger.version>
-        <springfox.version>3.0.0</springfox.version>
-        <jacoco.version>0.8.7</jacoco.version>
-        <javax-ws-rs.version>2.1.1</javax-ws-rs.version>
-        <maven-site.version>3.10.0</maven-site.version>
-        <docker.version>3.2.7</docker.version>
-        <commons-io.version>2.11.0</commons-io.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>4.0.2</spring-cloud.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
+        <docker.version>3.3.0</docker.version>
+        <swagger.version>2.2.9</swagger.version>
+        <jacoco.version>0.8.10</jacoco.version>
         <jwt.version>4.3.0</jwt.version>
+        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
+        <commons-io.version>2.11.0</commons-io.version>
+        <opencsv.version>5.7.1</opencsv.version>
+        <super-csv.version>2.4.0</super-csv.version>
+        <jsql.version>4.6</jsql.version>
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -110,12 +107,6 @@
             <artifactId>docker-java</artifactId>
             <version>${docker.version}</version>
             <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.ws.rs</groupId>
-                    <artifactId>jsr311-api</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.github.docker-java</groupId>
@@ -124,11 +115,6 @@
             <scope>test</scope>
         </dependency>
         <!-- Testing -->
-        <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
-            <version>${javax-ws-rs.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
diff --git a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
index 43cc6674b9d106548b72b73c8b4aaccd815cdadb..fffddcf42347b7a4d9025bfcdebcf58a947287df 100644
--- a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
+++ b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
@@ -4,7 +4,6 @@ import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.api.identifier.IdentifierCreateDto;
 import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.api.identifier.IdentifierTypeDto;
-import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
@@ -27,8 +26,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.LinkedList;
 import java.util.List;
diff --git a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/PersistenceEndpoint.java b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/PersistenceEndpoint.java
index 6f30f79be88c9ece0f87d7c9ff1378ba7b0dd311..b72eb5b31408f059619e76a797c37e3565125a5f 100644
--- a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/PersistenceEndpoint.java
+++ b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/endpoints/PersistenceEndpoint.java
@@ -29,8 +29,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
index 6a21740ccf4d90ed19048574eb9174a3ae9e1538..c6d40af941be217271fe176ae846b235782208c7 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
@@ -27,6 +27,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  elasticsearch:
+    password: elastic
+    username: elastic
+    uris: http://localhost:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9096
@@ -45,8 +49,4 @@ fda:
   client_secret: client-secret
   client_id: dbrepo-client
   gateway.endpoint: https://localhost
-  website: https://localhost
-  elastic:
-    endpoint: localhost:9200
-    username: elastic
-    password: elastic
\ No newline at end of file
+  website: https://localhost
\ No newline at end of file
diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
index b39c1ae7af543f788b410d1ea2b2b6804ab50ece..1782b03e657c9b7d9163791896718f03488b478a 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
@@ -27,6 +27,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  elasticsearch:
+    password: "${ELASTIC_PASSWORD}"
+    username: elastic
+    uris: http://search-service:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9096
@@ -45,8 +49,4 @@ fda:
   client_secret: "${DBREPO_CLIENT_SECRET}"
   client_id: "${CLIENT_ID}"
   gateway.endpoint: "${GATEWAY_ENDPOINT}"
-  website: "${WEBSITE}"
-  elastic:
-    endpoint: search-service:9200
-    username: elastic
-    password: "${ELASTIC_PASSWORD}"
\ No newline at end of file
+  website: "${WEBSITE}"
\ No newline at end of file
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java
index 1789fe663688f33125a39a08750551a9dcd08825..d3c64bd929d72368c2917ed25f952fce282391b7 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/PersistenceEndpointUnitTest.java
@@ -75,7 +75,6 @@ public class PersistenceEndpointUnitTest extends BaseUnitTest {
     @Primary
     public ObjectMapper objectMapper() {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
index b2b01c42ee9868215962426b18b3a70450bff7ac..92b60f4f8a5ed8a566e2504d71b63478b1593f68 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
@@ -6,6 +6,10 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -16,10 +20,6 @@ import org.springframework.security.web.authentication.WebAuthenticationDetailsS
 import org.springframework.util.StringUtils;
 import org.springframework.web.filter.OncePerRequestFilter;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
index b8de474aed6d651c497abe044fbd3368e9efbf83..58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
@@ -1,38 +1,45 @@
 package at.tuwien.config;
 
-import org.elasticsearch.client.RestHighLevelClient;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+import lombok.extern.log4j.Log4j2;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.elasticsearch.client.RestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.data.elasticsearch.client.ClientConfiguration;
-import org.springframework.data.elasticsearch.client.RestClients;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 
+@Log4j2
 @Configuration
 public class ElasticsearchConfig {
 
-    @Value("${fda.elastic.endpoint}")
+    @Value("${spring.elasticsearch.uris}")
     private String elasticEndpoint;
 
-    @Value("${fda.elastic.username}")
+    @Value("${spring.elasticsearch.username}")
     private String elasticUsername;
 
-    @Value("${fda.elastic.password}")
+    @Value("${spring.elasticsearch.password}")
     private String elasticPassword;
 
     @Bean
-    public RestHighLevelClient client() {
-        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
-                .connectedTo(elasticEndpoint)
-                .withBasicAuth(elasticUsername, elasticPassword)
+    public ElasticsearchClient elasticsearchClient() {
+        log.debug("elastic endpoint={}", elasticEndpoint);
+        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword));
+        final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint))
+                .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+                        .setDefaultCredentialsProvider(credentialsProvider))
                 .build();
-
-        return RestClients.create(clientConfiguration).rest();
+        ElasticsearchTransport transport = new RestClientTransport(
+                restClient, new JacksonJsonpMapper());
+        return new ElasticsearchClient(transport);
     }
 
-    @Bean
-    public ElasticsearchOperations elasticsearchTemplate() {
-        return new ElasticsearchRestTemplate(client());
-    }
 }
\ No newline at end of file
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index 2aee74382ef95efab6aba1f09a9ad2aa86b4506e..a5c64eaa04daa81a13bbc0b0eac75cdaa70aaff9 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -21,7 +21,6 @@ public class JacksonConfig {
     @Primary
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ReadyConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ReadyConfig.java
index 2c3a5d433c29af1f0f18c77ee92516e4ebe40d13..0bee3b961edd4ca456f0243c8eede630a4a54716 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ReadyConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/ReadyConfig.java
@@ -6,14 +6,12 @@ import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.event.EventListener;
 
-import javax.validation.constraints.NotNull;
 import java.io.File;
 import java.io.IOException;
 
 @Configuration
 public class ReadyConfig {
 
-    @NotNull
     @Value("${fda.ready.path}")
     private String readyPath;
 
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/TemplateConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
index c2d1721c0ceaadb4c2f211deb9805b16b5b71c70..d38f17c6cb936e354b6b7362ccf8808476e24b47 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
@@ -2,7 +2,7 @@ package at.tuwien.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.thymeleaf.spring5.SpringTemplateEngine;
+import org.thymeleaf.spring6.SpringTemplateEngine;
 import org.thymeleaf.templatemode.TemplateMode;
 import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
 
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
index 04f19f375bfa824b9efcea483ba2de7b0559fc75..eb4f2522a67dd834648c9fbc35a257dcf08fddc1 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
@@ -9,14 +9,14 @@ import org.springframework.http.HttpMethod;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @Configuration
 @EnableWebSecurity
@@ -27,15 +27,15 @@ import javax.servlet.http.HttpServletResponse;
         bearerFormat = "JWT",
         scheme = "bearer"
 )
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
 
     @Bean
     public AuthTokenFilter authTokenFilter() {
         return new AuthTokenFilter();
     }
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
         /* enable CORS and disable CSRF */
         http = http.cors().and().csrf().disable();
         /* set session management to stateless */
@@ -56,11 +56,11 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         /* set permissions on endpoints */
         http.authorizeRequests()
                 /* our internal endpoints */
-                .antMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
                 /* our public endpoints */
-                .antMatchers(HttpMethod.GET, "/api/identifier/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/pid/**").permitAll()
-                .antMatchers("/v3/api-docs.yaml",
+                .requestMatchers(HttpMethod.GET, "/api/identifier/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/pid/**").permitAll()
+                .requestMatchers("/v3/api-docs.yaml",
                         "/v3/api-docs/**",
                         "/swagger-ui/**",
                         "/swagger-ui.html").permitAll()
@@ -70,6 +70,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         http.addFilterBefore(authTokenFilter(),
                 UsernamePasswordAuthenticationFilter.class
         );
+        return http.build();
     }
 
     @Bean
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ChannelDetailsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ChannelDetailsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java
similarity index 94%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java
index e604a70c4ec4a0302790e986f15df8056db21583..815857a75e143dce0039ee378335e9ad635fde46 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ConsumerDto.java
@@ -1,7 +1,6 @@
 package at.tuwien.api.amqp;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import jakarta.validation.constraints.NotNull;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateExchangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateExchangeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateExchangeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateExchangeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateUserDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateUserDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateVirtualHostDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/CreateVirtualHostDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ExchangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ExchangeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/ExchangeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/ExchangeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/GrantVirtualHostPermissionsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/GrantVirtualHostPermissionsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/QueueDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/TupleDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/TupleDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/UserDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/UserDetailsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/amqp/UserDetailsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/amqp/UserDetailsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CreateUserDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CreateUserDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CredentialDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CredentialDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/CredentialDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/CredentialDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/JwtResponseDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/JwtResponseDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/LoginRequestDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/LoginRequestDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/RealmAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/RealmAccessDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/RealmAccessDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/RealmAccessDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/SignupRequestDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/SignupRequestDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/TokenIntrospectDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/auth/TokenIntrospectDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerActionTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerActionTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerChangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerChangeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerChangeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerChangeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerCreateRequestDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerCreateRequestDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerStateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/ContainerStateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageChangeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageChangeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/container/image/ImageEnvItemTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/AccessTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/AccessTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/AccessTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseAccessDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseAccessDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java
similarity index 96%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java
index 4a582e118848a3919277b43f4bf7fcd67a1dcae6..be536d413ac31d28ccb8135b300cb3fd2e6d0431 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseBriefDto.java
@@ -2,7 +2,6 @@ package at.tuwien.api.database;
 
 import at.tuwien.api.container.ContainerBriefDto;
 import at.tuwien.api.identifier.IdentifierBriefDto;
-import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.api.user.UserBriefDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java
similarity index 92%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java
index 6554f69071c25ef597eef4175a494aed40b33b77..7dd826478bf54cdef583f20588a9045adf3621ac 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseDto.java
@@ -5,14 +5,11 @@ import at.tuwien.api.container.image.ImageDto;
 import at.tuwien.api.database.table.TableBriefDto;
 import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.api.user.UserBriefDto;
-import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import org.springframework.data.elasticsearch.annotations.DateFormat;
 import org.springframework.data.elasticsearch.annotations.Document;
-import org.springframework.data.elasticsearch.annotations.Field;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseGiveAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseGiveAccessDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseGiveAccessDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseGiveAccessDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyAccessDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyAccessDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyAccessDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyVisibilityDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseModifyVisibilityDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseTransferDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/DatabaseTransferDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LanguageTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LanguageTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LanguageTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LanguageTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LicenseDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/LicenseDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/SubjectModifyDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/SubjectModifyDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/ViewDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteInternalQueryDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteInternalQueryDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteStatementDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExecuteStatementDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExportDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExportDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExportDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ExportDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ImportDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/ImportDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java
similarity index 96%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java
index e3acd7c51531b547709f9417234ed8b4d9c4b0de..40237b89616e4736876dc234c71e15e8d02c3f69 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryBriefDto.java
@@ -1,12 +1,10 @@
 package at.tuwien.api.database.query;
 
 import at.tuwien.api.identifier.IdentifierBriefDto;
-import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryResultDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryResultDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/QueryTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/SaveStatementDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/query/SaveStatementDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java
similarity index 95%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java
index d1d3ca5c606096a4311ae2074e3a24ff3751ed85..bba2d9bcd63ee5c25c9e70d47c2bca0d56e1309a 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableBriefDto.java
@@ -1,7 +1,6 @@
 package at.tuwien.api.database.table;
 
 import at.tuwien.api.database.table.columns.ColumnBriefDto;
-import at.tuwien.api.database.table.columns.ColumnDto;
 import at.tuwien.api.user.UserBriefDto;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateRawQuery.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateRawQuery.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateRawQuery.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCreateRawQuery.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDeleteDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDeleteDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvInformationDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvInformationDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvUpdateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableCsvUpdateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableHistoryDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableHistoryDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableInsertRawQuery.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableInsertRawQuery.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableInsertRawQuery.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/TableInsertRawQuery.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/ColumnTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/SiUnitDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/SiUnitDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ColumnSemanticsUpdateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ConceptDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/ConceptDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/UnitDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/columns/concepts/UnitDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/ConstraintsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/ConstraintsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ForeignKeyDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ForeignKeyDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ReferenceTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ReferenceTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/constraints/foreignKey/ReferenceTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/database/table/constraints/foreignKey/ReferenceTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteBody.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteBody.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteBody.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteBody.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteData.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteData.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteData.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteData.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteError.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteError.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/DataCiteError.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/DataCiteError.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteCreateDoi.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteCreateDoi.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteCreateDoi.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteCreateDoi.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoi.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoi.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoi.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoi.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreator.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreator.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreator.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreator.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorAffiliation.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorAffiliation.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorAffiliation.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorAffiliation.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiCreatorNameIdentifier.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiEvent.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiEvent.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiEvent.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiEvent.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRelatedIdentifier.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRelatedIdentifier.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRelatedIdentifier.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRelatedIdentifier.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRights.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRights.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiRights.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiRights.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTitle.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTitle.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTitle.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTitle.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTypes.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTypes.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/datacite/doi/DataCiteDoiTypes.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/datacite/doi/DataCiteDoiTypes.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/error/ApiErrorDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/error/ApiErrorDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/BibliographyTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/BibliographyTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/BibliographyTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/BibliographyTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/CreatorDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierUpdateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierUpdateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/IdentifierUpdateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierCreateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierCreateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java
similarity index 96%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java
index 390ee3e1e885b6b0e43b80c8ca5e6fda062606ac..7c6dc674682f0fbe2d31c9caa30336bf12956584 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedIdentifierDto.java
@@ -4,7 +4,6 @@ import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelatedTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelationTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelationTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelationTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/RelationTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/VisibilityTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/VisibilityTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/VisibilityTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/identifier/VisibilityTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/ExchangeUpdatePermissionsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/ExchangeUpdatePermissionsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/GrantedAuthorityDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/GrantedAuthorityDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/RoleTypeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/RoleTypeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/RoleTypeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/RoleTypeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserAttributeDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserAttributeDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserBriefDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserBriefDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDetailsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDetailsDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserEmailDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserEmailDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserForgotDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserForgotDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserModifyPasswordDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserModifyPasswordDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserPasswordDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserPasswordDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserResetDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserResetDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserRolesDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserRolesDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserThemeSetDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserThemeSetDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdateDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdateDto.java
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdatePermissionsDto.java
similarity index 100%
rename from dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java
rename to dbrepo-metadata-db/api/src/main/java/at/tuwien/oaipmh/api/user/UserUpdatePermissionsDto.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java
similarity index 95%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java
index bcbfa6aff00b77497caf180205c0b960d61fac76..57c6f1c352d1cfc1514926a5840102551d4f3410 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/Container.java
@@ -85,11 +85,11 @@ public class Container {
     private String ipAddress;
 
     @CreatedDate
-    @Column(nullable = false, updatable = false)
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImage.java
similarity index 92%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImage.java
index b359185f8aeeb95c807d8411c4931e8c96574f9f..9f0b8842782ab9b658e4fc253dd5d8e95cc05714 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImage.java
@@ -47,7 +47,7 @@ public class ContainerImage {
     @Column
     private String hash;
 
-    @Column
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant compiled;
 
     @Column
@@ -69,12 +69,12 @@ public class ContainerImage {
     @OneToMany(fetch = FetchType.LAZY, mappedBy = "image")
     private List<Container> containers;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
     @PreRemove
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDate.java
similarity index 97%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDate.java
index b68947339ed2194ad0f04078554d25126192e963..a4e89cb1a74a5024425c701233f4ead68ecde5fa 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDate.java
@@ -50,7 +50,7 @@ public class ContainerImageDate {
 
     @CreatedDate
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
-    @Column(name = "created_at", nullable = false, updatable = false)
+    @Column(name = "created_at", nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant createdAt;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDateKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDateKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDateKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageDateKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItem.java
similarity index 93%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItem.java
index f567bdd190fdf2f9186b223a99ecd687c8ba719d..9b4e64a526c2166cb74ad3c9befa6786962b576f 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItem.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItem.java
@@ -50,12 +50,12 @@ public class ContainerImageEnvironmentItem {
     })
     private ContainerImage image;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemType.java
similarity index 54%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemType.java
index b618cdd2ed2b65652424dd743e5c3f87e1636bef..2136ba805954b1bb65b14f6dc7f6f75595eeb42b 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageEnvironmentItemType.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/container/image/ContainerImageEnvironmentItemType.java
@@ -1,5 +1,8 @@
 package at.tuwien.entities.container.image;
 
 public enum ContainerImageEnvironmentItemType {
-    USERNAME, PASSWORD, PRIVILEGED_USERNAME, PRIVILEGED_PASSWORD;
+    USERNAME,
+    PASSWORD,
+    PRIVILEGED_USERNAME,
+    PRIVILEGED_PASSWORD;
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/AccessType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/AccessType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/AccessType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/AccessType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java
similarity index 96%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java
index 931638022de9cccd924fdee960fe1a81ac82318e..14015d7944689ef9463ed9599bc93e4c60fd164c 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/Database.java
@@ -111,12 +111,12 @@ public class Database implements Serializable {
     @Column(nullable = false)
     private Boolean isPublic;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java
similarity index 93%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java
index b3e2790399839d5b4646222fd2fcb1cbfb5dfbe7..3c27dd1b56ca06b6a8eb70d7d6b2f0d63900a02c 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccess.java
@@ -2,7 +2,6 @@ package at.tuwien.entities.database;
 
 import at.tuwien.entities.user.User;
 import lombok.*;
-import org.hibernate.annotations.Type;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
@@ -42,7 +41,7 @@ public class DatabaseAccess {
     @Enumerated(EnumType.STRING)
     private AccessType type;
 
-    @Column(nullable = false, updatable = false)
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @CreatedDate
     private Instant created;
 
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccessKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/DatabaseAccessKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/LanguageType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/LanguageType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/LanguageType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/LanguageType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/License.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/License.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/License.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/License.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java
similarity index 80%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java
index 552052c5d9fa0091db7bb5068a8a462a211cb772..87cf2b1d7e450f45e42eb3a1cdc45111dc1530be 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/View.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/View.java
@@ -20,9 +20,15 @@ import java.util.UUID;
 @ToString
 @AllArgsConstructor
 @NoArgsConstructor
-@IdClass(ViewKey.class)
+@IdClass(at.tuwien.entities.database.ViewKey.class)
 @EntityListeners(AuditingEntityListener.class)
 @jakarta.persistence.Table(name = "mdb_view")
+@NamedQueries({
+        @NamedQuery(name = "View.findAllPublicByDatabaseId", query = "select v from View v where v.database.id = ?1 and v.isPublic = true"),
+        @NamedQuery(name = "View.findAllPublicOrMineByDatabaseId", query = "select v from View v where v.database.id = ?1 and (v.isPublic = true or v.creator.username = ?2)"),
+        @NamedQuery(name = "View.findPublicByDatabaseIdAndId", query = "select v from View v where v.database.id = ?1 and v.id = ?2 and v.isPublic = true"),
+        @NamedQuery(name = "View.findPublicOrMineByDatabaseIdAndId", query = "select v from View v where v.database.id = ?1 and v.id = ?2 and (v.isPublic = true or v.creator.username = ?3)")
+})
 public class View {
 
     @Id
@@ -53,7 +59,7 @@ public class View {
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumn(name = "vdbid", insertable = false, updatable = false)
-    private Database database;
+    private at.tuwien.entities.database.Database database;
 
     @Column(name = "vname", nullable = false)
     private String name;
@@ -103,12 +109,12 @@ public class View {
     @OrderColumn(name = "position")
     private List<TableColumn> columns;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/ViewKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/ViewKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/ViewKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/ViewKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/Table.java
similarity index 96%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/Table.java
index c6784ed1b5707515826073c47980765aa3089155..a6fe347eabec02abbd4c0516ed16ea7d27b8eca7 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/Table.java
@@ -78,12 +78,12 @@ public class Table {
     @Embedded
     private Constraints constraints;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
     @PreRemove
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/TableKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/TableKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/TableKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/TableKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumn.java
similarity index 97%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumn.java
index e90d48e921e98561b7f72097936fc6251f4e1d34..8e5325a821dee87b4a77061ea1fbe4885fc9276b 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumn.java
@@ -6,7 +6,6 @@ import at.tuwien.entities.user.User;
 import lombok.*;
 import net.sf.jsqlparser.statement.select.SelectItem;
 import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -14,7 +13,6 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 import jakarta.persistence.*;;
 import java.time.Instant;
 import java.util.List;
-import java.util.UUID;
 
 @Data
 @Entity
@@ -102,7 +100,7 @@ public class TableColumn implements Comparable<TableColumn> {
     @Column(nullable = false)
     private Integer ordinalPosition;
 
-    @Column(nullable = false, updatable = false)
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @CreatedDate
     private Instant created;
 
@@ -126,8 +124,8 @@ public class TableColumn implements Comparable<TableColumn> {
             inverseJoinColumns = @JoinColumn(name = "uri", referencedColumnName = "uri"))
     private TableColumnUnit unit;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
     @Override
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java
similarity index 94%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java
index c90c1f9fef81e8ecce1a3a7a04166ee06d6f4373..0bb465af08cc1859f5c7fd78d8bd6c45a6efb170 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnConcept.java
@@ -39,7 +39,7 @@ public class TableColumnConcept {
             })
     private List<TableColumn> columns;
 
-    @Column(nullable = false, updatable = false)
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @CreatedDate
     private Instant created;
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnUnit.java
similarity index 94%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnUnit.java
index 2a64f611b2157f53888a92457a9fa5b19757ed75..455280a5f931e03d05451313e62ffaba04419fb8 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/columns/TableColumnUnit.java
@@ -39,7 +39,7 @@ public class TableColumnUnit {
             })
     private List<TableColumn> columns;
 
-    @Column(nullable = false, updatable = false)
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @CreatedDate
     private Instant created;
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/Constraints.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/Constraints.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/Constraints.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/Constraints.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKey.java
similarity index 92%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKey.java
index af0b10ee74961a3abb61084a94213f3077dc618d..e6daef3333fa626d35fbbe18c41c8a0b1799dc09 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKey.java
@@ -59,9 +59,11 @@ public class ForeignKey {
     @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE, mappedBy = "foreignKey")
     private List<ForeignKeyReference> references = new java.util.ArrayList<>();
 
-    @Column
+    @Column(columnDefinition = "VARCHAR(50)")
+    @Enumerated(EnumType.STRING)
     private ReferenceType onUpdate;
 
-    @Column
+    @Column(columnDefinition = "VARCHAR(50)")
+    @Enumerated(EnumType.STRING)
     private ReferenceType onDelete;
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ReferenceType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ReferenceType.java
similarity index 81%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ReferenceType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ReferenceType.java
index 9afc40853f878faaee98eb5f747a543ae693dc8a..88be5c81aa918ec6c310bb5ed98eaec3842483f6 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ReferenceType.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/foreignKey/ReferenceType.java
@@ -1,6 +1,5 @@
 package at.tuwien.entities.database.table.constraints.foreignKey;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
 import lombok.ToString;
 
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/unique/Unique.java
similarity index 98%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/unique/Unique.java
index 792c57dbaa7593ab3905880dbb58c36e742d7193..0ae83427f4d59022689203ca3a6d8522e7f2d2c3 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/database/table/constraints/unique/Unique.java
@@ -8,7 +8,6 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import jakarta.persistence.*;;
 import java.util.List;
-import java.util.Set;
 
 @Data
 @Entity
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Creator.java
similarity index 93%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Creator.java
index 91a68d69c8ab3ac3f024f47d3179973eb897c9a4..a29ac15d37b4502e083f44af8f054fb4d21584e9 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Creator.java
@@ -3,14 +3,12 @@ package at.tuwien.entities.identifier;
 import at.tuwien.entities.user.User;
 import lombok.*;
 import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import jakarta.persistence.*;;
 import java.time.Instant;
-import java.util.UUID;
 
 @Data
 @Entity
@@ -52,8 +50,8 @@ public class Creator {
     @JoinColumn(name = "pid", referencedColumnName = "id", insertable = false, updatable = false)
     private Identifier identifier;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@@ -62,8 +60,8 @@ public class Creator {
     })
     private User creator;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/CreatorKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/CreatorKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/CreatorKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/CreatorKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Identifier.java
similarity index 95%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Identifier.java
index fd08d841d5ce4a71a22d0e4f543350628692c0f8..852dc067ce15a8a81c85796bbcd6340c45a83470 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/Identifier.java
@@ -86,7 +86,7 @@ public class Identifier implements Serializable {
     @Column
     private String resultHash;
 
-    @Column
+    @Column(updatable = false, columnDefinition = "TIMESTAMP")
     private Instant execution;
 
     @Column
@@ -123,12 +123,12 @@ public class Identifier implements Serializable {
     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "identifier")
     private List<Creator> creators;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
     @PreRemove
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/IdentifierType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/IdentifierType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/IdentifierType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/IdentifierType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifier.java
similarity index 88%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifier.java
index 47716154fef4aa475d6335f2db4677f705630f66..bc658fc46a7af07762f418a2cb1ee5ac2f0fa6fc 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifier.java
@@ -3,16 +3,12 @@ package at.tuwien.entities.identifier;
 import at.tuwien.entities.user.User;
 import lombok.*;
 import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.SQLDelete;
-import org.hibernate.annotations.Type;
-import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import jakarta.persistence.*;;
 import java.time.Instant;
-import java.util.UUID;
 
 @Data
 @Entity
@@ -56,12 +52,12 @@ public class RelatedIdentifier {
     })
     private User creator;
 
-    @Column(nullable = false, updatable = false)
     @CreatedDate
+    @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @Column
     @LastModifiedDate
+    @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifierKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedIdentifierKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelatedType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelationType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelationType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelationType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/RelationType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/VisibilityType.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/VisibilityType.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/VisibilityType.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/identifier/VisibilityType.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java
similarity index 93%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java
index e4080c44cb9bf1af35a882824f3b2dfb9f4499c8..d0f10b62c43b876369a34cb9965ea1265a451b1f 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Credential.java
@@ -1,8 +1,6 @@
 package at.tuwien.entities.user;
 
 import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import jakarta.persistence.*;;
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Realm.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Realm.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Role.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/Role.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMapping.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMapping.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMappingKey.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/RoleMappingKey.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/User.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/User.java
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/UserAttribute.java
similarity index 100%
rename from dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java
rename to dbrepo-metadata-db/entities/src/main/java/at/tuwien/oaipmh/entities/user/UserAttribute.java
diff --git a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiErrorType.java b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiErrorType.java
similarity index 97%
rename from dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiErrorType.java
rename to dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiErrorType.java
index cdad05572a99b7af600fda3779942e9c35c574a5..2fe750a9adaf60b89865d6beed08413205f7e534 100644
--- a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiErrorType.java
+++ b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiErrorType.java
@@ -1,4 +1,4 @@
-package at.tuwien;
+package at.tuwien.oaipmh;
 
 import lombok.Getter;
 
diff --git a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListIdentifiersParameters.java b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListIdentifiersParameters.java
similarity index 98%
rename from dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListIdentifiersParameters.java
rename to dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListIdentifiersParameters.java
index 0bb4b34d3b8a2fd2c31d41fb9daec0e47eef68c7..f08b1f6868e7e8517b55411636648b90ba0eabc7 100644
--- a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListIdentifiersParameters.java
+++ b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListIdentifiersParameters.java
@@ -1,4 +1,4 @@
-package at.tuwien;
+package at.tuwien.oaipmh;
 
 import lombok.*;
 import org.apache.commons.lang3.StringUtils;
diff --git a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListRecordsParameters.java b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListRecordsParameters.java
similarity index 98%
rename from dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListRecordsParameters.java
rename to dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListRecordsParameters.java
index 90df3384c6fe3c6227fc13b44f383be6ef3acf13..0e540d71918ec83ef33321101da33925e0682227 100644
--- a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiListRecordsParameters.java
+++ b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiListRecordsParameters.java
@@ -1,4 +1,4 @@
-package at.tuwien;
+package at.tuwien.oaipmh;
 
 import lombok.*;
 import org.apache.commons.lang3.StringUtils;
diff --git a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiRecordParameters.java b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiRecordParameters.java
similarity index 77%
rename from dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiRecordParameters.java
rename to dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiRecordParameters.java
index 6dcb5ec0d0d706907d049a34d7450551a588a607..834a482885d1cc67c5530b2167142626c180667d 100644
--- a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/OaiRecordParameters.java
+++ b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/OaiRecordParameters.java
@@ -1,11 +1,6 @@
-package at.tuwien;
+package at.tuwien.oaipmh;
 
 import lombok.*;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.time.DateUtils;
-
-import java.text.ParseException;
-import java.util.Date;
 
 @Getter
 @Setter
diff --git a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/RequestParameters.java b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/RequestParameters.java
similarity index 93%
rename from dbrepo-metadata-db/oai/src/main/java/at/tuwien/RequestParameters.java
rename to dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/RequestParameters.java
index 1364e537983399ce2e588cf76fc0068c539a1867..3f3d9f1a0468f006a24a0467c0a11f09671d1035 100644
--- a/dbrepo-metadata-db/oai/src/main/java/at/tuwien/RequestParameters.java
+++ b/dbrepo-metadata-db/oai/src/main/java/at/tuwien/oaipmh/RequestParameters.java
@@ -1,4 +1,4 @@
-package at.tuwien;
+package at.tuwien.oaipmh;
 
 import org.apache.commons.lang3.StringUtils;
 
diff --git a/dbrepo-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java b/dbrepo-metadata-db/querystore/src/main/java/at/tuwien/oaipmh/querystore/Query.java
similarity index 100%
rename from dbrepo-metadata-db/querystore/src/main/java/at/tuwien/querystore/Query.java
rename to dbrepo-metadata-db/querystore/src/main/java/at/tuwien/oaipmh/querystore/Query.java
diff --git a/dbrepo-metadata-db/setup-schema.sql b/dbrepo-metadata-db/setup-schema.sql
index 9529463f2471d5163e4be25ad923caaf56da1ba1..eb7809d1409e253272d63244c3ec444f14220b81 100644
--- a/dbrepo-metadata-db/setup-schema.sql
+++ b/dbrepo-metadata-db/setup-schema.sql
@@ -212,14 +212,14 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_cat`
 
 CREATE TABLE IF NOT EXISTS `fda`.`mdb_constraints_foreign_key`
 (
-    fkid      BIGINT NOT NULL AUTO_INCREMENT,
-    tid       BIGINT NOT NULL,
-    tdbid     BIGINT NOT NULL,
-    rtid      BIGINT NOT NULL,
-    rtdbid    BIGINT NOT NULL,
-    on_update INT    NULL,
-    on_delete INT    NULL,
-    position  INT    NULL,
+    fkid      BIGINT      NOT NULL AUTO_INCREMENT,
+    tid       BIGINT      NOT NULL,
+    tdbid     BIGINT      NOT NULL,
+    rtid      BIGINT      NOT NULL,
+    rtdbid    BIGINT      NOT NULL,
+    on_update VARCHAR(50) NULL,
+    on_delete VARCHAR(50) NULL,
+    position  INT         NULL,
     PRIMARY KEY (fkid),
     FOREIGN KEY (tid, tdbid) REFERENCES mdb_tables (id, tdbid),
     FOREIGN KEY (rtid, rtdbid) REFERENCES mdb_tables (id, tdbid)
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/DockerConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/DockerConfig.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/config/DockerConfig.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/DockerConfig.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/H2Utils.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/H2Utils.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/config/H2Utils.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/H2Utils.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/MariaDbConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/MariaDbConfig.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/config/MariaDbConfig.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/MariaDbConfig.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/config/RabbitMqConfig.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/RabbitMqConfig.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/config/RabbitMqConfig.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/config/RabbitMqConfig.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/test/BaseTest.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/test/BaseTest.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/AmqpUtils.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/AmqpUtils.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/AmqpUtils.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/AmqpUtils.java
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/ArrayUtil.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/ArrayUtil.java
similarity index 100%
rename from dbrepo-metadata-db/test/src/main/java/at/tuwien/utils/ArrayUtil.java
rename to dbrepo-metadata-db/test/src/main/java/at/tuwien/oaipmh/utils/ArrayUtil.java
diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile
index 2b70550e515feb07f66a651a8c7865279dba5bca..350d9af3cfbd0ca44bb5aae7fce5144df060bff6 100644
--- a/dbrepo-metadata-service/Dockerfile
+++ b/dbrepo-metadata-service/Dockerfile
@@ -3,7 +3,8 @@ FROM dbrepo-metadata-db:latest as dependency
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 ###### SECOND STAGE ######
-FROM maven:slim as build
+FROM maven:3-openjdk-17 as build
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./pom.xml ./
 
@@ -19,7 +20,10 @@ COPY ./report ./report
 RUN mvn -q clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM openjdk:11-jre-slim as runtime
+FROM openjdk:17-alpine as runtime
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
+
+RUN apk --no-cache add bash
 
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index bc381a3a53139859ab007eba2c06d65debc8ecb7..6c3514de1ebfeaddd3b01c471881b13f4ff7b32a 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.10.RELEASE</version>
+        <version>3.0.6</version>
     </parent>
 
     <groupId>at.tuwien</groupId>
@@ -36,17 +36,19 @@
     </modules>
 
     <properties>
-        <java.version>11</java.version>
-        <spring-cloud.version>3.0.1</spring-cloud.version>
-        <mapstruct.version>1.4.2.Final</mapstruct.version>
-        <swagger.version>2.1.7</swagger.version>
-        <springfox.version>3.0.0</springfox.version>
-        <jacoco.version>0.8.7</jacoco.version>
-        <javax-ws-rs.version>2.1.1</javax-ws-rs.version>
-        <spring-saml.version>1.0.10.RELEASE</spring-saml.version>
-        <javax-rs.version>2.1.1</javax-rs.version>
-        <javax-mail.version>1.4.7</javax-mail.version>
-        <jwt.version>3.18.3</jwt.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>4.0.2</spring-cloud.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
+        <docker.version>3.3.0</docker.version>
+        <swagger.version>2.2.9</swagger.version>
+        <jacoco.version>0.8.10</jacoco.version>
+        <jwt.version>4.3.0</jwt.version>
+        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
+        <opencsv.version>5.7.1</opencsv.version>
+        <super-csv.version>2.4.0</super-csv.version>
+        <jsql.version>4.6</jsql.version>
+        <keycloak.version>21.0.2</keycloak.version>
+        <hibernate.version>6.2.2.Final</hibernate.version>
     </properties>
 
     <dependencies>
@@ -122,7 +124,7 @@
             <groupId>org.mapstruct</groupId>
             <artifactId>mapstruct-processor</artifactId>
             <version>${mapstruct.version}</version>
-            <optional>true</optional><!-- IntelliJ -->
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.mapstruct</groupId>
@@ -130,11 +132,6 @@
             <version>${mapstruct.version}</version>
         </dependency>
         <!-- Testing -->
-        <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
-            <version>${javax-ws-rs.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MetadataEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MetadataEndpoint.java
index 728920ea268647995113ffcf7a2fd23b99616603..8e226230eea447a367d93057a947b7d8b091a788 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MetadataEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MetadataEndpoint.java
@@ -1,9 +1,9 @@
 package at.tuwien.endpoints;
 
-import at.tuwien.OaiErrorType;
-import at.tuwien.OaiListIdentifiersParameters;
-import at.tuwien.OaiRecordParameters;
 import at.tuwien.exception.IdentifierNotFoundException;
+import at.tuwien.oaipmh.OaiErrorType;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
 import at.tuwien.service.MetadataService;
 import io.micrometer.core.annotation.Timed;
 import io.swagger.v3.oas.annotations.Operation;
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
index 2a6d04fd7edd09f8e53ada15a9a0ebe7265c9460..7a183b90e247bcbd99efeed4c9228a1a7849a16b 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
@@ -1,13 +1,10 @@
 package at.tuwien.endpoints;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.OaiListIdentifiersParameters;
-import at.tuwien.OaiRecordParameters;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
 import at.tuwien.config.H2Utils;
-import at.tuwien.entities.identifier.Identifier;
-import at.tuwien.exception.IdentifierNotFoundException;
 import at.tuwien.repository.jpa.*;
-import at.tuwien.service.IdentifierService;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -18,7 +15,6 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.test.context.support.WithAnonymousUser;
-import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
index 743505dfb6844aa24b63ca6d03f8059ff251fa71..d75d363cdd35b6bba37987a680314a73146bbd58 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
@@ -1,14 +1,13 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.OaiErrorType;
-import at.tuwien.OaiListIdentifiersParameters;
-import at.tuwien.OaiRecordParameters;
+import at.tuwien.oaipmh.OaiErrorType;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
 import at.tuwien.config.H2Utils;
 import at.tuwien.exception.IdentifierNotFoundException;
 import at.tuwien.repository.jpa.*;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -17,10 +16,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
-
 import static org.junit.jupiter.api.Assertions.*;
 
 @Log4j2
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/TemplateConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
index c2d1721c0ceaadb4c2f211deb9805b16b5b71c70..d38f17c6cb936e354b6b7362ccf8808476e24b47 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/TemplateConfig.java
@@ -2,7 +2,7 @@ package at.tuwien.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.thymeleaf.spring5.SpringTemplateEngine;
+import org.thymeleaf.spring6.SpringTemplateEngine;
 import org.thymeleaf.templatemode.TemplateMode;
 import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
 
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
index 83d5aa02846369114bb8c9050aed216f1ee5a382..83313bfc8ba96c059f756c3f556eccba3928d3f9 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
@@ -6,21 +6,21 @@ import org.springframework.http.HttpMethod;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @Configuration
 @EnableWebSecurity
 @EnableGlobalMethodSecurity(prePostEnabled = true)
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
         /* enable CORS and disable CSRF */
         http = http.cors().and().csrf().disable();
         /* set session management to stateless */
@@ -41,15 +41,16 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         /* set permissions on endpoints */
         http.authorizeRequests()
                 /* our internal endpoints */
-                .antMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
                 /* our public endpoints */
-                .antMatchers(HttpMethod.GET, "/api/oai/**").permitAll()
-                .antMatchers("/v3/api-docs.yaml",
+                .requestMatchers(HttpMethod.GET, "/api/oai/**").permitAll()
+                .requestMatchers("/v3/api-docs.yaml",
                         "/v3/api-docs/**",
                         "/swagger-ui/**",
                         "/swagger-ui.html").permitAll()
                 /* our private endpoints */
                 .anyRequest().authenticated();
+        return http.build();
     }
 
     @Bean
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MetadataService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MetadataService.java
index 43c3d8dfb58aea177734605a8f45588db6421e2c..8a2d8add44d715a9533805081895724f116c93a6 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MetadataService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/MetadataService.java
@@ -1,9 +1,9 @@
 package at.tuwien.service;
 
-import at.tuwien.OaiErrorType;
-import at.tuwien.OaiListIdentifiersParameters;
-import at.tuwien.OaiRecordParameters;
 import at.tuwien.exception.IdentifierNotFoundException;
+import at.tuwien.oaipmh.OaiErrorType;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
 
 public interface MetadataService {
 
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
index 78a089213ae37eb4292c56da3db5cc6148489cc5..9b42e5af52b4f7febc92fff0b7ae9794413950be 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
@@ -1,8 +1,8 @@
 package at.tuwien.service.impl;
 
-import at.tuwien.OaiErrorType;
-import at.tuwien.OaiListIdentifiersParameters;
-import at.tuwien.OaiRecordParameters;
+import at.tuwien.oaipmh.OaiErrorType;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
 import at.tuwien.config.MetadataConfig;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.IdentifierNotFoundException;
diff --git a/dbrepo-query-service/Dockerfile b/dbrepo-query-service/Dockerfile
index 3a174106daee3f209bbeabdec078167309bdf57c..c65fdc6dd3907566ea27764f8355497d709edc8e 100644
--- a/dbrepo-query-service/Dockerfile
+++ b/dbrepo-query-service/Dockerfile
@@ -3,7 +3,8 @@ FROM dbrepo-metadata-db:latest as dependency
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 ###### SECOND STAGE ######
-FROM maven:slim as build
+FROM maven:3-openjdk-17 as build
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./pom.xml ./
 
@@ -20,7 +21,10 @@ COPY ./api ./api
 RUN mvn -q clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM openjdk:11-jre-slim as runtime
+FROM openjdk:17-alpine as runtime
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
+
+RUN apk --no-cache add bash
 
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
diff --git a/dbrepo-query-service/pom.xml b/dbrepo-query-service/pom.xml
index 075f7d868a82cf38ca38f531263a41be8da3dda4..c533f3b2b804eba84f304622b11e60ceb832dd03 100644
--- a/dbrepo-query-service/pom.xml
+++ b/dbrepo-query-service/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.10.RELEASE</version>
+        <version>3.0.6</version>
     </parent>
 
     <groupId>at.tuwien</groupId>
@@ -40,25 +40,20 @@
     </modules>
 
     <properties>
-        <java.version>11</java.version>
-        <spring-cloud.version>3.0.1</spring-cloud.version>
-        <mapstruct.version>1.4.2.Final</mapstruct.version>
-        <docker.version>3.2.7</docker.version>
-        <testcontainers.version>1.15.2</testcontainers.version>
-        <swagger.version>2.1.7</swagger.version>
-        <springfox.version>3.0.0</springfox.version>
-        <jacoco.version>0.8.7</jacoco.version>
-        <opencsv.version>5.4</opencsv.version>
-        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
-        <maven-report.version>3.0.0</maven-report.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>4.0.2</spring-cloud.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
+        <docker.version>3.3.0</docker.version>
+        <swagger.version>2.2.9</swagger.version>
+        <jacoco.version>0.8.10</jacoco.version>
         <jwt.version>4.3.0</jwt.version>
+        <opencsv.version>5.7.1</opencsv.version>
+        <jsql.version>4.6</jsql.version>
+        <c3p0.version>0.9.5.5</c3p0.version>
+        <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -91,7 +86,6 @@
         <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-test</artifactId>
-            <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -111,6 +105,16 @@
             <scope>runtime</scope>
         </dependency>
         <!-- Data Source -->
+        <dependency>
+            <groupId>com.mchange</groupId>
+            <artifactId>c3p0</artifactId>
+            <version>${c3p0.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-c3p0</artifactId>
+            <version>${c3p0-hibernate.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.mariadb.jdbc</groupId>
             <artifactId>mariadb-java-client</artifactId>
@@ -148,12 +152,6 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
-        <!-- TODO: do we really need this? -->
-        <dependency>
-            <groupId>org.apache.tomcat</groupId>
-            <artifactId>tomcat-dbcp</artifactId>
-            <version>9.0.33</version>
-        </dependency>
         <!-- Entity, API, QueryStore -->
         <dependency>
             <groupId>at.tuwien</groupId>
@@ -173,11 +171,6 @@
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-c3p0</artifactId>
-            <version>${hibernate-c3po.version}</version>
-        </dependency>
         <!-- Testing -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -190,11 +183,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-test</artifactId>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>
@@ -234,18 +222,7 @@
         <dependency>
             <groupId>com.github.jsqlparser</groupId>
             <artifactId>jsqlparser</artifactId>
-            <version>3.1</version>
-        </dependency>
-        <!-- Gateway -->
-        <dependency>
-            <groupId>org.projectreactor</groupId>
-            <artifactId>reactor-spring</artifactId>
-            <version>1.0.1.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.1.1</version>
+            <version>${jsql.version}</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ExportEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ExportEndpoint.java
index 8e683d4348e9c05b39cbe5eba6b88e2e6e9d41f3..d052feb732d18187f264ce2b44f973e0cc879f8c 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ExportEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ExportEndpoint.java
@@ -13,11 +13,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
-import org.springframework.security.core.Authentication;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.time.Instant;
 
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java
index fb3b7209d06c8d797293521b75cb630d095cac32..c5d30f6dacf6093dde4310cfd1e01db417020679 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java
@@ -21,8 +21,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 
 
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/StoreEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/StoreEndpoint.java
index 29830f33a7c7908c8acb9313b7eee4c6b3dcbfb9..14e3548dd428760a3ed6f4245e48411370e4d957 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/StoreEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/StoreEndpoint.java
@@ -28,7 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableDataEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableDataEndpoint.java
index f53f5d489728afd6018e3143c1b728d78b59ffc5..e0ad8ea8d8f59a8da425de67348db6e44472ea0f 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableDataEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableDataEndpoint.java
@@ -21,8 +21,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.time.Instant;
 
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableHistoryEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableHistoryEndpoint.java
index b8b4f03dac74655b1f4c2749bbe809d189f8799c..0933749a0ecea839380686e6cefde6441284c92b 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableHistoryEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/TableHistoryEndpoint.java
@@ -2,7 +2,6 @@ package at.tuwien.endpoint;
 
 import at.tuwien.api.database.table.TableHistoryDto;
 import at.tuwien.api.error.ApiErrorDto;
-import at.tuwien.config.QueryConfig;
 import at.tuwien.exception.*;
 import at.tuwien.service.*;
 import io.micrometer.core.annotation.Timed;
@@ -15,11 +14,10 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
 
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ViewEndpoint.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ViewEndpoint.java
index 20d93d7077970907d45594a9f56cd347fcaf808a..8a7001f019277444da77e89286974e270bbc9632 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ViewEndpoint.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/endpoint/ViewEndpoint.java
@@ -27,8 +27,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
index 6c5301a54a56cbd7c08909803030f379eaaf012d..3c064e2b4fd89a33eee785d55f55893ce72dc1cb 100644
--- a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
@@ -25,12 +25,12 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  elasticsearch:
+    password: elastic
+    username: elastic
+    uris: http://localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
-    gateway:
-      httpclient:
-        ssl:
-          useInsecureTrustManager: true
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9093
@@ -50,7 +50,3 @@ fda:
   client_id: dbrepo-client
   consumers: 2
   unsupported: \*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--
-  elastic:
-    endpoint: localhost:9200
-    username: elastic
-    password: elastic
\ No newline at end of file
diff --git a/dbrepo-query-service/rest-service/src/main/resources/application.yml b/dbrepo-query-service/rest-service/src/main/resources/application.yml
index fddbe70d045b77ee97d5c4468651bde927e9f73c..2dafd0f2819732de50d6a606400c8fe1ad9526fd 100644
--- a/dbrepo-query-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-query-service/rest-service/src/main/resources/application.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  elasticsearch:
+    password: "${ELASTIC_PASSWORD}"
+    username: elastic
+    uris: http://search-service:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
@@ -46,7 +50,3 @@ fda:
   client_id: "${CLIENT_ID}"
   consumers: "${BROKER_CONSUMERS}"
   unsupported: "${NOT_SUPPORTED_KEYWORDS}"
-  elastic:
-    endpoint: search-service:9200
-    username: elastic
-    password: "${ELASTIC_PASSWORD}"
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java b/dbrepo-query-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
index b2b01c42ee9868215962426b18b3a70450bff7ac..92b60f4f8a5ed8a566e2504d71b63478b1593f68 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
@@ -6,6 +6,10 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -16,10 +20,6 @@ import org.springframework.security.web.authentication.WebAuthenticationDetailsS
 import org.springframework.util.StringUtils;
 import org.springframework.web.filter.OncePerRequestFilter;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
index b8de474aed6d651c497abe044fbd3368e9efbf83..58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
@@ -1,38 +1,45 @@
 package at.tuwien.config;
 
-import org.elasticsearch.client.RestHighLevelClient;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+import lombok.extern.log4j.Log4j2;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.elasticsearch.client.RestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.data.elasticsearch.client.ClientConfiguration;
-import org.springframework.data.elasticsearch.client.RestClients;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 
+@Log4j2
 @Configuration
 public class ElasticsearchConfig {
 
-    @Value("${fda.elastic.endpoint}")
+    @Value("${spring.elasticsearch.uris}")
     private String elasticEndpoint;
 
-    @Value("${fda.elastic.username}")
+    @Value("${spring.elasticsearch.username}")
     private String elasticUsername;
 
-    @Value("${fda.elastic.password}")
+    @Value("${spring.elasticsearch.password}")
     private String elasticPassword;
 
     @Bean
-    public RestHighLevelClient client() {
-        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
-                .connectedTo(elasticEndpoint)
-                .withBasicAuth(elasticUsername, elasticPassword)
+    public ElasticsearchClient elasticsearchClient() {
+        log.debug("elastic endpoint={}", elasticEndpoint);
+        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword));
+        final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint))
+                .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+                        .setDefaultCredentialsProvider(credentialsProvider))
                 .build();
-
-        return RestClients.create(clientConfiguration).rest();
+        ElasticsearchTransport transport = new RestClientTransport(
+                restClient, new JacksonJsonpMapper());
+        return new ElasticsearchClient(transport);
     }
 
-    @Bean
-    public ElasticsearchOperations elasticsearchTemplate() {
-        return new ElasticsearchRestTemplate(client());
-    }
 }
\ No newline at end of file
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
index 22586fb23b43382726ecc05d74bcf06f15b61d58..b61e8d13bf753317c42bc8c46b18c4efb24c411c 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
@@ -9,14 +9,14 @@ import org.springframework.http.HttpMethod;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @Configuration
 @EnableWebSecurity
@@ -27,15 +27,15 @@ import javax.servlet.http.HttpServletResponse;
         bearerFormat = "JWT",
         scheme = "bearer"
 )
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
 
     @Bean
     public AuthTokenFilter authTokenFilter() {
         return new AuthTokenFilter();
     }
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
         /* enable CORS and disable CSRF */
         http = http.cors().and().csrf().disable();
         /* set session management to stateless */
@@ -56,17 +56,17 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         /* set permissions on endpoints */
         http.authorizeRequests()
                 /* our internal endpoints */
-                .antMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
                 /* our public endpoints */
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/data/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/data/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/view/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/history/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/export/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**").permitAll()
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**/export").permitAll()
-                .antMatchers(HttpMethod.PUT, "/api/container/**/database/**/query/**").permitAll()
-                .antMatchers("/v3/api-docs.yaml",
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/data/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/data/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/view/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/history/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**/export/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/query/**/export").permitAll()
+                .requestMatchers(HttpMethod.PUT, "/api/container/**/database/**/query/**").permitAll()
+                .requestMatchers("/v3/api-docs.yaml",
                         "/v3/api-docs/**",
                         "/swagger-ui/**",
                         "/swagger-ui.html").permitAll()
@@ -76,6 +76,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         http.addFilterBefore(authTokenFilter(),
                 UsernamePasswordAuthenticationFilter.class
         );
+        return http.build();
     }
 
     @Bean
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java
index 01e2c9fa3ca2500116e5fd5a893402caa0241213..3f5c2ac7c4c2167786fa96252083cd6801ee9965 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java
@@ -12,23 +12,13 @@ import java.util.Optional;
 @Repository
 public interface ViewRepository extends JpaRepository<View, Long> {
 
-    @Query("select v from View v where v.database.id = :databaseId")
-    List<View> findAllByDatabaseId(@Param("databaseId") Long databaseId);
+    List<View> findAllPublicByDatabaseId(Long databaseId);
 
-    @Query("select v from View v where v.database.id = :databaseId and v.isPublic is true")
-    List<View> findAllPublicByDatabaseId(@Param("databaseId") Long databaseId);
+    List<View> findAllPublicOrMineByDatabaseId(Long databaseId, String username);
 
-    @Query("select v from View v where v.database.id = :databaseId and (v.isPublic is true or v.creator.username = :username)")
-    List<View> findAllPublicOrMineByDatabaseId(@Param("databaseId") Long databaseId, @Param("username") String username);
+    Optional<View> findPublicByDatabaseIdAndId(Long databaseId, Long id);
 
-    @Query("select v from View v where v.database.id = :databaseId and v.id = :id")
-    Optional<View> findByDatabaseIdAndId(@Param("databaseId") Long databaseId, @Param("id") Long id);
-
-    @Query("select v from View v where v.database.id = :databaseId and v.id = :id and v.isPublic is true")
-    Optional<View> findPublicByDatabaseIdAndId(@Param("databaseId") Long databaseId, @Param("id") Long id);
-
-    @Query("select v from View v where v.database.id = :databaseId and v.id = :id and (v.isPublic is true or v.creator.username = :username)")
-    Optional<View> findPublicOrMineByDatabaseIdAndId(@Param("databaseId") Long databaseId, @Param("id") Long id, @Param("username") String username);
+    Optional<View> findPublicOrMineByDatabaseIdAndId(Long databaseId, Long id, String username);
 
 }
 
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
index 536aff8f662e9e135f699b167475d7190ccdd932..d1d1094578440f6391bb0d96db468e1f9b93b3f0 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
@@ -25,7 +25,7 @@ import net.sf.jsqlparser.parser.CCJSqlParserManager;
 import net.sf.jsqlparser.statement.Statement;
 import net.sf.jsqlparser.statement.select.*;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.stereotype.Service;
diff --git a/dbrepo-table-service/Dockerfile b/dbrepo-table-service/Dockerfile
index e8a948adf8acecc76e3d2825c3e724099d48d574..fd41da1447c79ba28b5ad902ec7f5ae2d5b8eab9 100644
--- a/dbrepo-table-service/Dockerfile
+++ b/dbrepo-table-service/Dockerfile
@@ -3,7 +3,8 @@ FROM dbrepo-metadata-db:latest as dependency
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 ###### SECOND STAGE ######
-FROM maven:slim as build
+FROM maven:3-openjdk-17 as build
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./pom.xml ./
 
@@ -19,7 +20,10 @@ COPY ./report ./report
 RUN mvn -q clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM openjdk:11-jre-slim as runtime
+FROM openjdk:17-alpine as runtime
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
+
+RUN apk --no-cache add bash
 
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
diff --git a/dbrepo-table-service/pom.xml b/dbrepo-table-service/pom.xml
index 46fde5c0506ed540b8ebaa6eb9c2d9529d55b0d0..d82996f45d43ce1653c1434f7d0350b68d4f3d94 100644
--- a/dbrepo-table-service/pom.xml
+++ b/dbrepo-table-service/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.10.RELEASE</version>
+        <version>3.0.6</version>
     </parent>
 
     <groupId>at.tuwien</groupId>
@@ -22,26 +22,21 @@
     </modules>
 
     <properties>
-        <java.version>11</java.version>
-        <spring-cloud.version>3.0.1</spring-cloud.version>
-        <mapstruct.version>1.4.2.Final</mapstruct.version>
-        <docker.version>3.2.7</docker.version>
-        <testcontainers.version>1.15.2</testcontainers.version>
-        <jacoco.version>0.8.7</jacoco.version>
-        <opencsv.version>5.4</opencsv.version>
-        <super-csv.version>2.4.0</super-csv.version>
-        <btrace-client.version>2.2.0</btrace-client.version>
-        <random-utils.version>2.0.0</random-utils.version>
-        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
-        <jsql.version>3.1</jsql.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>4.0.2</spring-cloud.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
+        <docker.version>3.3.0</docker.version>
+        <swagger.version>2.2.9</swagger.version>
+        <jacoco.version>0.8.10</jacoco.version>
         <jwt.version>4.3.0</jwt.version>
+        <opencsv.version>5.7.1</opencsv.version>
+        <super-csv.version>2.4.0</super-csv.version>
+        <jsql.version>4.6</jsql.version>
+        <c3p0.version>0.9.5.5</c3p0.version>
+        <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
     </properties>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -97,16 +92,21 @@
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-c3p0</artifactId>
-            <version>${hibernate-c3po.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
         <!-- DataSource -->
+        <dependency>
+            <groupId>com.mchange</groupId>
+            <artifactId>c3p0</artifactId>
+            <version>${c3p0.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-c3p0</artifactId>
+            <version>${c3p0-hibernate.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-elasticsearch</artifactId>
@@ -116,11 +116,6 @@
             <artifactId>mariadb-java-client</artifactId>
             <version>${mariadb.version}</version>
         </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>${mysql.version}</version>
-        </dependency>
         <!-- SQL Parser -->
         <dependency>
             <groupId>com.github.jsqlparser</groupId>
@@ -134,11 +129,6 @@
             <artifactId>super-csv</artifactId>
             <version>${super-csv.version}</version>
         </dependency>
-        <dependency>
-            <groupId>io.btrace</groupId>
-            <artifactId>btrace-client</artifactId>
-            <version>${btrace-client.version}</version>
-        </dependency>
         <!-- AMPQ -->
         <dependency>
             <groupId>com.rabbitmq</groupId>
@@ -171,12 +161,6 @@
             <artifactId>dbrepo-metadata-db-test</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!-- DTO -->
-        <dependency>
-            <groupId>com.opencsv</groupId>
-            <artifactId>opencsv</artifactId>
-            <version>${opencsv.version}</version>
-        </dependency>
         <!-- IDE -->
         <dependency>
             <groupId>org.projectlombok</groupId>
diff --git a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableColumnEndpoint.java b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableColumnEndpoint.java
index 73df4fddb494a6f8b885c02c356798a1fe682220..9127764b70c804a352d658c5cc05fa0f479fd2a6 100644
--- a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableColumnEndpoint.java
+++ b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableColumnEndpoint.java
@@ -22,8 +22,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 
 @Log4j2
diff --git a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
index f142018b3e407d40fcd18bbb1e6b6e8f894e2a8e..a028e5da8f9bfb304357848c6efb43f6cfd07a9e 100644
--- a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
+++ b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
@@ -2,12 +2,9 @@ package at.tuwien.endpoints;
 
 import at.tuwien.api.database.table.*;
 import at.tuwien.api.error.ApiErrorDto;
-import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.table.Table;
-import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.TableMapper;
-import at.tuwien.service.DatabaseService;
 import at.tuwien.service.MessageQueueService;
 import at.tuwien.service.TableService;
 import at.tuwien.validation.EndpointValidator;
@@ -26,8 +23,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
index 5dc69ea2027c86c89ef7bbf4b1f8f5ef7e9a8855..2df732e702a97b4199a85456dead163452982604 100644
--- a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  elasticsearch:
+    password: elastic
+    username: elastic
+    uris: http://localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
@@ -43,8 +47,4 @@ fda:
     public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQAB
   client_secret: client-secret
   client_id: dbrepo-client
-  gateway.endpoint: https://localhost
-  elastic:
-    endpoint: localhost:9200
-    username: elastic
-    password: elastic
\ No newline at end of file
+  gateway.endpoint: https://localhost
\ No newline at end of file
diff --git a/dbrepo-table-service/rest-service/src/main/resources/application.yml b/dbrepo-table-service/rest-service/src/main/resources/application.yml
index d3270999d18cbff2a185268f5e0b672915b2c030..d608f70ae19f2f3bc86fad4f7328c6071924baa8 100644
--- a/dbrepo-table-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-table-service/rest-service/src/main/resources/application.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  elasticsearch:
+    password: "${ELASTIC_PASSWORD}"
+    username: elastic
+    uris: http://search-service:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
@@ -43,8 +47,4 @@ fda:
     public_key: "${JWT_PUBKEY}"
   client_secret: "${DBREPO_CLIENT_SECRET}"
   client_id: "${CLIENT_ID}"
-  gateway.endpoint: https://gateway-service
-  elastic:
-    endpoint: search-service:9200
-    username: elastic
-    password: "${ELASTIC_PASSWORD}"
\ No newline at end of file
+  gateway.endpoint: https://gateway-service
\ No newline at end of file
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java b/dbrepo-table-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
index b2b01c42ee9868215962426b18b3a70450bff7ac..92b60f4f8a5ed8a566e2504d71b63478b1593f68 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
@@ -6,6 +6,10 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -16,10 +20,6 @@ import org.springframework.security.web.authentication.WebAuthenticationDetailsS
 import org.springframework.util.StringUtils;
 import org.springframework.web.filter.OncePerRequestFilter;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
index 1f447e2c839977c02443090cdfb6568c5e04e79b..58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
@@ -1,42 +1,45 @@
 package at.tuwien.config;
 
-import org.elasticsearch.client.RestHighLevelClient;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+import lombok.extern.log4j.Log4j2;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.elasticsearch.client.RestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.data.elasticsearch.client.ClientConfiguration;
-import org.springframework.data.elasticsearch.client.RestClients;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
-import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
-
-import java.util.Properties;
 
+@Log4j2
 @Configuration
 public class ElasticsearchConfig {
 
-    @Value("${fda.elastic.endpoint}")
+    @Value("${spring.elasticsearch.uris}")
     private String elasticEndpoint;
 
-    @Value("${fda.elastic.username}")
+    @Value("${spring.elasticsearch.username}")
     private String elasticUsername;
 
-    @Value("${fda.elastic.password}")
+    @Value("${spring.elasticsearch.password}")
     private String elasticPassword;
 
     @Bean
-    public RestHighLevelClient client() {
-        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
-                .connectedTo(elasticEndpoint)
-                .withBasicAuth(elasticUsername, elasticPassword)
+    public ElasticsearchClient elasticsearchClient() {
+        log.debug("elastic endpoint={}", elasticEndpoint);
+        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword));
+        final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint))
+                .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+                        .setDefaultCredentialsProvider(credentialsProvider))
                 .build();
-
-        return RestClients.create(clientConfiguration).rest();
+        ElasticsearchTransport transport = new RestClientTransport(
+                restClient, new JacksonJsonpMapper());
+        return new ElasticsearchClient(transport);
     }
 
-    @Bean
-    public ElasticsearchOperations elasticsearchTemplate() {
-        return new ElasticsearchRestTemplate(client());
-    }
 }
\ No newline at end of file
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
index be46fcc18b2bf6f3c4bb1bed18983e780b735241..afc03f2c8937b7b282a25d7b450ccef336cc4613 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
@@ -9,14 +9,14 @@ import org.springframework.http.HttpMethod;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @Configuration
 @EnableWebSecurity
@@ -27,15 +27,15 @@ import javax.servlet.http.HttpServletResponse;
         bearerFormat = "JWT",
         scheme = "bearer"
 )
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
 
     @Bean
     public AuthTokenFilter authTokenFilter() {
         return new AuthTokenFilter();
     }
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
         /* enable CORS and disable CSRF */
         http = http.cors().and().csrf().disable();
         /* set session management to stateless */
@@ -56,10 +56,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         /* set permissions on endpoints */
         http.authorizeRequests()
                 /* our internal endpoints */
-                .antMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
                 /* our public endpoints */
-                .antMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**").permitAll()
-                .antMatchers("/v3/api-docs.yaml",
+                .requestMatchers(HttpMethod.GET, "/api/container/**/database/**/table/**").permitAll()
+                .requestMatchers("/v3/api-docs.yaml",
                         "/v3/api-docs/**",
                         "/swagger-ui/**",
                         "/swagger-ui.html").permitAll()
@@ -69,6 +69,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         http.addFilterBefore(authTokenFilter(),
                 UsernamePasswordAuthenticationFilter.class
         );
+        return http.build();
     }
 
     @Bean
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/MessageQueueService.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
index c8ef46283e94425703d5458cb19dd9e2e980fff5..8c34a8a02111b0e20d7c7433d697c44c3e5e2527 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
@@ -2,13 +2,12 @@ package at.tuwien.service;
 
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.AmqpException;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.PostConstruct;
-import java.io.IOException;
+import org.springframework.boot.context.event.ApplicationReadyEvent;
+import org.springframework.context.event.EventListener;
 
 public interface MessageQueueService {
 
+    @EventListener(ApplicationReadyEvent.class)
     void init() throws AmqpException;
 
     /**
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
index 7d19c48e1c4eac61c58aab5e5ff02f718e925186..3656f0a6efdc2d0d110f315502e7e795cc02850b 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
@@ -5,13 +5,10 @@ import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItemType;
 import at.tuwien.entities.database.Database;
-import at.tuwien.exception.DatabaseConnectionException;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.stereotype.Service;
 
-import java.sql.Connection;
-import java.sql.SQLException;
 import java.util.stream.Collectors;
 
 @Log4j2
diff --git a/dbrepo-user-service/Dockerfile b/dbrepo-user-service/Dockerfile
index 5b63bc10bdcb22681c5364e6214ee55a5c6d6301..e276c3f17dc139985e8ad3eb7531a7c96c0d5dc2 100644
--- a/dbrepo-user-service/Dockerfile
+++ b/dbrepo-user-service/Dockerfile
@@ -3,7 +3,8 @@ FROM dbrepo-metadata-db:latest as dependency
 MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 ###### SECOND STAGE ######
-FROM maven:slim as build
+FROM maven:3-openjdk-17 as build
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
 
 COPY ./pom.xml ./
 
@@ -19,7 +20,10 @@ COPY ./report ./report
 RUN mvn -q clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM openjdk:11-jre-slim as runtime
+FROM openjdk:17-alpine as runtime
+MAINTAINER Martin Weise <martin.weise@tuwien.ac.at>
+
+RUN apk --no-cache add bash
 
 ENV METADATA_DB=fda
 ENV METADATA_USERNAME=root
diff --git a/dbrepo-user-service/pom.xml b/dbrepo-user-service/pom.xml
index 771332a592e7639c9b81d897066b83d2c4ddbae0..f1ae609dcab5e95ec63de47944bff6e0f0dac174 100644
--- a/dbrepo-user-service/pom.xml
+++ b/dbrepo-user-service/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.10.RELEASE</version>
+        <version>3.0.6</version>
     </parent>
 
     <groupId>at.tuwien</groupId>
@@ -39,19 +39,19 @@
     </modules>
 
     <properties>
-        <java.version>11</java.version>
-        <spring-cloud.version>3.0.1</spring-cloud.version>
-        <mapstruct.version>1.4.2.Final</mapstruct.version>
-        <docker.version>3.2.7</docker.version>
-        <testcontainers.version>1.15.2</testcontainers.version>
-        <swagger.version>2.1.7</swagger.version>
-        <springfox.version>3.0.0</springfox.version>
-        <jacoco.version>0.8.7</jacoco.version>
-        <opencsv.version>5.4</opencsv.version>
-        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
-        <maven-report.version>3.0.0</maven-report.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>4.0.2</spring-cloud.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
+        <docker.version>3.3.0</docker.version>
+        <swagger.version>2.2.9</swagger.version>
+        <jacoco.version>0.8.10</jacoco.version>
         <jwt.version>4.3.0</jwt.version>
+        <hibernate-c3po.version>5.6.3.Final</hibernate-c3po.version>
+        <opencsv.version>5.7.1</opencsv.version>
+        <super-csv.version>2.4.0</super-csv.version>
+        <jsql.version>4.6</jsql.version>
         <keycloak.version>21.0.2</keycloak.version>
+        <hibernate.version>6.2.2.Final</hibernate.version>
     </properties>
 
     <dependencies>
@@ -71,7 +71,7 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-test</artifactId>
         </dependency>
-        <dependency><!-- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes#validation-starter-no-longer-included-in-web-starters -->
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
@@ -160,11 +160,6 @@
             <artifactId>spring-security-test</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.security</groupId>
-            <artifactId>spring-security-test</artifactId>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
             <artifactId>h2</artifactId>
@@ -188,17 +183,6 @@
             <artifactId>mapstruct</artifactId>
             <version>${mapstruct.version}</version>
         </dependency>
-        <!-- Gateway -->
-        <dependency>
-            <groupId>org.projectreactor</groupId>
-            <artifactId>reactor-spring</artifactId>
-            <version>1.0.1.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.1.1</version>
-        </dependency>
     </dependencies>
 
     <build>
diff --git a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
index b2aa2e79ac5c1a350b8815c85c3e07719b88f2cb..f83b023b7d1bb1eff0bcad07cf4642fb781a60c6 100644
--- a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
+++ b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
@@ -1,7 +1,6 @@
 package at.tuwien.endpoint;
 
 import at.tuwien.api.auth.SignupRequestDto;
-import at.tuwien.api.container.ContainerBriefDto;
 import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.api.user.*;
 import at.tuwien.config.AuthenticationConfig;
@@ -28,8 +27,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
 import java.util.UUID;
diff --git a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
index 68517428b140de7ccbf6dc01272bf54a88f994aa..432834c323861d09143bd760e8b86f91c0dbff80 100644
--- a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  elasticsearch:
+    password: elastic
+    username: elastic
+    uris: http://localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
@@ -37,10 +41,6 @@ logging:
     at.tuwien.: trace
     org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug
 fda:
-  elastic:
-    endpoint: localhost:9200
-    username: elastic
-    password: elastic
   ready.path: ./ready
   gateway.endpoint: https://localhost
   default_role: default-researcher-roles
diff --git a/dbrepo-user-service/rest-service/src/main/resources/application.yml b/dbrepo-user-service/rest-service/src/main/resources/application.yml
index e9f0f162f1d7d807fad844138ddd71da0b91eb90..3ff5be6c907e573889250c970fdadec733235b22 100644
--- a/dbrepo-user-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-user-service/rest-service/src/main/resources/application.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  elasticsearch:
+    password: "${ELASTIC_PASSWORD}"
+    username: elastic
+    uris: http://search-service:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
@@ -37,10 +41,6 @@ logging:
     at.tuwien.: "${LOG_LEVEL}"
     org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug
 fda:
-  elastic:
-    endpoint: search-service:9200
-    username: elastic
-    password: "${ELASTIC_PASSWORD}"
   ready.path: /ready
   gateway.endpoint: "${GATEWAY_ENDPOINT}"
   default_role: "${DEFAULT_ROLE}"
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java b/dbrepo-user-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
index b2b01c42ee9868215962426b18b3a70450bff7ac..92b60f4f8a5ed8a566e2504d71b63478b1593f68 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/auth/AuthTokenFilter.java
@@ -6,6 +6,10 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -16,10 +20,6 @@ import org.springframework.security.web.authentication.WebAuthenticationDetailsS
 import org.springframework.util.StringUtils;
 import org.springframework.web.filter.OncePerRequestFilter;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
index dd42aa517fb5bda732d39a5660918bbe61cfc6ce..58079c0b9c7c08d8c0ae75ee1ecf0191a7d19f65 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/ElasticsearchConfig.java
@@ -1,42 +1,45 @@
 package at.tuwien.config;
 
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
 import lombok.extern.log4j.Log4j2;
-import org.elasticsearch.client.RestHighLevelClient;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.elasticsearch.client.RestClient;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.data.elasticsearch.client.ClientConfiguration;
-import org.springframework.data.elasticsearch.client.RestClients;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 
 @Log4j2
 @Configuration
 public class ElasticsearchConfig {
 
-    @Value("${fda.elastic.endpoint}")
+    @Value("${spring.elasticsearch.uris}")
     private String elasticEndpoint;
 
-    @Value("${fda.elastic.username}")
+    @Value("${spring.elasticsearch.username}")
     private String elasticUsername;
 
-    @Value("${fda.elastic.password}")
+    @Value("${spring.elasticsearch.password}")
     private String elasticPassword;
 
     @Bean
-    public RestHighLevelClient client() {
+    public ElasticsearchClient elasticsearchClient() {
         log.debug("elastic endpoint={}", elasticEndpoint);
-        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
-                .connectedTo(elasticEndpoint)
-                .withBasicAuth(elasticUsername, elasticPassword)
+        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUsername, elasticPassword));
+        final RestClient restClient = RestClient.builder(HttpHost.create(elasticEndpoint))
+                .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+                        .setDefaultCredentialsProvider(credentialsProvider))
                 .build();
-        return RestClients.create(clientConfiguration)
-                .rest();
-    }
-
-    @Bean
-    public ElasticsearchOperations elasticsearchTemplate() {
-        return new ElasticsearchRestTemplate(client());
+        ElasticsearchTransport transport = new RestClientTransport(
+                restClient, new JacksonJsonpMapper());
+        return new ElasticsearchClient(transport);
     }
 
 }
\ No newline at end of file
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/JacksonConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
index fba7f99cf2bf1cbb12ac51cd6fd5b80751ff43c1..c4944a469174ad1962d5c54cc483400dbee12f1d 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/JacksonConfig.java
@@ -19,7 +19,6 @@ public class JacksonConfig {
     @Bean
     public ObjectMapper objectMapper() throws JsonProcessingException {
         final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.findAndRegisterModules();
         objectMapper.registerModule(new Jdk8Module());
         objectMapper.registerModule(new JavaTimeModule());
         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
index 0a2af8f294a81b4e9e133ec7a4ef91c412ca4d17..7d27eda0ec2805bed7f283a7f86a9b535c156f33 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/WebSecurityConfig.java
@@ -9,14 +9,14 @@ import org.springframework.http.HttpMethod;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.web.cors.CorsConfiguration;
 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
 import org.springframework.web.filter.CorsFilter;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @Configuration
 @EnableWebSecurity
@@ -27,15 +27,15 @@ import javax.servlet.http.HttpServletResponse;
         bearerFormat = "JWT",
         scheme = "bearer"
 )
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
 
     @Bean
     public AuthTokenFilter authTokenFilter() {
         return new AuthTokenFilter();
     }
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
         /* enable CORS and disable CSRF */
         http = http.cors().and().csrf().disable();
         /* set session management to stateless */
@@ -56,11 +56,11 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         /* set permissions on endpoints */
         http.authorizeRequests()
                 /* our internal endpoints */
-                .antMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
+                .requestMatchers(HttpMethod.GET, "/actuator/prometheus/**").permitAll()
                 /* our public endpoints */
-                .antMatchers(HttpMethod.GET, "/api/user/**").permitAll()
-                .antMatchers(HttpMethod.POST, "/api/user/**").permitAll()
-                .antMatchers("/v3/api-docs.yaml",
+                .requestMatchers(HttpMethod.GET, "/api/user/**").permitAll()
+                .requestMatchers(HttpMethod.POST, "/api/user/**").permitAll()
+                .requestMatchers("/v3/api-docs.yaml",
                         "/v3/api-docs/**",
                         "/swagger-ui/**",
                         "/swagger-ui.html").permitAll()
@@ -70,6 +70,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         http.addFilterBefore(authTokenFilter(),
                 UsernamePasswordAuthenticationFilter.class
         );
+        return http.build();
     }
 
     @Bean