diff --git a/dbrepo-container-service/pom.xml b/dbrepo-container-service/pom.xml
index b6e164c44ed7c843252ffe3914164a08c67dcc8d..8c4c65ef615f46ca8d19fcf3d980e91f23016a65 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 dfc87fe1bd2b82e29c7b5c496ecc09df0590082d..132ad5519db7a8b891efc4328aa17433d806d9f7 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 515bfd517455bb139626ade352a7a12c9e500bba..d08d2341bd64670e50c43cd32915eaebd595bfe6 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 b2722c825fdd6dbd5b1ee38c54e8e4c2a6fbc176..554fe0c8f2bde3c837e10f5234759ca73e13a344 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 b5b9a9deb7197d174b4ccc3c377143052dac1693..acaa7b1c87fa808b6c6af90cb63d6e8a6410f82a 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 689ac6ea555c3d00418c055ad72307b51653a552..f6b05e147582fc78bbf45716dce770d375e8e2dc 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 77d238be78c50dd20ea144b4a2c90d1c2aa720d6..32380858b126df2d5867d13f29743790517119b1 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 35765c567f3a2d55a32a16df1f3b414f030a7978..20f54cca5a41d74b37fcc278d372f00cd82971b1 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 cdbcd6b052bf3918c8c4ff44e5904529288d92de..5231fe2eef09c2f72d4a994265e7c41fe9c1123f 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 82b9162e4a3f0ac5696c4596182d0a5cae740fbb..f92fa9102ad43cc1d3c9f0abcfccfdc354d4b111 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 d7b341c23a0ac741cf6422906c1cc20c984ae038..5de85233045cedd229443e0c6113b99ca4d8c691 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 a1a06e35c2e8fec2b8de56c2f56c10d7de307308..de8aeb7439933dbdbd13df95219fdb2aa9111cf1 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 c1a5d756b7af9d163766f3a9fae3c31cf157a77c..0000000000000000000000000000000000000000
--- 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 df2a6eba16e4bdbefa3a5de7eaff1dea507ed8ad..39a041738c73ed8ff3dd899cf6ea6d2a0e8b5c98 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 688993ab3ca2e32edeb59b6c66dc838f58333b02..c11a773abc70ade28fdf7aa45845043fafcdd314 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 f76f9976d6de9884579ac242ce616d6c0caf099e..23883215860e412b4136030f1308918bab91972b 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 c2af74312471ee253dc31be54ca6c30381b88438..889144818dacc9b5728c13a0e84a4fb6ec39e807 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 ca60fb1a740ae2047029d977b8ed96acae270c83..3e9b129fc0e32e423e909736f09a89ed8bc35acf 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 5b5855dec88d3e3ef8d032369a7d6af6956a702e..7b53e7245983c7ca848da7c1175e0158e2f2a930 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 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 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 e25363f4436dda27098d56a8f1a02913b2c2267a..2a0008f4f6406319663e1622138d2c3635a34084 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 c7e16a398dff015c0da0131759bf635163591d6a..a9f2f4f7c1c250fe1497fec0f9338622f4a43bef 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 52fec3af7ca856095581bd2dae572134ceb263b0..62b9995acbd5c66fa8e48fc8305db81559119795 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 bf7922f99728921f09d412891b5ab23c32da178f..8c0a29fdafd988f3b63fb82a694b4d25d53f2dfb 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 bcc12b9542777722e558319393133de2899e343d..50eb96b7206e0f6fdb616a4cb56b1a6ccf3ecbe6 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 40a45b0cce76ed6d69c2bbedb344a9fb9ea64493..d1e815abc1b709231c7685ebe7fb264478ba57b4 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 1d647d4d6f0a05a54e73dc6fb159cb2f2b8baabc..a4d319886574e497b2eb4d374b33c4fb41113c50 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 3ca17044ae8408d55eaa53fa7ebeb992c72848c1..a13a452a28c19896f8cccbe596f4bd007cb584a8 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 ac03038159766dd43803905ef9a2c90df841e20c..a4459ceb4a98ba5624e7e490a53f3dd53c14134a 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 4cf0fc3edb0a0dc7898a07e5de495c825be5456b..513d93fa263f4f2c8485c83b7d51c76bc0ff2044 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 b102cbf8519f3389df6983a4a507faead88c70f9..6bddad3d91abb5ee4062dc1baa2bf0385a4b8ae3 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 bcb86edb3372d4f70ca65bd13212657b159427c4..839ded8788f644de97e0f9994af0c61e35e966c5 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 a530ea55f1073b9b96d9c96a35168900557259cb..ba3da601ac654327bcd3395d2f3e1ae40a3e3af2 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 1117c0b9a8f7935e5186113617326c8d5155874f..eab873555a3b1413c95fa7aa441405f3a3f81644 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 dde3a3f802b268d79d5e9b9f3f2a2e3ce9ab085e..5afc03b3bdd9fbad3382ab37d32e62216f8be7f2 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 9d02bb53f434b65aae36bbf9ec8ef6f7ee1bb74d..24d383667add173395fb411c23b687fb0ed9c93b 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 d442fccb1bcfc13ad97ae50b8e48a699be9f4ca8..bf3b962a84871738660ddcbbc84fb2ae4d56e445 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 98ae89f24169005a2e0caa5cd9035351365b9d7b..529cc363dbf866ea11f969f3ca6ae580235503cb 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 17e63a0882420e21a3f84ce24b0f3e0851adaff6..4f954d7b67b511730b8098a8143a509f4fef3138 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 b01dcfbd68b57d4ee5271443a86633303b15f9a0..b8f3d6a0ffd45c16b7d7077f18ff2d14808b775c 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 e52110c7ff7cca2c40b13b091c7d0f4bb8359be1..6c3c01945ae1a06baaae0259c6925f406b9f4390 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 6c4c0d0b74bc6b2d2b414adfe87accd87f2c93b4..060989f1a458ddcd0f01856431df9670445f2066 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 69e950bac1a08554474e66555fdcdb5d779946ab..a33578d1293ab9ccacca9f479b042a628385ffa5 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 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 3cf7c7ad0072c6ddbd510696263cf6921dc6d1e0..fbcd74ed775bb84c3a05ca9a9f2ac52a662fa56d 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 92e18ed6612ca7b5322e8694fec134a076aa1748..b70f0e0fb20ef5b6479805f7ed06e57c138aa907 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 283dd62e8d4b75d573a318fd80d5be21abaf834a..e9a1ace9a73872c75e4fbb31af14fd698f67dcea 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 c033bd17dc63c7c0f8cb8b2354c689578d3eccf7..b1020fdcc532602d72cad5018b964edec4f25eea 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 6ad152559aa62b08972fa6ed4488057ad0d9dae7..f59906b29c023a254b71c2df84778d4e02d837b2 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 99f75a4104e8daa1c61a3e7b67ee28aa4a3800ec..bd985254a5e2c6c5d42679754f5c164f975ff2ac 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 9f01ada5f7e7a2605c6dbaeef7e1b92afce9c05a..a1585a8f69babe0b0f5a5ff9a70cfaad52f2f075 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 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 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 709fa7be4d25e1b2ae4351fde7281d701fc8cd79..6125ff39ab41a7e341bb01a32bbc152415483032 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 a94df1399012e231287e07756353e2aa11f6be97..1a615abbe6105ba959f8002f42a4f4c7df6b41d2 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 76c29263d4b42461ac01274551f5650a5b6397ba..1796de02e8d04b2b25cd6ab4eba5c0d4427e0cd6 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 687a630b49e1359158528685a0cae8e691b2fc5d..fec841198727c1fd61f343a02141a58e0c5f112a 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 4608207d9291de57f1bfbcbf2db2fd7f191f5dbf..22a7634c3c29728ecb2ddf4f6b0c88869b4bf405 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 3723ccaae88b0ad247a4be97e018962c48ae918e..93c3564be7fa4897ddee055966b88f237f53eafb 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 70f2cabd3b49a73f38b64b618bfda3261bc6eecf..ec2bbaf512cf2a83dd0d241ea0f7c9d92be90957 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 003f54c319a01c901076553690c5d319aeab2953..2626da3c2cdb4c45b13cc9ea93ca9f4b472fd7e3 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 d4d0a38cc0e0ceeceac1b1f85b250c76c95a9ff2..95132ce8afca7bff1d15f999dcbfa462a8ab1f1f 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 79d1fba1d72befd82a1d09fac2292773dda99e3c..7ec621e738fc31f8fc85bc201ebd6d79ed8039b7 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 15a36b4bea2db5c56fcbe8330d1e267cc2bfd678..ee738133cafd2681ce0ad6f879e1edc33dae9315 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 73b6c7b5ee81f3386c1f99987d4aa6c84fcce64d..2ebfae7cd8096fcffc33474e57c57a59459d7a9f 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 ddd2f989f2380a477f1f3a5e75e7cf5530a06f33..7c108704fb48d57c6a91b498a881feaa37a86932 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 f94307ae80a9adbf22692d0bc55c30f62958b365..b7725ef7ff32c1d24baaecaeed59dde004e3998c 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 6a39ebb85b9bfcc9479e4eac034f6f5c20278c1e..a647d6e54ec3b4419bf4599555f8e3483fbd0f1a 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 4bc2800a8f08f96a257188951617469904c36982..152ee248ab508cd9ff86ce8818d80111f5e62f77 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 8b826cb105bf8d554f21fcd9ae61044d7156edf3..96de2e004f9f9d8810f2fc2dcc6154bdcd7a5a24 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 b44d0282f571bfbb087d38d91ee8d55d3ce4d2fc..cfd4cb71dc193c9bdfc70e96b19f510983d0fd04 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 baab96d40cc35d4136576162d84fcadbf6d61d5f..8c51b6b76fc9ac7587e22c3701624468a2cd82aa 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 2f0a40e3b410ff2469e7df01b785d5e60c86ff68..e3688abbc1ced999ad425307ccdcb20cc254d27f 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 2795450ea714602c41b8be03d62cbfc1853aa967..856fe81cead180bb0b934bc090dcf33d344e17b2 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 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 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 2470972bd469c4bf3ac00ced1546bea34744959d..4513becc2270924d5cafb83a74e054ad121788ad 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 29ee345f1a5c3b0c84129a3f16cf08644abe9031..dd31029441061583637573fdb016bfd81a111a7f 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 fa193cc6c25c1d48ae9b9336020cd97a5c6e0ece..856ba9418f22b22745cbf4d836dafd10aaf357b5 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 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 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 122095a168705beba38dc0c52cba481c1a64a649..439a1f372ef3df37a8f824af8296e7a7a1361315 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 4e735007ab69f5ca5b6c9e1e4fa0007a4cbeb3a3..a1334eb5bd9ac5c739bfb6a5f6b222eb886296bb 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 548737b0b92f9b5d9fceb1808b2f1b5894356135..6117a02933659fb8fdeca55bba538ea4aad02cd9 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 01b143f6f813cb5c34cd94a413010f2677d43685..499954150fa41d366275e24e037b870e412b7a75 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 13f4dc6316fad7f371ce4fce95d17b09de534ee0..45e42d1515bbc6f94001363ce647a5d8472c9f6c 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 f23467c3af5f7302b60a32fae0d300a668af8114..c086a2990c4f405ebc7d45a5cbbd47b8a3a4432b 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 b83724e483da03d3510e050465328eb1316e78fc..458419a794ee5c9a3adf06d6907326995d1537e1 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 c79c1bca0271d880cc25492d96ee41cb3dc15905..3f853c02aa6e12752e7faa883647cb1674c982a1 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 4a3aa4437bc9d982f9dd3754b5599057062ad6e5..8be744283483a10a2950098a130073f26cc5654c 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 2c7df8b36c10c7ce06a26808f63422a0ccc30c93..47f1ac286b3fa39407359baf5cdc58a4f8d700f5 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 1a3619663c9d096b1a43fce46b65b41bbc22d1bb..632ee66fc8429a6d4d4f16e9e2a2a15c060993f3 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 26bff609d2341a9740f8bd37c471761429830006..afda4b6f98bf98c75461264ab8b367a71e3e74e7 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 2b5ef54ee2dc41185eebcd95ab275fc43464cc78..e0c645dc8f2f959eef360806fc82efa417fa8ac1 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 f57bf10f481fe31e4af4c61d30df701738d33da4..059f9f1e67dac2a6033a4527e0e12e37cf53a9be 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 ff401e9fe0b6d93b06b3811246de74dee5ff1e1a..86acf0f63e5b41e0b80c3d3ce6ea0e918308a74d 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 1fb428714fdf1fa75282b71d90a21d0eff971b21..023419b218b20f2c72875f3a6fff4ad0f50026d7 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 26da5e82fa6040a62ecf2bfc5aeb1b4867d54512..024a91d3204e0742e5712fd6e1e96862e6a1888f 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 e8e68400ee2fd9fd49d9068f295809a8c369a554..13f015213effec80e94ac457c8201795c24fbb71 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 d692b00041998c9ac88e35465508fab23be7d674..04a8da854e9fdcc99a059c3aa1d7728e21b8780b 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 ae76b3951eb6f139358713c33cb2a4b3acad8ec7..df6ec321689ad7fa1c05eb1430177aae79122133 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 0b79897fc81d6a58ef57df74a3b7e4d93ecd5d5a..27706deae379000a1b7fbf4ca6ffcb2941094609 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 c033bd17dc63c7c0f8cb8b2354c689578d3eccf7..b1020fdcc532602d72cad5018b964edec4f25eea 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 6a2a5443d938b9cad6e10d40114ef4d0f5f950db..1be6bbd2549e0e8dc2fa00dea458ccb1211d52c0 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 3dbd267234e83405566ae6c9f5efe3260d38b875..c1e1d08295b85548041332353abfcee62c29e2df 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 cffa3d3cfd19c0e006e827426eb6ce4be74be228..bfa5c3c6aac94fb19a4b9fa9627427df103440fa 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 09cf17d37b81728bda86ee3aefb6b7397d6d7fed..762d58c64c4f64f367e1ddb7e89bf99612c002e6 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 e529441353a7203a1ea91c7e1302a7d171aa9db8..73c0a87169dcd8cc59ba1631076bba6df45f5766 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 34e5ffeca0e66d7773abbf089c3824ea80d06270..d19bb8c6f3dc36c6605fc953e671794db5a3d034 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 ee811a1e255c7b3082cab7e96567170f6ddb17bd..f28840615e0be9ed6a8718508cbf5e72186ab17e 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 8bc1f82c6fdca501aea8df1e1b408dac36ef0dac..216631f9030f8635cf5733a3a448092d4c91d2d4 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 6504e0471e47655607b1786e7fe65edeaaf75e60..79fb6ebffa0d1a6e6cf334c31f09a4498c49c2bc 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 90634fa49a537eb13870da709c1a96c258c38a45..5d9f72c2e6221904369ff5b5177834b3b6dcef0f 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 be64aff2a07f66b8f10d6e637a9894765a8c6ff6..e488a3983a74aad9aaac04202ff687a552f4a80e 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 13f552f6ceedad6061334ca0e87794945c18d034..37d544535616895b9a6fb0b8a2eca97369869470 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 cadc876d8ba3ebcca9c3d3cffa44bf5d7c0941be..20ac8e417664704e68b62d65234df8b787dfd5e4 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 647886a82434d0176e77399905ae3173f8565c80..e686fdb7053d896496b639e8b9369407bbe5db9d 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 726dc651d45c6220b1c67557675ec42f16adebb9..3e3e84f705139ed2f8c8d6de3879622e8c95e676 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 f009f87f64efa1a6ded33455300ab1c135303314..016f4aa756f853de70b351c0389db4ca16872f67 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 cfef081d1eb3abf3fd94d998702b095f59b64f3d..cb6424ba3500819fb8ba573dde3b8c1638de5e12 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 0091db3b8e627afa7a9564ad7cce78f6da31e9d3..c5a1c96c0cf9d78ea671fc420c38d37bc3351796 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 aa5e5024955c6f85ce88d07015a93127e8a25e06..cf298251339bc18b8d98d2aaed835bcef3dcf0f4 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 af081233297bfd2d93fd13469c9aaaf4e8c0b04a..21d1c91d17f22b0753d7034bda2efb8a8cccef56 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 4590f3e742eab0b7610c3e5e7d291b5d682f58b8..118f368e02ae42fd8fb3a2041edfe946354c7bca 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 a20232e18d492a3a110b8ade6e4d31c3bc8cf5e4..5a8bc48cea1b5be7cd29f6dd62c3579f34a59b4b 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 dd8135d60e59922c405f6b69ca50e98f136b094b..10d216bf3bfc34f1c0b3b50bc95ea85126edbecc 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 5b9b65d3dd045143cdcd3c8d2ffcbd7d2e806730..987fe6f81ed57b9a53d68b012abf840844db624e 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 709fa7be4d25e1b2ae4351fde7281d701fc8cd79..0000000000000000000000000000000000000000
--- 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 dac4fafd152d1b0a3064a49a748f1079080f1146..58b73c9139550a25bb020ad7590307991a3cd693 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 2bfbfc3f90d9795a4ef4369532d04a5bfad56a3b..e4723eb9d2dc3c7aeadb81b5ac721a9ba3859ede 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 e73c2e7b2b4ef46bb683ffd847989749f50ffada..e5b21ce646cb8999a801aeeacd36214449c6f301 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 7dd89d62041dd390b38765442173dd09d029f4ba..3bc2e7c168ddc4a6f6472dbc27fd0677ebbfaf07 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 21f191f8eddc0ebf9e0d6a01f8961a81f0fb6c39..ab4315e1c38828cdb432340f1b35d3bccc5b929b 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 c1a5d756b7af9d163766f3a9fae3c31cf157a77c..7b53e7245983c7ca848da7c1175e0158e2f2a930 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 2d3a818d871ada46608d5b30b4603379d68e6161..ab94de26eb409e95a36ce0bda166c5b50b78cf30 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 7a19c1f575891bd5fea52a4de87ea62b35c027bb..e4fe63d6239ceae9c9063e96a9533ad3a746f6da 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 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 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 3f5c2ac7c4c2167786fa96252083cd6801ee9965..322602ee2d8bfe668f3c9be2f1e8287c8e77cd54 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 617c6d106e05a8b94707315a640c8fbce829d9ec..da608f39eb1959c0971cd42e8fc8535e1e7f70f4 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 1c492b6529f648134818bfef8170695a849cbfc8..983a1bece772fc55c4c510d0600923c2fc69db1a 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 0e10cc3386798971ef213db326806b161f8cb00c..07c77c5358ad0dff79da6af0ea4ff7f3a4cf0fda 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 79910ab9bf4aaec93670d22d6678eaac437ef59c..4a2a8927f76e589c747a6238c5db232533b7f665 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 e39dddeee311b831e97e41eef56d70a7cc3d30e1..9b1f1f8f1a25243bdb091e803e9eee1fa659aeeb 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 8a6c7d4ae27e94ace364b7015de563fc0f86f5ce..0ad279d9daa34122e068cfd0cca4f11e53f80e7a 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 d3c8b1659624e6b4e2df7a5c4bbbfa5f6c3f59e9..27cf23c9b99d375406f838a74f000e639b1e1fa3 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 0bc0916966a49a99ad66d5a47c6daaaf39205aa3..7cb9a8636dc63a1a1b61f4d16f44069e1d43a8ef 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 6070573876c3ece8a361ce1f882765039d544815..8276456a2caa204ac8aeb5a9f7cce5cdfd790b71 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 76350f4b41e2c93666f76dea30e70016dd4177a9..e7318edaef61fd014e8ac37f71697902c955098a 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 890c01ef053bd079ba9e72aa61d0563ce05d8700..9ba665a0231498753b34f2b07cb4437c38bbb782 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 5e9feb19bcaa58f900201fc1743e4c363f640503..5ebeb484bd69b0a17c61704c8dcbd952bac7db6a 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 1dc8023c3d8bcf3499b09df8a5fbadb06535565f..68811a650e766c478139e36d2b9a83f35fee9ba8 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 42af85f682e383c07469c9ac9f6abdac422ed202..6de90a4428e0a0e1056b04421ec7536132a8203c 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 ed5171a3327ff929282ee9b5d71c477220a46213..b87fc0a5962e5d553a49be70c7175fcf447fad76 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 c81035a6db938872ba93eb540d3dff5c6b85f6ae..70ad5879c63ea8cee69c8b1d9e018ba858fcadb1 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 f84d3ea1d96b118a7da4bd468b11bfa4303a6045..ac91c4e2ad3909765e80cfbb92c9869f730d1ff4 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 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 688993ab3ca2e32edeb59b6c66dc838f58333b02..c11a773abc70ade28fdf7aa45845043fafcdd314 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 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 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 75c296f527e5a1b04d8a326673ca35f88519e842..fab911633e762bcca06113efbbed06e01f2e4e0f 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 0000000000000000000000000000000000000000..7b53e7245983c7ca848da7c1175e0158e2f2a930
--- /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 25d6eaad40543b0fdc5a9ccc93eff0a6478a39da..63fe90eea77e37867fe917dc896ee3b96498ae85 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 21a0612858636287e44ff7d3004d46e85372a82a..b52cc85d3552636e4463a848f651c45e6292a2cc 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 e24ab4d11a2c21eab867f135b1477df6e8c2c34c..ef80b22e06e31c795a3d1d5cc37d2d719cb1db88 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 4935a9857bccbdeb715d1d467f299e43ca4df5cb..773cac2b6e2fe0f2bf359d600699a817493d0d0e 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 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 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 7df09d4e44e484f1e1a79beb9cd81c294b34d103..7fcd93f71355f255332880e121adeaca01aff919 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 ce6e8a0975a29bdcddaa03d316d0b158c1fd8139..fd501ffdcc41a301df1b196b8b6a2bf0ec0911c6 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 5137f9f92d234d32b3f905fa634b13a68777c7a0..411ea767ecdfce7de3f8613ad690f618f96df431 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 742c2090371ede84aa77b90e3dd00c862388bd4c..802b0e7a07e0e8f8cd43176f4edb1214eb2ba31a 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 34e38612fb8527969226d695b876e6f97d0adeaf..c08190b9069703596814adde7aeddf9dde51887a 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 8f586250943b420093aa2a0c8e6f73baa537c4a4..cab89efe6cfa87bf811252d33b8ec5e8c6cfed31 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 99bc7ae5d4b79169e3864397427310ef9e78ffab..43e1ae2d23b34719f8cf2e70cb9b6e6c46acec8e 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 21af60ba7042fc19726286b49d9b3a1c1340f755..e472c70e310c7ad604e48bb8b7d782e9eddac845 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 387acfe392904a5ce19a587b303c2744f14287cd..6dfc32022e99a2c7dfdde8dc7887bed80208a49d 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 2456e27f4e6a38522419e5fc51d490f403260579..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 3c8f18b805984543eb4e7a6c2638d03c74816824..00656af9c7cc2f5c180067e68f748bd3ed061340 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 02166da7eeb020308238d4d64026469123c4b827..a0d8a010300bbba49d1a95c1bed1b11a80d15d44 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 c0c994b5ff4a48a41a81733e7061092c43c52601..eb5b84bcd252dfa2cff611ae92d2d1055699167a 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 345863caf4d9a8fa0570fd950a03c6b771804d50..4e5e905427f79e85ec4302ce9c8d7d7b2631b058 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 8759d8e3c684e7df97c79adcfa756e3b1a220f14..5d181b3f753be68d1196206f488eccf522af04b1 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 53822947511046bfdc258e81fb11f0af22b3a697..584a508ebb571ec227b45b5321315267c0b58a1a 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 2cc1cd90399afa2eb9757625c6afa879de77a0c3..ef6382bc37f131adcbf2d7c09f6a3dc58b1f3964 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 70b28170937e8de1a288ddcd7da2369e61f75d08..131e7891e3eb5de788c491b12a2307f6aed8cabe 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 52cb9f38f1b62fa33687549e68f6618ba451d2bb..bef7f2b3b4898cfced8a434866d145e05de7bfea 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 ba3a4c634edd0cbf4556683ac92c29f7087e4e79..6859a272103959e83ce738225264dd97a1ac4f76 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 27d815cc6f4329c5374c31fb5299ccabedf24d39..4fc71bfb1c2bf06095b9b0fc95aea1a939e144ef 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 bcdbf9f83266e10f0fab4f59126ffa936bb9b537..ee4048ede1b8dee2131c1522189407b83ebf17aa 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 d204a19345e7d27eec347ad8ea9b9a98ab997b1f..e9e9fdb8db0d291d79e478ea6f0590ab21987b78 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 aabd612289f0130745444ceafe3f8fc67bd0bfd0..56d2152fa027b32d43ad2b966db167ba8ddae253 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 8669937f1d599162999a44dc28d5d8f9fdf73f04..345f96ff8afbf673b1153bd46d1b7310817aa936 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 a3a4713f6864a9539344e5c413583e468863c4fe..f86422ec62a9b3949c0de4323e6306346ea60e37 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 e0c8531399f55fd72429eb7ead6f92e10c54fdf8..6d96fc3584c79bfddae43faa467e0ab543e90780 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 48e7ab240f644a583d2bdbb9a54b8322a500b804..c4b162f681d89b74ce1c1f70970999e140e089b4 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 812cb439f61d9b708aac09589d28b9c39d100d8d..8f22ea7fe5e692a94a09799d74ae144605cd7bf3 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 5c38de25fcf98665ee2d3945a35fd2082837256d..2e5bf099706549fcc22a08ba6be54bf5e49e9692 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 b499b6c43bde74e44902af54109e464ee4c147a4..4ff1da34d84784ad626d3be3926d21949f593d39 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 7766f31afb2972dba07689199c92d51b802a2048..3f65f7d920344b79d199f67b21da26891b8f690d 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 14885f60f09fcb029818e9c517ad84a584c3176e..b8ef166f7ed067021c9157b11baa0c5e7fa86d08 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 0d0d80b5b83e23ed12a251a7775ca17dac4e469b..a46bb17a13875e050dc38d8a76f500be351dbcc2 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 facea5fad7f8e1b1e1d5a130b31899b0663324bc..637cfe68ef73067d0800acffe9e47849cb7b20a1 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: