From 7b65c880ad32ab88f312719e6b16462613bb2e78 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Wed, 23 Apr 2025 14:32:06 +0000
Subject: [PATCH] Resolve "Multiarch builds in pipeline"

---
 .docs/changelog.md                            |  13 +++
 .gitlab-ci.yml                                |  32 ++++---
 dbrepo-analyse-service/Dockerfile             |   2 +-
 dbrepo-auth-service/init/Dockerfile           |   2 +-
 dbrepo-auth-service/listeners/pom.xml         |   2 +-
 dbrepo-dashboard-service/Dockerfile           |   2 +-
 dbrepo-dashboard-service/init.Dockerfile      |   2 +-
 dbrepo-dashboard-ui/Dockerfile                |   2 +-
 dbrepo-data-service/.gitignore                |   3 +
 dbrepo-data-service/Dockerfile                |  25 +++--
 dbrepo-data-service/README.md                 |   9 ++
 dbrepo-data-service/lib/.gitkeep              |   0
 dbrepo-data-service/pom.xml                   |  29 ++++--
 dbrepo-data-service/querystore/pom.xml        |   8 +-
 .../at => }/ifs/dbrepo/querystore/Query.java  |   2 +-
 dbrepo-data-service/report/pom.xml            |  15 +--
 dbrepo-data-service/rest-service/pom.xml      |   8 +-
 .../ifs/dbrepo/DataServiceApplication.java    |   2 +-
 .../ifs/dbrepo/config/SwaggerConfig.java      |   2 +-
 .../ifs/dbrepo/endpoints/AccessEndpoint.java  |   6 +-
 .../dbrepo/endpoints/DatabaseEndpoint.java    |  24 ++---
 .../ifs/dbrepo/endpoints/RestEndpoint.java    |   2 +-
 .../ifs/dbrepo/endpoints/SubsetEndpoint.java  |  16 ++--
 .../ifs/dbrepo/endpoints/TableEndpoint.java   |  10 +-
 .../ifs/dbrepo/endpoints/UploadEndpoint.java  |   4 +-
 .../ifs/dbrepo/endpoints/ViewEndpoint.java    |   8 +-
 .../dbrepo/handlers/ApiExceptionHandler.java  |   2 +-
 .../dbrepo/validation/EndpointValidator.java  |   6 +-
 .../src/main/resources/application.yml        |   2 +-
 .../ifs/dbrepo/config/MariaDbConfig.java      |   2 +-
 .../dbrepo/config/MariaDbContainerConfig.java |   2 +-
 .../ifs/dbrepo/config/MariadbConfigTest.java  |   4 +-
 .../endpoint/AccessEndpointUnitTest.java      |   8 +-
 .../endpoint/DatabaseEndpointUnitTest.java    |  12 +--
 .../endpoint/SubsetEndpointUnitTest.java      |  14 +--
 .../endpoint/TableEndpointUnitTest.java       |  14 +--
 .../dbrepo/endpoint/ViewEndpointUnitTest.java |  12 +--
 .../dbrepo/gateway/InterceptorUnitTest.java   |   2 +-
 .../MetadataServiceGatewayUnitTest.java       |   2 +-
 .../handlers/ApiExceptionHandlerTest.java     |   2 +-
 .../DefaultListenerIntegrationTest.java       |  10 +-
 .../listener/DefaultListenerUnitTest.java     |   8 +-
 .../dbrepo/mapper/MariaDbMapperUnitTest.java  |   2 +-
 .../dbrepo/mvc/ActuatorEndpointMvcTest.java   |   2 +-
 .../dbrepo/mvc/OpenApiEndpointMvcTest.java    |   4 +-
 .../dbrepo/mvc/PrometheusEndpointMvcTest.java |  14 +--
 .../ifs/dbrepo/mvc/SubsetEndpointMvcTest.java |   6 +-
 .../service/AccessServiceIntegrationTest.java |   6 +-
 .../ContainerServiceIntegrationTest.java      |   6 +-
 .../service/CredentialServiceUnitTest.java    |   6 +-
 .../DatabaseServiceIntegrationTest.java       |   6 +-
 .../service/QueueServiceIntegrationTest.java  |  10 +-
 .../StorageServiceIntegrationTest.java        |   6 +-
 .../service/SubsetServiceIntegrationTest.java |   8 +-
 .../service/TableServiceIntegrationTest.java  |   8 +-
 .../service/ViewServiceIntegrationTest.java   |   6 +-
 .../at => }/ifs/dbrepo/utils/FileUtils.java   |   2 +-
 .../ifs/dbrepo/utils/MariaDbUtilTest.java     |   2 +-
 .../ifs/dbrepo/utils/RabbitMqUtils.java       |   2 +-
 .../validation/EndpointValidatorUnitTest.java |   2 +-
 .../src/test/resources/application.properties |   2 +-
 dbrepo-data-service/services/pom.xml          |  10 +-
 .../at/ifs/dbrepo/mapper/MetadataMapper.java  |  88 ------------------
 .../ifs/dbrepo/auth/AuthTokenFilter.java      |   2 +-
 .../auth/BasicAuthenticationProvider.java     |   4 +-
 .../auth/InternalRequestInterceptor.java      |   6 +-
 .../ifs/dbrepo/config/CacheConfig.java        |   2 +-
 .../ifs/dbrepo/config/GatewayConfig.java      |   6 +-
 .../ifs/dbrepo/config/JacksonConfig.java      |   2 +-
 .../ifs/dbrepo/config/KeycloakConfig.java     |   2 +-
 .../ifs/dbrepo/config/MetricsConfig.java      |   2 +-
 .../ifs/dbrepo/config/QueryConfig.java        |   2 +-
 .../ifs/dbrepo/config/RabbitConfig.java       |   4 +-
 .../at => }/ifs/dbrepo/config/S3Config.java   |   2 +-
 .../ifs/dbrepo/config/SparkConfig.java        |   2 +-
 .../ifs/dbrepo/config/WebSecurityConfig.java  |   8 +-
 .../ifs/dbrepo/gateway/KeycloakGateway.java   |   2 +-
 .../gateway/MetadataServiceGateway.java       |   2 +-
 .../gateway/impl/KeycloakGatewayImpl.java     |  16 ++--
 .../impl/MetadataServiceGatewayImpl.java      |  28 +++---
 .../ifs/dbrepo/listener/DefaultListener.java  |   6 +-
 .../at => }/ifs/dbrepo/mapper/DataMapper.java |  71 ++++++++++++--
 .../ifs/dbrepo/mapper/MariaDbMapper.java      |   6 +-
 .../ifs/dbrepo/service/AccessService.java     |   2 +-
 .../ifs/dbrepo/service/CacheService.java      |   4 +-
 .../ifs/dbrepo/service/ContainerService.java  |   2 +-
 .../ifs/dbrepo/service/CredentialService.java |   2 +-
 .../ifs/dbrepo/service/DatabaseService.java   |   2 +-
 .../ifs/dbrepo/service/QueueService.java      |   2 +-
 .../ifs/dbrepo/service/StorageService.java    |   2 +-
 .../ifs/dbrepo/service/SubsetService.java     |   2 +-
 .../ifs/dbrepo/service/TableService.java      |   2 +-
 .../ifs/dbrepo/service/ViewService.java       |   2 +-
 .../impl/AccessServiceMariaDbImpl.java        |  20 ++--
 .../dbrepo/service/impl/CacheServiceImpl.java |  10 +-
 .../impl/ContainerServiceMariaDbImpl.java     |  18 ++--
 .../service/impl/CredentialServiceImpl.java   |   8 +-
 .../dbrepo/service/impl/DataConnector.java    |   4 +-
 .../impl/DatabaseServiceMariaDbImpl.java      |  40 ++++----
 .../impl/QueueServiceRabbitMqImpl.java        |  15 ++-
 .../service/impl/StorageServiceS3Impl.java    |   9 +-
 .../impl/SubsetServiceMariaDbImpl.java        |  30 +++---
 .../service/impl/TableServiceMariaDbImpl.java |  30 +++---
 .../service/impl/ViewServiceMariaDbImpl.java  |  10 +-
 .../at => }/ifs/dbrepo/utils/MariaDbUtil.java |   2 +-
 dbrepo-metadata-service/.dockerignore         |   2 +-
 dbrepo-metadata-service/.gitignore            |   3 +
 dbrepo-metadata-service/Dockerfile            |  27 +++---
 dbrepo-metadata-service/README.md             |   9 ++
 .../at/tuwien/api/doi/AffiliationDto.java     |  20 ----
 .../java/at/tuwien/api/doi/AuthorDto.java     |  35 -------
 .../main/java/at/tuwien/api/doi/DoiDto.java   |  82 ----------------
 .../java/at/tuwien/api/doi/LicenseDto.java    |  32 -------
 .../main/java/at/tuwien/api/doi/LinkDto.java  |  35 -------
 .../java/at/tuwien/api/doi/ReferenceDto.java  |  55 -----------
 .../java/at/tuwien/api/doi/ResourceDto.java   |  20 ----
 .../api/doi/ResourceRepresentationDto.java    |  20 ----
 .../tuwien/api/doi/TimeRepresentationDto.java |  33 -------
 dbrepo-metadata-service/lib/.gitkeep          |   0
 dbrepo-metadata-service/oai/pom.xml           |   8 +-
 dbrepo-metadata-service/pom.xml               |  37 +++++---
 dbrepo-metadata-service/report/pom.xml        |  19 ++--
 dbrepo-metadata-service/repositories/pom.xml  |  18 ++--
 .../dbrepo/repository/DatabaseRepository.java |   1 -
 dbrepo-metadata-service/rest-service/pom.xml  |  17 ++--
 dbrepo-metadata-service/services/pom.xml      |  23 ++---
 dbrepo-search-service/Dockerfile              |   2 +-
 dbrepo-search-service/init.Dockerfile         |   2 +-
 dbrepo-storage-service/init/Dockerfile        |   2 +-
 dbrepo-ui/Dockerfile                          |   4 +-
 grafana/grafana.ini                           |   5 -
 helm/dbrepo/files/create-event-listener.jar   | Bin 10140 -> 10287 bytes
 lib/java/dbrepo-core/.gitignore               |   3 +
 lib/java/dbrepo-core/Dockerfile               |  12 ---
 lib/java/dbrepo-core/pom.xml                  |  26 ++++--
 make/build.mk                                 |  25 ++---
 make/dev.mk                                   |   3 +-
 137 files changed, 585 insertions(+), 918 deletions(-)
 create mode 100644 dbrepo-data-service/lib/.gitkeep
 rename dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/querystore/Query.java (97%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/DataServiceApplication.java (91%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/SwaggerConfig.java (97%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/AccessEndpoint.java (98%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/DatabaseEndpoint.java (88%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/RestEndpoint.java (98%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/SubsetEndpoint.java (98%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/TableEndpoint.java (99%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/UploadEndpoint.java (96%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoints/ViewEndpoint.java (98%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/handlers/ApiExceptionHandler.java (99%)
 rename dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/validation/EndpointValidator.java (96%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/MariaDbConfig.java (99%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/MariaDbContainerConfig.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/MariadbConfigTest.java (94%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java (96%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoint/TableEndpointUnitTest.java (99%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/InterceptorUnitTest.java (97%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java (99%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java (99%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java (90%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/listener/DefaultListenerUnitTest.java (93%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java (97%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java (97%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java (94%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java (93%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/AccessServiceIntegrationTest.java (96%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/ContainerServiceIntegrationTest.java (95%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/CredentialServiceUnitTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java (99%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/QueueServiceIntegrationTest.java (91%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/StorageServiceIntegrationTest.java (97%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/SubsetServiceIntegrationTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/TableServiceIntegrationTest.java (98%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/ViewServiceIntegrationTest.java (89%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/utils/FileUtils.java (84%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/utils/MariaDbUtilTest.java (97%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/utils/RabbitMqUtils.java (92%)
 rename dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/validation/EndpointValidatorUnitTest.java (97%)
 delete mode 100644 dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MetadataMapper.java
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/auth/AuthTokenFilter.java (99%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/auth/BasicAuthenticationProvider.java (93%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/auth/InternalRequestInterceptor.java (90%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/CacheConfig.java (97%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/GatewayConfig.java (88%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/JacksonConfig.java (95%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/KeycloakConfig.java (95%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/MetricsConfig.java (92%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/QueryConfig.java (94%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/RabbitConfig.java (95%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/S3Config.java (96%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/SparkConfig.java (97%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/config/WebSecurityConfig.java (94%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/KeycloakGateway.java (85%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/MetadataServiceGateway.java (99%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java (77%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java (95%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/listener/DefaultListener.java (95%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mapper/DataMapper.java (89%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/mapper/MariaDbMapper.java (99%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/AccessService.java (97%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/CacheService.java (98%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/ContainerService.java (96%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/CredentialService.java (90%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/DatabaseService.java (98%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/QueueService.java (92%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/StorageService.java (98%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/SubsetService.java (99%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/TableService.java (99%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/ViewService.java (96%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java (86%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/CacheServiceImpl.java (96%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java (85%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/CredentialServiceImpl.java (89%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/DataConnector.java (94%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java (90%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java (79%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/StorageServiceS3Impl.java (97%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java (89%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java (94%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java (90%)
 rename dbrepo-data-service/services/src/main/java/at/ac/tuwien/{ac/at => }/ifs/dbrepo/utils/MariaDbUtil.java (97%)
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AffiliationDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AuthorDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/DoiDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LicenseDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LinkDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ReferenceDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceRepresentationDto.java
 delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/TimeRepresentationDto.java
 create mode 100644 dbrepo-metadata-service/lib/.gitkeep
 delete mode 100644 grafana/grafana.ini
 delete mode 100644 lib/java/dbrepo-core/Dockerfile

diff --git a/.docs/changelog.md b/.docs/changelog.md
index 1f4a4ed904..fd2e7b0d9c 100644
--- a/.docs/changelog.md
+++ b/.docs/changelog.md
@@ -2,6 +2,19 @@
 author: Martin Weise
 ---
 
+## v1.8.2 (2025-04-??)
+
+#### Features
+
+* Added structured logging through the `fluentd` protocol via the lightweight fluentbit in a 
+  separate [Logging Service](../api/logging-service)
+  in [#524](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/524).
+
+#### Changes
+
+* Improved internal packaging mechanism that is compatible with multiarch deployments 
+  in [#523](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/523).
+
 ## v1.8.1 (2025-04-13)
 
 #### Changes
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2d5f3a4282..615ad044be 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,7 +15,7 @@ variables:
   APP_VERSION: "1.8.1"
   CHART_VERSION: "1.8.1"
   SUPPORTED_VERSIONS: "1.7.3, 1.8.0, 1.8.1"
-  SUPPORTED_ARCH: "linux/amd64,linux/arm64"
+  SUPPORTED_ARCH: "linux/amd64"
   MAINTAINED_SERVICES: "analyse-service, auth-service-init, dashboard-service, dashboard-service-init, data-service, metadata-service, search-db, search-service, search-service-init, storage-service-init, ui"
   CACHE_FALLBACK_KEY: "${CI_DEFAULT_BRANCH}"
   # This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
@@ -155,10 +155,10 @@ build-metadata-service:
     - master
   needs:
     - build-java-lib
-  dependencies:
-    - build-java-lib
+  before_script:
+    - mvn -f ./lib/java/dbrepo-core/pom.xml -q clean install $MAVEN_OPTS -DskipTests
   script:
-    - "mvn -f ./dbrepo-metadata-service/pom.xml clean package $MAVEN_OPTS -DskipTests"
+    - "mvn -f ./dbrepo-metadata-service/pom.xml -q clean package $MAVEN_OPTS -DskipTests"
   # Compiled classes are needed for SonarQube in later stages
   artifacts:
     when: always
@@ -200,11 +200,15 @@ build-java-lib:
     - merge_requests
     - master
   script:
-    - "mvn -f ./lib/java/dbrepo-core/pom.xml clean install $MAVEN_OPTS -DskipTests"
+    - "mvn -f ./lib/java/dbrepo-core/pom.xml clean package install $MAVEN_OPTS -DskipTests"
+    - "mvn deploy:deploy-file $MAVEN_OPTS -Dfile=./lib/java/dbrepo-core/target/dbrepo-core-$APP_VERSION.jar -DgroupId=at.ac.tuwien.ifs.dbrepo -DartifactId=dbrepo-core -Dversion=$APP_VERSION -Dpackaging=jar -Durl=file:./dbrepo-data-service/lib/ -DrepositoryId=maven-repository -DupdateReleaseInfo=true"
+    - "mvn deploy:deploy-file $MAVEN_OPTS -Dfile=./lib/java/dbrepo-core/target/dbrepo-core-$APP_VERSION.jar -DgroupId=at.ac.tuwien.ifs.dbrepo -DartifactId=dbrepo-core -Dversion=$APP_VERSION -Dpackaging=jar -Durl=file:./dbrepo-metadata-service/lib/ -DrepositoryId=maven-repository -DupdateReleaseInfo=true"
   artifacts:
     when: always
     paths:
       - ./lib/java/dbrepo-core/target/classes
+      - ./dbrepo-data-service/lib
+      - ./dbrepo-metadata-service/lib
 
 build-data-service:
   image: maven:3-openjdk-${JAVA_VERSION}
@@ -216,8 +220,10 @@ build-data-service:
     - build-java-lib
   dependencies:
     - build-java-lib
+  before_script:
+    - mvn -f ./lib/java/dbrepo-core/pom.xml -q clean install $MAVEN_OPTS -DskipTests
   script:
-    - "mvn -f ./dbrepo-data-service/pom.xml clean package $MAVEN_OPTS -DskipTests"
+    - "mvn -f ./dbrepo-data-service/pom.xml -q clean package $MAVEN_OPTS -DskipTests"
   # Compiled classes are needed for SonarQube in later stages
   artifacts:
     when: always
@@ -264,14 +270,13 @@ build-images:
   only:
     - merge_requests
     - master
+  variables:
+    DOCKER_BUILDKIT: 1
   before_script:
-    - "apk add --no-cache make"
+    - "apk add --no-cache make maven openjdk17-jdk"
     - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL
   script:
-    - docker build --network=host -t dbrepo-core:build --target build ./lib/java/dbrepo-core
-    - docker build --network=host -t dbrepo-data-service:build --target build dbrepo-data-service
-    - docker build --network=host -t dbrepo-metadata-service:build --target build dbrepo-metadata-service
-    - docker compose build -q --parallel
+    - make build-images
 
 build-helm:
   image: docker.io/docker:${DOCKER_VERSION}-dind
@@ -295,6 +300,7 @@ test-metadata-service:
     - master
   needs:
     - build-java-lib
+    - build-metadata-service
   dependencies:
     - build-java-lib
   script:
@@ -317,11 +323,11 @@ test-data-service:
     - merge_requests
     - master
   needs:
+    - build-java-lib
     - build-data-service
   dependencies:
-    - build-data-service
+    - build-java-lib
   script:
-    - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -DskipTests $MAVEN_OPTS"
     - "mvn -f ./dbrepo-data-service/pom.xml clean test verify $MAVEN_OPTS"
     - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'"
   artifacts:
diff --git a/dbrepo-analyse-service/Dockerfile b/dbrepo-analyse-service/Dockerfile
index 26ea3ce65c..df313ec934 100644
--- a/dbrepo-analyse-service/Dockerfile
+++ b/dbrepo-analyse-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk --no-cache add \
diff --git a/dbrepo-auth-service/init/Dockerfile b/dbrepo-auth-service/init/Dockerfile
index b325b35435..bd692732d6 100644
--- a/dbrepo-auth-service/init/Dockerfile
+++ b/dbrepo-auth-service/init/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache alpine-sdk \
diff --git a/dbrepo-auth-service/listeners/pom.xml b/dbrepo-auth-service/listeners/pom.xml
index e70201b96a..d70af41ef9 100644
--- a/dbrepo-auth-service/listeners/pom.xml
+++ b/dbrepo-auth-service/listeners/pom.xml
@@ -10,7 +10,7 @@
         <version>24.0.5</version>
     </parent>
 
-    <groupId>at.tuwien</groupId>
+    <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
     <artifactId>create-event-listener</artifactId>
     <name>dbrepo-auth-service</name>
     <version>24.0.5</version>
diff --git a/dbrepo-dashboard-service/Dockerfile b/dbrepo-dashboard-service/Dockerfile
index e739245d30..62caad802f 100644
--- a/dbrepo-dashboard-service/Dockerfile
+++ b/dbrepo-dashboard-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-dashboard-service/init.Dockerfile b/dbrepo-dashboard-service/init.Dockerfile
index 487e3e280e..4d00c467cd 100644
--- a/dbrepo-dashboard-service/init.Dockerfile
+++ b/dbrepo-dashboard-service/init.Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-dashboard-ui/Dockerfile b/dbrepo-dashboard-ui/Dockerfile
index daf9ef46dd..83683e3926 100644
--- a/dbrepo-dashboard-ui/Dockerfile
+++ b/dbrepo-dashboard-ui/Dockerfile
@@ -1,4 +1,4 @@
-FROM docker.io/bitnami/grafana:11.5.3 AS runtime
+FROM --platform=$BUILDPLATFORM docker.io/bitnami/grafana:11.5.3 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY --chown=grafana:grafana ./grafana.ini ./conf/grafana.ini
diff --git a/dbrepo-data-service/.gitignore b/dbrepo-data-service/.gitignore
index d39a47ee0f..3e5eeee0c8 100644
--- a/dbrepo-data-service/.gitignore
+++ b/dbrepo-data-service/.gitignore
@@ -7,6 +7,9 @@ target/
 ### Environment ###
 .env
 
+### local repo ###
+lib/at/
+
 ### Generated ###
 ready
 mapping.xml
diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile
index 7468f1c568..537f88fe71 100644
--- a/dbrepo-data-service/Dockerfile
+++ b/dbrepo-data-service/Dockerfile
@@ -1,38 +1,37 @@
 ###### FIRST STAGE ######
-FROM dbrepo-core:build AS dependency
-LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
-
-###### SECOND STAGE ######
-FROM maven:3-amazoncorretto-17 AS build
+FROM --platform=$BUILDPLATFORM maven:3-amazoncorretto-17 AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY ./pom.xml ./
 
 RUN mvn -fn dependency:go-offline
 
-COPY --from=dependency /root/.m2/repository/at/ac/tuwien/ifs/dbrepo /root/.m2/repository/at/ac/tuwien/ifs/dbrepo
-
+COPY ./lib ./lib
 COPY ./querystore ./querystore
 COPY ./report ./report
 COPY ./rest-service ./rest-service
 COPY ./services ./services
 
 # Make sure it compiles
-RUN mvn -fn clean package -DskipTests
+RUN mvn -q clean package -DskipTests
 
-###### THIRD STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+###### SECOND STAGE ######
+FROM --platform=$BUILDPLATFORM amazoncorretto:17-alpine3.21 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
-RUN apk add --no-cache curl bash jq
+RUN apk --no-cache add \
+    bash \
+    curl \
+    jq
 
 WORKDIR /app
 
-RUN adduser -D dbrepo --uid 1001
+RUN adduser -D dbrepo --uid 1001 && \
+    chown -R 1001:1001 /app
 
 USER 1001
 
-COPY --from=build --chown=1001 ./rest-service/target/rest-service-*.jar ./data-service.jar
+COPY --from=build --chown=1001 ./rest-service/target/*rest-service-*.jar ./data-service.jar
 
 # non-root port
 EXPOSE 8080
diff --git a/dbrepo-data-service/README.md b/dbrepo-data-service/README.md
index 68c317174d..f15c7ff746 100644
--- a/dbrepo-data-service/README.md
+++ b/dbrepo-data-service/README.md
@@ -1,5 +1,14 @@
 # Data Service
 
+## Build
+
+Before testing, it is recommended to (re-)build the `MapStruct` mappers in case they were modified using the `package`
+target:
+
+```shell
+mvn clean package
+```
+
 ## Test
 
 Run all unit and integration tests and create an HTML+TXT coverage report located in the `report` module:
diff --git a/dbrepo-data-service/lib/.gitkeep b/dbrepo-data-service/lib/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml
index 6f67e74b70..4593cb0ae5 100644
--- a/dbrepo-data-service/pom.xml
+++ b/dbrepo-data-service/pom.xml
@@ -13,9 +13,9 @@
         <url>https://www.tuwien.ac.at</url>
     </organization>
 
-    <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-    <artifactId>dbrepo-data-service</artifactId>
-    <name>dbrepo-data-service</name>
+    <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+    <artifactId>data-service</artifactId>
+    <name>data-service</name>
     <version>1.8.1</version>
 
     <description>Service that manages the data</description>
@@ -96,11 +96,7 @@
         <dependency>
             <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
             <artifactId>dbrepo-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
+            <version>1.8.1</version>
         </dependency>
         <!-- Spark -->
         <dependency>
@@ -140,6 +136,13 @@
             <artifactId>hadoop-aws</artifactId>
             <version>${hadoop.version}</version>
         </dependency>
+        <!-- Api -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+            <scope>provided</scope>
+        </dependency>
         <!-- Data Source -->
         <dependency>
             <groupId>org.mariadb.jdbc</groupId>
@@ -330,6 +333,16 @@
         </plugins>
     </build>
 
+    <repositories>
+        <repository>
+            <id>dbrepo-maven-repo</id>
+            <url>file:///${project.basedir}/lib</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
     <licenses>
         <license>
             <name>Apache-2.0</name>
diff --git a/dbrepo-data-service/querystore/pom.xml b/dbrepo-data-service/querystore/pom.xml
index 5f58c03d52..df7ebf0271 100644
--- a/dbrepo-data-service/querystore/pom.xml
+++ b/dbrepo-data-service/querystore/pom.xml
@@ -4,13 +4,13 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-        <artifactId>dbrepo-data-service</artifactId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>data-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-data-service-querystore</artifactId>
-    <name>dbrepo-data-service-querystore</name>
+    <name>querystore</name>
+    <artifactId>querystore</artifactId>
     <version>1.8.1</version>
 
     <dependencies/>
diff --git a/dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/querystore/Query.java b/dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ifs/dbrepo/querystore/Query.java
similarity index 97%
rename from dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/querystore/Query.java
rename to dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ifs/dbrepo/querystore/Query.java
index 15b96d5739..d6432a40a7 100644
--- a/dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/querystore/Query.java
+++ b/dbrepo-data-service/querystore/src/main/java/at/ac/tuwien/ifs/dbrepo/querystore/Query.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.querystore;
+package at.ac.tuwien.ifs.dbrepo.querystore;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml
index 54eb9dae65..31dc7e5dcf 100644
--- a/dbrepo-data-service/report/pom.xml
+++ b/dbrepo-data-service/report/pom.xml
@@ -4,14 +4,15 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-        <artifactId>dbrepo-data-service</artifactId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>data-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
+    <name>report</name>
     <artifactId>report</artifactId>
-    <name>dbrepo-data-service-report</name>
     <version>1.8.1</version>
+
     <description>
         This module is only intended for the pipeline coverage report. See the detailed report in the
         respective modules
@@ -19,14 +20,14 @@
 
     <dependencies>
         <dependency>
-            <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
             <artifactId>rest-service</artifactId>
-            <version>${project.version}</version>
+            <version>1.8.1</version>
         </dependency>
         <dependency>
-            <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
             <artifactId>services</artifactId>
-            <version>${project.version}</version>
+            <version>1.8.1</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-data-service/rest-service/pom.xml b/dbrepo-data-service/rest-service/pom.xml
index a51ca94244..ab400a68ed 100644
--- a/dbrepo-data-service/rest-service/pom.xml
+++ b/dbrepo-data-service/rest-service/pom.xml
@@ -4,18 +4,18 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-        <artifactId>dbrepo-data-service</artifactId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>data-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
+    <name>rest-service</name>
     <artifactId>rest-service</artifactId>
-    <name>dbrepo-data-service-rest-service</name>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
-            <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
             <artifactId>services</artifactId>
             <version>1.8.1</version>
         </dependency>
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/DataServiceApplication.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/DataServiceApplication.java
similarity index 91%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/DataServiceApplication.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/DataServiceApplication.java
index 8430543899..612a4ff483 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/DataServiceApplication.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/DataServiceApplication.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo;
+package at.ac.tuwien.ifs.dbrepo;
 
 import lombok.extern.log4j.Log4j2;
 import org.springframework.boot.SpringApplication;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SwaggerConfig.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SwaggerConfig.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SwaggerConfig.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SwaggerConfig.java
index 176f3449ee..7c1ce104da 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SwaggerConfig.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SwaggerConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import io.swagger.v3.oas.models.ExternalDocumentation;
 import io.swagger.v3.oas.models.OpenAPI;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/AccessEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/AccessEndpoint.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/AccessEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/AccessEndpoint.java
index 10961b4359..70b3e59616 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/AccessEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/AccessEndpoint.java
@@ -1,12 +1,12 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.CreateAccessDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.AccessService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.AccessService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/DatabaseEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/DatabaseEndpoint.java
similarity index 88%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/DatabaseEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/DatabaseEndpoint.java
index 8ddaf80c10..34f42725c0 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/DatabaseEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/DatabaseEndpoint.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
@@ -7,11 +7,11 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.internal.CreateDatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.internal.UpdateUserPasswordDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.AccessService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.ContainerService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
+import at.ac.tuwien.ifs.dbrepo.service.AccessService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.ContainerService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -36,18 +36,18 @@ import java.util.UUID;
 @RequestMapping(path = "/api/database")
 public class DatabaseEndpoint extends RestEndpoint {
 
+    private final DataMapper dataMapper;
     private final CacheService cacheService;
     private final AccessService accessService;
-    private final MetadataMapper metadataMapper;
     private final DatabaseService databaseService;
     private final ContainerService containerService;
 
     @Autowired
-    public DatabaseEndpoint(CacheService cacheService, AccessService accessService, DatabaseService databaseService,
-                            ContainerService containerService, MetadataMapper metadataMapper) {
+    public DatabaseEndpoint(DataMapper dataMapper, CacheService cacheService, AccessService accessService,
+                            DatabaseService databaseService, ContainerService containerService) {
+        this.dataMapper = dataMapper;
         this.cacheService = cacheService;
         this.accessService = accessService;
-        this.metadataMapper = metadataMapper;
         this.databaseService = databaseService;
         this.containerService = containerService;
     }
@@ -93,8 +93,8 @@ public class DatabaseEndpoint extends RestEndpoint {
         try {
             final DatabaseDto database = containerService.createDatabase(container, data);
             containerService.createQueryStore(container, data.getInternalName());
-            accessService.create(database, metadataMapper.createDatabaseDtoToPrivilegedUserDto(data), AccessTypeDto.WRITE_ALL);
-            accessService.create(database, metadataMapper.createDatabaseDtoToReadonlyUserDto(data), AccessTypeDto.READ);
+            accessService.create(database, dataMapper.createDatabaseDtoToPrivilegedUserDto(data), AccessTypeDto.WRITE_ALL);
+            accessService.create(database, dataMapper.createDatabaseDtoToReadonlyUserDto(data), AccessTypeDto.READ);
             return ResponseEntity.status(HttpStatus.CREATED)
                     .body(database);
         } catch (SQLException e) {
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/RestEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/RestEndpoint.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/RestEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/RestEndpoint.java
index 778d38f30f..c8f1e8db6b 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/RestEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/RestEndpoint.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDetailsDto;
 import org.apache.spark.sql.Dataset;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/SubsetEndpoint.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/SubsetEndpoint.java
index a66f6f22d9..8c3656b0cd 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/SubsetEndpoint.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
@@ -9,13 +9,13 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryPersistDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.SubsetDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.StorageService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.validation.EndpointValidator;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.StorageService;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.validation.EndpointValidator;
 import io.micrometer.observation.annotation.Observed;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.headers.Header;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/TableEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/TableEndpoint.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/TableEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/TableEndpoint.java
index ad401670f2..8ea36ff682 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/TableEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/TableEndpoint.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -9,10 +9,10 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.internal.TableCreateDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.validation.EndpointValidator;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.*;
+import at.ac.tuwien.ifs.dbrepo.validation.EndpointValidator;
 import io.micrometer.observation.annotation.Observed;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.headers.Header;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/UploadEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/UploadEndpoint.java
similarity index 96%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/UploadEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/UploadEndpoint.java
index 83e2b875d5..b7a88fc3f7 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/UploadEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/UploadEndpoint.java
@@ -1,10 +1,10 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.file.UploadResponseDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.StorageService;
+import at.ac.tuwien.ifs.dbrepo.service.StorageService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/ViewEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/ViewEndpoint.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/ViewEndpoint.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/ViewEndpoint.java
index 09e971a205..b589d66a06 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/ViewEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/endpoints/ViewEndpoint.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoints;
+package at.ac.tuwien.ifs.dbrepo.endpoints;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.CreateViewDto;
@@ -8,9 +8,9 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableStatisticDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.validation.EndpointValidator;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.*;
+import at.ac.tuwien.ifs.dbrepo.validation.EndpointValidator;
 import io.micrometer.observation.annotation.Observed;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.headers.Header;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandler.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandler.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandler.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandler.java
index 012123f671..6aea3e8782 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandler.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandler.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.handlers;
+package at.ac.tuwien.ifs.dbrepo.handlers;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidator.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidator.java
similarity index 96%
rename from dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidator.java
rename to dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidator.java
index d505a8d36e..009c3b0b3f 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidator.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidator.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.validation;
+package at.ac.tuwien.ifs.dbrepo.validation;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -6,9 +6,9 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.FilterDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.FilterTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.SubsetDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.RestEndpoint;
+import at.ac.tuwien.ifs.dbrepo.endpoints.RestEndpoint;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
diff --git a/dbrepo-data-service/rest-service/src/main/resources/application.yml b/dbrepo-data-service/rest-service/src/main/resources/application.yml
index 41d23f4c7f..d8dec2e455 100644
--- a/dbrepo-data-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-data-service/rest-service/src/main/resources/application.yml
@@ -51,7 +51,7 @@ logging:
   pattern.console: "%d %highlight(%-5level) %msg%n"
   level:
     root: warn
-    at.ac.tuwien.ac.at.ifs.dbrepo.: "${LOG_LEVEL:info}"
+    at.ac.tuwien.ifs.dbrepo.: "${LOG_LEVEL:info}"
     org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug
 dbrepo:
   endpoints:
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbConfig.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbConfig.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbConfig.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbConfig.java
index af4f12dc84..eed50bf5fb 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbConfig.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbContainerConfig.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbContainerConfig.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbContainerConfig.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbContainerConfig.java
index 215d0aa146..6a6fbc7476 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariaDbContainerConfig.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariaDbContainerConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariadbConfigTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariadbConfigTest.java
similarity index 94%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariadbConfigTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariadbConfigTest.java
index 4068421d4f..eee4b27b44 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MariadbConfigTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/config/MariadbConfigTest.java
@@ -1,6 +1,6 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java
index 99d01e5db0..a634c2b452 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/AccessEndpointUnitTest.java
@@ -1,13 +1,13 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoint;
+package at.ac.tuwien.ifs.dbrepo.endpoint;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.AccessEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.AccessService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.endpoints.AccessEndpoint;
+import at.ac.tuwien.ifs.dbrepo.service.AccessService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java
similarity index 96%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java
index 1ced03dff9..01a575b460 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/DatabaseEndpointUnitTest.java
@@ -1,15 +1,15 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoint;
+package at.ac.tuwien.ifs.dbrepo.endpoint;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.DatabaseEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.AccessService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.ContainerService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.endpoints.DatabaseEndpoint;
+import at.ac.tuwien.ifs.dbrepo.service.AccessService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.ContainerService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java
index e6f5235539..023ed55471 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoint;
+package at.ac.tuwien.ifs.dbrepo.endpoint;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto;
@@ -6,12 +6,12 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryPersistDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.SubsetDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.SubsetEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.StorageService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.endpoints.SubsetEndpoint;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.StorageService;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.Dataset;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/TableEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/TableEndpointUnitTest.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/TableEndpointUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/TableEndpointUnitTest.java
index 74fa52e20e..8bfd1c527f 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/TableEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/TableEndpointUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoint;
+package at.ac.tuwien.ifs.dbrepo.endpoint;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -8,12 +8,12 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.*;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.internal.TableCreateDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.TableEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.TableService;
+import at.ac.tuwien.ifs.dbrepo.endpoints.TableEndpoint;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.service.TableService;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.Dataset;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java
index e8e1f2f461..9e0b1c4454 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/endpoint/ViewEndpointUnitTest.java
@@ -1,14 +1,14 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.endpoint;
+package at.ac.tuwien.ifs.dbrepo.endpoint;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.ViewEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.ViewService;
+import at.ac.tuwien.ifs.dbrepo.endpoints.ViewEndpoint;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.service.ViewService;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.Dataset;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/InterceptorUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/InterceptorUnitTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/InterceptorUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/InterceptorUnitTest.java
index fefc38887a..b56888551b 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/InterceptorUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/InterceptorUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway;
+package at.ac.tuwien.ifs.dbrepo.gateway;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java
index b7b8d29337..60860315ed 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGatewayUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway;
+package at.ac.tuwien.ifs.dbrepo.gateway;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java
index a576c566d0..ede6492560 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/handlers/ApiExceptionHandlerTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.handlers;
+package at.ac.tuwien.ifs.dbrepo.handlers;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java
similarity index 90%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java
index a9eaa533fe..dcb0af3d66 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerIntegrationTest.java
@@ -1,13 +1,13 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.listener;
+package at.ac.tuwien.ifs.dbrepo.listener;
 
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseNotFoundException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MetadataServiceException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.RemoteUnavailableException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.TableNotFoundException;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -28,7 +28,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
 import java.sql.SQLException;
 import java.util.HashMap;
 
-import static at.ac.tuwien.ac.at.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
+import static at.ac.tuwien.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.when;
 
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerUnitTest.java
similarity index 93%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerUnitTest.java
index d65af08386..8b0eedcebe 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListenerUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListenerUnitTest.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.listener;
+package at.ac.tuwien.ifs.dbrepo.listener;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -19,7 +19,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
 
 import java.util.HashMap;
 
-import static at.ac.tuwien.ac.at.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
+import static at.ac.tuwien.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.doThrow;
 
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java
index f7afcd67ea..b85c3935ff 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapperUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mapper;
+package at.ac.tuwien.ifs.dbrepo.mapper;
 
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java
index 41cdce04d6..7d8c74437a 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/ActuatorEndpointMvcTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mvc;
+package at.ac.tuwien.ifs.dbrepo.mvc;
 
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java
index 6c2e84044b..102b50fe74 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/OpenApiEndpointMvcTest.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mvc;
+package at.ac.tuwien.ifs.dbrepo.mvc;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.error.ApiErrorDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.*;
+import at.ac.tuwien.ifs.dbrepo.endpoints.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java
similarity index 94%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java
index 6f0e20b900..956e09e7d6 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/PrometheusEndpointMvcTest.java
@@ -1,15 +1,15 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mvc;
+package at.ac.tuwien.ifs.dbrepo.mvc;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.ImportDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryPersistDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TupleDeleteDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TupleDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TupleUpdateDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MetricsConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.SubsetEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.TableEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.endpoints.ViewEndpoint;
-import at.ac.tuwien.ac.at.ifs.dbrepo.listener.DefaultListener;
+import at.ac.tuwien.ifs.dbrepo.config.MetricsConfig;
+import at.ac.tuwien.ifs.dbrepo.endpoints.SubsetEndpoint;
+import at.ac.tuwien.ifs.dbrepo.endpoints.TableEndpoint;
+import at.ac.tuwien.ifs.dbrepo.endpoints.ViewEndpoint;
+import at.ac.tuwien.ifs.dbrepo.listener.DefaultListener;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import io.micrometer.observation.tck.TestObservationRegistry;
 import jakarta.servlet.http.HttpServletRequest;
@@ -30,7 +30,7 @@ import org.springframework.test.web.servlet.MockMvc;
 import java.util.HashMap;
 import java.util.List;
 
-import static at.ac.tuwien.ac.at.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
+import static at.ac.tuwien.ifs.dbrepo.utils.RabbitMqUtils.buildMessage;
 import static io.micrometer.observation.tck.TestObservationRegistryAssert.assertThat;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java
similarity index 93%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java
index 42c5360485..593954df95 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/mvc/SubsetEndpointMvcTest.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mvc;
+package at.ac.tuwien.ifs.dbrepo.mvc;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/AccessServiceIntegrationTest.java
similarity index 96%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/AccessServiceIntegrationTest.java
index 8f4e3af034..0834d8a34c 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/AccessServiceIntegrationTest.java
@@ -1,8 +1,8 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseMalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ContainerServiceIntegrationTest.java
similarity index 95%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ContainerServiceIntegrationTest.java
index 281002e157..24f8be45f5 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ContainerServiceIntegrationTest.java
@@ -1,8 +1,8 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseMalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.QueryStoreCreateException;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialServiceUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/CredentialServiceUnitTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialServiceUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/CredentialServiceUnitTest.java
index 885a8f4de9..febf388d59 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialServiceUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/CredentialServiceUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -7,8 +7,8 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.impl.CacheServiceImpl;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.impl.CacheServiceImpl;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java
similarity index 99%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java
index b2648eda53..db1b29a29e 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseServiceIntegrationTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
@@ -16,8 +16,8 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.unique.Unique
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.internal.TableCreateDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.internal.UpdateUserPasswordDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/QueueServiceIntegrationTest.java
similarity index 91%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/QueueServiceIntegrationTest.java
index 3ffe3a8821..99e3f77f80 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/QueueServiceIntegrationTest.java
@@ -1,13 +1,13 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseNotFoundException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MetadataServiceException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.RemoteUnavailableException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.TableNotFoundException;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.impl.QueueServiceRabbitMqImpl;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.impl.QueueServiceRabbitMqImpl;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/StorageServiceIntegrationTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/StorageServiceIntegrationTest.java
index 1ebd52e3b8..4f1c6efe40 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/StorageServiceIntegrationTest.java
@@ -1,6 +1,6 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.S3Config;
+import at.ac.tuwien.ifs.dbrepo.config.S3Config;
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.StorageNotFoundException;
@@ -28,11 +28,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.testcontainers.containers.MinIOContainer;
 import org.testcontainers.junit.jupiter.Container;
 import org.testcontainers.junit.jupiter.Testcontainers;
-import software.amazon.awssdk.core.ResponseInputStream;
 import software.amazon.awssdk.core.sync.RequestBody;
 import software.amazon.awssdk.services.s3.S3Client;
 import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
-import software.amazon.awssdk.services.s3.model.GetObjectResponse;
 import software.amazon.awssdk.services.s3.model.PutObjectRequest;
 
 import java.io.*;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/SubsetServiceIntegrationTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/SubsetServiceIntegrationTest.java
index 0e1f9c4f42..abc992bf4b 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/SubsetServiceIntegrationTest.java
@@ -1,11 +1,11 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.*;
 import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.Dataset;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/TableServiceIntegrationTest.java
similarity index 98%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/TableServiceIntegrationTest.java
index 2dc7fd8bca..8029dc3081 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/TableServiceIntegrationTest.java
@@ -1,11 +1,11 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.ImportDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.*;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnStatisticDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.S3Config;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.S3Config;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import com.google.common.io.Files;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ViewServiceIntegrationTest.java
similarity index 89%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewServiceIntegrationTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ViewServiceIntegrationTest.java
index 86152366f8..55776ac711 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/service/ViewServiceIntegrationTest.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbConfig;
+import at.ac.tuwien.ifs.dbrepo.config.MariaDbContainerConfig;
 import at.ac.tuwien.ifs.dbrepo.core.exception.ViewMalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/FileUtils.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/FileUtils.java
similarity index 84%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/FileUtils.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/FileUtils.java
index e105d6839d..2642b56b96 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/FileUtils.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/FileUtils.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.utils;
+package at.ac.tuwien.ifs.dbrepo.utils;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtilTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtilTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtilTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtilTest.java
index 8a5dcd8ca7..6880f744d5 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtilTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtilTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.utils;
+package at.ac.tuwien.ifs.dbrepo.utils;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnTypeDto;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/RabbitMqUtils.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/RabbitMqUtils.java
similarity index 92%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/RabbitMqUtils.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/RabbitMqUtils.java
index f7a9b615c4..a85d61b8b3 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/RabbitMqUtils.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/utils/RabbitMqUtils.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.utils;
+package at.ac.tuwien.ifs.dbrepo.utils;
 
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.core.MessageProperties;
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidatorUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidatorUnitTest.java
similarity index 97%
rename from dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidatorUnitTest.java
rename to dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidatorUnitTest.java
index fba1ee837d..f63c7618bc 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/validation/EndpointValidatorUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ifs/dbrepo/validation/EndpointValidatorUnitTest.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.validation;
+package at.ac.tuwien.ifs.dbrepo.validation;
 
 import at.ac.tuwien.ifs.dbrepo.core.exception.PaginationException;
 import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest;
diff --git a/dbrepo-data-service/rest-service/src/test/resources/application.properties b/dbrepo-data-service/rest-service/src/test/resources/application.properties
index 8f658cab55..5086a6175b 100644
--- a/dbrepo-data-service/rest-service/src/test/resources/application.properties
+++ b/dbrepo-data-service/rest-service/src/test/resources/application.properties
@@ -24,7 +24,7 @@ spring.sql.init.schema-locations=classpath*:init/schema.sql
 spring.jpa.hibernate.ddl-auto=create
 
 # log
-logging.level.at.ac.tuwien.ac.at.ifs.dbrepo.=trace
+logging.level.at.ac.tuwien.ifs.dbrepo.=trace
 
 # rabbitmq
 spring.rabbitmq.host=localhost
diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml
index 8d8d0a8edb..c423837f37 100644
--- a/dbrepo-data-service/services/pom.xml
+++ b/dbrepo-data-service/services/pom.xml
@@ -4,19 +4,19 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-        <artifactId>dbrepo-data-service</artifactId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>data-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
+    <name>services</name>
     <artifactId>services</artifactId>
-    <name>dbrepo-data-service-services</name>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
-            <groupId>at.ac.tuwien.ac.at.ifs.dbrepo</groupId>
-            <artifactId>dbrepo-data-service-querystore</artifactId>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+            <artifactId>querystore</artifactId>
             <version>1.8.1</version>
         </dependency>
     </dependencies>
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MetadataMapper.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MetadataMapper.java
deleted file mode 100644
index b5cd8286cd..0000000000
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MetadataMapper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mapper;
-
-import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.container.image.ImageDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseBriefDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewColumnDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.internal.CreateDatabaseDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableBriefDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.user.UserBriefDto;
-import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
-import org.keycloak.representations.AccessTokenResponse;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.Mappings;
-
-import java.util.UUID;
-
-@Mapper(componentModel = "spring", imports = {DatabaseDto.class, ContainerDto.class, ImageDto.class})
-public interface MetadataMapper {
-
-    org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MetadataMapper.class);
-
-    ContainerDto containerDtoToContainerDto(ContainerDto data);
-
-    @Mappings({
-            @Mapping(target = "id", source = "userId"),
-            @Mapping(target = "username", source = "privilegedUsername"),
-            @Mapping(target = "password", source = "privilegedPassword"),
-    })
-    UserDto createDatabaseDtoToPrivilegedUserDto(CreateDatabaseDto data);
-
-    @Mappings({
-            @Mapping(target = "username", source = "readonlyUsername"),
-            @Mapping(target = "password", source = "readonlyPassword"),
-    })
-    UserDto createDatabaseDtoToReadonlyUserDto(CreateDatabaseDto data);
-
-    DatabaseBriefDto databaseDtoToDatabaseBriefDto(DatabaseDto data);
-
-    ColumnDto viewColumnDtoToColumnDto(ViewColumnDto data);
-
-    ViewColumnDto columnDtoToViewColumnDto(ColumnDto data);
-
-    TableDto tableDtoToTableDto(TableDto data);
-
-    ViewDto viewDtoToViewDto(ViewDto data);
-
-    ContainerDto ContainerDtoToContainerDto(ContainerDto data);
-
-    UserDto userDtoToUserDto(UserDto data);
-
-    @Mappings({
-            @Mapping(target = "accessToken", source = "token")
-    })
-    TokenDto accessTokenResponseToTokenDto(AccessTokenResponse data);
-
-    UserBriefDto userDtoToUserBriefDto(UserDto data);
-
-    TableBriefDto tableDtoToTableBriefDto(TableDto data);
-
-    IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data);
-
-    default String metricToUri(String baseUrl, UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) {
-        final StringBuilder uri = new StringBuilder(baseUrl)
-                .append("/database/")
-                .append(databaseId);
-        if (tableId != null) {
-            uri.append("/table/")
-                    .append(tableId);
-        } else if (subsetId != null) {
-            uri.append("/subset/")
-                    .append(subsetId);
-        } else if (viewId != null) {
-            uri.append("/view/")
-                    .append(viewId);
-        }
-        log.trace("count uri: {}", uri);
-        return uri.toString();
-    }
-
-}
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/AuthTokenFilter.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/AuthTokenFilter.java
similarity index 99%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/AuthTokenFilter.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/AuthTokenFilter.java
index 2073c384e8..1e748a391b 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/AuthTokenFilter.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/AuthTokenFilter.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.auth;
+package at.ac.tuwien.ifs.dbrepo.auth;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.auth.RealmAccessDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDetailsDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/BasicAuthenticationProvider.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/BasicAuthenticationProvider.java
similarity index 93%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/BasicAuthenticationProvider.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/BasicAuthenticationProvider.java
index b1811dfbf6..5ab64107cd 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/BasicAuthenticationProvider.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/BasicAuthenticationProvider.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.auth;
+package at.ac.tuwien.ifs.dbrepo.auth;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CredentialService;
+import at.ac.tuwien.ifs.dbrepo.service.CredentialService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/InternalRequestInterceptor.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/InternalRequestInterceptor.java
similarity index 90%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/InternalRequestInterceptor.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/InternalRequestInterceptor.java
index 07cf01cc6f..09076f95b9 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/auth/InternalRequestInterceptor.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/auth/InternalRequestInterceptor.java
@@ -1,8 +1,8 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.auth;
+package at.ac.tuwien.ifs.dbrepo.auth;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.GatewayConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CredentialService;
+import at.ac.tuwien.ifs.dbrepo.config.GatewayConfig;
+import at.ac.tuwien.ifs.dbrepo.service.CredentialService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/CacheConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/CacheConfig.java
similarity index 97%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/CacheConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/CacheConfig.java
index 0c8120565a..a40030b8b4 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/CacheConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/CacheConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/GatewayConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/GatewayConfig.java
similarity index 88%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/GatewayConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/GatewayConfig.java
index 09e9a249ff..12bd674a50 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/GatewayConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/GatewayConfig.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.auth.InternalRequestInterceptor;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CredentialService;
+import at.ac.tuwien.ifs.dbrepo.auth.InternalRequestInterceptor;
+import at.ac.tuwien.ifs.dbrepo.service.CredentialService;
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/JacksonConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/JacksonConfig.java
similarity index 95%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/JacksonConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/JacksonConfig.java
index b3e0c0a966..567d223eb3 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/JacksonConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/JacksonConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/KeycloakConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/KeycloakConfig.java
similarity index 95%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/KeycloakConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/KeycloakConfig.java
index 3d006a3665..36077309f8 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/KeycloakConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/KeycloakConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import lombok.Getter;
 import org.keycloak.admin.client.Keycloak;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MetricsConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/MetricsConfig.java
similarity index 92%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MetricsConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/MetricsConfig.java
index 32774b8c16..4be6cd10e6 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/MetricsConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/MetricsConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import io.micrometer.observation.ObservationRegistry;
 import io.micrometer.observation.aop.ObservedAspect;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/QueryConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/QueryConfig.java
similarity index 94%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/QueryConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/QueryConfig.java
index 3b5541d741..eed47bdf46 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/QueryConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/QueryConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/RabbitConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/RabbitConfig.java
similarity index 95%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/RabbitConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/RabbitConfig.java
index 2ea4260c33..347aca691a 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/RabbitConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/RabbitConfig.java
@@ -1,6 +1,6 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.listener.DefaultListener;
+import at.ac.tuwien.ifs.dbrepo.listener.DefaultListener;
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.amqp.rabbit.connection.ConnectionFactory;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/S3Config.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/S3Config.java
similarity index 96%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/S3Config.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/S3Config.java
index c9f8a5d49b..e9d1aa41a9 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/S3Config.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/S3Config.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SparkConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SparkConfig.java
similarity index 97%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SparkConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SparkConfig.java
index 223df5b1c0..fe9421f2d0 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/SparkConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/SparkConfig.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/WebSecurityConfig.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/WebSecurityConfig.java
similarity index 94%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/WebSecurityConfig.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/WebSecurityConfig.java
index a834ed2d80..432326ff78 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/config/WebSecurityConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/config/WebSecurityConfig.java
@@ -1,8 +1,8 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.config;
+package at.ac.tuwien.ifs.dbrepo.config;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.auth.AuthTokenFilter;
-import at.ac.tuwien.ac.at.ifs.dbrepo.auth.BasicAuthenticationProvider;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CredentialService;
+import at.ac.tuwien.ifs.dbrepo.auth.AuthTokenFilter;
+import at.ac.tuwien.ifs.dbrepo.auth.BasicAuthenticationProvider;
+import at.ac.tuwien.ifs.dbrepo.service.CredentialService;
 import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
 import io.swagger.v3.oas.annotations.security.SecurityScheme;
 import jakarta.servlet.http.HttpServletResponse;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/KeycloakGateway.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/KeycloakGateway.java
similarity index 85%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/KeycloakGateway.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/KeycloakGateway.java
index 0577b6a5a9..3d46ddfd91 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/KeycloakGateway.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/KeycloakGateway.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway;
+package at.ac.tuwien.ifs.dbrepo.gateway;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
 import org.springframework.security.authentication.BadCredentialsException;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGateway.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGateway.java
similarity index 99%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGateway.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGateway.java
index 01634718c7..c2f901c3cb 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/MetadataServiceGateway.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/MetadataServiceGateway.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway;
+package at.ac.tuwien.ifs.dbrepo.gateway;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java
similarity index 77%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java
index e3a439a376..b5b6235511 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/KeycloakGatewayImpl.java
@@ -1,9 +1,9 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway.impl;
+package at.ac.tuwien.ifs.dbrepo.gateway.impl;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.KeycloakConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.KeycloakGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
+import at.ac.tuwien.ifs.dbrepo.config.KeycloakConfig;
+import at.ac.tuwien.ifs.dbrepo.gateway.KeycloakGateway;
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
 import jakarta.ws.rs.NotAuthorizedException;
 import lombok.extern.log4j.Log4j2;
 import org.keycloak.OAuth2Constants;
@@ -17,13 +17,13 @@ import org.springframework.stereotype.Service;
 @Service
 public class KeycloakGatewayImpl implements KeycloakGateway {
 
+    private final DataMapper dataMapper;
     private final KeycloakConfig keycloakConfig;
-    private final MetadataMapper metadataMapper;
 
     @Autowired
-    public KeycloakGatewayImpl(KeycloakConfig keycloakConfig, MetadataMapper metadataMapper) {
+    public KeycloakGatewayImpl(DataMapper dataMapper, KeycloakConfig keycloakConfig) {
+        this.dataMapper = dataMapper;
         this.keycloakConfig = keycloakConfig;
-        this.metadataMapper = metadataMapper;
     }
 
     @Override
@@ -40,7 +40,7 @@ public class KeycloakGatewayImpl implements KeycloakGateway {
                 .username(username)
                 .password(password)
                 .build()) {
-            return metadataMapper.accessTokenResponseToTokenDto(userKeycloak.tokenManager()
+            return dataMapper.accessTokenResponseToTokenDto(userKeycloak.tokenManager()
                     .getAccessToken());
         } catch (NotAuthorizedException e) {
             log.error("Failed to obtain user token: {}", e.getMessage());
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java
similarity index 95%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java
index 292b5bba4a..7175151c10 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/gateway/impl/MetadataServiceGatewayImpl.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.gateway.impl;
+package at.ac.tuwien.ifs.dbrepo.gateway.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -8,9 +8,9 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.GatewayConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
+import at.ac.tuwien.ifs.dbrepo.config.GatewayConfig;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
 import jakarta.validation.constraints.NotNull;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,16 +31,16 @@ import java.util.UUID;
 @Service
 public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
 
-    private final RestTemplate internalRestTemplate;
+    private final DataMapper dataMapper;
     private final GatewayConfig gatewayConfig;
-    private final MetadataMapper metadataMapper;
+    private final RestTemplate internalRestTemplate;
 
     @Autowired
-    public MetadataServiceGatewayImpl(@Qualifier("internalRestTemplate") RestTemplate internalRestTemplate,
-                                      GatewayConfig gatewayConfig, MetadataMapper metadataMapper) {
-        this.internalRestTemplate = internalRestTemplate;
+    public MetadataServiceGatewayImpl(DataMapper dataMapper, GatewayConfig gatewayConfig,
+                                      @Qualifier("internalRestTemplate") RestTemplate internalRestTemplate) {
+        this.dataMapper = dataMapper;
         this.gatewayConfig = gatewayConfig;
-        this.metadataMapper = metadataMapper;
+        this.internalRestTemplate = internalRestTemplate;
     }
 
     @Override
@@ -74,7 +74,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find container with id {}: body is empty", containerId);
             throw new MetadataServiceException("Failed to find container with id " + containerId + ": body is empty");
         }
-        final ContainerDto container = metadataMapper.containerDtoToContainerDto(response.getBody());
+        final ContainerDto container = dataMapper.containerDtoToContainerDto(response.getBody());
         container.setHost(response.getHeaders().get("X-Host").get(0));
         container.setPort(Integer.parseInt(response.getHeaders().get("X-Port").get(0)));
         container.setUsername(response.getHeaders().get("X-Username").get(0));
@@ -147,7 +147,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find table with id {}: body is empty", id);
             throw new MetadataServiceException("Failed to find table with id " + id + ": body is empty");
         }
-        final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody());
+        final TableDto table = dataMapper.tableDtoToTableDto(response.getBody());
         table.setLastRetrieved(Instant.now());
         return table;
     }
@@ -175,7 +175,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find view with id {}: body is empty", id);
             throw new MetadataServiceException("Failed to find view with id " + id + ": body is empty");
         }
-        final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody());
+        final ViewDto view = dataMapper.viewDtoToViewDto(response.getBody());
         view.setLastRetrieved(Instant.now());
         return view;
     }
@@ -210,7 +210,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find user with id {}: body is empty", userId);
             throw new MetadataServiceException("Failed to find user with id " + userId + ": body is empty");
         }
-        final UserDto user = metadataMapper.userDtoToUserDto(response.getBody());
+        final UserDto user = dataMapper.userDtoToUserDto(response.getBody());
         user.setUsername(response.getHeaders().get("X-Username").get(0));
         user.setPassword(response.getHeaders().get("X-Password").get(0));
         user.setLastRetrieved(Instant.now());
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListener.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListener.java
similarity index 95%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListener.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListener.java
index 59e34fbe65..436cadc3d3 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/listener/DefaultListener.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/listener/DefaultListener.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.listener;
+package at.ac.tuwien.ifs.dbrepo.listener;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
@@ -6,8 +6,8 @@ import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseNotFoundException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MetadataServiceException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.RemoteUnavailableException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.TableNotFoundException;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.QueueService;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.QueueService;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import io.micrometer.observation.annotation.Observed;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/DataMapper.java
similarity index 89%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/DataMapper.java
index 5408f338b2..ddf7f9a882 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/DataMapper.java
@@ -1,8 +1,11 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mapper;
+package at.ac.tuwien.ifs.dbrepo.mapper;
 
+import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseBriefDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.database.internal.CreateDatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.*;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.*;
@@ -13,12 +16,19 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.foreign.Forei
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.foreign.ReferenceTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.primary.PrimaryKeyDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.unique.UniqueDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserBriefDto;
+import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.TableNotFoundException;
 import org.apache.hadoop.shaded.com.google.common.hash.Hashing;
 import org.apache.hadoop.shaded.org.apache.commons.io.FileUtils;
 import org.jetbrains.annotations.NotNull;
+import org.keycloak.representations.AccessTokenResponse;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 
 import java.io.File;
 import java.io.IOException;
@@ -42,15 +52,64 @@ public interface DataMapper {
     DateTimeFormatter mariaDbFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss[.SSSSSS]")
             .withZone(ZoneId.of("UTC"));
 
-    /* redundant */
-    ColumnBriefDto columnDtoToColumnBriefDto(ColumnDto data);
+    ContainerDto containerDtoToContainerDto(ContainerDto data);
 
-    /* redundant */
-    TableBriefDto tableDtoToTableBriefDto(TableDto data);
+    @Mappings({
+            @Mapping(target = "id", source = "userId"),
+            @Mapping(target = "username", source = "privilegedUsername"),
+            @Mapping(target = "password", source = "privilegedPassword"),
+    })
+    UserDto createDatabaseDtoToPrivilegedUserDto(CreateDatabaseDto data);
+
+    @Mappings({
+            @Mapping(target = "username", source = "readonlyUsername"),
+            @Mapping(target = "password", source = "readonlyPassword"),
+    })
+    UserDto createDatabaseDtoToReadonlyUserDto(CreateDatabaseDto data);
+
+    DatabaseBriefDto databaseDtoToDatabaseBriefDto(DatabaseDto data);
 
-    /* redundant */
     ColumnDto viewColumnDtoToColumnDto(ViewColumnDto data);
 
+    ViewColumnDto columnDtoToViewColumnDto(ColumnDto data);
+
+    TableDto tableDtoToTableDto(TableDto data);
+
+    ViewDto viewDtoToViewDto(ViewDto data);
+
+    UserDto userDtoToUserDto(UserDto data);
+
+    @Mappings({
+            @Mapping(target = "accessToken", source = "token")
+    })
+    TokenDto accessTokenResponseToTokenDto(AccessTokenResponse data);
+
+    UserBriefDto userDtoToUserBriefDto(UserDto data);
+
+    TableBriefDto tableDtoToTableBriefDto(TableDto data);
+
+    IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data);
+
+    default String metricToUri(String baseUrl, UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) {
+        final StringBuilder uri = new StringBuilder(baseUrl)
+                .append("/database/")
+                .append(databaseId);
+        if (tableId != null) {
+            uri.append("/table/")
+                    .append(tableId);
+        } else if (subsetId != null) {
+            uri.append("/subset/")
+                    .append(subsetId);
+        } else if (viewId != null) {
+            uri.append("/view/")
+                    .append(viewId);
+        }
+        log.trace("count uri: {}", uri);
+        return uri.toString();
+    }
+
+    ColumnBriefDto columnDtoToColumnBriefDto(ColumnDto data);
+
     ForeignKeyBriefDto foreignKeyDtoToForeignKeyBriefDto(ForeignKeyDto data);
 
     default String rabbitMqTupleToInsertOrUpdateQuery(String databaseName, TableDto table, Map<String, Object> data) {
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapper.java
similarity index 99%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapper.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapper.java
index 7895c902e7..336c88cc8d 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/MariaDbMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/mapper/MariaDbMapper.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.mapper;
+package at.ac.tuwien.ifs.dbrepo.mapper;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.image.OperatorDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
@@ -15,7 +15,7 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.CreateTableColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.utils.MariaDbUtil;
+import at.ac.tuwien.ifs.dbrepo.utils.MariaDbUtil;
 import org.jooq.*;
 import org.jooq.Record;
 import org.jooq.conf.ParamType;
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
 import static org.jooq.impl.DSL.field;
 import static org.jooq.impl.DSL.name;
 
-@Mapper(componentModel = "spring", uses = {MetadataMapper.class, DataMapper.class})
+@Mapper(componentModel = "spring", uses = {DataMapper.class, DataMapper.class})
 public interface MariaDbMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MariaDbMapper.class);
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/AccessService.java
similarity index 97%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/AccessService.java
index 18b821f86d..966aafa608 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/AccessService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/AccessService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CacheService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CacheService.java
similarity index 98%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CacheService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CacheService.java
index 3304ab8e1d..efe211491f 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CacheService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CacheService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -25,7 +25,7 @@ public interface CacheService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    DatabaseDto getDatabase(UUID id, Boolean forceReload) throws DatabaseNotFoundException, RemoteUnavailableException,
+    DatabaseDto getDatabase(UUID id, boolean forceReload) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException;
 
     /**
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ContainerService.java
similarity index 96%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ContainerService.java
index 4baf82c7d2..a38bc6688b 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ContainerService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ContainerService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CredentialService.java
similarity index 90%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CredentialService.java
index b1da6ede11..4a54849006 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/CredentialService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/CredentialService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
 
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseService.java
similarity index 98%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseService.java
index 3f9a8778aa..6fc9e273df 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/DatabaseService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/DatabaseService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/QueueService.java
similarity index 92%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/QueueService.java
index dfeb996755..2a53210f31 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/QueueService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/QueueService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/StorageService.java
similarity index 98%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/StorageService.java
index 88a3fd4d29..19540194ab 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/StorageService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/StorageService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MalformedException;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/SubsetService.java
similarity index 99%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/SubsetService.java
index 7b85908a76..eb341c95eb 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/SubsetService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/TableService.java
similarity index 99%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/TableService.java
index 6cc72d52ec..f2b246eb8b 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/TableService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/TableService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.ImportDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ViewService.java
similarity index 96%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewService.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ViewService.java
index b204101971..60bd5dd180 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/ViewService.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/ViewService.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service;
+package at.ac.tuwien.ifs.dbrepo.service;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java
similarity index 86%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java
index 4f1cc7ac65..7e02560b78 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/AccessServiceMariaDbImpl.java
@@ -1,11 +1,11 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.AccessTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseMalformedException;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.AccessService;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.AccessService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,22 +42,22 @@ public class AccessServiceMariaDbImpl extends DataConnector implements AccessSer
             long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseCreateUserQuery(user.getUsername(), user.getPassword()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* grant access */
             final String grants = access != AccessTypeDto.READ ? grantDefaultWrite : grantDefaultRead;
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseGrantPrivilegesQuery(user.getUsername(), grants))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* grant query store */
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseGrantProcedureQuery(user.getUsername(), "store_query"))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* apply access rights */
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseFlushPrivilegesQuery());
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -81,7 +81,7 @@ public class AccessServiceMariaDbImpl extends DataConnector implements AccessSer
             final long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseGrantPrivilegesQuery(user.getUsername(), grants))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* apply access rights */
             connection.prepareStatement(mariaDbMapper.databaseFlushPrivilegesQuery());
             connection.commit();
@@ -105,12 +105,12 @@ public class AccessServiceMariaDbImpl extends DataConnector implements AccessSer
             long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseRevokePrivilegesQuery(user.getUsername()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* apply access rights */
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseFlushPrivilegesQuery())
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CacheServiceImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CacheServiceImpl.java
similarity index 96%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CacheServiceImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CacheServiceImpl.java
index 44fbfa36f4..1ad9551130 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CacheServiceImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CacheServiceImpl.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseAccessDto;
@@ -8,9 +8,9 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableStatisticDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CacheService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.TableService;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.service.CacheService;
+import at.ac.tuwien.ifs.dbrepo.service.TableService;
 import com.github.benmanes.caffeine.cache.Cache;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,7 +51,7 @@ public class CacheServiceImpl implements CacheService {
     }
 
     @Override
-    public DatabaseDto getDatabase(UUID id, Boolean forceReload) throws DatabaseNotFoundException, RemoteUnavailableException,
+    public DatabaseDto getDatabase(UUID id, boolean forceReload) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException {
         if (!forceReload) {
             final DatabaseDto cacheDatabase = databaseCache.getIfPresent(id);
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java
similarity index 85%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java
index 8a61a05af5..1a2d9fa2de 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ContainerServiceMariaDbImpl.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
@@ -6,9 +6,9 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.internal.CreateDatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.user.UserBriefDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.DatabaseMalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.QueryStoreCreateException;
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.RabbitConfig;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.ContainerService;
+import at.ac.tuwien.ifs.dbrepo.config.RabbitConfig;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.ContainerService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +40,7 @@ public class ContainerServiceMariaDbImpl extends DataConnector implements Contai
             final long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseCreateDatabaseQuery(data.getInternalName()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -73,19 +73,19 @@ public class ContainerServiceMariaDbImpl extends DataConnector implements Contai
             long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreCreateTableRawQuery())
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreCreateHashTableProcedureRawQuery())
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreCreateStoreQueryProcedureRawQuery())
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreCreateInternalStoreQueryProcedureRawQuery())
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CredentialServiceImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CredentialServiceImpl.java
similarity index 89%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CredentialServiceImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CredentialServiceImpl.java
index ed9420a984..9d708e28d8 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/CredentialServiceImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/CredentialServiceImpl.java
@@ -1,9 +1,9 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.auth.AuthTokenFilter;
+import at.ac.tuwien.ifs.dbrepo.auth.AuthTokenFilter;
 import at.ac.tuwien.ifs.dbrepo.core.api.keycloak.TokenDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.KeycloakGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.CredentialService;
+import at.ac.tuwien.ifs.dbrepo.gateway.KeycloakGateway;
+import at.ac.tuwien.ifs.dbrepo.service.CredentialService;
 import com.github.benmanes.caffeine.cache.Cache;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DataConnector.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DataConnector.java
similarity index 94%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DataConnector.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DataConnector.java
index cb476e79ec..1100b0e7b9 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DataConnector.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DataConnector.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.container.ContainerDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
@@ -14,6 +14,8 @@ import java.sql.SQLException;
 @Service
 public abstract class DataConnector {
 
+    public static final String EXECUTED_STATEMENT_MS = "executed statement in {} ms";
+
     public ComboPooledDataSource getDataSource(ContainerDto container, String databaseName) {
         final ComboPooledDataSource dataSource = new ComboPooledDataSource();
         dataSource.setJdbcUrl(getJdbcUrl(container, databaseName));
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java
similarity index 90%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java
index f4a496b386..5db0fd5713 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/DatabaseServiceMariaDbImpl.java
@@ -1,9 +1,8 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.DataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
@@ -31,14 +30,11 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
 
     private final DataMapper dataMapper;
     private final MariaDbMapper mariaDbMapper;
-    private final MetadataMapper metadataMapper;
 
     @Autowired
-    public DatabaseServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper,
-                                      MetadataMapper metadataMapper) {
+    public DatabaseServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper) {
         this.dataMapper = dataMapper;
         this.mariaDbMapper = mariaDbMapper;
-        this.metadataMapper = metadataMapper;
     }
 
     @Override
@@ -53,7 +49,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement1.setString(2, viewName);
             log.trace("1={}, 2={}", database.getInternalName(), viewName);
             final ResultSet resultSet1 = statement1.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             if (!resultSet1.next()) {
                 throw new ViewNotFoundException("Failed to find view in the information schema");
             }
@@ -67,7 +63,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement2.setString(2, view.getInternalName());
             log.trace("1={}, 2={}", database.getInternalName(), view.getInternalName());
             final ResultSet resultSet2 = statement2.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             TableDto tmp = TableDto.builder()
                     .columns(new LinkedList<>())
                     .build();
@@ -76,7 +72,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             }
             view.setColumns(tmp.getColumns()
                     .stream()
-                    .map(metadataMapper::columnDtoToViewColumnDto)
+                    .map(dataMapper::columnDtoToViewColumnDto)
                     .toList());
             view.getColumns()
                     .forEach(column -> column.setDatabaseId(database.getId()));
@@ -99,7 +95,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             connection.prepareStatement(mariaDbMapper.tableCreateDtoToCreateTableRawQuery(database.getInternalName(),
                             data))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -141,7 +137,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             final long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.viewCreateRawQuery(view.getInternalName(), query))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* select view columns */
             final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery());
             statement2.setString(1, database.getInternalName());
@@ -175,7 +171,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement.setString(1, database.getInternalName());
             final long start = System.currentTimeMillis();
             final ResultSet resultSet1 = statement.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             while (resultSet1.next()) {
                 final String viewName = resultSet1.getString(1);
                 if (viewName.length() == 64) {
@@ -212,7 +208,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.databaseTablesSelectRawQuery());
             statement.setString(1, database.getInternalName());
             final ResultSet resultSet1 = statement.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             while (resultSet1.next()) {
                 final String tableName = resultSet1.getString(1);
                 if (database.getTables().stream().anyMatch(t -> t.getInternalName().equals(tableName))) {
@@ -247,7 +243,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement1.setString(2, tableName);
             log.trace("1={}, 2={}", database.getInternalName(), tableName);
             TableDto table = dataMapper.schemaResultSetToTable(database, statement1.executeQuery());
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             /* obtain columns metadata */
             start = System.currentTimeMillis();
             final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery());
@@ -255,7 +251,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement2.setString(2, tableName);
             log.trace("1={}, 2={}", database.getInternalName(), tableName);
             final ResultSet resultSet2 = statement2.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             while (resultSet2.next()) {
                 table = dataMapper.resultSetToTable(resultSet2, table);
             }
@@ -266,7 +262,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement3.setString(2, tableName);
             log.trace("1={}, 2={}", database.getInternalName(), tableName);
             final ResultSet resultSet3 = statement3.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             while (resultSet3.next()) {
                 final String clause = resultSet3.getString(1);
                 table.getConstraints()
@@ -281,11 +277,11 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement4.setString(2, tableName);
             log.trace("1={}, 2={}", database.getInternalName(), tableName);
             final ResultSet resultSet4 = statement4.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             while (resultSet4.next()) {
                 table = dataMapper.resultSetToConstraint(resultSet4, table);
                 for (UniqueDto uk : table.getConstraints().getUniques()) {
-                    uk.setTable(metadataMapper.tableDtoToTableBriefDto(table));
+                    uk.setTable(dataMapper.tableDtoToTableBriefDto(table));
                     final TableDto tmpTable = table;
                     uk.getColumns()
                             .forEach(column -> {
@@ -319,7 +315,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             final long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.databaseSetPasswordQuery(data.getUsername(), data.getPassword()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java
similarity index 79%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java
index e6ad806daa..1908636963 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/QueueServiceRabbitMqImpl.java
@@ -1,11 +1,10 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.TableDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnDto;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.DataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.QueueService;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
+import at.ac.tuwien.ifs.dbrepo.service.QueueService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,12 +21,10 @@ import java.util.Optional;
 public class QueueServiceRabbitMqImpl extends DataConnector implements QueueService {
 
     private final DataMapper dataMapper;
-    private final MetadataMapper metadataMapper;
 
     @Autowired
-    public QueueServiceRabbitMqImpl(DataMapper dataMapper, MetadataMapper metadataMapper) {
+    public QueueServiceRabbitMqImpl(DataMapper dataMapper) {
         this.dataMapper = dataMapper;
-        this.metadataMapper = metadataMapper;
     }
 
     @Override
@@ -38,7 +35,7 @@ public class QueueServiceRabbitMqImpl extends DataConnector implements QueueServ
             final int[] idx = new int[]{1};
             final PreparedStatement preparedStatement = connection.prepareStatement(
                     dataMapper.rabbitMqTupleToInsertOrUpdateQuery(database.getInternalName(),
-                            metadataMapper.tableDtoToTableDto(table), data));
+                            dataMapper.tableDtoToTableDto(table), data));
             for (Map.Entry<String, Object> entry : data.entrySet()) {
                 final Optional<ColumnDto> optional = table.getColumns().stream().filter(c -> c.getInternalName().equals(entry.getKey())).findFirst();
                 if (optional.isEmpty()) {
@@ -50,7 +47,7 @@ public class QueueServiceRabbitMqImpl extends DataConnector implements QueueServ
             }
             final long start = System.currentTimeMillis();
             preparedStatement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             log.trace("successfully inserted tuple");
         } finally {
             dataSource.close();
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/StorageServiceS3Impl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/StorageServiceS3Impl.java
similarity index 97%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/StorageServiceS3Impl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/StorageServiceS3Impl.java
index 94cf2b43db..d29f5e2a2d 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/StorageServiceS3Impl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/StorageServiceS3Impl.java
@@ -1,7 +1,7 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
-import at.ac.tuwien.ac.at.ifs.dbrepo.config.S3Config;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.StorageService;
+import at.ac.tuwien.ifs.dbrepo.config.S3Config;
+import at.ac.tuwien.ifs.dbrepo.service.StorageService;
 import at.ac.tuwien.ifs.dbrepo.core.api.ExportResourceDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.MalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.StorageNotFoundException;
@@ -9,7 +9,6 @@ import at.ac.tuwien.ifs.dbrepo.core.exception.StorageUnavailableException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.TableMalformedException;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.james.mime4j.dom.datetime.DateTime;
 import org.apache.spark.sql.*;
 import org.apache.spark.sql.catalyst.ExtendedAnalysisException;
 import org.apache.spark.sql.types.StructField;
@@ -22,8 +21,6 @@ import software.amazon.awssdk.services.s3.model.*;
 
 import java.io.*;
 import java.nio.charset.Charset;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
 import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java
similarity index 89%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java
index d19e18e52a..b8044175dc 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto;
@@ -6,11 +6,10 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.query.SubsetDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.DataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MetadataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.SubsetService;
+import at.ac.tuwien.ifs.dbrepo.gateway.MetadataServiceGateway;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.SubsetService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.Dataset;
@@ -35,18 +34,15 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     private final DataMapper dataMapper;
     private final SparkSession sparkSession;
     private final MariaDbMapper mariaDbMapper;
-    private final MetadataMapper metadataMapper;
     private final MetadataServiceGateway metadataServiceGateway;
 
     @Autowired
     public SubsetServiceMariaDbImpl(DSLContext context, DataMapper dataMapper, MariaDbMapper mariaDbMapper,
-                                    SparkSession sparkSession, MetadataMapper metadataMapper,
-                                    MetadataServiceGateway metadataServiceGateway) {
+                                    SparkSession sparkSession, MetadataServiceGateway metadataServiceGateway) {
         this.context = context;
         this.dataMapper = dataMapper;
         this.sparkSession = sparkSession;
         this.mariaDbMapper = mariaDbMapper;
-        this.metadataMapper = metadataMapper;
         this.metadataServiceGateway = metadataServiceGateway;
     }
 
@@ -98,7 +94,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
                 log.trace("filter persisted only {}", filterPersisted);
             }
             final ResultSet resultSet = statement.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             final List<QueryDto> queries = new LinkedList<>();
             while (resultSet.next()) {
                 final QueryDto query = dataMapper.resultSetToQueryDto(resultSet);
@@ -127,7 +123,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             final long start = System.currentTimeMillis();
             final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.countRawSelectQuery(statement, timestamp))
                     .executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             return mariaDbMapper.resultSetToNumber(resultSet);
         } catch (SQLException e) {
             log.error("Failed to map object: {}", e.getMessage());
@@ -147,12 +143,12 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             final PreparedStatement preparedStatement = connection.prepareStatement(mariaDbMapper.queryStoreFindQueryRawQuery());
             preparedStatement.setString(1, String.valueOf(queryId));
             final ResultSet resultSet = preparedStatement.executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             if (!resultSet.next()) {
                 throw new QueryNotFoundException("Failed to find query");
             }
             final QueryDto query = dataMapper.resultSetToQueryDto(resultSet);
-            query.setOwner(metadataMapper.userDtoToUserBriefDto(metadataServiceGateway.getUserById(query.getOwner()
+            query.setOwner(dataMapper.userDtoToUserBriefDto(metadataServiceGateway.getUserById(query.getOwner()
                     .getId())));
             query.setDatabaseId(database.getId());
             return query;
@@ -184,7 +180,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             callableStatement.setTimestamp(3, Timestamp.from(timestamp));
             callableStatement.registerOutParameter(4, Types.VARCHAR);
             callableStatement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             queryId = UUID.fromString(callableStatement.getString(4));
             callableStatement.close();
             log.info("Stored query with id {} in database with name {}", queryId, database.getInternalName());
@@ -211,7 +207,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             preparedStatement.setBoolean(1, persist);
             preparedStatement.setString(2, String.valueOf(queryId));
             preparedStatement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
         } catch (SQLException e) {
             log.error("Failed to (un-)persist query: {}", e.getMessage());
             throw new QueryStorePersistException("Failed to (un-)persist query", e);
@@ -229,7 +225,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             final long start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreDeleteStaleQueriesRawQuery())
                     .executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
         } catch (SQLException e) {
             log.error("Failed to delete stale queries: {}", e.getMessage());
             throw new QueryStoreGCException("Failed to delete stale queries: " + e.getMessage(), e);
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java
similarity index 94%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java
index f337cc8b1b..1ca0da14d8 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/TableServiceMariaDbImpl.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.query.ImportDto;
@@ -7,12 +7,12 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnStatisticDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnTypeDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.*;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.DataMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.DatabaseService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.StorageService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.TableService;
-import at.ac.tuwien.ac.at.ifs.dbrepo.utils.MariaDbUtil;
+import at.ac.tuwien.ifs.dbrepo.mapper.DataMapper;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.DatabaseService;
+import at.ac.tuwien.ifs.dbrepo.service.StorageService;
+import at.ac.tuwien.ifs.dbrepo.service.TableService;
+import at.ac.tuwien.ifs.dbrepo.utils.MariaDbUtil;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.apache.spark.sql.AnalysisException;
@@ -70,7 +70,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             statistic = dataMapper.resultSetToTableStatistic(resultSet);
             statistic.setTotalColumns(Long.parseLong("" + tmpTable.getColumns()
                     .size()));
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             statistic.setAvgRowLength(tmpTable.getAvgRowLength());
             statistic.setDataLength(tmpTable.getDataLength());
             statistic.setMaxDataLength(tmpTable.getMaxDataLength());
@@ -110,7 +110,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
                 statement.setString(1, data.getDescription());
             }
             statement.executeUpdate();
-            log.debug("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.debug(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -132,7 +132,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             connection.prepareStatement(mariaDbMapper.dropTableRawQuery(database.getInternalName(),
                             table.getInternalName()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -156,7 +156,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectHistoryRawQuery(
                             database.getInternalName(), table.getInternalName(), size))
                     .executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             history = dataMapper.resultSetToTableHistory(resultSet);
             connection.commit();
         } catch (SQLException e) {
@@ -182,7 +182,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery(
                             database.getInternalName(), tableName, timestamp))
                     .executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             queryResult = mariaDbMapper.resultSetToNumber(resultSet);
             connection.commit();
         } catch (SQLException e) {
@@ -270,7 +270,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             }
             final long start = System.currentTimeMillis();
             statement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -315,7 +315,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             }
             final long start = System.currentTimeMillis();
             statement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -352,7 +352,7 @@ public class TableServiceMariaDbImpl extends DataConnector implements TableServi
             }
             final long start = System.currentTimeMillis();
             statement.executeUpdate();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java
similarity index 90%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java
index 3122e6fc8b..5b8f2017aa 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/service/impl/ViewServiceMariaDbImpl.java
@@ -1,11 +1,11 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl;
+package at.ac.tuwien.ifs.dbrepo.service.impl;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto;
 import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto;
 import at.ac.tuwien.ifs.dbrepo.core.exception.QueryMalformedException;
 import at.ac.tuwien.ifs.dbrepo.core.exception.ViewMalformedException;
-import at.ac.tuwien.ac.at.ifs.dbrepo.mapper.MariaDbMapper;
-import at.ac.tuwien.ac.at.ifs.dbrepo.service.ViewService;
+import at.ac.tuwien.ifs.dbrepo.mapper.MariaDbMapper;
+import at.ac.tuwien.ifs.dbrepo.service.ViewService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +37,7 @@ public class ViewServiceMariaDbImpl extends DataConnector implements ViewService
             connection.prepareStatement(mariaDbMapper.dropViewRawQuery(database.getInternalName(),
                             view.getInternalName()))
                     .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             connection.commit();
         } catch (SQLException e) {
             connection.rollback();
@@ -61,7 +61,7 @@ public class ViewServiceMariaDbImpl extends DataConnector implements ViewService
             final ResultSet resultSet = connection.prepareStatement(mariaDbMapper.selectCountRawQuery(
                             database.getInternalName(), view.getInternalName(), timestamp))
                     .executeQuery();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
+            log.trace(EXECUTED_STATEMENT_MS, System.currentTimeMillis() - start);
             queryResult = mariaDbMapper.resultSetToNumber(resultSet);
             connection.commit();
         } catch (SQLException e) {
diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtil.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtil.java
similarity index 97%
rename from dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtil.java
rename to dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtil.java
index 78f51fee87..8e27a151d3 100644
--- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/utils/MariaDbUtil.java
+++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ifs/dbrepo/utils/MariaDbUtil.java
@@ -1,4 +1,4 @@
-package at.ac.tuwien.ac.at.ifs.dbrepo.utils;
+package at.ac.tuwien.ifs.dbrepo.utils;
 
 import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.ColumnTypeDto;
 
diff --git a/dbrepo-metadata-service/.dockerignore b/dbrepo-metadata-service/.dockerignore
index fcdfe8de55..00e8518672 100644
--- a/dbrepo-metadata-service/.dockerignore
+++ b/dbrepo-metadata-service/.dockerignore
@@ -1 +1 @@
-rest-service/src/main/resources/*.csv
\ No newline at end of file
+rest-service/src/main/resources/*.csv
diff --git a/dbrepo-metadata-service/.gitignore b/dbrepo-metadata-service/.gitignore
index d39a47ee0f..3e5eeee0c8 100644
--- a/dbrepo-metadata-service/.gitignore
+++ b/dbrepo-metadata-service/.gitignore
@@ -7,6 +7,9 @@ target/
 ### Environment ###
 .env
 
+### local repo ###
+lib/at/
+
 ### Generated ###
 ready
 mapping.xml
diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile
index 8d01865d85..2d3acf1bd1 100644
--- a/dbrepo-metadata-service/Dockerfile
+++ b/dbrepo-metadata-service/Dockerfile
@@ -1,17 +1,12 @@
 ###### FIRST STAGE ######
-FROM dbrepo-core:build AS dependency
-LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
-
-###### SECOND STAGE ######
-FROM maven:3-amazoncorretto-17 AS build
+FROM --platform=$BUILDPLATFORM maven:3-amazoncorretto-17 AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY ./pom.xml ./
 
 RUN mvn -fn dependency:go-offline
 
-COPY --from=dependency /root/.m2/repository/at/ac/tuwien/ifs/dbrepo /root/.m2/repository/at/ac/tuwien/ifs/dbrepo
-
+COPY ./lib ./lib
 COPY ./oai ./oai
 COPY ./report ./report
 COPY ./repositories ./repositories
@@ -19,25 +14,29 @@ COPY ./rest-service ./rest-service
 COPY ./services ./services
 
 # Make sure it compiles
-RUN mvn -fn clean package -DskipTests
+RUN mvn -q clean package -DskipTests
 
-###### THIRD STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+###### SECOND STAGE ######
+FROM --platform=$BUILDPLATFORM amazoncorretto:17-alpine3.21 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
-RUN apk add --no-cache curl bash jq
+RUN apk --no-cache add \
+    bash \
+    curl \
+    jq
 
 WORKDIR /app
 
-RUN adduser -D dbrepo --uid 1001
+RUN adduser -D dbrepo --uid 1001 && \
+    chown -R 1001:1001 /app
 
 USER 1001
 
-COPY --from=build --chown=1001 ./rest-service/target/dbrepo-metadata-service-rest-service-*.jar ./metadata-service.jar
+COPY --from=build --chown=1001 ./rest-service/target/*rest-service-*.jar ./metadata-service.jar
 
 # non-root port
 EXPOSE 8080
 
-ENV JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true"
+ENV JAVA_OPTS=""
 
 ENTRYPOINT exec java $JAVA_OPTS -jar ./metadata-service.jar
\ No newline at end of file
diff --git a/dbrepo-metadata-service/README.md b/dbrepo-metadata-service/README.md
index 7160f7bbbc..64e71fbdfb 100644
--- a/dbrepo-metadata-service/README.md
+++ b/dbrepo-metadata-service/README.md
@@ -1,5 +1,14 @@
 # Metadata Service
 
+## Build
+
+Before testing, it is recommended to (re-)build the `MapStruct` mappers in case they were modified using the `package`
+target:
+
+```shell
+mvn clean package
+```
+
 ## Test
 
 Run all unit and integration tests and create an HTML+TXT coverage report located in the `report` module:
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AffiliationDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AffiliationDto.java
deleted file mode 100644
index 807c03f48d..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AffiliationDto.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.tuwien.api.doi;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class AffiliationDto {
-
-    @Schema(example = "ISE, TU Wien, Data Science Research Unit, Vienna, Austria")
-    private String name;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AuthorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AuthorDto.java
deleted file mode 100644
index 8f8bbb61ff..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/AuthorDto.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.util.List;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class AuthorDto {
-
-    @Schema(example = "Weise")
-    private String family;
-
-    @Schema(example = "Martin")
-    private String given;
-
-    @JsonProperty("ORCID")
-    @Schema(example = "http://orcid.org/0000-0003-4216-302X")
-    private String orcid;
-
-    @Schema(example = "first")
-    private String sequence;
-
-    private List<AffiliationDto> affiliation;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/DoiDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/DoiDto.java
deleted file mode 100644
index af0cd5bcc6..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/DoiDto.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.util.List;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class DoiDto {
-
-    @NotNull
-    @Schema(example = "https://doi.org/10.5334/dsj-2022-004")
-    private String id;
-
-    @NotNull
-    private TimeRepresentationDto indexed;
-
-    private TimeRepresentationDto deposited;
-
-    private TimeRepresentationDto issued;
-
-    private TimeRepresentationDto published;
-
-    @JsonProperty("DOI")
-    @Schema(example = "10.5334/dsj-2022-004")
-    private String doi;
-
-    @NotNull
-    @Schema(example = "dataset")
-    private String type;
-
-    private List<AuthorDto> author;
-
-    @Schema(example = "Crossref")
-    private String source;
-
-    @Schema(example = "DBRepo: A Data Repository System for Research Data in Databases")
-    private String title;
-
-    @Schema(example = "10.1109")
-    private String prefix;
-
-    @Schema(example = "21")
-    private String volume;
-
-    @JsonProperty("is-referenced-by-count")
-    @Schema(example = "0")
-    private Integer isReferencedByCount;
-
-    @JsonProperty("reference-count")
-    @Schema(example = "28")
-    private Integer referenceCount;
-
-    @Schema(example = "IEEE")
-    private String publisher;
-
-    @Schema(example = "322-331")
-    private String page;
-
-    private String member;
-
-    @Schema(example = "2024 IEEE International Conference on Big Data (BigData)")
-    private String event;
-
-    private List<ReferenceDto> reference;
-
-    private Integer score;
-
-    @JsonProperty("URL")
-    private String url;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LicenseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LicenseDto.java
deleted file mode 100644
index 32f5ffcd2a..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LicenseDto.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class LicenseDto {
-
-    private TimeRepresentationDto start;
-
-    @JsonProperty("content-version")
-    @Schema(example = "stm-asf")
-    private String contentVersion;
-
-    @JsonProperty("delay-in-days")
-    @Schema(example = "0")
-    private Integer delayInDays;
-
-    @JsonProperty("URL")
-    @Schema(example = "https://doi.org/10.15223/policy-029")
-    private String url;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LinkDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LinkDto.java
deleted file mode 100644
index 5f70696091..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/LinkDto.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class LinkDto {
-
-    @JsonProperty("URL")
-    @Schema(example = "http://xplorestaging.ieee.org/ielx8/10824975/10824942/10825401.pdf?arnumber=10825401")
-    private String url;
-
-    @JsonProperty("content-type")
-    @Schema(example = "unspecified")
-    private String contentType;
-
-    @JsonProperty("content-version")
-    @Schema(example = "vor")
-    private String contentVersion;
-
-    @JsonProperty("intended-application")
-    @Schema(example = "similarity-checking")
-    private String intendedApplication;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ReferenceDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ReferenceDto.java
deleted file mode 100644
index 9458c0f919..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ReferenceDto.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.util.List;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class ReferenceDto {
-
-    @NotNull
-    @Schema(example = "ref1")
-    private String key;
-
-    @JsonProperty("doi-asserted-by")
-    @Schema(example = "publisher")
-    private String doiAssertedBy;
-
-    @JsonProperty("DOI")
-    @Schema(example = "10.1038/sdata.2016.18")
-    private String doi;
-
-    @Schema(example = "2024")
-    private String year;
-
-    @JsonProperty("article-title")
-    @Schema(example = "The Dryad Data Repository: a Singapore Framework metadata Architecture in a DSpace Environment")
-    private String articleTitle;
-
-    @JsonProperty("volume-title")
-    @Schema(example = "Proceedings of the 2008 International Conference on Dublin Core and Metadata Applications")
-    private String volumeTitle;
-
-    @JsonProperty("journal-title")
-    @Schema(example = "Libraries Research Publications")
-    private String journalTitle;
-
-    @Schema(example = "Witt")
-    private String author;
-
-    @JsonProperty("first-page")
-    @Schema(example = "157")
-    private String firstPage;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceDto.java
deleted file mode 100644
index a2543c2834..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceDto.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class ResourceDto {
-
-    private ResourceRepresentationDto primary;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceRepresentationDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceRepresentationDto.java
deleted file mode 100644
index bf2312a648..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/ResourceRepresentationDto.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class ResourceRepresentationDto {
-
-    @JsonProperty("URL")
-    private String url;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/TimeRepresentationDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/TimeRepresentationDto.java
deleted file mode 100644
index fe649217e9..0000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/doi/TimeRepresentationDto.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package at.tuwien.api.doi;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.time.Instant;
-import java.util.List;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class TimeRepresentationDto {
-
-    @JsonProperty("date-parts")
-    @Schema(example = "[[2025,1,18]]")
-    private List<List<Integer>> dateParts;
-
-    @JsonProperty("date-time")
-    @Schema(example = "2021-03-12T15:26:21Z")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssX", timezone = "UTC")
-    private Instant dateTime;
-
-    private Long timestamp;
-
-}
diff --git a/dbrepo-metadata-service/lib/.gitkeep b/dbrepo-metadata-service/lib/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml
index d14d0bcf61..89391bf8e2 100644
--- a/dbrepo-metadata-service/oai/pom.xml
+++ b/dbrepo-metadata-service/oai/pom.xml
@@ -4,13 +4,13 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>at.tuwien</groupId>
-        <artifactId>dbrepo-metadata-service</artifactId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>metadata-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-metadata-service-oai</artifactId>
-    <name>dbrepo-metadata-service-oai</name>
+    <name>oai</name>
+    <artifactId>metadata-service-oai</artifactId>
     <version>1.8.1</version>
 
     <dependencies/>
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index 313d6d0db5..5697be3b2b 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -13,13 +13,13 @@
         <url>https://www.tuwien.ac.at</url>
     </organization>
 
-    <groupId>at.tuwien</groupId>
-    <artifactId>dbrepo-metadata-service</artifactId>
-    <name>dbrepo-metadata-service</name>
-    <version>1.8.1</version>
-
+    <name>metadata-service</name>
     <description>Service that manages the metadata</description>
 
+    <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+    <artifactId>metadata-service</artifactId>
+    <version>1.8.1</version>
+
     <packaging>pom</packaging>
     <modules>
         <module>oai</module>
@@ -67,14 +67,10 @@
 
     <dependencies>
         <dependency>
-            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>dbrepo-core</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-        </dependency>
         <!-- Data Source -->
         <dependency>
             <groupId>org.mariadb.jdbc</groupId>
@@ -168,6 +164,13 @@
             <artifactId>amqp-client</artifactId>
             <version>${rabbitmq.version}</version>
         </dependency>
+        <!-- Api -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+            <scope>provided</scope>
+        </dependency>
         <!-- Testing -->
         <dependency>
             <groupId>org.springframework</groupId>
@@ -181,7 +184,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
@@ -274,6 +276,19 @@
         </plugins>
     </build>
 
+    <repositories>
+        <repository>
+            <id>dbrepo-maven-repo</id>
+            <url>file:///${project.basedir}/lib</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
     <licenses>
         <license>
             <name>Apache-2.0</name>
diff --git a/dbrepo-metadata-service/report/pom.xml b/dbrepo-metadata-service/report/pom.xml
index 847272f66f..10a221ef6c 100644
--- a/dbrepo-metadata-service/report/pom.xml
+++ b/dbrepo-metadata-service/report/pom.xml
@@ -4,25 +4,20 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>dbrepo-metadata-service</artifactId>
-        <groupId>at.tuwien</groupId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>metadata-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-metadata-service-report</artifactId>
-    <name>dbrepo-metadata-service-report</name>
+    <name>report</name>
+    <artifactId>metadata-service-report</artifactId>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-rest-service</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-services</artifactId>
-            <version>${project.version}</version>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+            <artifactId>metadata-service-services</artifactId>
+            <version>1.8.1</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml
index 4f9850d3d3..1928e3b33f 100644
--- a/dbrepo-metadata-service/repositories/pom.xml
+++ b/dbrepo-metadata-service/repositories/pom.xml
@@ -4,27 +4,21 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>dbrepo-metadata-service</artifactId>
-        <groupId>at.tuwien</groupId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>metadata-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-metadata-service-repositories</artifactId>
-    <name>dbrepo-metadata-service-repositories</name>
+    <name>repositories</name>
+    <artifactId>metadata-service-repositories</artifactId>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
             <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
-            <artifactId>dbrepo-core</artifactId>
-            <version>${project.version}</version>
+            <artifactId>metadata-service-oai</artifactId>
+            <version>1.8.1</version>
         </dependency>
-        <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-oai</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
     </dependencies>
 
 </project>
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/ac/tuwien/ifs/dbrepo/repository/DatabaseRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/ac/tuwien/ifs/dbrepo/repository/DatabaseRepository.java
index 2d61108679..5f1feb7e2d 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/ac/tuwien/ifs/dbrepo/repository/DatabaseRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/ac/tuwien/ifs/dbrepo/repository/DatabaseRepository.java
@@ -5,7 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
-import java.util.Optional;
 import java.util.UUID;
 
 @Repository
diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml
index 0f1abad18e..bb75d96288 100644
--- a/dbrepo-metadata-service/rest-service/pom.xml
+++ b/dbrepo-metadata-service/rest-service/pom.xml
@@ -4,25 +4,20 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>dbrepo-metadata-service</artifactId>
-        <groupId>at.tuwien</groupId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>metadata-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-metadata-service-rest-service</artifactId>
-    <name>dbrepo-metadata-service-rest</name>
+    <name>rest-service</name>
+    <artifactId>metadata-service-service</artifactId>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
             <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
-            <artifactId>dbrepo-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-services</artifactId>
-            <version>${project.version}</version>
+            <artifactId>metadata-service-services</artifactId>
+            <version>1.8.1</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml
index db32fbe9cc..3c0a3e1bcc 100644
--- a/dbrepo-metadata-service/services/pom.xml
+++ b/dbrepo-metadata-service/services/pom.xml
@@ -4,30 +4,25 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>dbrepo-metadata-service</artifactId>
-        <groupId>at.tuwien</groupId>
+        <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+        <artifactId>metadata-service</artifactId>
         <version>1.8.1</version>
     </parent>
 
-    <artifactId>dbrepo-metadata-service-services</artifactId>
-    <name>dbrepo-metadata-service-services</name>
+    <name>services</name>
+    <artifactId>metadata-service-services</artifactId>
     <version>1.8.1</version>
 
     <dependencies>
         <dependency>
             <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
-            <artifactId>dbrepo-core</artifactId>
-            <version>${project.version}</version>
+            <artifactId>metadata-service-oai</artifactId>
+            <version>1.8.1</version>
         </dependency>
         <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-oai</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>at.tuwien</groupId>
-            <artifactId>dbrepo-metadata-service-repositories</artifactId>
-            <version>${project.version}</version>
+            <groupId>at.ac.tuwien.ifs.dbrepo</groupId>
+            <artifactId>metadata-service-repositories</artifactId>
+            <version>1.8.1</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-search-service/Dockerfile b/dbrepo-search-service/Dockerfile
index 0366024576..1d0862a9e5 100644
--- a/dbrepo-search-service/Dockerfile
+++ b/dbrepo-search-service/Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-search-service/init.Dockerfile b/dbrepo-search-service/init.Dockerfile
index cf4cb94d85..2099df48cc 100644
--- a/dbrepo-search-service/init.Dockerfile
+++ b/dbrepo-search-service/init.Dockerfile
@@ -1,4 +1,4 @@
-FROM python:3.11-alpine3.21
+FROM --platform=$BUILDPLATFORM python:3.11-alpine3.21
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache \
diff --git a/dbrepo-storage-service/init/Dockerfile b/dbrepo-storage-service/init/Dockerfile
index d064d048b8..ad0d2ae853 100644
--- a/dbrepo-storage-service/init/Dockerfile
+++ b/dbrepo-storage-service/init/Dockerfile
@@ -1,4 +1,4 @@
-FROM docker.io/python:3.11-alpine3.21 AS runtime
+FROM --platform=$BUILDPLATFORM docker.io/python:3.11-alpine3.21 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk --no-cache add \
diff --git a/dbrepo-ui/Dockerfile b/dbrepo-ui/Dockerfile
index 53928c4998..966b7dbb3d 100644
--- a/dbrepo-ui/Dockerfile
+++ b/dbrepo-ui/Dockerfile
@@ -1,5 +1,5 @@
 ###### FIRST STAGE ######
-FROM oven/bun:1.1.40-alpine AS build
+FROM --platform=$BUILDPLATFORM oven/bun:1.1.40-alpine AS build
 
 WORKDIR /app
 
@@ -27,7 +27,7 @@ COPY ./nuxt.config.ts ./nuxt.config.ts
 RUN bun run build
 
 ###### SECOND STAGE ######
-FROM node:22.9.0-alpine3.20 AS runtime
+FROM --platform=$BUILDPLATFORM node:22.9.0-alpine3.20 AS runtime
 
 ARG APP_VERSION="latest"
 ARG COMMIT=""
diff --git a/grafana/grafana.ini b/grafana/grafana.ini
deleted file mode 100644
index df8b9eb1b4..0000000000
--- a/grafana/grafana.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[server]
-domain = grafana
-root_url = http://grafana/grafana
-serve_from_sub_path = true
-
diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar
index f1c8ff378169a787cc021fa5cb2eafc7795170a0..069d52a2d4e0930349d1cce948e86fca1c5d280a 100644
GIT binary patch
delta 2614
zcmbQ^zdk@Xz?+#xgn@yBgTXgxdQ|vl?aieVg_Y{_9xDj!js9f+f!X1Xir?$#%W}H{
zcWW;_dyid0N<`Y-pv<g(|B=jC)2Q5P2DWF0??1Mwe>j(<@=w~iWbOJ0MYYN@aRCnA
zcscEFEVfl;(qFE9mADad#;+swdDh|ZwBz%?ueiL`b>3X1^to(aQ-5?XmeNiOIZ%6g
z;bPr>iK^uv>xC?f;(3?qPrkQhVbbbUY2{$|ZElC<8a};o-@JaKqksJ8SO<H-uAlaw
z?mxM+MqYcH>aF8mrw%_<nA6*|tJzuKfm`9_9$o>>l3BYN0_QzFY2)oSJu}jgU-`bR
z7JHpd&3lhc-@>0P=L_MH3O?8N*FWP@vHaZk|9E~2#&=zDw$rWuA^k1V{Li|ta;CgL
zSImBO^`gNNpU>NZowoPhc^G(I_subfB}=Xxj(>1N{p`z!d&(wWNVX7<OMZWDi}2=v
z&6Syf2TRhf-Z^)+H%=pT#ikwmnlx|CetpQV>+@dU74~y}&u8;w3^Y6G%p)Jgrs#QL
z_Oz6gd4E|!QNhK)z`?-a%ak;I@<v7#W}l?#lW#EUGW#Y?pUlA|2c|WdRKav0lU6+_
z&KQt@Is*fPuWN{-uBV@yer{q}YMy>#iC$u|UP)<rW@?^ZW?HdcN>Wj3LB2kcZAsIk
zkj!APCEAe53hLs#AcG(&2;^EO=Cfc|Ut;bCxpH#?%N!;!<3AfWCz!!2FpJl!vTj<`
zbIsrtQ<xbTcmx<2Tu8A~y1pVe=W6)vJYhqD+VkN$g6p@<p60#s4l5@oXD5@8?uRy+
z_bIQhe2m&=?&<i)I_`b#Y~N;vh0iqQ=1b1sSz+THpBHWv)x1$D`1xf?yIF1vDyDHv
zo#($^@BV_zFHcuEZ9O^dK<tx?r{?*upL;pIWz7vKk+fMKvk%PlJb9d7{0XOB{iiUs
zz`xvD>CxI!ThFF7o2xrM{P7~gZC~7;-%oVcNC=&>T4qslb*;tb#P6}kW^$Xnx3!aU
z&dCkp3Otawf8Mc&2D?rPO_+b$<4EH4N%L}o9+?;~h`D31WaY`Czh<3#YipRd$E3Y!
zn-q2H(Tu{RgF8MSl4|oxo>KBHs#Qz(W8uO2XPT;CcRg{;QkpEs{mkI;ji=HNZN<5}
zC+}pO%ga%EvVi#vBa^&n`;rZOA~SYRS&^jO;ho*_^qo|sLH5DMNgIrBp5J-L??91q
z$;4wnN-fN}p1Zx>8SAlhs<foI<krxSB6*>5Rq->GopgCNpL=rWDVvUF<Rr;DHx11#
zuP<L$Fs^^AS-R*BM|9-tcdml0qP2{P)pceX@zb4-t!6kpo9WxC(>;@fE`)!YdT7cI
zxmA|?_H^y5uu-+mJl)U3QO2@urDw3t+=g|@-rLf4^!<NhscP%kt*!5=YkyGxgQjZj
zLxD4!r-}*jY>UjZIMQEVlKX$n)%Fd6#(gtI?(9v|y0JpCo>^$d-uZsL(h^Rl44E^R
zFOr^o(=&s;I&iHi`?ZfgmTEPwx6RlqzA>HGki41qb@sOl&SfuT#B<&`UX5K8EcI3Q
z!UCcDPk%qX)RE7AwJM>W`$nv7UpiY^`HlriJJltsXJt=xaPr*w?&|;8r2l=n7q8Uh
ztrg>+Xne_SO>KB>#GU%T%1QD9$=fC^Tru(7^Pms^57$_pUvt#RyO!IFe}Vjm6$k&@
zp9*6>?plBEQSZ@Xa%XB!Zab#5?CADno8MtGBxlYp3$AGiD0ykUv{&F)?6bdpwH%LQ
zINPV~6wAA=b9Kd)v%fy}-|ati{@@jJkKl!0t_MB2Z#svoeD3+eLu-W04==1QoW8jB
z){4FU>^t`SXZ&rwu3TlVdci#In`>vZ2KemLU$%Q<;ttj=UQa*gv%m4mjIUTeZ<YR}
zBAu0QdRVF@KFl>fQL%$v@xJxJ9#@+iAAUx5n3y+z+%kXW#LNPVe_y8@OWXf&!*z`b
zwjqD^Y*zl)uA2HdJ4rFW-dKLBn3i&NfK?J7*VEn$ADd1-+N}KN|7D9SLeclTU-7kY
zZv3&Wzn&3MB7n-L;K-<F-V6*30SpWbAey-HX|jU4YC7+!gS-t2JggV2cVCcL?9Nuu
z!xew|h)59Ey7lk><gH#TtGZD*{nJOTDNkO7_&Kj`Jp1&~oBES%WiCD|j=S%2PE0(s
zE5!G;8~59X%&2Z!-u#2Fgn@zKECU0BFvH|Rb<z6X-i=&Ljyx{EYg+9$MCQKL5%Ig=
z_2%(C4#B&VRpx#FS+1bb(Q0s%XV3ARqqA-$dAQHW4xhf6^?YZSBNL}>){@m#3l9BI
za@+kiaq6tU&tgCMs=dli<D7QrV}+L1>zg}mCEwkhAMx+!|B15KvKuEKneyjTr(1wG
zBa;X-xbWmc)W4IDDp@jvN_<9TX~yM~WtAlqe9($$A$WN$!0^`b9OLAN%p#LBm3d4+
z0S=dAU|?W|b3h9JF)}bDmgqyQg;q65(<iS~mX?)g0!u;a2@Dkvm8BWoC;wHJlSj7z
zRO3MG09jBnxlu*b0Y`lU@+;g@j2Z`F$WD+UBG?Q8)i*j2*MkF%0TeEO=CwI>F)%QE
zU|?X-fS3X%mo$nnPZng>n#`%n0}eo+-z=;27#J9I7#J9wz)B#*lEx>@lOHm>Os-Vr
zQ2_bx|EK2N{!9!E*H{@Cj38>j<dViBmdW`nCX;VM6>|R*{Bw(gfnl8h1A`b?34~bE
zD9ApUk6mK2tQrqECUw-LndAi~=d-9!E>IJa$5#76bTTk3Y1}h;p_(Wz|4UE4uEy^H
sawU4cLKv_~k=RziWCe9YaFn8E2$)eI*Q8A@P*>vOV`X6ARtAX!0Ok+y>;M1&

delta 2337
zcmZ1<Fvnjwz?+#xgn@yBgCV89H)@KvaBa~<VWs+@Lk0qS%a{G1An)NMsPRRuD!{FT
z?Z|JlyB=+3sgrUi?l%`%tNeIHyUOf0r}s_Y9@%6nW&2UQ<lYst<W7kr7kix*bbkDq
zu~BtP#?7t4(U%t`hbNUdoskX}s|kGbqpDvk#{2OL5y@PUfE7pP^G=<yQK@{#dP|cn
zPvv5>MdFmI>)$1Y|1!$#zLlC|xPEW?&xva{B$PW8mc+mHUUT8n{TlHL`7KF*od3<A
zGyAIZv28BZ^F1pqWLhr91r!@(uxc=>^j_t&+36Pe_`>PUHj?fKUwB4{U2r;I-o2CY
zwtQWgO2qFcKUXqKHm{n|v+J*N$itod$ISBY?mO=9@<MUH*AMpkvb9=u!O`7ayY_^K
ze#=@R9n@BN`-#)lsdpX*PBne=%b{gS$ldq{H`vZTe7MJC-i1Zh;&F-D=eBGX<SXe5
zK6Ck{&-25PtAss*We%&z_ARe!n2|A+@7#B@b$^Q9ne$GPS+u69{l&g5B~DEX_;nAS
zu&81O#RC@u0|x^*9wu*PRAx@D@11;`Q5Q^eGs%Hz9VS)gl=|MuAxv6=pa^3?0+N&a
znM9RJO3O1-^Yl^8LsG?{4^qYkQ8w98U7Q!B6p{o$HYzfo1>5wIxf?`pu4kFU1ZK#w
zb8~_jIs&tJ1sf)XMJar{5z)uY!0?Zsfx!&bRJr=A;lBB|Ed=)d4qxH6UgdGh_StM*
zQ41Uzna<`l`rf+7HA_mnBx90-=IzXj|KqxTh3U8-EekxNp8ezAhr%=ynWO8!Nekv4
zj9B;NX-%X5GeM7KL3*1{|2+FOy2P%2>Y1e6D^fGMZK7_S{<*gJSJMREyG=(zg3Gug
zX7<$lc;5A=vEF~r^vIC^Oiz>YE1hq@EvqOO<5;e)&i(1<tH1m29d1+7Tf2CY<Mh0r
zt-Pz>i!RnXQB(3egJ<LR%uE-?_P?KPIA<S~p4#*y!cB>Dwc*Q~X{vs~%$HPq4_O#%
zU4MV+$nWFj1?O89l^d>HtJ^1aJba2}{+h%UC1R7$MR~8dG--}leb&Do&%ZIR6t+%?
z^k*%-@zk2HNMYe_TVn@Vg%5=V9tE!*nkqGvrj;;z?lM^*x@hNaSFtnGj5|CdX3B;~
z>Mc*0`EZv<%qO)s(yg_N%kJwfNqXw0;>wpBs#lY`Iyv!_L21kBsSB^ooU`*zgX&VR
zO$YQne7MT?{uXPw6c?nvuD5>U)~(0)YAsS&?0+El{T$v?;Y#8s)ed}E*Rc1UR<|eT
zi^(;)0Vnsj{qkLxzsO(F(KdT^KMzY8&$g9L!8TTWcbnI~oc74-U-$l`OU7GveA>F=
zZTb&YyME967A(eFFUB++413z<_~}pd_3z(j*|qfUD!h{NK&~|Spxa#u0f)Dbi|VuP
z91vW^=+SNS`0fmyb56__U0HiAH}q+~)c7u%dt2tgQSUt+Cr=ce&X;oHzd5luYDFbW
z==WB?%q#hgY%_oDyQe?>SdIOPYn`&X3H+s|%XnnoWi}?w6rWKsGkTtr)Z|Y)!~gTQ
z{;kjIUiPdw+qAxG)<m<K*SlX`zVuFC@OO(y{pDT`*WQwSB6I%AJ$=1&lNk5ZpJG#d
zC&+(Taqz$0$uQ=_uJ!jG&pmp~@7lg))yaZa|D4v0tI@pE<Kxw?YUix6>)YH*ZXAEt
ze5yM>Z;{3HI}1zK?X))WHl4C7(*A$hkDwoRGd{CrYI*F}as3x}Sh9TkPod>kyy}*#
z$!yV=-unJ>eT%aE{sVPqFIrDKC%WUz&KF^4y1cdi=`GtmF>wd$mL;ElZD%fBx;4Kh
z!2hbbhvl@8I=3cUo*xG#Q*7=uPmrIRa7;<A=Et8k71L%Pthjal%n1_<ng3NwHr~v)
zcw@>^<kB_2obO0|R8ZMIwXjG3)ISGq43NC(`ErKHDeHBUMMaP5q`Uw4AOAQYI_Ga(
z$a{ww0^RF>J^`09kgN_WJa(^pkmSU`z~D6b0+S>gyhM<md`_J!lJ|roSA&88>xI4L
zfl65~8Lf^b?3b8ecx-*_{(GP9-aA%2Cvt{GTq|qgE7jI|v33DL;bRe7h1vLp?`@5Y
z+rDLqZ4IJa0a+&O5pph>fq`M;<XR=E`p;fEpU!xDuD!tPt*dqJ%=yhh23L$9Jo3`>
z^40OY>Z|L0R{P@FlRA2yXT5bVo%Ygs^r@7$@XFUO#m&ZFiiI0jUD)xfQ?*KU>C>4N
zDql9<Y7B^*6BROT=A5WAQzMvMeg$0K!4Tlh$Rxsy@GZD*V`N}B!^FTaSzXx(T#m*l
zOIs{qWMJ@h4RO@<^mEgP=z^5Q$@RTa$R(!`oFl;S*75Y@^~#C?=xUfz)cj^-U`Q;%
zYbY0r2ARnUDw1HA*{Db}x=fBxky8ML9$XOv1A`=-19C<o)8q+EBF2!|L$L{6pFWDd
z6<~dcSQnqHrOE>;-zQtDN;7?Bnry(VHMs#Q)UPVdbd-4#i_7E>P?7(t(oDfDlMkq=
zPqt-YpX{Y31lAj`Ce8GTZL%)Agf=83A>j`Sr5QiC7lrULFg%xKV9<s;g@Iv7Bg5qV
zYE}vuH42KFxw0T{BAlxQ4i<O{W?*2jMNwa`h^iixsKw+#K>|;R3=9myD0*ZjGixYu
NU1MQj*q{WG007)xqsjmP

diff --git a/lib/java/dbrepo-core/.gitignore b/lib/java/dbrepo-core/.gitignore
index b425f09ad0..84f38abb66 100644
--- a/lib/java/dbrepo-core/.gitignore
+++ b/lib/java/dbrepo-core/.gitignore
@@ -9,6 +9,9 @@ target/
 *.iml
 *.ipr
 
+## generated
+dependency-reduced-pom.xml
+
 ### Eclipse ###
 .apt_generated
 .classpath
diff --git a/lib/java/dbrepo-core/Dockerfile b/lib/java/dbrepo-core/Dockerfile
deleted file mode 100644
index 5ffecc14d4..0000000000
--- a/lib/java/dbrepo-core/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-###### FIRST STAGE ######
-FROM --platform=$BUILDPLATFORM maven:3-amazoncorretto-17 AS build
-LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
-
-COPY ./pom.xml ./
-
-RUN mvn dependency:go-offline
-
-COPY ./src/ ./src/
-
-# Make sure it compiles
-RUN mvn clean install -DskipTests
\ No newline at end of file
diff --git a/lib/java/dbrepo-core/pom.xml b/lib/java/dbrepo-core/pom.xml
index d86419d19d..c18cf6a51d 100644
--- a/lib/java/dbrepo-core/pom.xml
+++ b/lib/java/dbrepo-core/pom.xml
@@ -35,7 +35,6 @@
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <lombok.version>1.18.36</lombok.version>
         <keycloak.version>26.0.4</keycloak.version>
         <mapstruct.version>1.6.3</mapstruct.version>
         <spring-cloud.version>4.1.4</spring-cloud.version>
@@ -43,10 +42,11 @@
         <springdoc-openapi.version>2.8.5</springdoc-openapi.version>
     </properties>
 
-    <dependencies><dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-validation</artifactId>
-    </dependency>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -104,7 +104,7 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <version>${lombok.version}</version>
-            <scope>compile</scope>
+            <scope>provided</scope>
         </dependency>
         <!-- Entities -->
         <dependency>
@@ -153,6 +153,20 @@
                     </annotationProcessorPaths>
                 </configuration>
             </plugin>
+            <!-- build shaded jar -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>3.6.0</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/make/build.mk b/make/build.mk
index 311cdecd97..ba831dc7c6 100644
--- a/make/build.mk
+++ b/make/build.mk
@@ -1,31 +1,26 @@
 ##@ Build
 
 .PHONY: build-images
-build-images: ## Build Docker images.
-	docker build --network=host -t dbrepo-core:build --target build ./lib/java/dbrepo-core
-	docker build --network=host -t dbrepo-data-service:build --target build dbrepo-data-service
-	docker build --network=host -t dbrepo-metadata-service:build --target build dbrepo-metadata-service
-	docker compose build --parallel
+build-images: build-java-lib ## Build Docker images.
+	docker compose build
 
-.PHONY: build-data-service
-build-data-service: ## Build the Data Service.
-	mvn -f ./dbrepo-data-service/pom.xml clean package -DskipTests
-
-.PHONY: build-metadata-service
-build-metadata-service: ## Build the Metadata Service.
-	mvn -f ./dbrepo-metadata-service/pom.xml clean package -DskipTests
+.PHONY: build-java-lib
+build-java-lib: ## Build the Java Library.
+	mvn -f ./lib/java/dbrepo-core/pom.xml -q clean package install -DskipTests
+	mvn deploy:deploy-file -q -Dfile=./lib/java/dbrepo-core/target/dbrepo-core-$(APP_VERSION).jar -DgroupId=at.ac.tuwien.ifs.dbrepo -DartifactId=dbrepo-core -Dversion=$(APP_VERSION) -Dpackaging=jar -Durl=file:./dbrepo-data-service/lib/ -DrepositoryId=maven-repository -DupdateReleaseInfo=true
+	mvn deploy:deploy-file -q -Dfile=./lib/java/dbrepo-core/target/dbrepo-core-$(APP_VERSION).jar -DgroupId=at.ac.tuwien.ifs.dbrepo -DartifactId=dbrepo-core -Dversion=$(APP_VERSION) -Dpackaging=jar -Durl=file:./dbrepo-metadata-service/lib/ -DrepositoryId=maven-repository -DupdateReleaseInfo=true
 
 .PHONY: build-auth-event-listener
 build-auth-event-listener: ## Build the Auth Service Event Listener.
-	mvn -f ./dbrepo-auth-service/listeners/pom.xml clean package -DskipTests
+	mvn -f ./dbrepo-auth-service/listeners/pom.xml -q clean package -DskipTests
 	cp ./dbrepo-auth-service/listeners/target/create-event-listener.jar ./helm/dbrepo/files/create-event-listener.jar
 
 .PHONY: build-ui
 build-ui: ## Build the UI.
 	bun --cwd ./dbrepo-ui build
 
-.PHONY: build-lib
-build-lib: ## Build the Python Library.
+.PHONY: build-python-lib
+build-python-lib: ## Build the Python Library.
 	rm -rf ./dbrepo-analyse-service/venv/ ./dbrepo-analyse-service/Pipfile.lock ./dbrepo-analyse-service/lib/*
 	rm -rf ./dbrepo-search-service/venv/ ./dbrepo-search-service/Pipfile.lock ./dbrepo-search-service/lib/*
 	rm -rf ./dbrepo-dashboard-service/venv/ ./dbrepo-dashboard-service/Pipfile.lock ./dbrepo-dashboard-service/lib/*
diff --git a/make/dev.mk b/make/dev.mk
index d5a8cd513a..e865e2d9dd 100644
--- a/make/dev.mk
+++ b/make/dev.mk
@@ -1,12 +1,11 @@
 ##@ Development
 
 .PHONY: start-dev
-start-dev: build-images build-auth-event-listener ## Start the development deployment.
+start-dev: build-java-lib build-auth-event-listener build-images ## Start the development deployment.
 	docker container stop dbrepo-gateway-service || true
 	docker container rm dbrepo-gateway-service || true
 	docker compose up -d
 
-
 .PHONY: stop-dev
 stop-dev: ## Stop the development deployment and remove all data.
 	docker compose down
-- 
GitLab