diff --git a/dbrepo-container-service/pom.xml b/dbrepo-container-service/pom.xml
index 8c4c65ef615f46ca8d19fcf3d980e91f23016a65..b6e164c44ed7c843252ffe3914164a08c67dcc8d 100644
--- a/dbrepo-container-service/pom.xml
+++ b/dbrepo-container-service/pom.xml
@@ -94,11 +94,6 @@
             <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 7ef30669bce222658b191aa5a5dd5f05e2cb811c..dfc87fe1bd2b82e29c7b5c496ecc09df0590082d 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
@@ -2,7 +2,9 @@ package at.tuwien;
 
 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;
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 2af1c6bc21f1e8da7a8076cf4def0a054fe07887..515bfd517455bb139626ade352a7a12c9e500bba 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
@@ -27,6 +27,10 @@ spring:
     virtual-host: dbrepo
     username: fda
     password: fda
+  opensearch:
+    username: admin
+    password: admin
+    uris: http://localhost:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 springdoc.swagger-ui.enabled: true
 server:
@@ -47,7 +51,3 @@ fda:
   client_secret: client-secret
   client_id: dbrepo-client
   gateway.endpoint: http://localhost
-  opensearch:
-    username: admin
-    password: admin
-    uris: http://localhost:9200
\ No newline at end of file
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 907baa318fed02709f6ec6ad59a06e9e526b4ed4..b2722c825fdd6dbd5b1ee38c54e8e4c2a6fbc176 100644
--- a/dbrepo-container-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-container-service/rest-service/src/main/resources/application.yml
@@ -1,5 +1,7 @@
 app.version: '@project.version@'
 spring:
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration
   main.banner-mode: off
   datasource:
     url: "jdbc:mariadb://metadata-db:3306/${METADATA_DB}"
@@ -27,6 +29,10 @@ spring:
     virtual-host: dbrepo
     username: "${BROKER_USERNAME}"
     password: "${BROKER_PASSWORD}"
+  opensearch:
+    username: "${SEARCH_USERNAME}"
+    password: "${SEARCH_PASSWORD}"
+    uris: http://search-db:9200
 management.endpoints.web.exposure.include: health,info,prometheus
 springdoc.swagger-ui.enabled: true
 server:
@@ -46,8 +52,4 @@ fda:
     public_key: "${JWT_PUBKEY}"
   client_secret: "${DBREPO_CLIENT_SECRET}"
   client_id: "${CLIENT_ID}"
-  gateway.endpoint: http://gateway-service
-  opensearch:
-    username: "${SEARCH_USERNAME}"
-    password: "${SEARCH_PASSWORD}"
-    uris: http://search-db:9200
\ No newline at end of file
+  gateway.endpoint: http://gateway-service
\ No newline at end of file
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
new file mode 100644
index 0000000000000000000000000000000000000000..27d815cc6f4329c5374c31fb5299ccabedf24d39
--- /dev/null
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -0,0 +1,35 @@
+package at.tuwien.config;
+
+import lombok.extern.log4j.Log4j2;
+import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.ClientConfiguration;
+import org.opensearch.data.client.orhlc.RestClients;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Log4j2
+@Configuration
+public class OpenSearchConfig {
+
+    @Value("${spring.opensearch.uris}")
+    private String openSearchEndpoint;
+
+    @Value("${spring.opensearch.username}")
+    private String openSearchUsername;
+
+    @Value("${spring.opensearch.password}")
+    private String openSearchPassword;
+
+    @Bean
+    public RestHighLevelClient openSearchClient() {
+        log.debug("openSearch endpoint={}", openSearchEndpoint);
+        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
+                .connectedTo(openSearchEndpoint)
+                .withBasicAuth(openSearchUsername, openSearchPassword)
+                .build();
+        return RestClients.create(clientConfiguration)
+                .rest();
+    }
+
+}
\ No newline at end of file
diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml
index 021bcf9c1ab52e30f983c5a3c5e21822a5740cc6..bf7922f99728921f09d412891b5ab23c32da178f 100644
--- a/dbrepo-database-service/pom.xml
+++ b/dbrepo-database-service/pom.xml
@@ -31,7 +31,7 @@
         <c3p0.version>0.9.5.5</c3p0.version>
         <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -72,7 +72,7 @@
         <dependency>
             <groupId>org.opensearch.client</groupId>
             <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- AMQP -->
         <dependency>
@@ -116,6 +116,11 @@
             <artifactId>mariadb-java-client</artifactId>
             <version>${mariadb.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Entity, API, QueryStore -->
         <dependency>
             <groupId>at.tuwien</groupId>
@@ -136,6 +141,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-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 306944de33f8a180935fdbf6cd5aff3bf4b42667..bcc12b9542777722e558319393133de2899e343d 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 3202f76b38a602595e86393a7515c975466ed904..3ca17044ae8408d55eaa53fa7ebeb992c72848c1 100644
--- a/dbrepo-database-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-database-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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
diff --git a/dbrepo-identifier-service/pom.xml b/dbrepo-identifier-service/pom.xml
index ef0bed4d9d6b0b807951db97458bdadf29c0d6e9..d4d0a38cc0e0ceeceac1b1f85b250c76c95a9ff2 100644
--- a/dbrepo-identifier-service/pom.xml
+++ b/dbrepo-identifier-service/pom.xml
@@ -35,7 +35,7 @@
         <super-csv.version>2.4.0</super-csv.version>
         <jsql.version>4.6</jsql.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -100,8 +100,8 @@
         </dependency>
         <dependency>
             <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- Docker -->
         <dependency>
@@ -129,6 +129,12 @@
             <version>${springdoc-openapi.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-data-jpa</artifactId>
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 2104df15d67bac70158e33d6ca942f1e689d35c5..79d1fba1d72befd82a1d09fac2292773dda99e3c 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 23fcfe27270363672c9a0c892c414fbcf7e3fa95..73b6c7b5ee81f3386c1f99987d4aa6c84fcce64d 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
index 5715b7cd2926cb1ddf5407aa63501c3ef91dd65b..24a779913012676f65ee7ede7a8ebd6ba48c6fdd 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
@@ -10,10 +10,11 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
-import org.springframework.data.elasticsearch.annotations.Document;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.data.elasticsearch.annotations.Document;
+
 import java.time.Instant;
 import java.util.List;
 
@@ -24,7 +25,7 @@ import java.util.List;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "databaseindex", createIndex = false)
+@Document(indexName = "database")
 public class DatabaseDto {
 
     @NotNull
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java
index 7a5f80d2bca4f89a4807af09d7c5941ec5b2d264..8aeb060772539902079964a2b5cc67823e0f9889 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java
@@ -7,10 +7,11 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
-import org.springframework.data.elasticsearch.annotations.Document;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.data.elasticsearch.annotations.Document;
+
 import java.time.Instant;
 import java.util.UUID;
 
@@ -21,7 +22,7 @@ import java.util.UUID;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "viewindex", createIndex = false)
+@Document(indexName = "view")
 public class ViewDto {
 
     @NotNull
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
index cf7d14f9406c363e3791ad26a8336e506a5be034..8696a092787c011c10a0079b68439a33fbedf11a 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
@@ -4,15 +4,15 @@ import at.tuwien.api.database.table.columns.ColumnDto;
 import at.tuwien.api.database.table.constraints.ConstraintsDto;
 import at.tuwien.api.user.UserBriefDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
-import org.springframework.data.elasticsearch.annotations.Document;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.data.elasticsearch.annotations.Document;
+
 import java.time.Instant;
 import java.util.List;
 
@@ -23,13 +23,15 @@ import java.util.List;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "tableindex", createIndex = false)
+@Document(indexName = "table")
 public class TableDto {
 
-    @JsonIgnore
+    @NotNull
+    @JsonProperty("container_id")
     private Long containerId;
 
-    @JsonIgnore
+    @NotNull
+    @JsonProperty("database_id")
     private Long databaseId;
 
     @NotNull
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..010bc68af285bb9fadd741355687e1a9218d1448
--- /dev/null
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java
@@ -0,0 +1,24 @@
+package at.tuwien.api.database.table;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import lombok.extern.jackson.Jacksonized;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Jacksonized
+@ToString
+public class TableKeyDto {
+
+    @NotNull
+    private Long containerId;
+
+    @NotNull
+    private Long databaseId;
+
+    @NotNull
+    private Long id;
+}
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
index 612f15d86d2408119a5adf8d095f86131918cbf3..68c7934e180b1eee135010cadd42239c0e8fcd1c 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
@@ -3,16 +3,15 @@ package at.tuwien.api.database.table.columns;
 import at.tuwien.api.container.image.ImageDateDto;
 import at.tuwien.api.database.table.columns.concepts.ConceptDto;
 import at.tuwien.api.database.table.columns.concepts.UnitDto;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
-import org.springframework.data.elasticsearch.annotations.Document;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.data.elasticsearch.annotations.Document;
 
 @Getter
 @Setter
@@ -21,16 +20,19 @@ import jakarta.validation.constraints.NotNull;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "columnindex", createIndex = false)
+@Document(indexName = "column")
 public class ColumnDto {
 
-    @JsonIgnore
+    @NotNull
+    @JsonProperty("container_id")
     private Long containerId;
 
-    @JsonIgnore
+    @NotNull
+    @JsonProperty("database_id")
     private Long databaseId;
 
-    @JsonIgnore
+    @NotNull
+    @JsonProperty("table_id")
     private Long tableId;
 
     @NotNull
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..28dc203f0388225ceb29e849fc2998a8a681c58c
--- /dev/null
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnKeyDto.java
@@ -0,0 +1,27 @@
+package at.tuwien.api.database.table.columns;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import lombok.extern.jackson.Jacksonized;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Jacksonized
+@ToString
+public class ColumnKeyDto {
+
+    @NotNull
+    private Long containerId;
+
+    @NotNull
+    private Long databaseId;
+
+    @NotNull
+    private Long tableId;
+
+    @NotNull
+    private Long id;
+}
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 592c7cfc8cd1769805a99000bb713677726bc03d..1a3619663c9d096b1a43fce46b65b41bbc22d1bb 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
@@ -9,10 +9,11 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
-import org.springframework.data.elasticsearch.annotations.Document;
 
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
+import org.springframework.data.elasticsearch.annotations.Document;
+
 import java.time.Instant;
 import java.util.List;
 
@@ -23,7 +24,7 @@ import java.util.List;
 @AllArgsConstructor
 @Jacksonized
 @ToString
-@Document(indexName = "identifierindex", createIndex = false)
+@Document(indexName = "identifier", createIndex = false)
 public class IdentifierDto {
 
     private Long id;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
index 6197dd0697c92d29f6f0f527d69cd4375012a999..88a86abd65c00790fc1a3ee45b2162ea6ffa8c4b 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
@@ -7,6 +7,7 @@ import lombok.*;
 
 import jakarta.validation.constraints.NotNull;
 import lombok.extern.jackson.Jacksonized;
+import org.springframework.data.elasticsearch.annotations.Document;
 
 import java.util.List;
 import java.util.UUID;
@@ -18,6 +19,7 @@ import java.util.UUID;
 @AllArgsConstructor
 @Jacksonized
 @ToString
+@Document(indexName = "user")
 public class UserDto {
 
     @NotNull
diff --git a/dbrepo-metadata-db/pom.xml b/dbrepo-metadata-db/pom.xml
index 284747e3d7382d842dc6b96c51ae96dd0c91b72f..0fb24fd6ea1b841a9337014f643f43a876247226 100644
--- a/dbrepo-metadata-db/pom.xml
+++ b/dbrepo-metadata-db/pom.xml
@@ -32,7 +32,7 @@
         <jackson-datatype.version>2.15.0</jackson-datatype.version>
         <commons.version>2.11.0</commons.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -48,15 +48,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-jpa</artifactId>
         </dependency>
-        <!-- DataSource -->
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-elasticsearch</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- Mapping -->
         <dependency>
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index beddd0a5dab1364701d38515faa623232e662723..26bff609d2341a9740f8bd37c471761429830006 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -49,6 +49,7 @@
         <keycloak.version>21.0.2</keycloak.version>
         <hibernate.version>6.2.2.Final</hibernate.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -83,6 +84,11 @@
             <artifactId>mariadb-java-client</artifactId>
             <version>${mariadb.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
+        </dependency>
         <!-- Monitoring -->
         <dependency>
             <groupId>io.micrometer</groupId>
@@ -150,6 +156,12 @@
             <version>${springdoc-openapi.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-data-jpa</artifactId>
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 1b6c8a38f5dbc21dc2db7f1d3bff8aa439cd55ec..2b5ef54ee2dc41185eebcd95ab275fc43464cc78 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 0ec7b7bc08a59b9937c4b797e344b2383e3ff02d..ff401e9fe0b6d93b06b3811246de74dee5ff1e1a 100644
--- a/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-metadata-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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
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
new file mode 100644
index 0000000000000000000000000000000000000000..27d815cc6f4329c5374c31fb5299ccabedf24d39
--- /dev/null
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/OpenSearchConfig.java
@@ -0,0 +1,35 @@
+package at.tuwien.config;
+
+import lombok.extern.log4j.Log4j2;
+import org.opensearch.client.RestHighLevelClient;
+import org.opensearch.data.client.orhlc.ClientConfiguration;
+import org.opensearch.data.client.orhlc.RestClients;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Log4j2
+@Configuration
+public class OpenSearchConfig {
+
+    @Value("${spring.opensearch.uris}")
+    private String openSearchEndpoint;
+
+    @Value("${spring.opensearch.username}")
+    private String openSearchUsername;
+
+    @Value("${spring.opensearch.password}")
+    private String openSearchPassword;
+
+    @Bean
+    public RestHighLevelClient openSearchClient() {
+        log.debug("openSearch endpoint={}", openSearchEndpoint);
+        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
+                .connectedTo(openSearchEndpoint)
+                .withBasicAuth(openSearchUsername, openSearchPassword)
+                .build();
+        return RestClients.create(clientConfiguration)
+                .rest();
+    }
+
+}
\ No newline at end of file
diff --git a/dbrepo-query-service/pom.xml b/dbrepo-query-service/pom.xml
index 9274612bde7dd3c35118aa5b24cba860ebc72da4..e529441353a7203a1ea91c7e1302a7d171aa9db8 100644
--- a/dbrepo-query-service/pom.xml
+++ b/dbrepo-query-service/pom.xml
@@ -51,7 +51,7 @@
         <c3p0.version>0.9.5.5</c3p0.version>
         <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -123,8 +123,8 @@
         </dependency>
         <dependency>
             <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- AMPQ -->
         <dependency>
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 af5e7ef22913baf7206dca51f5f9c6147bd29b27..34e5ffeca0e66d7773abbf089c3824ea80d06270 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 5caaab1e9b62a38c7f9d08fdac089e563143a835..8bc1f82c6fdca501aea8df1e1b408dac36ef0dac 100644
--- a/dbrepo-query-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-query-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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
diff --git a/dbrepo-semantics-service/pom.xml b/dbrepo-semantics-service/pom.xml
index 08ba51d910c8f311f4cfc1329c7748e1ef302f55..6070573876c3ece8a361ce1f882765039d544815 100644
--- a/dbrepo-semantics-service/pom.xml
+++ b/dbrepo-semantics-service/pom.xml
@@ -36,7 +36,7 @@
         <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
         <apache-jena.version>4.8.0</apache-jena.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -95,8 +95,8 @@
         </dependency>
         <dependency>
             <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- Testing -->
         <dependency>
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 bec2e19c3b2a0755da8c7352d63690bf8c121a9c..76350f4b41e2c93666f76dea30e70016dd4177a9 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
@@ -3,6 +3,7 @@ package at.tuwien;
 import org.apache.jena.sys.JenaSystem;
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 752873494fb5c13501be4bfba8307dcec880099c..5e9feb19bcaa58f900201fc1743e4c363f640503 100644
--- a/dbrepo-semantics-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-semantics-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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
diff --git a/dbrepo-table-service/pom.xml b/dbrepo-table-service/pom.xml
index b32a4dde835ecc121bc6ea639b0a44e6e3231841..b686d22c3b998f5a21b851b03cae9c6361d52150 100644
--- a/dbrepo-table-service/pom.xml
+++ b/dbrepo-table-service/pom.xml
@@ -34,7 +34,7 @@
         <c3p0.version>0.9.5.5</c3p0.version>
         <c3p0-hibernate.version>6.2.2.Final</c3p0-hibernate.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -120,16 +120,21 @@
             <artifactId>hibernate-c3p0</artifactId>
             <version>${c3p0-hibernate.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.mariadb.jdbc</groupId>
             <artifactId>mariadb-java-client</artifactId>
             <version>${mariadb.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.opensearch.client</groupId>
+            <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>
         <!-- SQL Parser -->
         <dependency>
             <groupId>com.github.jsqlparser</groupId>
@@ -150,6 +155,12 @@
             <version>${rabbit-amqp-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-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 a96e2effc7640acd1ec961656ee54d3a52fcd991..21af60ba7042fc19726286b49d9b3a1c1340f755 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@@ -10,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"})
+@EnableElasticsearchRepositories
+@EnableJpaRepositories(basePackages = {"at.tuwien.repository.mdb", "at.tuwien.repository.sdb"})
+@SpringBootApplication(exclude = {ElasticsearchDataAutoConfiguration.class})
 public class DbrepoTableServiceApplication {
 
     public static void main(String[] args) {
diff --git a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
index 65be9f4bdabcd1319d16e2c76ccdf1e59e8cb488..8dc8303bbabab38482a172d08df1d700a766499f 100644
--- a/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-table-service/rest-service/src/main/resources/application-local.yml
@@ -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-table-service/rest-service/src/main/resources/application.yml b/dbrepo-table-service/rest-service/src/main/resources/application.yml
index d874155e5c2f42be6f01479f49fad37c09ccc5e1..a91591b9aded11a41273baa828e6f627987d7894 100644
--- a/dbrepo-table-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-table-service/rest-service/src/main/resources/application.yml
@@ -28,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-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java
index 2dd1a03a5affd3ba8a02eb9ca289aae1c0ba6fc9..6ba5c6fee755d26f86237f5a0d864f59a5434e53 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableColumnEndpointUnitTest.java
@@ -11,8 +11,8 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.TableService;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java
index e52f7c89de188832f1c681d461ffbb6ea30011db..ab7b30e6a3f35428b557a8255e9c08b1af81505f 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointIntegrationTest.java
@@ -7,9 +7,9 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.endpoints.TableEndpoint;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.AfterEach;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
index 3ea4f20546b2115a11e066387280f1976eac07be..49b1b0a66998bcf27080618c80bc4475b46f6922 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
@@ -11,8 +11,8 @@ import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.TableService;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
index c84163790cc840f4ac929c175cd5846f6d88ee65..3d27d0c923279e4cf3075b29998e44dfe07775cf 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/gateway/QueryServiceGatewayUnitTest.java
@@ -4,8 +4,8 @@ import at.tuwien.BaseUnitTest;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.AmqpException;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java
index 234ce6491ee4cd2468bd73ee7197f5e467d26b76..2ec5fe43e9de1b18260135d49920a36b840f5ca5 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/mapper/TableMapperUnitTest.java
@@ -1,15 +1,12 @@
 package at.tuwien.mapper;
 
 import at.tuwien.BaseUnitTest;
-import at.tuwien.api.database.AccessTypeDto;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
-import at.tuwien.exception.NotAllowedException;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
index d91e8827fbe4446048bd10d50d12516fdf2e4de8..29b42b6f6f8eb0a1238e42845b7b7bfe9bd3ad9d 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
@@ -6,9 +6,8 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.config.DockerConfig;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import at.tuwien.utils.AmqpUtils;
 import com.rabbitmq.client.BuiltinExchangeType;
 import com.rabbitmq.client.Channel;
@@ -46,7 +45,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest {
     private TableColumnIdxRepository tableColumnidxRepository;
 
     @MockBean
-    private TableRepository tableRepository;
+    private at.tuwien.repository.mdb.TableRepository tableRepository;
 
     @Autowired
     private AmqpUtils amqpUtils;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
index 2759fe65b2bfe5b081b1914febbdc45547f9f418..e65f776d75a274c1e9ca50ef5e1193a1b39b9bda 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
@@ -7,9 +7,9 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
@@ -66,7 +66,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
     private DatabaseRepository databaseRepository;
 
     @Autowired
-    private TableRepository tableRepository;
+    private at.tuwien.repository.mdb.TableRepository tableRepository;
 
     @Autowired
     private TableService tableService;
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
index d3482ae758f55d8dbf481b979c08762167ea3156..254d3c2d60d2aa7b7b35fc70813e730d9f95de08 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
@@ -8,9 +8,9 @@ import at.tuwien.config.H2Utils;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.*;
+import at.tuwien.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
+import at.tuwien.repository.mdb.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.apache.http.auth.BasicUserPrincipal;
@@ -67,7 +67,7 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
     private DatabaseRepository databaseRepository;
 
     @Autowired
-    private TableRepository tableRepository;
+    private at.tuwien.repository.mdb.TableRepository tableRepository;
 
     @Autowired
     private TableService tableService;
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 e6f97043de1c912ac605dc79840f1a0728b50e0c..387acfe392904a5ce19a587b303c2744f14287cd 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
@@ -3,18 +3,13 @@ package at.tuwien.config;
 import at.tuwien.api.database.table.TableDto;
 import at.tuwien.api.database.table.columns.ColumnDto;
 import at.tuwien.mapper.TableMapper;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-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.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 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.core.env.Environment;
-import org.springframework.core.env.Profiles;
-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;
 
@@ -25,46 +20,24 @@ import java.util.stream.Collectors;
 @Log4j2
 public class IndexConfig {
 
-    private final Environment environment;
     private final TableMapper tableMapper;
     private final TableRepository tableRepository;
     private final TableIdxRepository tableIdxRepository;
     private final TableColumnRepository tableColumnRepository;
-    private final ElasticsearchOperations elasticsearchOperations;
     private final TableColumnIdxRepository tableColumnIdxRepository;
 
-    @Autowired
-    public IndexConfig(Environment environment, TableMapper tableMapper, TableRepository tableRepository,
-                       TableIdxRepository tableIdxRepository, TableColumnRepository tableColumnRepository,
-                       ElasticsearchOperations elasticsearchOperations,
-                       TableColumnIdxRepository tableColumnIdxRepository) {
-        this.environment = environment;
+    public IndexConfig(TableMapper tableMapper, TableRepository tableRepository, TableIdxRepository tableIdxRepository,
+                       TableColumnRepository tableColumnRepository, TableColumnIdxRepository tableColumnIdxRepository) {
         this.tableMapper = tableMapper;
         this.tableRepository = tableRepository;
         this.tableIdxRepository = tableIdxRepository;
         this.tableColumnRepository = tableColumnRepository;
-        this.elasticsearchOperations = elasticsearchOperations;
         this.tableColumnIdxRepository = tableColumnIdxRepository;
     }
 
     @Transactional
     @EventListener(ApplicationReadyEvent.class)
     public void initIndex() {
-        if (environment.acceptsProfiles(Profiles.of("test-noelastic"))) {
-            return;
-        }
-        log.debug("creating tableindex");
-        final IndexCoordinates tableIndex = IndexCoordinates.of("tableindex");
-        if (!elasticsearchOperations.indexOps(tableIndex).exists()) {
-            elasticsearchOperations.indexOps(tableIndex).create();
-            elasticsearchOperations.indexOps(tableIndex).createMapping(TableDto.class);
-        }
-        log.debug("creating columnindex");
-        final IndexCoordinates columnIndex = IndexCoordinates.of("columnindex");
-        if (!elasticsearchOperations.indexOps(columnIndex).exists()) {
-            elasticsearchOperations.indexOps(columnIndex).create();
-            elasticsearchOperations.indexOps(columnIndex).createMapping(ColumnDto.class);
-        }
         /* pre-fill */
         final List<TableDto> tables = tableRepository.findAll()
                 .stream()
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 27d815cc6f4329c5374c31fb5299ccabedf24d39..2456e27f4e6a38522419e5fc51d490f403260579 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
@@ -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,7 +23,8 @@ public class OpenSearchConfig {
     private String openSearchPassword;
 
     @Bean
-    public RestHighLevelClient openSearchClient() {
+    @Override
+    public RestHighLevelClient opensearchClient() {
         log.debug("openSearch endpoint={}", openSearchEndpoint);
         final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                 .connectedTo(openSearchEndpoint)
@@ -31,5 +33,4 @@ public class OpenSearchConfig {
         return RestClients.create(clientConfiguration)
                 .rest();
     }
-
 }
\ No newline at end of file
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java
index 688e44c832e1e998f16018b995ab30ec542684bd..6c2d65f211cd4ea6ff3a501ba3e8d4b5cc6c70bb 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/TableMapper.java
@@ -7,9 +7,6 @@ import at.tuwien.api.database.table.TableDto;
 import at.tuwien.api.database.table.columns.ColumnCreateDto;
 import at.tuwien.api.database.table.columns.ColumnDto;
 import at.tuwien.api.database.table.columns.ColumnTypeDto;
-import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto;
-import at.tuwien.api.database.table.columns.concepts.ConceptSaveDto;
-import at.tuwien.api.database.table.columns.concepts.UnitSaveDto;
 import at.tuwien.api.database.table.constraints.ConstraintsCreateDto;
 import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyCreateDto;
 import at.tuwien.api.database.table.constraints.foreignKey.ForeignKeyDto;
@@ -29,7 +26,7 @@ import at.tuwien.entities.database.table.constraints.unique.Unique;
 import at.tuwien.exception.ImageNotSupportedException;
 import at.tuwien.exception.QueryMalformedException;
 import at.tuwien.exception.TableMalformedException;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.java
similarity index 91%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.java
index 52e9f9d0820aa261bf3629b76449c57d79e36d83..1cf729a25918fbbfc45f67dde2961e102a7a2b97 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ConceptRepository.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ConceptRepository.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-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
similarity index 88%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ContainerRepository.java
index 39566b1cc0c471f71212f9319e1497d0e3dcac66..f41d2aa3fae70608ac913bde9ae299d57ce5b0a4 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ContainerRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
similarity index 80%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseAccessRepository.java
index a91fb2ee2f0a080878cfcdb1949c818f96296e9b..f117748c36d8d3cdcefc8074f9b37bc87c448e53 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
+++ b/dbrepo-table-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.stereotype.Repository;
@@ -8,7 +9,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(Long databaseId, String username);
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
similarity index 97%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index f945f6eb2b36842ab96cfbab21e461617c9e76c4..2ea6e5234ac29a4c791c56a609a29da59e6ee0ac 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java
similarity index 59%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java
index c25e8577e29c929d1778ef407253e9970c74c04d..6bb192292f755b8e3706820c337a0e0b1dc0557b 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageEnvironmentRepository.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageEnvironmentRepository.java
@@ -1,11 +1,11 @@
-package at.tuwien.repository.jpa;
+package at.tuwien.repository.mdb;
 
-import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
+import at.tuwien.entities.container.image.ContainerImageEnvironmentItemKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface ImageEnvironmentRepository extends JpaRepository<ContainerImageEnvironmentItem, Long> {
+public interface ImageEnvironmentRepository extends JpaRepository<ContainerImageEnvironmentItem, ContainerImageEnvironmentItemKey> {
 
 }
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
similarity index 88%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/ImageRepository.java
index 247ce97770d636831aef83e8cc1a471ed67019a9..046fd51c3edd4a04becd27a2017cb38c88278ac7 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/ImageRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java
similarity index 88%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/OntologyRepository.java
index 75c296f527e5a1b04d8a326673ca35f88519e842..fab911633e762bcca06113efbbed06e01f2e4e0f 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/OntologyRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
similarity index 88%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/RealmRepository.java
index 5b5855dec88d3e3ef8d032369a7d6af6956a702e..7b53e7245983c7ca848da7c1175e0158e2f2a930 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
similarity index 66%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
index 9441d45125e3f54d6545bbcb3e4b4e99a05d1bbf..b52cc85d3552636e4463a848f651c45e6292a2cc 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableColumnRepository.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java
@@ -1,10 +1,11 @@
-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;
 
 @Repository
-public interface TableColumnRepository extends JpaRepository<TableColumn, Long> {
+public interface TableColumnRepository extends JpaRepository<TableColumn, TableColumnKey> {
 
 }
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
similarity index 80%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableRepository.java
index c629a9b493f86fb49a2b84f77e82209fbad6dee6..77541d67b732c73ca9190e1f375f977069d5c480 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/TableRepository.java
+++ b/dbrepo-table-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> findByDatabaseOrderByCreatedDesc(Database database);
 
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.java
similarity index 91%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.java
index 69ae3d7e516b4dd80b0cb7a9e19f1b65677486a5..a88ba4ff4361615fe6cefd49a8550ae4185cc37f 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UnitRepository.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UnitRepository.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-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
similarity index 90%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/UserRepository.java
index 9eb0b5190252b7e1890deb7717fe9b2afc133d41..42d09c3e9eaecff5b277e10a724ebfb857a91c8b 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java
similarity index 67%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableColumnIdxRepository.java
index 7df09d4e44e484f1e1a79beb9cd81c294b34d103..7fcd93f71355f255332880e121adeaca01aff919 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableColumnIdxRepository.java
+++ b/dbrepo-table-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-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java
similarity index 69%
rename from dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java
rename to dbrepo-table-service/services/src/main/java/at/tuwien/repository/sdb/TableIdxRepository.java
index ce6e8a0975a29bdcddaa03d316d0b158c1fd8139..f672e53c3bea431ed051e2965c79a0db731b3937 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/elastic/TableIdxRepository.java
+++ b/dbrepo-table-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.entities.database.table.TableKey;
 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, TableKey> {
 }
\ No newline at end of file
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index 91d4f41a8a4078d50971f24139efa933b73cd508..85fc7196d4adc6e86bdb84f68ffdfb88d48fec6b 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -3,7 +3,7 @@ package at.tuwien.service.impl;
 import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.AccessDeniedException;
 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-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index 35f7e99b84f038e2ee9e073ab80953378ac52a1b..13d425c5a9ed1a1524997d27348b89db9ce49e1d 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-table-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.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
index ff16e63370f98039bbab81ff7ed26dc9dd619bea..a4437d6461f47a9bf441eb448b9574974e0acc64 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
@@ -2,13 +2,12 @@ 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;
 import org.springframework.stereotype.Service;
 
-import java.security.Principal;
 import java.util.Optional;
 
 @Log4j2
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java
index 29d7a97826d4d04d197b541a61e0d231a014540b..1984eaf285320a5ab1a242e845047f1e37c6282e 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java
@@ -2,7 +2,7 @@ package at.tuwien.service.impl;
 
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.*;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.mdb.TableRepository;
 import at.tuwien.service.MessageQueueService;
 import com.rabbitmq.client.*;
 import lombok.extern.log4j.Log4j2;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
index 94cd509ae86317051719b0c6e8027ef7d8940d44..fd1954ddd9ba6b887b976812bd2d9d4e97ab3748 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/SemanticServiceImpl.java
@@ -8,9 +8,9 @@ import at.tuwien.exception.SemanticEntityNotFoundException;
 import at.tuwien.exception.UnitNotFoundException;
 import at.tuwien.gateway.SemanticServiceGateway;
 import at.tuwien.mapper.TableMapper;
-import at.tuwien.repository.jpa.ConceptRepository;
-import at.tuwien.repository.jpa.OntologyRepository;
-import at.tuwien.repository.jpa.UnitRepository;
+import at.tuwien.repository.mdb.ConceptRepository;
+import at.tuwien.repository.mdb.OntologyRepository;
+import at.tuwien.repository.mdb.UnitRepository;
 import at.tuwien.service.SemanticService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
index c0b1681e8b6da198b7e3fadcadd1c47ca6ab32ce..aada8f5a9261ae76cf93ad29771d2e83f8688fb0 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
@@ -10,10 +10,10 @@ import at.tuwien.entities.database.table.columns.TableColumn;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.TableMapper;
-import at.tuwien.repository.elastic.TableColumnIdxRepository;
-import at.tuwien.repository.elastic.TableIdxRepository;
-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.repository.sdb.TableColumnIdxRepository;
+import at.tuwien.repository.sdb.TableIdxRepository;
 import at.tuwien.service.*;
 import com.mchange.v2.c3p0.ComboPooledDataSource;
 import lombok.extern.log4j.Log4j2;
@@ -46,7 +46,7 @@ public class TableServiceImpl extends HibernateConnector implements TableService
     public TableServiceImpl(TableMapper tableMapper, UserService userService, SemanticService semanticService,
                             TableRepository tableRepository, DatabaseService databaseService,
                             ContainerService containerService, TableIdxRepository tableIdxRepository,
-                            TableColumnRepository tableColumnRepository,
+                            at.tuwien.repository.mdb.TableColumnRepository tableColumnRepository,
                             TableColumnIdxRepository tableColumnIdxRepository) {
         this.tableMapper = tableMapper;
         this.userService = userService;
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 2c7df8b36c10c7ce06a26808f63422a0ccc30c93..47f1ac286b3fa39407359baf5cdc58a4f8d700f5 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-table-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-user-service/pom.xml b/dbrepo-user-service/pom.xml
index dad7c33127b212198300dfd352c13deb04495e6f..3c8f18b805984543eb4e7a6c2638d03c74816824 100644
--- a/dbrepo-user-service/pom.xml
+++ b/dbrepo-user-service/pom.xml
@@ -52,7 +52,7 @@
         <keycloak.version>21.0.2</keycloak.version>
         <hibernate.version>6.2.2.Final</hibernate.version>
         <springdoc-openapi.version>2.1.0</springdoc-openapi.version>
-        <opensearch.version>1.1.0</opensearch.version>
+        <opensearch-client.version>1.1.0</opensearch-client.version>
     </properties>
 
     <dependencies>
@@ -118,8 +118,8 @@
         </dependency>
         <dependency>
             <groupId>org.opensearch.client</groupId>
-            <artifactId>spring-data-opensearch-starter</artifactId>
-            <version>${opensearch.version}</version>
+            <artifactId>spring-data-opensearch</artifactId>
+            <version>${opensearch-client.version}</version>
         </dependency>
         <!-- Swagger -->
         <dependency>
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 4a6c3dff083b1ec4214b2f19a07d3839e6298368..02166da7eeb020308238d4d64026469123c4b827 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
@@ -2,6 +2,7 @@ package at.tuwien;
 
 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.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
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 910db255f153dbfc1c9769c9b1fbf8072ebc0d7a..345863caf4d9a8fa0570fd950a03c6b771804d50 100644
--- a/dbrepo-user-service/rest-service/src/main/resources/application.yml
+++ b/dbrepo-user-service/rest-service/src/main/resources/application.yml
@@ -1,6 +1,8 @@
 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