From b4432333d5c14252dfad4a8306a313f598843dc4 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Tue, 6 Jun 2023 22:42:59 +0200
Subject: [PATCH] WIP

---
 dbrepo-container-service/pom.xml              |  5 ++++
 .../DbrepoContainerManagingApplication.java   |  5 ++--
 .../src/main/resources/application-local.yml  |  2 +-
 .../src/main/resources/application.yml        |  2 +-
 .../endpoint/ContainerEndpointUnitTest.java   |  3 +-
 .../ImageEndpointIntegrationTest.java         | 21 ++------------
 .../endpoint/ImageEndpointUnitTest.java       |  2 +-
 .../ContainerServiceIntegrationTest.java      |  8 ++---
 .../service/ImageServiceIntegrationTest.java  |  6 ++--
 .../tuwien/service/ImageServiceUnitTest.java  |  2 +-
 .../service/PersistenceIntegrationTest.java   |  5 ++--
 .../service/UserServiceIntegrationTest.java   |  4 +--
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../repository/jpa/RealmRepository.java       | 14 ---------
 .../{jpa => mdb}/ContainerRepository.java     |  2 +-
 .../repository/mdb}/DatabaseRepository.java   |  2 +-
 .../{jpa => mdb}/IdentifierRepository.java    |  2 +-
 .../{jpa => mdb}/ImageDateRepository.java     |  5 ++--
 .../{jpa => mdb}/ImageRepository.java         |  2 +-
 .../repository/mdb}/RealmRepository.java      |  2 +-
 .../repository/mdb}/UserRepository.java       |  2 +-
 .../service/impl/ContainerServiceImpl.java    |  5 ++--
 .../tuwien/service/impl/ImageServiceImpl.java |  2 +-
 .../tuwien/service/impl/UserServiceImpl.java  |  2 +-
 dbrepo-database-service/pom.xml               | 11 ++++---
 .../DbrepoDatabaseManagingApplication.java    |  6 ++--
 .../at/tuwien/endpoints/DatabaseEndpoint.java |  3 +-
 .../src/main/resources/application-local.yml  |  8 ++---
 .../src/main/resources/application.yml        |  4 +--
 .../endpoint/AccessEndpointUnitTest.java      |  4 +--
 .../endpoint/DatabaseEndpointUnitTest.java    |  9 ++----
 .../endpoint/LicenseEndpointUnitTest.java     |  4 +--
 .../service/AccessServiceIntegrationTest.java |  5 +---
 .../tuwien/service/AccessServiceUnitTest.java |  4 +--
 .../service/DatabaseServiceComponentTest.java |  8 ++---
 .../DatabaseServiceIntegrationTest.java       |  9 ++----
 .../service/DatabaseServiceUnitTest.java      |  5 ++--
 .../IdentifierServiceIntegrationTest.java     | 14 +--------
 .../LicenseServiceIntegrationTest.java        |  4 +--
 .../MessageQueueServiceIntegrationTest.java   |  4 +--
 .../service/MessageQueueServiceUnitTest.java  |  8 +----
 .../QueryStoreServiceIntegrationTest.java     |  2 +-
 .../service/UserServiceIntegrationTest.java   |  8 ++---
 .../java/at/tuwien/config/IndexConfig.java    | 20 +++----------
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../repository/mdb}/ContainerRepository.java  |  2 +-
 .../DatabaseAccessRepository.java             |  5 ++--
 .../{jpa => mdb}/DatabaseRepository.java      |  2 +-
 .../{jpa => mdb}/IdentifierRepository.java    |  2 +-
 .../{jpa => mdb}/ImageRepository.java         |  2 +-
 .../{jpa => mdb}/LicenseRepository.java       |  2 +-
 .../{jpa => mdb}/RealmRepository.java         |  2 +-
 .../{jpa => mdb}/TableRepository.java         |  5 ++--
 .../{jpa => mdb}/UserRepository.java          |  2 +-
 .../DatabaseIdxRepository.java                |  2 +-
 .../service/impl/AccessServiceImpl.java       |  2 +-
 .../service/impl/ContainerServiceImpl.java    |  2 +-
 .../service/impl/IdentifierServiceImpl.java   |  5 +---
 .../service/impl/LicenseServiceImpl.java      |  2 +-
 .../service/impl/MariaDbServiceImpl.java      |  5 ++--
 .../service/impl/RabbitMqServiceImpl.java     |  2 +-
 .../tuwien/service/impl/UserServiceImpl.java  |  3 +-
 dbrepo-identifier-service/pom.xml             |  5 ++++
 .../DbrepoIdentifierServiceApplication.java   |  8 ++---
 .../src/main/resources/application-local.yml  |  2 +-
 .../src/main/resources/application.yml        |  2 +-
 .../IdentifierEndpointIntegrationTest.java    |  2 +-
 .../endpoint/IdentifierEndpointUnitTest.java  |  2 +-
 .../gateway/QueryServiceGatewayUnitTest.java  |  2 +-
 .../DataCiteIdentifierServiceUnitTest.java    |  2 +-
 .../IdentifierServiceIntegrationTest.java     |  4 +--
 .../service/IdentifierServiceUnitTest.java    |  4 +--
 .../tuwien/service/UserServiceUnitTest.java   |  2 +-
 .../java/at/tuwien/config/IndexConfig.java    | 17 +++--------
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../{jpa => mdb}/AccessRepository.java        |  5 ++--
 .../repository/mdb}/ContainerRepository.java  |  2 +-
 .../{jpa => mdb}/CreatorRepository.java       |  5 ++--
 .../{jpa => mdb}/DatabaseRepository.java      |  2 +-
 .../{jpa => mdb}/IdentifierRepository.java    |  2 +-
 .../repository/mdb}/ImageRepository.java      |  2 +-
 .../{jpa => mdb}/RealmRepository.java         |  4 +--
 .../RelatedIdentifierRepository.java          |  2 +-
 .../{jpa => mdb}/TableRepository.java         |  5 ++--
 .../{jpa => mdb}/UserRepository.java          |  2 +-
 .../IdentifierIdxRepository.java              |  2 +-
 .../service/impl/AccessServiceImpl.java       |  2 +-
 .../impl/DataCiteIdentifierServiceImpl.java   |  2 +-
 .../service/impl/DatabaseServiceImpl.java     |  2 +-
 .../service/impl/IdentifierServiceImpl.java   |  6 ++--
 .../tuwien/service/impl/UserServiceImpl.java  |  2 +-
 .../tuwien/api/identifier/IdentifierDto.java  |  2 +-
 dbrepo-metadata-service/pom.xml               |  5 ++++
 .../DbrepoMetadataServiceApplication.java     |  8 ++---
 .../src/main/resources/application-local.yml  |  4 +++
 .../src/main/resources/application.yml        |  4 +++
 .../endpoints/MetadataEndpointUnitTest.java   |  4 +--
 .../IdentifierServiceIntegrationTest.java     |  3 +-
 .../MetadataServiceIntegrationTest.java       |  3 +-
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../{jpa => mdb}/ContainerRepository.java     |  2 +-
 .../{jpa => mdb}/DatabaseRepository.java      |  2 +-
 .../{jpa => mdb}/IdentifierRepository.java    |  2 +-
 .../{jpa => mdb}/ImageRepository.java         |  2 +-
 .../{jpa => mdb}/RealmRepository.java         |  2 +-
 .../{jpa => mdb}/UserRepository.java          |  2 +-
 .../IdentifierIdxRepository.java}             |  4 +--
 .../service/impl/IdentifierServiceImpl.java   |  2 +-
 dbrepo-query-service/pom.xml                  | 11 +++++++
 .../tuwien/DbrepoQueryServiceApplication.java |  8 ++---
 .../src/main/resources/application-local.yml  |  2 +-
 .../src/main/resources/application.yml        |  4 +--
 .../endpoint/ExportEndpointUnitTest.java      |  7 ++---
 .../endpoint/QueryEndpointUnitTest.java       |  8 ++---
 .../endpoint/StoreEndpointUnitTest.java       |  3 +-
 .../TableHistoryEndpointUnitTest.java         |  3 +-
 .../RabbitMqListenerIntegrationTest.java      |  2 +-
 .../ViewIdxRepositoryIntegrationTest.java     |  4 +--
 .../ViewRepositoryIntegrationTest.java        |  2 +-
 .../ContainerServiceIntegrationTest.java      |  3 +-
 .../service/QueryServiceIntegrationTest.java  |  2 +-
 .../service/QueueServiceIntegrationTest.java  |  6 ++--
 .../StoreServiceIntegrationModifyTest.java    |  2 +-
 .../StoreServiceIntegrationReadTest.java      |  6 ++--
 .../TableServiceIntegrationReadTest.java      |  2 +-
 .../tuwien/service/TableServiceUnitTest.java  |  3 +-
 .../service/ViewServiceIntegrationTest.java   |  4 +--
 .../java/at/tuwien/config/IndexConfig.java    | 20 +++----------
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../elastic/DatabaseIdxRepository.java        |  9 ------
 .../{jpa => mdb}/ContainerRepository.java     |  2 +-
 .../DatabaseAccessRepository.java             |  5 ++--
 .../{jpa => mdb}/DatabaseRepository.java      |  2 +-
 .../{jpa => mdb}/IdentifierRepository.java    |  2 +-
 .../{jpa => mdb}/ImageRepository.java         |  2 +-
 .../{jpa => mdb}/RealmRepository.java         |  4 +--
 .../{jpa => mdb}/TableColumnRepository.java   |  5 ++--
 .../{jpa => mdb}/TableRepository.java         |  5 ++--
 .../repository/mdb}/UserRepository.java       |  2 +-
 .../{jpa => mdb}/ViewRepository.java          |  4 +--
 .../{elastic => sdb}/ViewIdxRepository.java   |  2 +-
 .../service/impl/AccessServiceImpl.java       |  2 +-
 .../service/impl/ContainerServiceImpl.java    |  2 +-
 .../service/impl/DatabaseServiceImpl.java     |  2 +-
 .../service/impl/IdentifierServiceImpl.java   |  2 +-
 .../tuwien/service/impl/TableServiceImpl.java |  2 +-
 .../tuwien/service/impl/UserServiceImpl.java  |  2 +-
 .../tuwien/service/impl/ViewServiceImpl.java  |  4 +--
 dbrepo-semantics-service/pom.xml              | 11 +++++++
 .../DbrepoSemanticsServiceApplication.java    |  4 +--
 .../src/main/resources/application-local.yml  |  2 +-
 .../src/main/resources/application.yml        |  2 +-
 .../OntologyServiceIntegrationTest.java       |  6 ++--
 .../service/QueryServiceIntegrationTest.java  |  6 ++--
 .../service/SemanticServiceUnitTest.java      |  2 +-
 .../service/TableServiceIntegrationTest.java  |  6 ++--
 .../tuwien/service/TableServiceUnitTest.java  |  2 +-
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../repository/mdb}/ContainerRepository.java  |  2 +-
 .../repository/mdb}/DatabaseRepository.java   |  2 +-
 .../repository/mdb}/ImageRepository.java      |  2 +-
 .../{jpa => mdb}/OntologyRepository.java      |  2 +-
 .../repository/mdb/RealmRepository.java       | 12 ++++++++
 .../TableColumnConceptRepository.java         |  2 +-
 .../{jpa => mdb}/TableColumnRepository.java   |  2 +-
 .../TableColumnUnitRepository.java            |  2 +-
 .../{jpa => mdb}/TableRepository.java         |  2 +-
 .../repository/mdb}/UserRepository.java       |  2 +-
 .../TableColumnIdxRepository.java             |  5 ++--
 .../{elastic => sdb}/TableIdxRepository.java  |  5 ++--
 .../service/impl/OntologyServiceImpl.java     |  2 +-
 .../tuwien/service/impl/QueryServiceImpl.java |  2 +-
 .../service/impl/SemanticServiceImpl.java     |  4 +--
 .../tuwien/service/impl/TableServiceImpl.java |  4 +--
 .../tuwien/service/impl/UserServiceImpl.java  |  2 +-
 .../tuwien/DbrepoTableServiceApplication.java |  4 +--
 .../java/at/tuwien/config/IndexConfig.java    |  5 ++--
 .../at/tuwien/config/OpenSearchConfig.java    |  2 +-
 dbrepo-user-service/pom.xml                   |  5 ++++
 .../at/tuwien/FdaUserServiceApplication.java  |  8 ++---
 .../src/main/resources/application-local.yml  |  2 +-
 .../src/main/resources/application.yml        |  2 +-
 .../BannerMessageServiceIntegrationTest.java  |  5 +---
 .../service/RealmServiceIntegrationTest.java  |  2 +-
 .../service/RoleServiceIntegrationTest.java   |  7 ++---
 .../UserAttributeServiceIntegrationTest.java  |  7 ++---
 .../service/UserServiceIntegrationTest.java   |  6 ++--
 .../java/at/tuwien/config/IndexConfig.java    | 17 ++---------
 .../at/tuwien/config/OpenSearchConfig.java    |  9 +++---
 .../{jpa => mdb}/BannerMessageRepository.java |  2 +-
 .../{jpa => mdb}/CredentialRepository.java    |  2 +-
 .../{jpa => mdb}/RealmRepository.java         |  2 +-
 .../{jpa => mdb}/RoleMappingRepository.java   |  2 +-
 .../{jpa => mdb}/RoleRepository.java          |  2 +-
 .../{jpa => mdb}/UserAttributeRepository.java |  3 +-
 .../{jpa => mdb}/UserRepository.java          |  2 +-
 .../{elastic => sdb}/UserIdxRepository.java   |  7 +++--
 .../impl/BannerMessageServiceImpl.java        |  2 +-
 .../tuwien/service/impl/RealmServiceImpl.java |  2 +-
 .../tuwien/service/impl/RoleServiceImpl.java  |  2 +-
 .../impl/UserAttributeServiceImpl.java        |  3 +-
 .../tuwien/service/impl/UserServiceImpl.java  |  6 ++--
 docker-compose.yml                            | 29 ++++++++++++-------
 203 files changed, 407 insertions(+), 493 deletions(-)
 delete mode 100644 dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
 rename dbrepo-container-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ContainerRepository.java (91%)
 rename {dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb}/DatabaseRepository.java (88%)
 rename dbrepo-container-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/IdentifierRepository.java (88%)
 rename dbrepo-container-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ImageDateRepository.java (64%)
 rename dbrepo-container-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ImageRepository.java (91%)
 rename {dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb}/RealmRepository.java (88%)
 rename {dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb}/UserRepository.java (90%)
 rename {dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb}/ContainerRepository.java (88%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseAccessRepository.java (87%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseRepository.java (97%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/IdentifierRepository.java (93%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ImageRepository.java (88%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/LicenseRepository.java (90%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RealmRepository.java (88%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableRepository.java (52%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/UserRepository.java (90%)
 rename dbrepo-database-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/DatabaseIdxRepository.java (88%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/AccessRepository.java (76%)
 rename {dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb}/ContainerRepository.java (88%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/CreatorRepository.java (70%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseRepository.java (95%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/IdentifierRepository.java (95%)
 rename {dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb}/ImageRepository.java (88%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RealmRepository.java (72%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RelatedIdentifierRepository.java (91%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableRepository.java (74%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/UserRepository.java (90%)
 rename dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/IdentifierIdxRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ContainerRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseRepository.java (87%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/IdentifierRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ImageRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RealmRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/UserRepository.java (88%)
 rename dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/{elastic/IdentifieridxRepository.java => sdb/IdentifierIdxRepository.java} (68%)
 delete mode 100644 dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ContainerRepository.java (88%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseAccessRepository.java (83%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/DatabaseRepository.java (94%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/IdentifierRepository.java (91%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ImageRepository.java (85%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RealmRepository.java (72%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableColumnRepository.java (74%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableRepository.java (79%)
 rename {dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb}/UserRepository.java (90%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/ViewRepository.java (80%)
 rename dbrepo-query-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/ViewIdxRepository.java (87%)
 rename {dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb}/ContainerRepository.java (88%)
 rename {dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb}/DatabaseRepository.java (88%)
 rename {dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb}/ImageRepository.java (88%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/OntologyRepository.java (88%)
 create mode 100644 dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableColumnConceptRepository.java (89%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableColumnRepository.java (91%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableColumnUnitRepository.java (89%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/TableRepository.java (92%)
 rename {dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa => dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb}/UserRepository.java (90%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/TableColumnIdxRepository.java (67%)
 rename dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/TableIdxRepository.java (69%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/BannerMessageRepository.java (90%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/CredentialRepository.java (89%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RealmRepository.java (90%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RoleMappingRepository.java (89%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/RoleRepository.java (90%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/UserAttributeRepository.java (87%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{jpa => mdb}/UserRepository.java (91%)
 rename dbrepo-user-service/services/src/main/java/at/tuwien/repository/{elastic => sdb}/UserIdxRepository.java (70%)

diff --git a/dbrepo-container-service/pom.xml b/dbrepo-container-service/pom.xml
index b6e164c44e..8c4c65ef61 100644
--- a/dbrepo-container-service/pom.xml
+++ b/dbrepo-container-service/pom.xml
@@ -94,6 +94,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Entity and API -->
         <dependency>
             <groupId>at.tuwien</groupId>
diff --git a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java
index dfc87fe1bd..132ad5519d 100644
--- a/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java
+++ b/dbrepo-container-service/rest-service/src/main/java/at/tuwien/DbrepoContainerManagingApplication.java
@@ -4,16 +4,15 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration;
 import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-@SpringBootApplication
 @EnableJpaAuditing
 @EnableTransactionManagement
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
 @EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoContainerManagingApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml
index 515bfd5174..d08d2341bd 100644
--- a/dbrepo-container-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-container-service/rest-service/src/main/resources/application-local.yml
@@ -30,7 +30,7 @@ spring:
   opensearch:
     username: admin
     password: admin
-    uris: http://localhost:9200
+    uris: localhost:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 springdoc.swagger-ui.enabled: true
 server:
diff --git a/dbrepo-container-service/rest-service/src/main/resources/application.yml b/dbrepo-container-service/rest-service/src/main/resources/application.yml
index b2722c825f..554fe0c8f2 100644
--- a/dbrepo-container-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-container-service/rest-service/src/main/resources/application.yml
@@ -32,7 +32,7 @@ spring:
   opensearch:
     username: "${SEARCH_USERNAME}"
     password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
+    uris: search-db:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 springdoc.swagger-ui.enabled: true
 server:
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java
index b5b9a9deb7..acaa7b1c87 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ContainerEndpointUnitTest.java
@@ -2,12 +2,11 @@ package at.tuwien.endpoint;
 
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.container.*;
-import at.tuwien.config.DockerConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.ContainerEndpoint;
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.impl.ContainerServiceImpl;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java
index 689ac6ea55..f6b05e1475 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointIntegrationTest.java
@@ -1,19 +1,12 @@
 package at.tuwien.endpoint;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.api.container.image.ImageBriefDto;
-import at.tuwien.api.container.image.ImageChangeDto;
-import at.tuwien.api.container.image.ImageCreateDto;
-import at.tuwien.api.container.image.ImageDto;
 import at.tuwien.config.DockerConfig;
-import at.tuwien.config.DockerDaemonConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.ImageEndpoint;
-import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -22,20 +15,10 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.test.context.support.WithAnonymousUser;
 import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.security.Principal;
-import java.util.List;
-import java.util.Optional;
-
-import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.when;
 
 @Log4j2
 @ExtendWith(SpringExtension.class)
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
index 77d238be78..32380858b1 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/endpoint/ImageEndpointUnitTest.java
@@ -10,7 +10,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.ImageEndpoint;
 import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.impl.ImageServiceImpl;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
index 35765c567f..20f54cca5a 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
@@ -7,10 +7,10 @@ import at.tuwien.config.DockerConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.ImageRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
index cdbcd6b052..5231fe2eef 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceIntegrationTest.java
@@ -4,9 +4,9 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.api.container.image.ImageCreateDto;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.ImageRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.impl.ImageServiceImpl;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.RandomUtils;
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
index 82b9162e4a..f92fa9102a 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/ImageServiceUnitTest.java
@@ -6,7 +6,7 @@ import at.tuwien.api.container.image.ImageCreateDto;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.ImageRepository;
+import at.tuwien.repository.mdb.ImageRepository;
 import at.tuwien.service.impl.ImageServiceImpl;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java
index d7b341c23a..5de8523304 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/PersistenceIntegrationTest.java
@@ -3,8 +3,8 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.ImageNotFoundException;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.ImageRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.impl.ImageServiceImpl;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
@@ -15,7 +15,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
-import org.springframework.transaction.UnexpectedRollbackException;
 
 import static org.junit.jupiter.api.Assertions.*;
 
diff --git a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
index a1a06e35c2..de8aeb7439 100644
--- a/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
+++ b/dbrepo-container-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
@@ -4,8 +4,8 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
deleted file mode 100644
index c1a5d756b7..0000000000
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package at.tuwien.repository.jpa;
-
-import at.tuwien.entities.user.Realm;
-import at.tuwien.entities.user.User;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-import java.util.UUID;
-
-@Repository
-public interface RealmRepository extends JpaRepository<Realm, UUID> {
-
-}
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 91%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index df2a6eba16..39a041738c 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 88%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index 688993ab3c..c11a773abc 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
similarity index 88%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
index f76f9976d6..2388321586 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java
similarity index 64%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java
index c2af743124..889144818d 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageDateRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageDateRepository.java
@@ -1,10 +1,11 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImageDate;
+import at.tuwien.entities.container.image.ContainerImageDateKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface ImageDateRepository extends JpaRepository<ContainerImageDate, Long> {
+public interface ImageDateRepository extends JpaRepository<ContainerImageDate, ContainerImageDateKey> {
 
 }
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 91%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index ca60fb1a74..3e9b129fc0 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 88%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index 5b5855dec8..7b53e72459 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 9eb0b51902..42d09c3e9e 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index e25363f443..2a0008f4f6 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -2,7 +2,6 @@ package at.tuwien.service.impl;
 
 import at.tuwien.api.container.ContainerCreateRequestDto;
 import at.tuwien.api.container.ContainerDto;
-import at.tuwien.api.container.ContainerStateDto;
 import at.tuwien.config.DockerDaemonConfig;
 import at.tuwien.entities.container.Container;
 import at.tuwien.entities.container.image.ContainerImage;
@@ -10,8 +9,8 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.ContainerMapper;
 import at.tuwien.mapper.ImageMapper;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.ImageRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.ImageRepository;
 import at.tuwien.service.ContainerService;
 import at.tuwien.service.UserService;
 import com.github.dockerjava.api.DockerClient;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
index c7e16a398d..a9f2f4f7c1 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
@@ -6,7 +6,7 @@ import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.ImageMapper;
-import at.tuwien.repository.jpa.ImageRepository;
+import at.tuwien.repository.mdb.ImageRepository;
 import at.tuwien.service.ImageService;
 import com.github.dockerjava.api.DockerClient;
 import com.github.dockerjava.api.async.ResultCallback;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 52fec3af7c..62b9995acb 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml
index bf7922f997..8c0a29fdaf 100644
--- a/dbrepo-database-service/pom.xml
+++ b/dbrepo-database-service/pom.xml
@@ -68,12 +68,6 @@
             <artifactId>dbrepo-metadata-db-entites</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!-- elasticsearch -->
-        <dependency>
-            <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch-client.version}</version>
-        </dependency>
         <!-- AMQP -->
         <dependency>
             <groupId>org.springframework.amqp</groupId>
@@ -121,6 +115,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Entity, API, QueryStore -->
         <dependency>
             <groupId>at.tuwien</groupId>
diff --git a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java
index bcc12b9542..50eb96b720 100644
--- a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java
+++ b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/DbrepoDatabaseManagingApplication.java
@@ -9,12 +9,12 @@ import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-@SpringBootApplication
 @EnableJpaAuditing
 @EnableTransactionManagement
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
 @EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoDatabaseManagingApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
index 40a45b0cce..d1e815abc1 100644
--- a/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
+++ b/dbrepo-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
@@ -1,6 +1,5 @@
 package at.tuwien.endpoints;
 
-import at.tuwien.api.container.ContainerBriefDto;
 import at.tuwien.api.container.ContainerDto;
 import at.tuwien.api.database.*;
 import at.tuwien.api.error.ApiErrorDto;
@@ -10,7 +9,7 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
 import at.tuwien.service.*;
 import at.tuwien.service.impl.MariaDbServiceImpl;
 import io.micrometer.core.annotation.Timed;
diff --git a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml
index 1d647d4d6f..a4d3198865 100644
--- a/dbrepo-database-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-database-service/rest-service/src/main/resources/application-local.yml
@@ -27,10 +27,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
-  elasticsearch:
-    password: elastic
-    username: elastic
-    uris: http://localhost:9200
+  opensearch:
+    password: admin
+    username: admin
+    uris: localhost:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9092
diff --git a/dbrepo-database-service/rest-service/src/main/resources/application.yml b/dbrepo-database-service/rest-service/src/main/resources/application.yml
index 3ca17044ae..a13a452a28 100644
--- a/dbrepo-database-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-database-service/rest-service/src/main/resources/application.yml
@@ -1,8 +1,6 @@
 app.version: '@project.version@'
 spring:
   main.banner-mode: off
-  autoconfigure:
-    exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration
   datasource:
     url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}"
     driver-class-name: org.mariadb.jdbc.Driver
@@ -32,7 +30,7 @@ spring:
   opensearch:
     password: "${SEARCH_PASSWORD}"
     username: "${SEARCH_USERNAME}"
-    uris: http://search-db:9200
+    uris: search-db:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9092
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
index ac03038159..a4459ceb4a 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
@@ -13,11 +13,10 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.AccessMapper;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.AccessService;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +26,6 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.test.context.support.WithAnonymousUser;
 import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
index 4cf0fc3edb..513d93fa26 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
@@ -2,7 +2,6 @@ package at.tuwien.endpoint;
 
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.database.*;
-import at.tuwien.config.H2Utils;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.DatabaseEndpoint;
@@ -10,13 +9,11 @@ import at.tuwien.entities.container.Container;
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.DatabaseIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.DatabaseIdxRepository;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.*;
 import at.tuwien.service.impl.MariaDbServiceImpl;
-import at.tuwien.test.BaseTest;
 import com.rabbitmq.client.Channel;
-import lombok.With;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -25,10 +22,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
 import org.springframework.security.test.context.support.WithAnonymousUser;
 import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java
index b102cbf851..6bddad3d91 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/LicenseEndpointUnitTest.java
@@ -5,8 +5,7 @@ import at.tuwien.api.database.*;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.LicenseEndpoint;
-import at.tuwien.repository.jpa.LicenseRepository;
-import at.tuwien.test.BaseTest;
+import at.tuwien.repository.mdb.LicenseRepository;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
@@ -16,7 +15,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
index bcb86edb33..839ded8788 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
@@ -5,15 +5,12 @@ import at.tuwien.api.database.AccessTypeDto;
 import at.tuwien.api.database.DatabaseGiveAccessDto;
 import at.tuwien.api.database.DatabaseModifyAccessDto;
 import at.tuwien.config.DockerConfig;
-import at.tuwien.config.H2Utils;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.AccessType;
-import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
-import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java
index a530ea55f1..ba3da601ac 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceUnitTest.java
@@ -3,17 +3,15 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.database.AccessTypeDto;
 import at.tuwien.api.database.DatabaseModifyAccessDto;
-import at.tuwien.config.H2Utils;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.AccessType;
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.AccessDeniedException;
 import at.tuwien.exception.NotAllowedException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java
index 1117c0b9a8..eab873555a 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceComponentTest.java
@@ -5,10 +5,10 @@ import at.tuwien.api.database.DatabaseCreateDto;
 import at.tuwien.api.database.DatabaseDto;
 import at.tuwien.config.*;
 import at.tuwien.entities.database.Database;
-import at.tuwien.repository.elastic.DatabaseIdxRepository;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.sdb.DatabaseIdxRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.impl.MariaDbServiceImpl;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
index dde3a3f802..5afc03b3bd 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
@@ -10,14 +10,12 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.MariaDbConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.Database;
-import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.DatabaseIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.DatabaseIdxRepository;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.impl.MariaDbServiceImpl;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.apache.http.auth.BasicUserPrincipal;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,10 +25,7 @@ import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.io.File;
-import java.security.Principal;
 import java.sql.SQLException;
-import java.util.List;
-import java.util.Optional;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.any;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
index 9d02bb53f4..24d383667a 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
@@ -8,11 +8,10 @@ import at.tuwien.entities.container.Container;
 import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.impl.MariaDbServiceImpl;
 import at.tuwien.service.impl.RabbitMqServiceImpl;
-import at.tuwien.test.BaseTest;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
index d442fccb1b..bf3b962a84 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
@@ -1,22 +1,12 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.config.DockerConfig;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.identifier.Identifier;
-import at.tuwien.entities.identifier.IdentifierType;
-import at.tuwien.exception.AmqpException;
-import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.repository.jpa.*;
-import at.tuwien.service.impl.RabbitMqServiceImpl;
-import at.tuwien.utils.AmqpUtils;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.apache.http.auth.BasicUserPrincipal;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -26,11 +16,9 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.security.Principal;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.when;
 
 @Log4j2
 @SpringBootTest
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java
index 98ae89f241..529cc363db 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java
@@ -4,9 +4,8 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.License;
-import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.LicenseNotFoundException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
@@ -15,7 +14,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
index 17e63a0882..4f954d7b67 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
@@ -8,12 +8,11 @@ import at.tuwien.exception.AmqpException;
 import at.tuwien.exception.BrokerVirtualHostCreationException;
 import at.tuwien.exception.BrokerVirtualHostGrantException;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.impl.RabbitMqServiceImpl;
 import at.tuwien.utils.AmqpUtils;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.apache.http.auth.BasicUserPrincipal;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -23,7 +22,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.security.Principal;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java
index b01dcfbd68..b8f3d6a0ff 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java
@@ -1,19 +1,15 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.config.DockerConfig;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.AmqpException;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.impl.RabbitMqServiceImpl;
-import at.tuwien.utils.AmqpUtils;
 import com.rabbitmq.client.BuiltinExchangeType;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,11 +18,9 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.io.IOException;
-import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.when;
 
 @Log4j2
 @SpringBootTest
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
index e52110c7ff..6c3c01945a 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
@@ -7,7 +7,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.impl.HibernateConnector;
 import at.tuwien.service.impl.QueryStoreServiceImpl;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
index 6c4c0d0b74..060989f1a4 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
@@ -3,13 +3,10 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
-import at.tuwien.entities.database.License;
 import at.tuwien.entities.user.User;
-import at.tuwien.exception.LicenseNotFoundException;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.LicenseRepository;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
@@ -20,7 +17,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import java.util.List;
 import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java
index 69e950bac1..a33578d129 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/IndexConfig.java
@@ -2,15 +2,11 @@ package at.tuwien.config;
 
 import at.tuwien.api.database.DatabaseDto;
 import at.tuwien.mapper.DatabaseMapper;
-import at.tuwien.repository.elastic.DatabaseIdxRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.sdb.DatabaseIdxRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.event.EventListener;
-import org.springframework.core.env.Environment;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -24,31 +20,23 @@ public class IndexConfig {
     private final DatabaseMapper databaseMapper;
     private final DatabaseRepository databaseRepository;
     private final DatabaseIdxRepository databaseIdxRepository;
-    private final ElasticsearchOperations elasticsearchOperations;
 
     public IndexConfig(DatabaseMapper databaseMapper, DatabaseRepository databaseRepository,
-                       DatabaseIdxRepository databaseIdxRepository, ElasticsearchOperations elasticsearchOperations) {
+                       DatabaseIdxRepository databaseIdxRepository) {
         this.databaseMapper = databaseMapper;
         this.databaseRepository = databaseRepository;
         this.databaseIdxRepository = databaseIdxRepository;
-        this.elasticsearchOperations = elasticsearchOperations;
     }
 
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        final IndexCoordinates databaseIndex = IndexCoordinates.of("database");
-        if (!elasticsearchOperations.indexOps(databaseIndex).exists()) {
-            elasticsearchOperations.indexOps(databaseIndex).create();
-            elasticsearchOperations.indexOps(databaseIndex).createMapping(DatabaseDto.class);
-            log.info("Created identifier index");
-        }
         final List<DatabaseDto> databases = databaseRepository.findAll()
                 .stream()
                 .map(databaseMapper::databaseToDatabaseDto)
                 .collect(Collectors.toList());
-        log.info("Added {} databases to OpenSearch index", databases.size());
         databaseIdxRepository.saveAll(databases);
+        log.info("Added {} databases to open search index", databases.size());
     }
 
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index 39566b1cc0..f41d2aa3fa 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
similarity index 87%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
index 3cf7c7ad00..fbcd74ed77 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
@@ -1,6 +1,7 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.DatabaseAccess;
+import at.tuwien.entities.database.DatabaseAccessKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -11,7 +12,7 @@ import java.util.Optional;
 import java.util.UUID;
 
 @Repository
-public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> {
+public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> {
 
     void deleteByHdbidAndHuserid(Long databaseId, UUID userId);
 
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 97%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index 92e18ed661..b70f0e0fb2 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
similarity index 93%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
index 283dd62e8d..e9a1ace9a7 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.identifier.IdentifierType;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 88%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index c033bd17dc..b1020fdcc5 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java
similarity index 90%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java
index 6ad152559a..f59906b29c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/LicenseRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/LicenseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.License;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 88%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index 99f75a4104..bd985254a5 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
similarity index 52%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
index 9f01ada5f7..a1585a8f69 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
@@ -1,10 +1,11 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.Table;
+import at.tuwien.entities.database.table.TableKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface TableRepository extends JpaRepository<Table, Long> {
+public interface TableRepository extends JpaRepository<Table, TableKey> {
 
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 9eb0b51902..42d09c3e9e 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java
similarity index 88%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java
rename to dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java
index 709fa7be4d..6125ff39ab 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/sdb/DatabaseIdxRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.api.database.DatabaseDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index a94df13990..1a615abbe6 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -8,7 +8,7 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.UserService;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index 76c29263d4..1796de02e8 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -4,7 +4,7 @@ import at.tuwien.api.container.ContainerDto;
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.ContainerNotFoundException;
 import at.tuwien.gateway.ContainerServiceGateway;
-import at.tuwien.repository.jpa.ContainerRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
 import at.tuwien.service.ContainerService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 687a630b49..fec8411987 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -1,16 +1,13 @@
 package at.tuwien.service.impl;
 
 import at.tuwien.entities.identifier.Identifier;
-import at.tuwien.entities.identifier.IdentifierType;
-import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
 import at.tuwien.service.IdentifierService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Optional;
 
 @Log4j2
 @Service
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java
index 4608207d92..22a7634c3c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/LicenseServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.License;
 import at.tuwien.exception.LicenseNotFoundException;
-import at.tuwien.repository.jpa.LicenseRepository;
+import at.tuwien.repository.mdb.LicenseRepository;
 import at.tuwien.service.LicenseService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.stereotype.Service;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
index 3723ccaae8..93c3564be7 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
@@ -1,7 +1,6 @@
 package at.tuwien.service.impl;
 
 import at.tuwien.api.database.DatabaseCreateDto;
-import at.tuwien.api.database.DatabaseDto;
 import at.tuwien.api.database.DatabaseModifyVisibilityDto;
 import at.tuwien.api.database.DatabaseTransferDto;
 import at.tuwien.entities.container.Container;
@@ -9,8 +8,8 @@ import at.tuwien.entities.database.Database;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
-import at.tuwien.repository.elastic.DatabaseIdxRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.sdb.DatabaseIdxRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.ContainerService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.UserService;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
index 70f2cabd3b..ec2bbaf512 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
@@ -9,7 +9,7 @@ import at.tuwien.exception.BrokerVirtualHostCreationException;
 import at.tuwien.exception.BrokerVirtualHostGrantException;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.mapper.AmqpMapper;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.MessageQueueService;
 import com.rabbitmq.client.BuiltinExchangeType;
 import com.rabbitmq.client.Channel;
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 003f54c319..2626da3c2c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -2,13 +2,12 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
diff --git a/dbrepo-identifier-service/pom.xml b/dbrepo-identifier-service/pom.xml
index d4d0a38cc0..95132ce8af 100644
--- a/dbrepo-identifier-service/pom.xml
+++ b/dbrepo-identifier-service/pom.xml
@@ -103,6 +103,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Docker -->
         <dependency>
             <groupId>com.github.docker-java</groupId>
diff --git a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java
index 79d1fba1d7..7ec621e738 100644
--- a/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java
+++ b/dbrepo-identifier-service/rest-service/src/main/java/at/tuwien/DbrepoIdentifierServiceApplication.java
@@ -11,11 +11,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 
 @EnableJpaAuditing
-@SpringBootApplication
 @EnableTransactionManagement
-@EntityScan(basePackages = "at.tuwien.entities")
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
+@EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoIdentifierServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
index 15a36b4bea..ee738133ca 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/application-local.yml
@@ -30,7 +30,7 @@ spring:
   opensearch:
     username: admin
     password: admin
-    uris: http://localhost:9200
+    uris: localhost:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9096
diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
index 73b6c7b5ee..2ebfae7cd8 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
@@ -32,7 +32,7 @@ spring:
   opensearch:
     username: "${SEARCH_USERNAME}"
     password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
+    uris: search-db:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 server:
   port: 9096
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java
index ddd2f989f2..7c108704fb 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointIntegrationTest.java
@@ -7,7 +7,7 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.IdentifierEndpoint;
 import at.tuwien.exception.NotAllowedException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java
index f94307ae80..b7725ef7ff 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/endpoint/IdentifierEndpointUnitTest.java
@@ -16,7 +16,7 @@ import at.tuwien.entities.identifier.RelatedIdentifier;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.QueryServiceGateway;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.IdentifierService;
 import org.apache.commons.io.FileUtils;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
index 6a39ebb85b..a647d6e54e 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
@@ -6,7 +6,7 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.QueryNotFoundException;
 import at.tuwien.exception.RemoteUnavailableException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import com.google.common.io.Files;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
index 4bc2800a8f..152ee248ab 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServiceUnitTest.java
@@ -11,7 +11,7 @@ import at.tuwien.config.EndpointConfig;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.impl.IdentifierServiceImpl;
 import org.apache.http.auth.BasicUserPrincipal;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
index 8b826cb105..96de2e004f 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
@@ -8,8 +8,8 @@ import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.identifier.RelatedIdentifier;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.QueryServiceGateway;
-import at.tuwien.repository.elastic.IdentifierIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.IdentifierIdxRepository;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java
index b44d0282f5..cfd4cb71dc 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceUnitTest.java
@@ -7,8 +7,8 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.identifier.IdentifierType;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.IdentifierIdxRepository;
-import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.sdb.IdentifierIdxRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java
index baab96d40c..8c51b6b76f 100644
--- a/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java
+++ b/dbrepo-identifier-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java
@@ -4,7 +4,7 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java
index 2f0a40e3b4..e3688abbc1 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/IndexConfig.java
@@ -2,8 +2,8 @@ package at.tuwien.config;
 
 import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.mapper.IdentifierMapper;
-import at.tuwien.repository.elastic.IdentifierIdxRepository;
-import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.sdb.IdentifierIdxRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
@@ -23,32 +23,23 @@ public class IndexConfig {
     private final IdentifierMapper identifierMapper;
     private final IdentifierRepository identifierRepository;
     private final IdentifierIdxRepository identifierIdxRepository;
-    private final ElasticsearchOperations elasticsearchOperations;
 
     @Autowired
     public IndexConfig(IdentifierMapper identifierMapper, IdentifierRepository identifierRepository,
-                       IdentifierIdxRepository identifierIdxRepository,
-                       ElasticsearchOperations elasticsearchOperations) {
+                       IdentifierIdxRepository identifierIdxRepository) {
         this.identifierMapper = identifierMapper;
         this.identifierRepository = identifierRepository;
         this.identifierIdxRepository = identifierIdxRepository;
-        this.elasticsearchOperations = elasticsearchOperations;
     }
 
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        final IndexCoordinates identifierIndex = IndexCoordinates.of("identifier");
-        if (!elasticsearchOperations.indexOps(identifierIndex).exists()) {
-            elasticsearchOperations.indexOps(identifierIndex).create();
-            elasticsearchOperations.indexOps(identifierIndex).createMapping(IdentifierDto.class);
-            log.info("Created identifier index");
-        }
         final List<IdentifierDto> identifiers = identifierRepository.findAll()
                 .stream()
                 .map(identifierMapper::identifierToIdentifierDto)
                 .collect(Collectors.toList());
-        log.info("Add {} identifiers to OpenSearch index", identifiers.size());
         identifierIdxRepository.saveAll(identifiers);
+        log.info("Added {} identifiers to open search index", identifiers.size());
     }
 }
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java
similarity index 76%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java
index 2795450ea7..856fe81cea 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/AccessRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/AccessRepository.java
@@ -1,7 +1,8 @@
 
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.DatabaseAccess;
+import at.tuwien.entities.database.DatabaseAccessKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
@@ -9,7 +10,7 @@ import java.util.Optional;
 import java.util.UUID;
 
 @Repository
-public interface AccessRepository extends JpaRepository<DatabaseAccess, Long> {
+public interface AccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> {
 
     Optional<DatabaseAccess> findByHdbidAndHuserid(Long databaseId, UUID userId);
 
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index 39566b1cc0..f41d2aa3fa 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java
similarity index 70%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java
index 2470972bd4..4513becc22 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/CreatorRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/CreatorRepository.java
@@ -1,10 +1,11 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Creator;
+import at.tuwien.entities.identifier.CreatorKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface CreatorRepository extends JpaRepository<Creator, Long> {
+public interface CreatorRepository extends JpaRepository<Creator, CreatorKey> {
 
 }
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 95%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index 29ee345f1a..dd31029441 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
similarity index 95%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
index fa193cc6c2..856ba9418f 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.identifier.IdentifierType;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 88%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index 247ce97770..046fd51c3e 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 72%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index 122095a168..439a1f372e 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,12 +1,10 @@
 
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
-import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.Optional;
 import java.util.UUID;
 
 @Repository
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java
similarity index 91%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java
index 4e735007ab..a1334eb5bd 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/RelatedIdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.RelatedIdentifier;
 import at.tuwien.entities.identifier.RelatedIdentifierKey;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
similarity index 74%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
index 548737b0b9..6117a02933 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
@@ -1,7 +1,8 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.table.Table;
+import at.tuwien.entities.database.table.TableKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
@@ -9,7 +10,7 @@ import java.util.List;
 import java.util.Optional;
 
 @Repository
-public interface TableRepository extends JpaRepository<Table, Long> {
+public interface TableRepository extends JpaRepository<Table, TableKey> {
 
     List<Table> findByDatabase(Database database);
 
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 01b143f6f8..499954150f 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,5 +1,5 @@
 
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
similarity index 88%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java
rename to dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
index 13f4dc6316..45e42d1515 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/elastic/IdentifierIdxRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.api.identifier.IdentifierDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index f23467c3af..c086a2990c 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.AccessDeniedException;
-import at.tuwien.repository.jpa.AccessRepository;
+import at.tuwien.repository.mdb.AccessRepository;
 import at.tuwien.service.AccessService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
index b83724e483..458419a794 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
@@ -12,7 +12,7 @@ import at.tuwien.config.EndpointConfig;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DataCiteMapper;
-import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
 import at.tuwien.service.IdentifierService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.web.client.RestTemplateBuilder;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
index c79c1bca02..3f853c02aa 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.DatabaseNotFoundException;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.DatabaseService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 4a3aa4437b..8be7442834 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -12,9 +12,9 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.QueryServiceGateway;
 import at.tuwien.mapper.IdentifierMapper;
-import at.tuwien.repository.elastic.IdentifierIdxRepository;
-import at.tuwien.repository.jpa.IdentifierRepository;
-import at.tuwien.repository.jpa.RelatedIdentifierRepository;
+import at.tuwien.repository.sdb.IdentifierIdxRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
+import at.tuwien.repository.mdb.RelatedIdentifierRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.IdentifierService;
 import at.tuwien.service.UserService;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 2c7df8b36c..47f1ac286b 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
index 1a3619663c..632ee66fc8 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
@@ -24,7 +24,7 @@ import java.util.List;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "identifier", createIndex = false)
+@Document(indexName = "identifier")
 public class IdentifierDto {
 
     private Long id;
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index 26bff609d2..afda4b6f98 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -89,6 +89,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Monitoring -->
         <dependency>
             <groupId>io.micrometer</groupId>
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java
index 2b5ef54ee2..e0c645dc8f 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/DbrepoMetadataServiceApplication.java
@@ -11,11 +11,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 
 @EnableJpaAuditing
-@SpringBootApplication
 @EnableTransactionManagement
-@EntityScan(basePackages = "at.tuwien.entities")
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
+@EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoMetadataServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
index f57bf10f48..059f9f1e67 100644
--- a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
@@ -25,6 +25,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  opensearch:
+    username: admin
+    password: admin
+    uris: localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
index ff401e9fe0..86acf0f63e 100644
--- a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
@@ -27,6 +27,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  opensearch:
+    username: "${SEARCH_USERNAME}"
+    password: "${SEARCH_PASSWORD}"
+    uris: search-db:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
index 1fb428714f..023419b218 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
@@ -3,10 +3,8 @@ package at.tuwien.endpoints;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.oaipmh.OaiListIdentifiersParameters;
 import at.tuwien.oaipmh.OaiRecordParameters;
-import at.tuwien.config.H2Utils;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
index 26da5e82fa..024a91d320 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
@@ -1,10 +1,9 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.config.H2Utils;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
index e8e68400ee..13f015213e 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceIntegrationTest.java
@@ -4,9 +4,8 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.oaipmh.OaiErrorType;
 import at.tuwien.oaipmh.OaiListIdentifiersParameters;
 import at.tuwien.oaipmh.OaiRecordParameters;
-import at.tuwien.config.H2Utils;
 import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index d692b00041..04a8da854e 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 87%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index ae76b3951e..df6ec32168 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
similarity index 88%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
index 0b79897fc8..27706deae3 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 88%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index c033bd17dc..b1020fdcc5 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 88%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index 6a2a5443d9..1be6bbd254 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 88%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 3dbd267234..c1e1d08295 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
similarity index 68%
rename from dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java
rename to dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
index cffa3d3cfd..bfa5c3c6aa 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/elastic/IdentifieridxRepository.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/repository/sdb/IdentifierIdxRepository.java
@@ -1,9 +1,9 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface IdentifieridxRepository extends ElasticsearchRepository<Identifier, Long> {
+public interface IdentifierIdxRepository extends ElasticsearchRepository<Identifier, Long> {
 }
\ No newline at end of file
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 09cf17d37b..762d58c64c 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.IdentifierService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/pom.xml b/dbrepo-query-service/pom.xml
index e529441353..73c0a87169 100644
--- a/dbrepo-query-service/pom.xml
+++ b/dbrepo-query-service/pom.xml
@@ -126,6 +126,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- AMPQ -->
         <dependency>
             <groupId>com.rabbitmq</groupId>
@@ -186,6 +191,12 @@
             <scope>compile</scope>
         </dependency>
         <!-- Testing -->
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-test-autoconfigure</artifactId>
+            <version>${opensearch-client.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
diff --git a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java
index 34e5ffeca0..d19bb8c6f3 100644
--- a/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java
+++ b/dbrepo-query-service/rest-service/src/main/java/at/tuwien/DbrepoQueryServiceApplication.java
@@ -11,12 +11,12 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @EnableJpaAuditing
-@SpringBootApplication
 @EnableTransactionManagement
 @EnableScheduling
-@EntityScan(basePackages = "at.tuwien.entities")
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
+@EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoQueryServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
index ee811a1e25..f28840615e 100644
--- a/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-query-service/rest-service/src/main/resources/application-local.yml
@@ -28,7 +28,7 @@ spring:
   opensearch:
     username: admin
     password: admin
-    uris: http://localhost:9200
+    uris: localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-query-service/rest-service/src/main/resources/application.yml b/dbrepo-query-service/rest-service/src/main/resources/application.yml
index 8bc1f82c6f..216631f903 100644
--- a/dbrepo-query-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-query-service/rest-service/src/main/resources/application.yml
@@ -1,8 +1,6 @@
 app.version: '@project.version@'
 spring:
   main.banner-mode: off
-  autoconfigure:
-    exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration
   datasource:
     url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}"
     driver-class-name: org.mariadb.jdbc.Driver
@@ -30,7 +28,7 @@ spring:
   opensearch:
     username: "${SEARCH_USERNAME}"
     password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
+    uris: search-db:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java
index 6504e0471e..79fb6ebffa 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/ExportEndpointUnitTest.java
@@ -8,10 +8,9 @@ import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.QueryService;
 import com.rabbitmq.client.Channel;
@@ -20,7 +19,6 @@ import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.core.io.InputStreamResource;
@@ -29,7 +27,6 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.security.test.context.support.WithAnonymousUser;
 import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
-import org.springframework.web.client.RestTemplate;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java
index 90634fa49a..5d9f72c2e6 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java
@@ -13,10 +13,10 @@ import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.ImageRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
+import at.tuwien.repository.mdb.ImageRepository;
 import at.tuwien.service.QueryService;
 import at.tuwien.service.StoreService;
 import com.rabbitmq.client.Channel;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
index be64aff2a0..e488a3983a 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
@@ -12,8 +12,7 @@ import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.impl.StoreServiceImpl;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java
index 13f552f6ce..37d5445356 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/TableHistoryEndpointUnitTest.java
@@ -9,9 +9,8 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.QueryService;
 import at.tuwien.service.TableService;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
index cadc876d8b..20ac8e4176 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
@@ -3,7 +3,7 @@ package at.tuwien.listener;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.amqp.ConsumerDto;
 import at.tuwien.config.*;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.BuiltinExchangeType;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java
index 647886a824..e686fdb705 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewIdxRepositoryIntegrationTest.java
@@ -8,8 +8,8 @@ import at.tuwien.entities.database.View;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.elastic.ViewIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.ViewIdxRepository;
+import at.tuwien.repository.mdb.*;
 import at.tuwien.service.ViewService;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java
index 726dc651d4..3e3e84f705 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/repository/ViewRepositoryIntegrationTest.java
@@ -6,7 +6,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.View;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.Rule;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
index f009f87f64..016f4aa756 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
@@ -6,9 +6,8 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
index cfef081d1e..cb6424ba35 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
@@ -12,7 +12,7 @@ import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.SneakyThrows;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java
index 0091db3b8e..c5a1c96c0c 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/QueueServiceIntegrationTest.java
@@ -7,10 +7,9 @@ import at.tuwien.api.database.table.TableCsvDto;
 import at.tuwien.config.*;
 import at.tuwien.exception.AmqpException;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.rabbitmq.client.*;
 import lombok.extern.log4j.Log4j2;
@@ -27,7 +26,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.TimeoutException;
-import java.util.stream.Collectors;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java
index aa5e502495..cf29825133 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationModifyTest.java
@@ -10,7 +10,7 @@ import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java
index af08123329..21d1c91d17 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationReadTest.java
@@ -7,9 +7,9 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.TableRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
+import at.tuwien.repository.mdb.TableRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
index 4590f3e742..118f368e02 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
@@ -8,7 +8,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
index a20232e18d..5a8bc48cea 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
@@ -6,9 +6,8 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.table.columns.TableColumn;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java
index dd8135d60e..10d216bf3b 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/ViewServiceIntegrationTest.java
@@ -10,8 +10,8 @@ import at.tuwien.entities.database.View;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.elastic.ViewIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.ViewIdxRepository;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java
index 5b9b65d3dd..987fe6f81e 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/IndexConfig.java
@@ -2,14 +2,12 @@ package at.tuwien.config;
 
 import at.tuwien.api.database.ViewDto;
 import at.tuwien.mapper.ViewMapper;
-import at.tuwien.repository.elastic.ViewIdxRepository;
-import at.tuwien.repository.jpa.ViewRepository;
+import at.tuwien.repository.sdb.ViewIdxRepository;
+import at.tuwien.repository.mdb.ViewRepository;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.event.EventListener;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -23,32 +21,22 @@ public class IndexConfig {
     private final ViewMapper viewMapper;
     private final ViewRepository viewRepository;
     private final ViewIdxRepository viewIdxRepository;
-    private final ElasticsearchOperations elasticsearchOperations;
 
     @Autowired
-    public IndexConfig(ViewMapper viewMapper, ViewRepository viewRepository, ViewIdxRepository viewIdxRepository,
-                       ElasticsearchOperations elasticsearchOperations) {
+    public IndexConfig(ViewMapper viewMapper, ViewRepository viewRepository, ViewIdxRepository viewIdxRepository) {
         this.viewMapper = viewMapper;
         this.viewRepository = viewRepository;
         this.viewIdxRepository = viewIdxRepository;
-        this.elasticsearchOperations = elasticsearchOperations;
     }
 
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        final IndexCoordinates viewIndex = IndexCoordinates.of("view");
-        if (!elasticsearchOperations.indexOps(viewIndex).exists()) {
-            elasticsearchOperations.indexOps(viewIndex).create();
-            elasticsearchOperations.indexOps(viewIndex).createMapping(ViewDto.class);
-            log.info("Created identifier index");
-        }
-        /* pre-fill */
         final List<ViewDto> views = viewRepository.findAll()
                 .stream()
                 .map(viewMapper::viewToViewDto)
                 .collect(Collectors.toList());
-        log.info("Added {} views to OpenSearch index", views.size());
         viewIdxRepository.saveAll(views);
+        log.info("Added {} views to open search index", views.size());
     }
 }
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java
deleted file mode 100644
index 709fa7be4d..0000000000
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/DatabaseIdxRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package at.tuwien.repository.elastic;
-
-import at.tuwien.api.database.DatabaseDto;
-import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface DatabaseIdxRepository extends ElasticsearchRepository<DatabaseDto, Long> {
-}
\ No newline at end of file
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index dac4fafd15..58b73c9139 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
similarity index 83%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
index 2bfbfc3f90..e4723eb9d2 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
@@ -1,6 +1,7 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.DatabaseAccess;
+import at.tuwien.entities.database.DatabaseAccessKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -9,7 +10,7 @@ import org.springframework.stereotype.Repository;
 import java.util.Optional;
 
 @Repository
-public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> {
+public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, DatabaseAccessKey> {
 
     @Query("select a from DatabaseAccess a where a.hdbid = :databaseId and a.user.username = :username")
     Optional<DatabaseAccess> findByDatabaseIdAndUsername(@Param("databaseId") Long databaseId, @Param("username") String username);
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 94%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index e73c2e7b2b..e5b21ce646 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
similarity index 91%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
index 7dd89d6204..3bc2e7c168 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/IdentifierRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/IdentifierRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.identifier.Identifier;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 85%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index 21f191f8ed..ab4315e1c3 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 72%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index c1a5d756b7..7b53e72459 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,11 +1,9 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
-import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.Optional;
 import java.util.UUID;
 
 @Repository
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
similarity index 74%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
index 2d3a818d87..ab94de26eb 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
@@ -1,13 +1,14 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.columns.TableColumn;
+import at.tuwien.entities.database.table.columns.TableColumnKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
 
 @Repository
-public interface TableColumnRepository extends JpaRepository<TableColumn, Long> {
+public interface TableColumnRepository extends JpaRepository<TableColumn, TableColumnKey> {
 
     Optional<TableColumn> findByIdAndTidAndCdbid(Long id, Long tid, Long cdbid);
 
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
similarity index 79%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
index 7a19c1f575..e4fe63d623 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
@@ -1,6 +1,7 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.Table;
+import at.tuwien.entities.database.table.TableKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -9,7 +10,7 @@ import org.springframework.stereotype.Repository;
 import java.util.Optional;
 
 @Repository
-public interface TableRepository extends JpaRepository<Table, Long> {
+public interface TableRepository extends JpaRepository<Table, TableKey> {
 
     @Query(value = "select t from Table t where t.database.container.id = :containerId and t.database.id = :databaseId and t.id = :tableId")
     Optional<Table> find(@Param("containerId") Long containerId, @Param("databaseId") Long databaseId,
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 9eb0b51902..42d09c3e9e 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java
similarity index 80%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java
index 3f5c2ac7c4..322602ee2d 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/ViewRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/ViewRepository.java
@@ -1,9 +1,7 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.View;
 import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java
similarity index 87%
rename from dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java
rename to dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java
index 617c6d106e..da608f39eb 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/elastic/ViewIdxRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/sdb/ViewIdxRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.api.database.ViewDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index 1c492b6529..983a1bece7 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.NotAllowedException;
-import at.tuwien.repository.jpa.DatabaseAccessRepository;
+import at.tuwien.repository.mdb.DatabaseAccessRepository;
 import at.tuwien.service.AccessService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index 0e10cc3386..07c77c5358 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.ContainerNotFoundException;
-import at.tuwien.repository.jpa.ContainerRepository;
+import at.tuwien.repository.mdb.ContainerRepository;
 import at.tuwien.service.ContainerService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
index 79910ab9bf..4a2a8927f7 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.DatabaseNotFoundException;
-import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.repository.mdb.DatabaseRepository;
 import at.tuwien.service.DatabaseService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index e39dddeee3..9b1f1f8f1a 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.exception.IdentifierNotFoundException;
-import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.mdb.IdentifierRepository;
 import at.tuwien.service.IdentifierService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
index 8a6c7d4ae2..0ad279d9da 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
@@ -7,7 +7,7 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
 import at.tuwien.mapper.QueryMapper;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.TableService;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index d3c8b16596..27cf23c9b9 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
index 0bc0916966..7cb9a8636d 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
@@ -8,8 +8,8 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DatabaseMapper;
 import at.tuwien.mapper.ViewMapper;
-import at.tuwien.repository.elastic.ViewIdxRepository;
-import at.tuwien.repository.jpa.ViewRepository;
+import at.tuwien.repository.sdb.ViewIdxRepository;
+import at.tuwien.repository.mdb.ViewRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.QueryService;
 import at.tuwien.service.UserService;
diff --git a/dbrepo-semantics-service/pom.xml b/dbrepo-semantics-service/pom.xml
index 6070573876..8276456a2c 100644
--- a/dbrepo-semantics-service/pom.xml
+++ b/dbrepo-semantics-service/pom.xml
@@ -98,7 +98,18 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Testing -->
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-test-autoconfigure</artifactId>
+            <version>${opensearch-client.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
diff --git a/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java b/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java
index 76350f4b41..e7318edaef 100644
--- a/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java
+++ b/dbrepo-semantics-service/rest-service/src/main/java/at/tuwien/DbrepoSemanticsServiceApplication.java
@@ -13,8 +13,8 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 @EnableJpaAuditing
 @SpringBootApplication
 @EntityScan(basePackages = {"at.tuwien.entities"})
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
 public class DbrepoSemanticsServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml b/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml
index 890c01ef05..9ba665a023 100644
--- a/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-semantics-service/rest-service/src/main/resources/application-local.yml
@@ -28,7 +28,7 @@ spring:
   opensearch:
     username: admin
     password: admin
-    uris: http://localhost:9200
+    uris: localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-semantics-service/rest-service/src/main/resources/application.yml b/dbrepo-semantics-service/rest-service/src/main/resources/application.yml
index 5e9feb19bc..5ebeb484bd 100644
--- a/dbrepo-semantics-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-semantics-service/rest-service/src/main/resources/application.yml
@@ -30,7 +30,7 @@ spring:
   opensearch:
     username: "${SEARCH_USERNAME}"
     password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
+    uris: search-db:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java
index 1dc8023c3d..68811a650e 100644
--- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java
+++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/OntologyServiceIntegrationTest.java
@@ -4,9 +4,9 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.entities.semantics.Ontology;
 import at.tuwien.exception.OntologyNotFoundException;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.OntologyRepository;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.sys.JenaSystem;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
index 42af85f682..6de90a4428 100644
--- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
+++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java
@@ -3,9 +3,9 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.semantics.EntityDto;
 import at.tuwien.exception.QueryMalformedException;
-import at.tuwien.repository.jpa.OntologyRepository;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.sys.JenaSystem;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java
index ed5171a332..b87fc0a596 100644
--- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java
+++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/SemanticServiceUnitTest.java
@@ -3,7 +3,7 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.entities.database.table.columns.TableColumnConcept;
 import at.tuwien.entities.database.table.columns.TableColumnUnit;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.mdb.*;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.sys.JenaSystem;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java
index c81035a6db..70ad5879c6 100644
--- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java
+++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java
@@ -7,9 +7,9 @@ import at.tuwien.entities.database.table.columns.TableColumnKey;
 import at.tuwien.exception.QueryMalformedException;
 import at.tuwien.exception.TableColumnNotFoundException;
 import at.tuwien.exception.TableNotFoundException;
-import at.tuwien.repository.jpa.OntologyRepository;
-import at.tuwien.repository.jpa.TableColumnRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
+import at.tuwien.repository.mdb.TableColumnRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.sys.JenaSystem;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
index f84d3ea1d9..ac91c4e2ad 100644
--- a/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
+++ b/dbrepo-semantics-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
@@ -3,7 +3,7 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.TableNotFoundException;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.sys.JenaSystem;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index 39566b1cc0..f41d2aa3fa 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.Container;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 88%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index 688993ab3c..c11a773abc 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.Database;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 88%
rename from dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index 247ce97770..046fd51c3e 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java
similarity index 88%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java
index 75c296f527..fab911633e 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.semantics.Ontology;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
new file mode 100644
index 0000000000..7b53e72459
--- /dev/null
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -0,0 +1,12 @@
+package at.tuwien.repository.mdb;
+
+import at.tuwien.entities.user.Realm;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.UUID;
+
+@Repository
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
+
+}
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java
similarity index 89%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java
index 25d6eaad40..63fe90eea7 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnConceptRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnConceptRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.columns.TableColumnConcept;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
similarity index 91%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
index 21a0612858..b52cc85d35 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.columns.TableColumn;
 import at.tuwien.entities.database.table.columns.TableColumnKey;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java
similarity index 89%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java
index e24ab4d11a..ef80b22e06 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnUnitRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnUnitRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.columns.TableColumnUnit;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
similarity index 92%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
index 4935a9857b..773cac2b6e 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.TableKey;
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 9eb0b51902..42d09c3e9e 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java
similarity index 67%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java
index 7df09d4e44..7fcd93f713 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java
@@ -1,9 +1,10 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.api.database.table.columns.ColumnDto;
+import at.tuwien.api.database.table.columns.ColumnKeyDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, Long> {
+public interface TableColumnIdxRepository extends ElasticsearchRepository<ColumnDto, ColumnKeyDto> {
 }
\ No newline at end of file
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java
similarity index 69%
rename from dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java
rename to dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java
index ce6e8a0975..fd501ffdcc 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java
@@ -1,9 +1,10 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
 import at.tuwien.api.database.table.TableDto;
+import at.tuwien.api.database.table.TableKeyDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface TableIdxRepository extends ElasticsearchRepository<TableDto, Long> {
+public interface TableIdxRepository extends ElasticsearchRepository<TableDto, TableKeyDto> {
 }
\ No newline at end of file
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
index 5137f9f92d..411ea767ec 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
@@ -7,7 +7,7 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.OntologyNotFoundException;
 import at.tuwien.exception.UserNotFoundException;
 import at.tuwien.mapper.OntologyMapper;
-import at.tuwien.repository.jpa.OntologyRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
 import at.tuwien.service.OntologyService;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
index 742c209037..802b0e7a07 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java
@@ -4,7 +4,7 @@ import at.tuwien.api.semantics.EntityDto;
 import at.tuwien.entities.semantics.Ontology;
 import at.tuwien.exception.QueryMalformedException;
 import at.tuwien.mapper.OntologyMapper;
-import at.tuwien.repository.jpa.OntologyRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
 import at.tuwien.service.QueryService;
 import lombok.extern.log4j.Log4j2;
 import org.apache.jena.query.*;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
index 34e38612fb..c08190b906 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
@@ -5,8 +5,8 @@ import at.tuwien.api.database.table.columns.concepts.UnitSaveDto;
 import at.tuwien.entities.database.table.columns.TableColumnConcept;
 import at.tuwien.entities.database.table.columns.TableColumnUnit;
 import at.tuwien.mapper.OntologyMapper;
-import at.tuwien.repository.jpa.TableColumnConceptRepository;
-import at.tuwien.repository.jpa.TableColumnUnitRepository;
+import at.tuwien.repository.mdb.TableColumnConceptRepository;
+import at.tuwien.repository.mdb.TableColumnUnitRepository;
 import at.tuwien.service.SemanticService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
index 8f58625094..cab89efe6c 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
@@ -10,8 +10,8 @@ import at.tuwien.exception.QueryMalformedException;
 import at.tuwien.exception.TableColumnNotFoundException;
 import at.tuwien.exception.TableNotFoundException;
 import at.tuwien.mapper.TableMapper;
-import at.tuwien.repository.jpa.TableColumnRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.TableColumnRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import at.tuwien.service.OntologyService;
 import at.tuwien.service.QueryService;
 import at.tuwien.service.TableService;
diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 99bc7ae5d4..43e1ae2d23 100644
--- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java
index 21af60ba70..e472c70e31 100644
--- a/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java
+++ b/dbrepo-table-service/rest-service/src/main/java/at/tuwien/DbrepoTableServiceApplication.java
@@ -13,8 +13,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableJpaAuditing
 @EnableTransactionManagement
 @EntityScan(basePackages = {"at.tuwien.entities"})
-@EnableElasticsearchRepositories
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb", "at.tuwien.repository.sdb"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
 @SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoTableServiceApplication {
 
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java
index 387acfe392..6dfc32022e 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/IndexConfig.java
@@ -38,18 +38,17 @@ public class IndexConfig {
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        /* pre-fill */
         final List<TableDto> tables = tableRepository.findAll()
                 .stream()
                 .map(tableMapper::tableToTableDto)
                 .collect(Collectors.toList());
-        log.debug("add {} tables to elastic search index", tables.size());
         tableIdxRepository.saveAll(tables);
+        log.info("Added {} tables to open search index", tables.size());
         final List<ColumnDto> columns = tableColumnRepository.findAll()
                 .stream()
                 .map(tableMapper::tableColumnToColumnDto)
                 .collect(Collectors.toList());
-        log.debug("add {} columns to elastic search index", columns.size());
         tableColumnIdxRepository.saveAll(columns);
+        log.info("Added {} columns to open search index", columns.size());
     }
 }
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 2456e27f4e..4fc71bfb1c 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -25,7 +25,7 @@ public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
     @Bean
     @Override
     public RestHighLevelClient opensearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
diff --git a/dbrepo-user-service/pom.xml b/dbrepo-user-service/pom.xml
index 3c8f18b805..00656af9c7 100644
--- a/dbrepo-user-service/pom.xml
+++ b/dbrepo-user-service/pom.xml
@@ -121,6 +121,11 @@
             <artifactId>spring-data-opensearch</artifactId>
             <version>${opensearch-client.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch-starter</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Swagger -->
         <dependency>
             <groupId>org.springdoc</groupId>
diff --git a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java
index 02166da7ee..a0d8a01030 100644
--- a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java
+++ b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/FdaUserServiceApplication.java
@@ -11,12 +11,12 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @EnableJpaAuditing
-@SpringBootApplication
 @EnableTransactionManagement
 @EnableScheduling
-@EntityScan(basePackages = "at.tuwien.entities")
-@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.elastic"})
-@EnableJpaRepositories(basePackages = {"at.tuwien.repository.jpa"})
+@EntityScan(basePackages = {"at.tuwien.entities"})
+@EnableElasticsearchRepositories(basePackages = {"at.tuwien.repository.sdb"})
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class FdaUserServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
index c0c994b5ff..eb5b84bcd2 100644
--- a/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-user-service/rest-service/src/main/resources/application-local.yml
@@ -28,7 +28,7 @@ spring:
   opensearch:
     username: admin
     password: admin
-    uris: http://localhost:9200
+    uris: localhost:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-user-service/rest-service/src/main/resources/application.yml b/dbrepo-user-service/rest-service/src/main/resources/application.yml
index 345863caf4..4e5e905427 100644
--- a/dbrepo-user-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-user-service/rest-service/src/main/resources/application.yml
@@ -30,7 +30,7 @@ spring:
   opensearch:
     username: "${SEARCH_USERNAME}"
     password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
+    uris: search-db:9200
   cloud:
     loadbalancer.ribbon.enabled: false
 management.endpoints.web.exposure.include: health,info,prometheus
diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java
index 8759d8e3c6..5d181b3f75 100644
--- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java
+++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/BannerMessageServiceIntegrationTest.java
@@ -6,11 +6,8 @@ import at.tuwien.api.maintenance.BannerMessageTypeDto;
 import at.tuwien.api.maintenance.BannerMessageUpdateDto;
 import at.tuwien.entities.maintenance.BannerMessage;
 import at.tuwien.entities.maintenance.BannerMessageType;
-import at.tuwien.entities.user.Realm;
 import at.tuwien.exception.BannerMessageNotFoundException;
-import at.tuwien.exception.RealmNotFoundException;
-import at.tuwien.repository.jpa.BannerMessageRepository;
-import at.tuwien.repository.jpa.RealmRepository;
+import at.tuwien.repository.mdb.BannerMessageRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java
index 5382294751..584a508ebb 100644
--- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java
+++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RealmServiceIntegrationTest.java
@@ -3,7 +3,7 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.entities.user.Realm;
 import at.tuwien.exception.RealmNotFoundException;
-import at.tuwien.repository.jpa.RealmRepository;
+import at.tuwien.repository.mdb.RealmRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java
index 2cc1cd9039..ef6382bc37 100644
--- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java
+++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/RoleServiceIntegrationTest.java
@@ -1,13 +1,10 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.entities.user.Realm;
 import at.tuwien.entities.user.Role;
-import at.tuwien.exception.RealmNotFoundException;
 import at.tuwien.exception.RoleNotFoundException;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.RoleRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.RoleRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java
index 70b2817093..131e7891e3 100644
--- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java
+++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserAttributeServiceIntegrationTest.java
@@ -1,13 +1,10 @@
 package at.tuwien.service;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.entities.user.Role;
 import at.tuwien.entities.user.UserAttribute;
-import at.tuwien.exception.RoleNotFoundException;
 import at.tuwien.exception.UserAttributeNotFoundException;
-import at.tuwien.repository.jpa.RoleRepository;
-import at.tuwien.repository.jpa.UserAttributeRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.UserAttributeRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
index 52cb9f38f1..bef7f2b3b4 100644
--- a/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
+++ b/dbrepo-user-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
@@ -9,9 +9,9 @@ import at.tuwien.entities.user.Role;
 import at.tuwien.entities.user.User;
 import at.tuwien.entities.user.UserAttribute;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.RealmRepository;
-import at.tuwien.repository.jpa.RoleRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.RealmRepository;
+import at.tuwien.repository.mdb.RoleRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java
index ba3a4c634e..6859a27210 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/IndexConfig.java
@@ -2,14 +2,12 @@ package at.tuwien.config;
 
 import at.tuwien.api.user.UserDto;
 import at.tuwien.mapper.UserMapper;
-import at.tuwien.repository.elastic.UserIdxRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.sdb.UserIdxRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.event.EventListener;
-import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
-import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -22,27 +20,18 @@ public class IndexConfig {
     private final UserMapper userMapper;
     private final UserRepository userRepository;
     private final UserIdxRepository userIdxRepository;
-    private final ElasticsearchOperations elasticsearchOperations;
 
     @Autowired
     public IndexConfig(UserMapper userMapper, UserRepository userRepository,
-                       UserIdxRepository userIdxRepository, ElasticsearchOperations elasticsearchOperations) {
+                       UserIdxRepository userIdxRepository) {
         this.userMapper = userMapper;
         this.userRepository = userRepository;
         this.userIdxRepository = userIdxRepository;
-        this.elasticsearchOperations = elasticsearchOperations;
     }
 
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        final IndexCoordinates userIndex = IndexCoordinates.of("user");
-        if (!elasticsearchOperations.indexOps(userIndex).exists()) {
-            elasticsearchOperations.indexOps(userIndex).create();
-            elasticsearchOperations.indexOps(userIndex).createMapping(UserDto.class);
-            log.info("Created user index");
-        }
-        /* pre-fill */
         final List<UserDto> users = userRepository.findAll()
                 .stream()
                 .map(userMapper::userToUserDto)
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java b/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
index 27d815cc6f..4fc71bfb1c 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -2,6 +2,7 @@ package at.tuwien.config;
 
 import lombok.extern.log4j.Log4j2;
 import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.AbstractOpenSearchConfiguration;
 import org.opensearch.data.client.orhlc.ClientConfiguration;
 import org.opensearch.data.client.orhlc.RestClients;
 import org.springframework.beans.factory.annotation.Value;
@@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Log4j2
 @Configuration
-public class OpenSearchConfig {
+public class OpenSearchConfig extends AbstractOpenSearchConfiguration {
 
     @Value("${spring.opensearch.uris}")
     private String openSearchEndpoint;
@@ -22,8 +23,9 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
-        log.debug("openSearch endpoint={}", openSearchEndpoint);
+    @Override
+    public RestHighLevelClient opensearchClient() {
+        log.debug("open search endpoint: {}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
                 .withBasicAuth(openSearchUsername, openSearchPassword)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java
similarity index 90%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java
index bcdbf9f832..ee4048ede1 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/BannerMessageRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/BannerMessageRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.maintenance.BannerMessage;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java
similarity index 89%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java
index d204a19345..e9e9fdb8db 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/CredentialRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Credential;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 90%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index aabd612289..56d2152fa0 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java
similarity index 89%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java
index 8669937f1d..345f96ff8a 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleMappingRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.RoleMapping;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java
similarity index 90%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java
index a3a4713f68..f86422ec62 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/RoleRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.Role;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java
similarity index 87%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java
index e0c8531399..6d96fc3584 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserAttributeRepository.java
@@ -1,10 +1,9 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.UserAttribute;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 91%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 48e7ab240f..c4b162f681 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
@@ -1,4 +1,4 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
 import at.tuwien.entities.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java
similarity index 70%
rename from dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java
rename to dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java
index 812cb439f6..8f22ea7fe5 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/elastic/UserIdxRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/sdb/UserIdxRepository.java
@@ -1,10 +1,11 @@
-package at.tuwien.repository.elastic;
+package at.tuwien.repository.sdb;
 
-import at.tuwien.api.identifier.IdentifierDto;
 import at.tuwien.api.user.UserDto;
 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 @Repository
-public interface UserIdxRepository extends ElasticsearchRepository<UserDto, Long> {
+public interface UserIdxRepository extends ElasticsearchRepository<UserDto, UUID> {
 }
\ No newline at end of file
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
index 5c38de25fc..2e5bf09970 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
@@ -5,7 +5,7 @@ import at.tuwien.api.maintenance.BannerMessageUpdateDto;
 import at.tuwien.entities.maintenance.BannerMessage;
 import at.tuwien.exception.BannerMessageNotFoundException;
 import at.tuwien.mapper.BannerMessageMapper;
-import at.tuwien.repository.jpa.BannerMessageRepository;
+import at.tuwien.repository.mdb.BannerMessageRepository;
 import at.tuwien.service.BannerMessageService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
index b499b6c43b..4ff1da34d8 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.Realm;
 import at.tuwien.exception.RealmNotFoundException;
-import at.tuwien.repository.jpa.RealmRepository;
+import at.tuwien.repository.mdb.RealmRepository;
 import at.tuwien.service.RealmService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java
index 7766f31afb..3f65f7d920 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RoleServiceImpl.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.Role;
 import at.tuwien.exception.RoleNotFoundException;
-import at.tuwien.repository.jpa.RoleRepository;
+import at.tuwien.repository.mdb.RoleRepository;
 import at.tuwien.service.RoleService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
index 14885f60f0..b8ef166f7e 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
@@ -2,13 +2,12 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.user.UserAttribute;
 import at.tuwien.exception.UserAttributeNotFoundException;
-import at.tuwien.repository.jpa.UserAttributeRepository;
+import at.tuwien.repository.mdb.UserAttributeRepository;
 import at.tuwien.service.UserAttributeService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 0d0d80b5b8..a46bb17a13 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -7,9 +7,9 @@ import at.tuwien.api.user.UserUpdateDto;
 import at.tuwien.entities.user.*;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.UserMapper;
-import at.tuwien.repository.jpa.CredentialRepository;
-import at.tuwien.repository.jpa.RoleMappingRepository;
-import at.tuwien.repository.jpa.UserRepository;
+import at.tuwien.repository.mdb.CredentialRepository;
+import at.tuwien.repository.mdb.RoleMappingRepository;
+import at.tuwien.repository.mdb.UserRepository;
 import at.tuwien.service.UserAttributeService;
 import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
diff --git a/docker-compose.yml b/docker-compose.yml
index facea5fad7..637cfe68ef 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -72,6 +72,8 @@ services:
         condition: service_started
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -92,6 +94,8 @@ services:
     depends_on:
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -138,6 +142,8 @@ services:
         condition: service_healthy
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -160,10 +166,10 @@ services:
     depends_on:
       dbrepo-authentication-service:
         condition: service_healthy
-      dbrepo-search-db:
-        condition: service_started
       dbrepo-broker-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -184,6 +190,8 @@ services:
         condition: service_healthy
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     volumes:
       - /tmp:/tmp
     logging:
@@ -206,6 +214,8 @@ services:
         condition: service_healthy
       dbrepo-metadata-db:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -245,6 +255,8 @@ services:
         condition: service_healthy
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -268,6 +280,8 @@ services:
         condition: service_healthy
       dbrepo-authentication-service:
         condition: service_healthy
+      dbrepo-search-db:
+        condition: service_healthy
     logging:
       driver: json-file
 
@@ -303,6 +317,8 @@ services:
       - 9200:9200
     env_file:
       - .env
+    healthcheck:
+      test: curl -s http://search-db:9200 >/dev/null || exit 1
     environment:
       discovery.type: "single-node"
       ES_JAVA_OPTS: "-Xms4g -Xmx4g"
@@ -331,11 +347,6 @@ services:
       - .env
     volumes:
       - "/tmp:/tmp"
-    depends_on:
-      dbrepo-identifier-service:
-        condition: service_healthy
-      dbrepo-database-service:
-        condition: service_healthy
     logging:
       driver: json-file
 
@@ -367,10 +378,8 @@ services:
         condition: service_healthy
       dbrepo-metadata-service:
         condition: service_healthy
-      dbrepo-query-service:
-        condition: service_healthy
       dbrepo-search-db:
-        condition: service_started
+        condition: service_healthy
       dbrepo-semantics-service:
         condition: service_healthy
       dbrepo-table-service:
-- 
GitLab