diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml
index 7817c84c7f6da1e595b076148cc8bdc105cdda08..362a4d91b18d5912a2bfce52273d8b39b92184ff 100644
--- a/.docker/docker-compose.yml
+++ b/.docker/docker-compose.yml
@@ -83,6 +83,7 @@ services:
       - ./config/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh
       - ./config/master-realm.json:/opt/keycloak/data/import/master-realm.json
       - ./config/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json
+      - ./config/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar
     ports:
       - "8080:8080"
     environment:
@@ -93,6 +94,9 @@ services:
       KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}"
       KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}"
       KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}"
+      METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}/api/user"
+      SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}"
+      SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}"
     healthcheck:
       test: curl --head -fsS http://localhost:9000/health/ready
       interval: 10s
@@ -109,7 +113,12 @@ services:
   dbrepo-auth-service-init:
     init: true
     restart: "no"
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.0
+=======
+    container_name: dbrepo-auth-service-init
+    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3
+>>>>>>> Stashed changes
     environment:
       AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin}
       AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin}
@@ -130,7 +139,11 @@ services:
     restart: "no"
     container_name: dbrepo-metadata-service
     hostname: metadata-service
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3
+>>>>>>> Stashed changes
     volumes:
       - "${SHARED_VOLUME:-/tmp}:/tmp"
     environment:
@@ -193,7 +206,11 @@ services:
     restart: "no"
     container_name: dbrepo-analyse-service
     hostname: analyse-service
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3
+>>>>>>> Stashed changes
     environment:
       AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
       AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
@@ -248,7 +265,11 @@ services:
     restart: "no"
     container_name: dbrepo-search-db
     hostname: search-db
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.3
+>>>>>>> Stashed changes
     healthcheck:
       test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP
       interval: 10s
@@ -272,7 +293,11 @@ services:
     restart: "no"
     container_name: dbrepo-search-service
     hostname: search-service
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3
+>>>>>>> Stashed changes
     environment:
       AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
       AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
@@ -294,7 +319,11 @@ services:
     restart: "no"
     container_name: dbrepo-ui
     hostname: ui
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3
+>>>>>>> Stashed changes
     environment:
       NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}"
       NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}"
@@ -363,7 +392,11 @@ services:
     init: true
     container_name: dbrepo-search-service-init
     hostname: search-service-init
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3
+>>>>>>> Stashed changes
     environment:
       METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}
       OPENSEARCH_HOST: ${OPENSEARCH_HOST:-search-db}
@@ -417,7 +450,11 @@ services:
     restart: "no"
     container_name: dbrepo-dashboard-service
     hostname: dashboard-service
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.3
+>>>>>>> Stashed changes
     ports:
       - "3000:3000"
     volumes:
@@ -444,7 +481,11 @@ services:
     init: true
     container_name: dbrepo-storage-service-init
     hostname: storage-service-init
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3
+>>>>>>> Stashed changes
     environment:
       S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin}
       S3_BUCKET: "${S3_BUCKET:-dbrepo}"
@@ -489,7 +530,11 @@ services:
     restart: "no"
     container_name: dbrepo-data-service
     hostname: data-service
+<<<<<<< Updated upstream
     image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.0
+=======
+    image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3
+>>>>>>> Stashed changes
     volumes:
       - "${SHARED_VOLUME:-/tmp}:/tmp"
     environment:
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8bf70c0c712a5b76676b1d10d8663ff1f02a4923..9caa24b2538dfe7c523b8f8ae4bd3023f86c4f5b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -81,6 +81,48 @@ lint-helm-chart:
     - helm dependency update ./helm/dbrepo
   script:
     - helm lint ./helm/dbrepo
+<<<<<<< Updated upstream
+=======
+    - helm schema -input ./helm/dbrepo/values.yaml -output ./helm/dbrepo/values.schema.json
+    - diff ./CI_values.schema.json ./helm/dbrepo/values.schema.json
+    - diff ./dbrepo-metadata-db/1_setup-schema.sql ./helm/dbrepo/files/01-setup-schema.sql
+    - diff ./dbrepo-auth-service/listeners/target/create-event-listener.jar ./helm/dbrepo/files/create-event-listener.jar
+  artifacts:
+    when: always
+    paths:
+      - ./helm/dbrepo/values.schema.json
+    expire_in: 1 days
+
+lint-helm-readme:
+  image: docker.io/node:${NODE_VERSION}-alpine${ALPINE_VERSION}
+  stage: lint
+  before_script:
+    - apk --no-cache add alpine-sdk bash git
+    - cp ./helm/dbrepo/README.md ./CI_README.md
+    - git clone https://github.com/bitnami/readme-generator-for-helm
+    - (cd ./readme-generator-for-helm && npm install && npm install -g pkg && pkg . -o /usr/local/sbin/readme-generator)
+  script:
+    - readme-generator --readme ./helm/dbrepo/README.md --values ./helm/dbrepo/values.yaml
+    - diff ./CI_README.md ./helm/dbrepo/README.md
+  artifacts:
+    when: always
+    paths:
+      - ./helm/dbrepo/README.md
+    expire_in: 1 days
+
+lint-open-api-version:
+  image: docker.io/alpine:${ALPINE_VERSION}
+  stage: lint
+  variables:
+    VERSION: 4.45.1
+    BINARY: yq_linux_amd64
+  before_script:
+    - 'apk --no-cache add bash wget'
+    - 'wget https://github.com/mikefarah/yq/releases/download/v${VERSION}/${BINARY} -O /usr/bin/yq && chmod +x /usr/bin/yq'
+  script:
+    - yq '.externalDocs.url' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}"
+    - yq '.info.version' ./.docs/.openapi/api.base.yaml | grep "${DOC_VERSION}"
+>>>>>>> Stashed changes
 
 build-metadata-service:
   image: maven:3-openjdk-${JAVA_VERSION}
diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock
index 546ead5c1426cc9772320ba2652fe90eb9467255..aecb60a478cf0d29d601c233a7a538f060d6af00 100644
--- a/dbrepo-analyse-service/Pipfile.lock
+++ b/dbrepo-analyse-service/Pipfile.lock
@@ -1,7 +1,11 @@
 {
     "_meta": {
         "hash": {
+<<<<<<< Updated upstream
             "sha256": "683cc19a3205b9b5f9b99db8b71c0abadadfd652a94dcf710a73aeca92b97227"
+=======
+            "sha256": "9cc4c161729b642069bbf4ab379c0f4a9122035afcb3ac7b5b1bfc13281f76aa"
+>>>>>>> Stashed changes
         },
         "pipfile-spec": 6,
         "requires": {
@@ -412,8 +416,12 @@
         },
         "dbrepo": {
             "hashes": [
+<<<<<<< Updated upstream
                 "sha256:1495b7efa016d75a2f978cf20aa1729d8dee2809583f2c253264f7fd3233addb",
                 "sha256:839a4f5810d83e93b1fa88c7ab7641727b65af1d0eada93195d3f0daa3e13e5a"
+=======
+                "sha256:7f98329f08d1da6fe45da8130cfb3ebd6e947a4101d46f92b31d7204b29a153d"
+>>>>>>> Stashed changes
             ],
             "markers": "python_version >= '3.11'",
             "path": "./lib/dbrepo-1.6.1.tar.gz"
diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar
new file mode 100644
index 0000000000000000000000000000000000000000..221bdd325f056ff953e0a44a46773470eb08e91e
Binary files /dev/null and b/dbrepo-auth-service/listeners/target/create-event-listener.jar differ
diff --git a/dbrepo-data-service/Dockerfile b/dbrepo-data-service/Dockerfile
index f4e2be5b967ca109e858d6f17099ec67d341ac12..7c7b1431a91736edd485f4cd53096a92a0e6d99c 100644
--- a/dbrepo-data-service/Dockerfile
+++ b/dbrepo-data-service/Dockerfile
@@ -6,22 +6,26 @@ LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 FROM maven:3-amazoncorretto-17 AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
+<<<<<<< Updated upstream
 COPY ./pom.xml ./
 
 RUN mvn -fn -B dependency:go-offline
 
+=======
+>>>>>>> Stashed changes
 COPY --from=dependency /root/.m2/repository/at/tuwien /root/.m2/repository/at/tuwien
 
 COPY ./querystore ./querystore
 COPY ./report ./report
 COPY ./rest-service ./rest-service
 COPY ./services ./services
+COPY ./pom.xml ./
 
 # Make sure it compiles
 RUN mvn clean package -DskipTests
 
 ###### THIRD STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+FROM amazoncorretto:17-alpine3.21 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache curl bash jq
@@ -32,7 +36,7 @@ RUN adduser -S -u 1001 data-service
 
 USER 1001
 
-COPY --from=build --chown=1001 ./rest-service/target/rest-service-*.jar ./data-service.jar
+COPY --from=build --chown=1001 ./rest-service/target/data-service.jar ./data-service.jar
 
 # non-root port
 EXPOSE 8080
diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml
index 884824994aff8a6e8f05bce24c44307ffe64c2b8..72a7114c0fcf859de5f8e224c8aecc3c8f4bf9c5 100644
--- a/dbrepo-data-service/pom.xml
+++ b/dbrepo-data-service/pom.xml
@@ -292,6 +292,7 @@
     </dependencies>
 
     <build>
+        <finalName>data-service</finalName>
         <resources>
             <resource>
                 <directory>${basedir}/src/main/resources</directory>
diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile
index 843c334a9acb3d24e061c42c72cb75c6068ef954..4a519abc9f234be4764646878b4e1f7eb9c815e3 100644
--- a/dbrepo-metadata-service/Dockerfile
+++ b/dbrepo-metadata-service/Dockerfile
@@ -1,5 +1,5 @@
 ###### FIRST STAGE ######
-FROM maven:3-amazoncorretto-17 AS build
+FROM maven:3-amazoncorretto-17-alpine AS build
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 COPY ./pom.xml ./
@@ -12,7 +12,11 @@ COPY ./rest-service/pom.xml ./rest-service/
 COPY ./services/pom.xml ./services/
 COPY ./test/pom.xml ./test/
 
+<<<<<<< Updated upstream
 RUN mvn verify -B -fn
+=======
+RUN mvn dependency:go-offline
+>>>>>>> Stashed changes
 
 COPY ./api ./api
 COPY ./entities ./entities
@@ -27,7 +31,7 @@ COPY ./test ./test
 RUN mvn clean install -DskipTests
 
 ###### SECOND STAGE ######
-FROM amazoncorretto:17-alpine3.19 AS runtime
+FROM amazoncorretto:17-alpine3.21 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 RUN apk add --no-cache curl bash jq
@@ -36,9 +40,9 @@ WORKDIR /app
 
 USER 1001
 
-COPY --from=build --chown=1001 ./rest-service/target/dbrepo-metadata-service-rest-service-*.jar ./metadata-service.jar
+COPY --from=build --chown=1001 ./rest-service/target/metadata-service.jar ./metadata-service.jar
 
 # non-root port
 EXPOSE 8080
 
-ENTRYPOINT ["java", "-Dlog4j2.formatMsgNoLookups=true",  "-jar", "./metadata-service.jar"]
+ENTRYPOINT ["java", "-jar", "./metadata-service.jar"]
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java
index 9928c8e54d39287fc7a19bf84b6a99c7429f69bd..c1285fb21e65ddbf2f085a93d17d12e19308cd74 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerDto.java
@@ -14,6 +14,10 @@ import java.time.Instant;
 @Getter
 @Setter
 @Builder
+<<<<<<< Updated upstream
+=======
+@EqualsAndHashCode(callSuper = false)
+>>>>>>> Stashed changes
 @NoArgsConstructor
 @AllArgsConstructor
 @Jacksonized
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
index 5fc253c4335044a1eaabbb43d02f7ae07510178b..307e497c3f37bd7e93e5b6c1972a9e392c0db689 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
@@ -16,7 +16,11 @@ import java.util.List;
 @Getter
 @Setter
 @Builder
+<<<<<<< Updated upstream
 @EqualsAndHashCode
+=======
+@EqualsAndHashCode(callSuper = false)
+>>>>>>> Stashed changes
 @NoArgsConstructor
 @AllArgsConstructor
 @Jacksonized
@@ -61,6 +65,12 @@ public class DatabaseDto {
     @Schema(example = "true")
     private Boolean isSchemaPublic;
 
+<<<<<<< Updated upstream
+=======
+    @NotNull
+    private ContainerDto container;
+
+>>>>>>> Stashed changes
     @NotNull
     private ContainerBriefDto container;
 
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java
index d1ee156e9b95c09a9dd31c1ddf01926818f75879..1c8eaf64b74139eb9b5ea1021d43179ae9ceb251 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewDto.java
@@ -14,7 +14,11 @@ import java.util.List;
 @Getter
 @Setter
 @Builder
+<<<<<<< Updated upstream
 @EqualsAndHashCode
+=======
+@EqualsAndHashCode(callSuper = false)
+>>>>>>> Stashed changes
 @NoArgsConstructor
 @AllArgsConstructor
 @Jacksonized
@@ -60,6 +64,12 @@ public class ViewDto {
     @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916")
     private String queryHash;
 
+<<<<<<< Updated upstream
+=======
+    @ToString.Exclude
+    private DatabaseDto database;
+
+>>>>>>> Stashed changes
     @NotNull
     private UserBriefDto owner;
 
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java
index 67087d438daedf60cd0236a8f5427310b06464e4..d58d0af8a0205ae23864d62b50e228d8b07a1334 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableDto.java
@@ -17,7 +17,11 @@ import java.util.List;
 @Getter
 @Setter
 @Builder
+<<<<<<< Updated upstream
 @EqualsAndHashCode
+=======
+@EqualsAndHashCode(callSuper = false)
+>>>>>>> Stashed changes
 @NoArgsConstructor
 @AllArgsConstructor
 @Jacksonized
@@ -100,6 +104,12 @@ public class TableDto {
     @NotNull
     private List<ColumnDto> columns;
 
+<<<<<<< Updated upstream
+=======
+    @ToString.Exclude
+    private DatabaseDto database;
+
+>>>>>>> Stashed changes
     @NotNull
     private ConstraintsDto constraints;
 
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java
index 343d582b55da3af324aa23fd31ef61d8e1cd564d..f6cdbf353465e932a895095537d882320efec503 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java
@@ -11,7 +11,11 @@ import java.util.UUID;
 @Getter
 @Setter
 @Builder
+<<<<<<< Updated upstream
 @EqualsAndHashCode
+=======
+@EqualsAndHashCode(callSuper = false)
+>>>>>>> Stashed changes
 @NoArgsConstructor
 @AllArgsConstructor
 @Jacksonized
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java
index a2fb1264cc360f0de0d5502306b215d79a442a70..85391d31d420922af21b899f9deefae981886c00 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/Container.java
@@ -54,7 +54,6 @@ public class Container {
     @Column
     private String uiAdditionalFlags;
 
-    @EqualsAndHashCode.Exclude
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
             @JoinColumn(name = "cid", referencedColumnName = "id", insertable = false, updatable = false)
@@ -67,13 +66,11 @@ public class Container {
     })
     private ContainerImage image;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
index 7e04ce2086c3b4e9e677548b106cc28ddc9756ee..2bbd65be6c87bd19fbd3af449e04f1b7a08f412a 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
@@ -60,13 +60,11 @@ public class ContainerImage {
     @OneToMany(fetch = FetchType.LAZY, mappedBy = "image")
     private List<Container> containers;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java
index 5f4ddbfb8c6dd8a657a88432d4606fa6f9c56f7e..d94b39ec259a5c04ff44f5f4477b3aa482121e6e 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/DataType.java
@@ -68,7 +68,6 @@ public class DataType {
     private Boolean buildable;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "image_id", referencedColumnName = "id")
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java
index 1ecedc5e16cef533008a28db7d022acab336c8d7..8ec4763ba292db50af6d10aa5adf8b9fe073782f 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/container/image/Operator.java
@@ -32,7 +32,6 @@ public class Operator {
     private String documentation;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "image_id", referencedColumnName = "id")
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
index d90a702db33c759a511480fa0e89c37efc2773fc..699f50b79ba16def84366f73e117cce1948168b2 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
@@ -120,13 +120,11 @@ public class Database implements Serializable {
     @Column(columnDefinition = "LONGBLOB")
     private byte[] image;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
index 6a2622be3e7137c97b68ab9ad91e24edd4fae293..6df3aa5129eb51cc66ea32341ae8bcfc924ee3f1 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
@@ -33,7 +33,6 @@ public class DatabaseAccess {
     private UUID huserid;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumns({
@@ -46,7 +45,6 @@ public class DatabaseAccess {
     private Long hdbid;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumns({
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java
index 67e6d6d18ac26a1cb2641ed45ae9e969c7393164..3835c0188bb03682becd113a6df4ce6bd5dcd615 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java
@@ -89,7 +89,6 @@ public class View {
     private List<Identifier> identifiers;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumns({
@@ -103,13 +102,11 @@ public class View {
     @OrderBy("ordinalPosition")
     private List<ViewColumn> columns;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java
index 7ef6e8b9d63c30e05313514c78ad562306318185..752f784e9031492951b1e732e2302b76fa017208 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/ViewColumn.java
@@ -26,7 +26,6 @@ public class ViewColumn implements Comparable<ViewColumn> {
     private Long id;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "view_id", referencedColumnName = "id", nullable = false)
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java
index 3cdb01d7d38477cc8a77b4e12ed9af61d04ecfba..088f0b7a8c47e1b44faa67c425eaa5e093d4a312 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java
@@ -25,7 +25,7 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 
 @Data
 @Entity
-@Builder
+@Builder(toBuilder = true)
 @Log4j2
 @ToString
 @AllArgsConstructor
@@ -69,7 +69,6 @@ public class Table {
     private String description;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumns({
@@ -117,13 +116,11 @@ public class Table {
     @OrderBy("ordinalPosition")
     private List<TableColumn> columns;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
index 9f4c4e0606802a475e5873e3d0ebc57455a6a0e2..459cb69f4bc5c00d04e021301a460b6ba25d6dc4 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
@@ -36,7 +36,6 @@ public class TableColumn implements Comparable<TableColumn> {
     private Long id;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "tID", referencedColumnName = "id", nullable = false)
@@ -114,13 +113,11 @@ public class TableColumn implements Comparable<TableColumn> {
     @Column(name = "std_dev")
     private BigDecimal stdDev;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java
index 5a9e8292be0af3e99050bc87be1ba7b8b9756bf7..2bea4c61129a2dfde120539c6647632931ea7ff3 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnConcept.java
@@ -42,7 +42,6 @@ public class TableColumnConcept {
     @Column(columnDefinition = "TEXT")
     private String description;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java
index 7e8fe915b3b9de49e53eb0806da1f5ed03608a1d..e58cbed6599e5c7b8e74fa13097446ce40195766 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumnUnit.java
@@ -42,7 +42,6 @@ public class TableColumnUnit {
     @Column(columnDefinition = "TEXT")
     private String description;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java
index 76de9463cfa37048fb45d2b091b472190124ff1b..a24cffcd2aed92ec71d1a1ea7b1bcb559806ad95 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKey.java
@@ -29,7 +29,6 @@ public class ForeignKey {
     private String name;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
             @JoinColumn(name = "tid", referencedColumnName = "id", nullable = false)
@@ -37,7 +36,6 @@ public class ForeignKey {
     private Table table;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
             @JoinColumn(name = "rtid", referencedColumnName = "id", nullable = false)
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
index ed2691fc524a3de33788ed977b1ba213b18b5bfe..5d6c2043aebf7836aced4a16a429ab55e88bb0d4 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
@@ -26,7 +26,6 @@ public class ForeignKeyReference {
     private Long id;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumn(name = "fkid", referencedColumnName = "fkid", nullable = false)
     private ForeignKey foreignKey;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java
index 407e2fb7f3f98b6a8b65d28636c92afaceb3e69c..40452ce0205802880c96fb3d7689ed1e40c59012 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/primaryKey/PrimaryKey.java
@@ -25,7 +25,6 @@ public class PrimaryKey {
     private Long id;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
@@ -34,7 +33,6 @@ public class PrimaryKey {
     private Table table;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java
index c0dfc467109cf794dda89925393b442286254da5..fb10dad8ad8ba71584d015d7e8e09990f2d6f5aa 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/unique/Unique.java
@@ -30,7 +30,6 @@ public class Unique {
     private String name;
 
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
@@ -38,7 +37,6 @@ public class Unique {
     })
     private Table table;
 
-    @EqualsAndHashCode.Exclude
     @org.springframework.data.annotation.Transient
     @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinTable(
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
index b98a1b8c6b7509ef0772f69e2af343b1b63d386e..49d4df1b35b6d7b7f937121e57c6e9e278630467 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
@@ -138,7 +138,6 @@ public class Identifier implements Serializable {
      * Databases are never created/updated/deleted by the Identifier entity.
      */
     @ToString.Exclude
-    @EqualsAndHashCode.Exclude
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumns({
             @JoinColumn(name = "dbid", referencedColumnName = "id", nullable = false, updatable = false)
@@ -166,12 +165,10 @@ public class Identifier implements Serializable {
     })
     private User owner;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java
index 576aab1e375028a9a776ae96cb0ea983f84e7274..2e796c859a1fba23d605f55f81ecf0e9be991f26 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/semantics/Ontology.java
@@ -46,12 +46,10 @@ public class Ontology {
     @Column
     private String rdfPath;
 
-    @EqualsAndHashCode.Exclude
     @CreatedDate
     @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP")
     private Instant created;
 
-    @EqualsAndHashCode.Exclude
     @LastModifiedDate
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java
index fd87852c6ecce0e2e614a9c7dd05a5e41cfe2e16..bc17ab9bc925cd92954c05bd10aa56457dd730e4 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/user/User.java
@@ -52,7 +52,6 @@ public class User {
     private String language;
 
     @OneToMany(fetch = FetchType.LAZY)
-    @EqualsAndHashCode.Exclude
     @JoinColumns({
             @JoinColumn(name = "user_id", referencedColumnName = "ID", insertable = false, updatable = false)
     })
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index 2803d9b5f39ddd69f34151251083c35e8a46b406..a02d2ebe7773072438b627f80d1d0931fcb21ef0 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -99,6 +99,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-webflux</artifactId>
+        </dependency>
         <!-- Open API -->
         <dependency>
             <groupId>org.springdoc</groupId>
@@ -271,6 +275,7 @@
     </dependencies>
 
     <build>
+        <finalName>metadata-service</finalName>
         <resources>
             <resource>
                 <directory>${basedir}/src/main/resources</directory>
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java
index d68185102a00e33419ae8cf2c4250c0775082a23..2cf18262d3069f6369026e64508a687f3d2e419a 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceConnectionException.java
@@ -4,7 +4,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
 @ResponseStatus(code = HttpStatus.BAD_GATEWAY, reason = "error.search.connection")
-public class SearchServiceConnectionException extends Exception {
+public class SearchServiceConnectionException extends RuntimeException {
 
     public SearchServiceConnectionException(String msg) {
         super(msg);
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java
index aef3ae7f7cd75db6ec7ed59f95980f2c8e021c2b..528b3aadd1e0cdd0ea9ef6c19374f29b8d62ab15 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/exception/SearchServiceException.java
@@ -4,7 +4,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.ResponseStatus;
 
 @ResponseStatus(code = HttpStatus.SERVICE_UNAVAILABLE, reason = "error.search.invalid")
-public class SearchServiceException extends Exception {
+public class SearchServiceException extends RuntimeException {
 
     public SearchServiceException(String message) {
         super(message);
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
index 9f4542fc023f8aaf336fc2de196d0c36ab93cea4..af9f36aa8ac34df69b412d24995a307b63e134a9 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
@@ -1,7 +1,12 @@
 package at.tuwien.endpoints;
 
+<<<<<<< Updated upstream
 import at.tuwien.api.database.table.TableBriefDto;
 import at.tuwien.api.database.table.TableCreateDto;
+=======
+import at.tuwien.api.database.table.CreateTableDto;
+import at.tuwien.api.database.table.TableBriefDto;
+>>>>>>> Stashed changes
 import at.tuwien.api.database.table.TableDto;
 import at.tuwien.api.database.table.TableUpdateDto;
 import at.tuwien.api.database.table.columns.ColumnDto;
@@ -369,9 +374,14 @@ public class TableEndpoint extends AbstractEndpoint {
         final Database database = databaseService.findById(databaseId);
         endpointValidator.validateOnlyAccess(database, principal, true);
         endpointValidator.validateColumnCreateConstraints(data);
+        final Table table = tableService.createTable(database, data, principal);
         return ResponseEntity.status(HttpStatus.CREATED)
+<<<<<<< Updated upstream
                 .body(metadataMapper.customTableToTableDto(
                         tableService.createTable(database, data, principal)));
+=======
+                .body(metadataMapper.tableToTableBriefDto(table));
+>>>>>>> Stashed changes
     }
 
     @PutMapping("/{tableId}")
diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json b/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json
deleted file mode 100644
index 3779d12cbe32b67fa163cf6b0285b9e01f7dc681..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/rest-service/src/main/resources/datatypes.json
+++ /dev/null
@@ -1,15 +0,0 @@
-[
-  {
-    "name": "",
-    "size": {
-      "min": 0,
-      "required": true
-    },
-    "d": {
-      "required": false
-    },
-    "documentation": "https://mariadb.com/kb/en/bigint/",
-    "quoted": false,
-    "buildable": true
-  }
-]
\ No newline at end of file
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java
index 182fe8e14ac5cd63ad1752fec07ee9b511ba8726..9ec106fda60eb0757e40a5ea30659519f63f740f 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DataCiteIdentifierServicePersistenceTest.java
@@ -39,8 +39,7 @@ import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
 
 @ExtendWith(SpringExtension.class)
 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@@ -140,8 +139,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
         /* mock */
         when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference)))
                 .thenReturn(mock);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         dataCiteIdentifierService.save(DATABASE_1, USER_1, IDENTIFIER_1_SAVE_DTO);
@@ -155,8 +160,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
         doThrow(HttpClientErrorException.BadRequest.class)
                 .when(restTemplate)
                 .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference));
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         assertThrows(MalformedException.class, () -> {
@@ -172,8 +183,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
         doThrow(RestClientException.class)
                 .when(restTemplate)
                 .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(dataCiteBodyParameterizedTypeReference));
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         assertThrows(DataServiceConnectionException.class, () -> {
@@ -331,8 +348,14 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
             IdentifierNotFoundException, SearchServiceException, SearchServiceConnectionException {
 
         /* mock */
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         dataCiteIdentifierService.delete(IDENTIFIER_1);
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
index 1b6570abd821337fe032bead021cf9d5a4b9fc8c..40244839e1d0d4b9fd4f553ecd559bc9d1eabef9 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceUnitTest.java
@@ -109,8 +109,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
         /* mock */
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.modifyImage(DATABASE_1, image);
@@ -163,8 +169,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of());
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateViewMetadata(DATABASE_1);
@@ -221,8 +233,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO, VIEW_4_DTO)); /* <<< */
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateViewMetadata(DATABASE_1);
@@ -239,8 +257,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)); /* <<< */
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateViewMetadata(DATABASE_1);
@@ -257,8 +281,17 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of());
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateTableMetadata(DATABASE_1);
@@ -275,8 +308,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO));
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateTableMetadata(DATABASE_1);
@@ -293,8 +332,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO, TABLE_5_DTO));
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Database response = databaseService.updateTableMetadata(DATABASE_1);
@@ -516,8 +561,14 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
             ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException {
 
         /* mock */
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java
index 0c87dcdd692533cd751401f9be37fee69b5186cc..55c7f17511e685b875a6bab537e5da1b89cf332a 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/IdentifierServicePersistenceTest.java
@@ -35,6 +35,7 @@ import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.when;
 
 @Log4j2
@@ -175,8 +176,14 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
         /* mock */
         when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID))
                 .thenReturn(QUERY_2_DTO);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_2_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         identifierService.save(DATABASE_2, USER_2, IDENTIFIER_5_SAVE_DTO);
@@ -285,8 +292,14 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
             SearchServiceConnectionException {
 
         /* mock */
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         identifierService.delete(IDENTIFIER_1);
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java
index 3126f9e9f42b36fb8dc09dfa3f8e60c88d851722..1bad05c0825ab4651d19cc23d3fe600d9d4dc8eb 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServicePersistenceTest.java
@@ -1,9 +1,16 @@
 package at.tuwien.service;
 
+<<<<<<< Updated upstream
 import at.tuwien.api.database.table.TableCreateDto;
 import at.tuwien.api.database.table.columns.ColumnCreateDto;
 import at.tuwien.api.database.table.columns.ColumnTypeDto;
 import at.tuwien.api.database.table.constraints.ConstraintsCreateDto;
+=======
+import at.tuwien.api.database.table.CreateTableDto;
+import at.tuwien.api.database.table.columns.ColumnTypeDto;
+import at.tuwien.api.database.table.columns.CreateTableColumnDto;
+import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto;
+>>>>>>> Stashed changes
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
@@ -111,8 +118,14 @@ public class TableServicePersistenceTest extends AbstractUnitTest {
         doNothing()
                 .when(dataServiceGateway)
                 .createTable(DATABASE_1_ID, request);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL);
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
index d975e808e3dd03e3b4fd0f27d3af4b60f4fec7a1..0b7d8f5bc65b010b8c93b2d41a286f28e3c10b87 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/TableServiceUnitTest.java
@@ -134,8 +134,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(TABLE_8_STATISTIC_DTO);
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         tableService.updateStatistics(TABLE_8);
@@ -223,8 +229,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(CONCEPT_1);
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request);
@@ -255,8 +267,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(CONCEPT_1_ENTITY_DTO);
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final TableColumn response = tableService.update(TABLE_1_COLUMNS.get(0), request);
@@ -278,8 +296,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class));
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL);
@@ -315,8 +339,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class));
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Table response = tableService.createTable(DATABASE_1, request, USER_1_PRINCIPAL);
@@ -368,8 +398,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
                 .createTable(eq(DATABASE_1_ID), any(TableCreateDto.class));
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         assertThrows(MalformedException.class, () -> {
@@ -391,8 +427,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
         doNothing()
                 .when(dataServiceGateway)
                 .createTable(DATABASE_1_ID, TABLE_3_CREATE_DTO);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final Table response = tableService.createTable(DATABASE_1, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL);
@@ -412,8 +454,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
         doThrow(DataServiceException.class)
                 .when(dataServiceGateway)
                 .createTable(DATABASE_1_ID, TABLE_5_CREATE_DTO);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         assertThrows(DataServiceException.class, () -> {
@@ -510,8 +558,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
         doNothing()
                 .when(dataServiceGateway)
                 .deleteTable(DATABASE_1_ID, TABLE_1_ID);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         tableService.deleteTable(TABLE_1);
@@ -526,8 +580,14 @@ public class TableServiceUnitTest extends AbstractUnitTest {
         doNothing()
                 .when(dataServiceGateway)
                 .deleteTable(DATABASE_1_ID, TABLE_4_ID);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         tableService.deleteTable(TABLE_4);
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java
index 8ca002472a085a58ea5ee58fff8a2a0614c94fd9..c4c8b8bd8c944b8d4769c30250d59e73cf6a858e 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServicePersistenceTest.java
@@ -88,8 +88,14 @@ public class ViewServicePersistenceTest extends AbstractUnitTest {
         doNothing()
                 .when(dataServiceGateway)
                 .deleteView(DATABASE_1_ID, VIEW_1_ID);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         viewService.delete(VIEW_1);
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java
index cd9fe03c655d33b014239af4f05f0f0ae9b6d1e9..44a0a78d9e17528616173794613edc6f49b3807f 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ViewServiceUnitTest.java
@@ -61,8 +61,14 @@ public class ViewServiceUnitTest extends AbstractUnitTest {
                 .thenReturn(VIEW_1_DTO);
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         final View response = viewService.create(DATABASE_1, USER_1, request);
@@ -116,8 +122,14 @@ public class ViewServiceUnitTest extends AbstractUnitTest {
                 .deleteView(DATABASE_1_ID, VIEW_1_ID);
         when(databaseRepository.save(any(Database.class)))
                 .thenReturn(DATABASE_1);
+<<<<<<< Updated upstream
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_1_DTO);
+=======
+        doNothing()
+                .when(searchServiceGateway)
+                .update(any(Database.class));
+>>>>>>> Stashed changes
 
         /* test */
         viewService.delete(VIEW_1);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
index 0bcace730e7753b1dd21d2e1d4a91f47bda6b9f3..1559281af3462181248e492b5facb2bc89429388 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
@@ -1,15 +1,27 @@
 package at.tuwien.config;
 
+import at.tuwien.api.keycloak.TokenDto;
 import at.tuwien.auth.InternalRequestInterceptor;
+import at.tuwien.exception.AccountNotSetupException;
+import at.tuwien.exception.AuthServiceConnectionException;
+import at.tuwien.exception.CredentialsInvalidException;
 import at.tuwien.gateway.KeycloakGateway;
 import lombok.Getter;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
+import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.util.DefaultUriBuilderFactory;
 
+import java.util.List;
+
 @Log4j2
 @Getter
 @Configuration
@@ -89,4 +101,27 @@ public class GatewayConfig {
         return restTemplate;
     }
 
+    @Bean
+    public WebClient webClient() {
+        return WebClient.builder()
+                .baseUrl(searchEndpoint)
+                .filter(internalFilter())
+                .build();
+    }
+
+    private ExchangeFilterFunction internalFilter() {
+        return (request, next) -> {
+            final HttpHeaders headers = request.headers();
+            headers.setAccept(List.of(MediaType.APPLICATION_JSON));
+            try {
+                final TokenDto token = keycloakGateway.obtainUserToken(getSystemUsername(), getSystemPassword());
+                headers.setBearerAuth(token.getAccessToken());
+                return next.exchange(request);
+            } catch (AuthServiceConnectionException | CredentialsInvalidException | AccountNotSetupException e) {
+                log.error("Failed to obtain token for internal user: {}", e.getMessage());
+            }
+            return next.exchange(request);
+        };
+    }
+
 }
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java
index f5e2f49c02023fe9145f137089e4550c9ae5b769..16a6c731b1907eddbbed22fd5f43ddd556659ee5 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/SearchServiceGateway.java
@@ -1,12 +1,21 @@
 package at.tuwien.gateway;
 
+<<<<<<< Updated upstream
 import at.tuwien.api.database.DatabaseDto;
+=======
+>>>>>>> Stashed changes
 import at.tuwien.entities.database.Database;
-import at.tuwien.exception.*;
+import at.tuwien.exception.DatabaseNotFoundException;
+import at.tuwien.exception.SearchServiceConnectionException;
+import at.tuwien.exception.SearchServiceException;
 
 public interface SearchServiceGateway {
 
+<<<<<<< Updated upstream
     DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
+=======
+    void update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
+>>>>>>> Stashed changes
 
     void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
 }
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java
index 0f14b8d34826fe94829146f53a0cc22fb9e97333..729ffb305719bd174105e68131ea1c91bc048af7 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/SearchServiceGatewayImpl.java
@@ -13,29 +13,39 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.*;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.HttpServerErrorException;
 import org.springframework.web.client.ResourceAccessException;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.reactive.function.client.WebClient;
 
 @Log4j2
 @Service
 public class SearchServiceGatewayImpl implements SearchServiceGateway {
 
+    private final WebClient webClient;
     private final RestTemplate restTemplate;
     private final GatewayConfig gatewayConfig;
     private final MetadataMapper metadataMapper;
 
     @Autowired
-    public SearchServiceGatewayImpl(@Qualifier("searchServiceRestTemplate") RestTemplate restTemplate,
+    public SearchServiceGatewayImpl(WebClient webClient, @Qualifier("searchServiceRestTemplate") RestTemplate restTemplate,
                                     GatewayConfig gatewayConfig, MetadataMapper metadataMapper) {
+        this.webClient = webClient;
         this.restTemplate = restTemplate;
         this.gatewayConfig = gatewayConfig;
         this.metadataMapper = metadataMapper;
     }
 
     @Override
+<<<<<<< Updated upstream
     public DatabaseDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException {
+=======
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public void update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException {
+>>>>>>> Stashed changes
         final ResponseEntity<DatabaseDto> response;
         final HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", "application/json");
@@ -44,7 +54,11 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway {
         log.trace("update database at endpoint {} with path {}", gatewayConfig.getSearchEndpoint(), path);
         try {
             response = restTemplate.exchange(path, HttpMethod.PUT, new HttpEntity<>(
+<<<<<<< Updated upstream
                     metadataMapper.databaseToPrivilegedDatabaseDto(database), headers), DatabaseDto.class);
+=======
+                    metadataMapper.databaseToDatabaseDto(database), headers), DatabaseDto.class);
+>>>>>>> Stashed changes
         } catch (ResourceAccessException | HttpServerErrorException.ServiceUnavailable |
                  HttpServerErrorException.InternalServerError e) {
             log.error("Failed to update database: {}", e.getMessage());
@@ -60,7 +74,6 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway {
             log.error("Failed to update database: response code is not 202");
             throw new SearchServiceException("Failed to update database: response code is not 202");
         }
-        return response.getBody();
     }
 
     @Override
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
index 52a9a63667c8faa22bdd142d5161f04e85d70513..3d71e52b0dce52819d721ef2091044f32d663759 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java
@@ -3,8 +3,12 @@ package at.tuwien.service.impl;
 import at.tuwien.api.database.table.TableCreateDto;
 import at.tuwien.api.database.table.TableStatisticDto;
 import at.tuwien.api.database.table.TableUpdateDto;
+<<<<<<< Updated upstream
 import at.tuwien.api.database.table.columns.ColumnCreateDto;
+=======
+>>>>>>> Stashed changes
 import at.tuwien.api.database.table.columns.ColumnStatisticDto;
+import at.tuwien.api.database.table.columns.CreateTableColumnDto;
 import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto;
 import at.tuwien.config.RabbitConfig;
 import at.tuwien.entities.database.Database;
@@ -22,6 +26,7 @@ import at.tuwien.service.*;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.security.Principal;
@@ -89,11 +94,15 @@ public class TableServiceImpl implements TableService {
     }
 
     @Override
+<<<<<<< Updated upstream
     @Transactional
     public Table createTable(Database database, TableCreateDto data, Principal principal) throws DataServiceException,
+=======
+    @Transactional(propagation = Propagation.REQUIRED)
+    public Table createTable(Database database, CreateTableDto data, Principal principal) throws DataServiceException,
+>>>>>>> Stashed changes
             DataServiceConnectionException, UserNotFoundException, TableNotFoundException, DatabaseNotFoundException,
-            TableExistsException, SearchServiceException, SearchServiceConnectionException, MalformedException,
-            OntologyNotFoundException, SemanticEntityNotFoundException {
+            TableExistsException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException {
         final User owner = userService.findByUsername(principal.getName());
         /* map table */
         final Table table = Table.builder()
@@ -279,9 +288,8 @@ public class TableServiceImpl implements TableService {
 
     @Override
     @Transactional
-    public void updateStatistics(Table table) throws SearchServiceException,
-            DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, TableNotFoundException,
-            DataServiceException, DataServiceConnectionException {
+    public void updateStatistics(Table table) throws MalformedException, TableNotFoundException, DataServiceException,
+            DataServiceConnectionException, DatabaseNotFoundException {
         final TableStatisticDto statistic = dataServiceGateway.getTableStatistics(table.getTdbid(), table.getId());
         if (statistic == null) {
             return;
@@ -312,7 +320,6 @@ public class TableServiceImpl implements TableService {
         /* update in open search service */
         searchServiceGateway.update(database);
         log.info("Updated statistics for the table and {} column(s)", table.getColumns().size());
-        log.trace("updated statistics: {}", table);
     }
 
 }
diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock
index 4d0035b92e9dcc745bdb1f20df690e9ea2c1be59..87765c3221e7ecdcd90bbcedc430b09ae7edbcdc 100644
--- a/dbrepo-search-service/Pipfile.lock
+++ b/dbrepo-search-service/Pipfile.lock
@@ -1,7 +1,11 @@
 {
     "_meta": {
         "hash": {
+<<<<<<< Updated upstream
             "sha256": "a0682b0583cfc91d643a307a7dce7a524e7f7c29dbf2c9c5e9a6f16eb5f5ee91"
+=======
+            "sha256": "2ff9fc673f1fb1e5dc272aa711f4e730088fa0188b44449db042abf99b6c4db7"
+>>>>>>> Stashed changes
         },
         "pipfile-spec": 6,
         "requires": {
@@ -360,11 +364,17 @@
         },
         "dbrepo": {
             "hashes": [
+<<<<<<< Updated upstream
                 "sha256:1495b7efa016d75a2f978cf20aa1729d8dee2809583f2c253264f7fd3233addb",
                 "sha256:839a4f5810d83e93b1fa88c7ab7641727b65af1d0eada93195d3f0daa3e13e5a"
             ],
             "markers": "python_version >= '3.11'",
             "path": "./lib/dbrepo-1.6.1.tar.gz"
+=======
+                "sha256:7f98329f08d1da6fe45da8130cfb3ebd6e947a4101d46f92b31d7204b29a153d"
+            ],
+            "path": "./lib/dbrepo-1.6.3.tar.gz"
+>>>>>>> Stashed changes
         },
         "docker": {
             "hashes": [
diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts
index ca757c7451d70c4bd1fffc36b72c6a23d7fdde58..15a004f11aac6007ad6d12bd4c2b477ed128d78a 100644
--- a/dbrepo-ui/composables/table-service.ts
+++ b/dbrepo-ui/composables/table-service.ts
@@ -251,13 +251,6 @@ export const useTableService = (): any => {
     }
   }
 
-  function isOwner(table: TableDto, user: UserDto) {
-    if (!table || !user) {
-      return false
-    }
-    return table.owner.id === user.id
-  }
-
   function tableNameToInternalName(name: string) {
     return name.normalize('NFKD')
       .toLowerCase()
@@ -293,7 +286,6 @@ export const useTableService = (): any => {
     suggest,
     prepareColumns,
     prepareConstraints,
-    isOwner,
     tableNameToInternalName
   }
 }
diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue
index 02c2c8310ae9bafe8ce458decf6ccdd86a6cba37..56973289bd9811b46b858b9e2c322cf40b911dd7 100644
--- a/dbrepo-ui/pages/database/[database_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/info.vue
@@ -94,7 +94,7 @@
                 <div>
                   <UserBadge
                     :user="database.owner"
-                    :other-user="user" />
+                    :other-user="cacheUser" />
                 </div>
               </v-list-item>
               <v-list-item
@@ -104,7 +104,7 @@
                 <div>
                   <UserBadge
                     :user="database.contact"
-                    :other-user="user" />
+                    :other-user="cacheUser" />
                 </div>
               </v-list-item>
             </v-list>
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
index 9da3e1c9fd9774ca61be0be90af9a7050d6fba3c..32862334e8718ab82e64e20ce6e05b1440f8e020 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
@@ -83,6 +83,9 @@ export default {
     table () {
       return this.cacheStore.getTable
     },
+    access () {
+      return this.cacheStore.getAccess
+    },
     title () {
       if (!this.table) {
         return this.$t('pages.table.import.title')
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
index 8108e0677e040b5ce500b188e64857398a9c3cb6..bc4a1dcef7d48e0b2d8675a1d762c33e6048e0f4 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
@@ -116,6 +116,8 @@
     </v-card>
     <v-breadcrumbs :items="items" class="pa-0 mt-2" />
   </div>
+  <pre>table={{ table }}</pre>
+  <pre>access={{ access }}</pre>
 </template>
 
 <script>
@@ -185,14 +187,22 @@ export default {
     roles () {
       return this.userStore.getRoles
     },
+    access () {
+      return this.cacheStore.getAccess
+    },
     canRead () {
-      if (this.database && this.database.is_public) {
+      if (!this.database || !this.access || this.database.is_public) {
         return true
       }
+<<<<<<< Updated upstream
       if (!this.user || !this.access) {
         return false
       }
       return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all'
+=======
+      const userService = useUserService()
+      return userService.hasReadAccess(this.access)
+>>>>>>> Stashed changes
     },
     canViewSchema () {
       if (this.error) {
@@ -215,9 +225,12 @@ export default {
       }
       return (this.access.type === 'write_own' && this.table.owned_by === this.user.id) || this.access.type === 'write_all'
     },
+<<<<<<< Updated upstream
     access () {
       return this.userStore.getAccess
     },
+=======
+>>>>>>> Stashed changes
     hasDescription () {
       return this.table && this.table.description
     },
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue
index 201917c5c051ffd63028fdb7f6f631e9b0dafce7..44c8b25bfc48df301aee4d348cb768087edd4f4e 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/settings.vue
@@ -229,8 +229,12 @@ export default {
       if (this.roles.includes('delete-foreign-table')) {
         return true
       }
+<<<<<<< Updated upstream
       const tableService = useTableService()
       return tableService.isOwner(this.table, this.user) && this.roles.includes('delete-table') && this.table.identifiers.length === 0
+=======
+      return this.table.owner.id === this.cacheUser.uid && this.roles.includes('delete-table') && this.table.identifiers.length === 0
+>>>>>>> Stashed changes
     },
     inputVariant () {
       const runtimeConfig = useRuntimeConfig()
diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue
index 060d186252e1192b3264af89b92b85293ad14d09..80cb16e5495c40914d28f258c36f57f3c57934bf 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/create.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue
@@ -1,14 +1,19 @@
 <template>
   <div
     v-if="canCreateView">
-    <Builder mode="view" />
+    <Builder
+      mode="view" />
     <v-breadcrumbs :items="items" class="pa-0 mt-2" />
   </div>
 </template>
 
 <script>
 import Builder from '@/components/subset/Builder.vue'
+<<<<<<< Updated upstream
 import { useUserStore } from '@/stores/user'
+=======
+import { useCacheStore } from '@/stores/cache.js'
+>>>>>>> Stashed changes
 
 export default {
   components: {
@@ -35,7 +40,11 @@ export default {
           disabled: true
         }
       ],
+<<<<<<< Updated upstream
       userStore: useUserStore()
+=======
+      cacheStore: useCacheStore()
+>>>>>>> Stashed changes
     }
   },
   computed: {
@@ -46,7 +55,7 @@ export default {
       return this.userStore.getRoles
     },
     canCreateView () {
-      if (!this.roles) {
+      if (!this.roles || !this.access) {
         return false
       }
       return this.roles.includes('create-database-view')
diff --git a/dbrepo-ui/pages/database/[database_id]/view/index.vue b/dbrepo-ui/pages/database/[database_id]/view/index.vue
index 4172797328151393813f683200652c2753e783ed..c7acfd024c3a00a30872f779640ffebca557f07f 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div
-    v-if="canViewSchema">
+    v-if="canViewViews">
     <DatabaseToolbar />
     <v-window
       v-model="tab">
@@ -48,11 +48,29 @@ export default {
     database () {
       return this.cacheStore.getDatabase
     },
+<<<<<<< Updated upstream
     canViewSchema () {
       if (this.error) {
         return false
       }
       return this.database
+=======
+    access () {
+      return this.cacheStore.getAccess
+    },
+    canViewViews () {
+      if (!this.database) {
+        return false
+      }
+      if (this.database.is_schema_public || this.database.is_public) {
+        return true
+      }
+      if (!this.access) {
+        return false
+      }
+      const userService = useUserService()
+      return userService.hasReadAccess(this.access)
+>>>>>>> Stashed changes
     }
   }
 }
diff --git a/dbrepo-ui/pages/user/index.vue b/dbrepo-ui/pages/user/index.vue
index e729d9086f2be6604c2b9d0222c00acc79297f85..d53b2f42cc8bd7966db208242ad0a8b1736b3428 100644
--- a/dbrepo-ui/pages/user/index.vue
+++ b/dbrepo-ui/pages/user/index.vue
@@ -2,6 +2,9 @@
   <div />
 </template>
 
+<script setup>
+const { loggedIn } = useOidcAuth()
+</script>
 <script>
 import { useUserStore } from '@/stores/user'
 
diff --git a/docker-compose.yml b/docker-compose.yml
index 1a9da923ae36e08ac9354b264b2ed037ba2d67f3..9eee227dd971a0540b858928a796680bed8e86ce 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -19,8 +19,6 @@ services:
       - metadata-db-data:/bitnami/mariadb
       - ./dbrepo-metadata-db/1_setup-schema.sql:/docker-entrypoint-initdb.d/1_setup-schema.sql
       - ./dbrepo-metadata-db/2_setup-data.sql:/docker-entrypoint-initdb.d/2_setup-data.sql
-    ports:
-      - "3306:3306"
     environment:
       MARIADB_DATABASE: "${METADATA_DB:-dbrepo}"
       MARIADB_ROOT_PASSWORD: "${METADATA_DB_PASSWORD:-dbrepo}"
@@ -141,7 +139,7 @@ services:
       context: ./dbrepo-metadata-service
       network: host
     ports:
-      - "9099:8080"
+      - "9099:18080"
     volumes:
       - "${SHARED_VOLUME:-/tmp}:/tmp"
     environment:
diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar
new file mode 100644
index 0000000000000000000000000000000000000000..221bdd325f056ff953e0a44a46773470eb08e91e
Binary files /dev/null and b/helm/dbrepo/files/create-event-listener.jar differ
diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml
index 9a237767cce39c2b3ad2cdb9c307f858ae158224..55355c2262049fa7c57633c0aac4b0839916c79f 100644
--- a/helm/dbrepo/templates/auth-configmap.yaml
+++ b/helm/dbrepo/templates/auth-configmap.yaml
@@ -4,6 +4,9 @@ kind: ConfigMap
 metadata:
   name: auth-service-config
   namespace: {{ include "common.names.namespace" . | quote }}
+binaryData:
+  create-event-listener.jar: |
+    {{ .Files.Get "files/create-event-listener.jar" | b64enc | nindent 4 }}
 data:
   KC_HOSTNAME_PATH: "/"
   KC_HOSTNAME_ADMIN_URL: "{{ .Values.gateway }}/"
diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml
index 4d9376c06ea315e13a615477b4b618cbe1e5afad..2c60cd27bd4ba964e7cfd98e1ef4f66f260bbd03 100644
--- a/helm/dbrepo/values.yaml
+++ b/helm/dbrepo/values.yaml
@@ -133,7 +133,20 @@ authservice:
   ## @skip authservice.extraVolumeMounts
   extraVolumeMounts:
     - name: config-map
+<<<<<<< Updated upstream
       mountPath: /opt/bitnami/keycloak/data/import
+=======
+      mountPath: /opt/keycloak/data/import/dbrepo-realm.json
+      subPath: dbrepo-realm.json
+    - name: config-map
+      mountPath: /opt/keycloak/data/import/master-realm.json
+      subPath: master-realm.json
+    - name: config-map
+      mountPath: /opt/bitnami/keycloak/providers/create-event-listener.jar
+      subPath: create-event-listener.jar
+    - name: cache
+      mountPath: /bitnami/keycloak/
+>>>>>>> Stashed changes
   ## @skip authservice.replicaCount The number of replicas.
   replicaCount: 2
 
@@ -167,6 +180,16 @@ datadb:
     enabled: true
   ## @param datadb.replicaCount The number of cluster nodes, should be uneven i.e. 2n+1
   replicaCount: 3
+  resources:
+    resources:
+      limits:
+        cpu: 750m
+        ephemeral-storage: 2Gi
+        memory: 1536Mi
+      requests:
+        cpu: 500m
+        ephemeral-storage: 50Mi
+        memory: 1000Mi
   persistence:
     ## @param datadb.persistence.enabled Enable persistent storage.
     enabled: true
diff --git a/make/dev.mk b/make/dev.mk
index 0282dbbce287356e207822fdc9dbf1be7e26e0b8..c20b4dd22910b76e02979fb9be710ea4e67cd565 100644
--- a/make/dev.mk
+++ b/make/dev.mk
@@ -31,6 +31,7 @@ package-config: ## Package the config files
 	cp ./dbrepo-metric-db/prometheus.yml ./.docker/config
 	cp ./dbrepo-storage-service/s3_config.json ./.docker/config
 	cp ./dbrepo-upload-service/pre-create.sh ./.docker/config
+	cp ./dbrepo-auth-service/listeners/target/create-event-listener.jar ./.docker/config
 	cd ./.docker && tar czf ./dist.tar.gz ./docker-compose.yml ./.env ./config
 
 .PHONY: install-staging