diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml
index f3c33b643bf85812ccefe632938805aece99ad21..0f675e47eb507fa1d2c6691f6e7708d4ffc414fd 100644
--- a/.docker/docker-compose.yml
+++ b/.docker/docker-compose.yml
@@ -114,7 +114,7 @@ services:
     init: true
     restart: "no"
     container_name: dbrepo-auth-service-init
-    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0
     environment:
       AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin}
       AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin}
@@ -135,7 +135,7 @@ services:
     restart: "no"
     container_name: dbrepo-metadata-service
     hostname: metadata-service
-    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0
     volumes:
       - "${SHARED_VOLUME:-/tmp}:/tmp"
     environment:
@@ -198,7 +198,7 @@ services:
     restart: "no"
     container_name: dbrepo-analyse-service
     hostname: analyse-service
-    image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0
     environment:
       AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
       AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
@@ -253,7 +253,7 @@ services:
     restart: "no"
     container_name: dbrepo-search-db
     hostname: search-db
-    image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-db:1.7.0
     healthcheck:
       test: curl -sSL localhost:9200/_plugins/_security/health | jq .status | grep UP
       interval: 10s
@@ -277,7 +277,7 @@ services:
     restart: "no"
     container_name: dbrepo-search-service
     hostname: search-service
-    image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0
     environment:
       AUTH_SERVICE_CLIENT: ${AUTH_SERVICE_CLIENT:-dbrepo-client}
       AUTH_SERVICE_CLIENT_SECRET: ${AUTH_SERVICE_CLIENT_SECRET:-MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG}
@@ -301,7 +301,7 @@ services:
     restart: "no"
     container_name: dbrepo-ui
     hostname: ui
-    image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0
     environment:
       NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}"
       NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://gateway-service}"
@@ -381,7 +381,7 @@ services:
     init: true
     container_name: dbrepo-search-service-init
     hostname: search-service-init
-    image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0
     environment:
       LOG_LEVEL: ${LOG_LEVEL:-info}
       METADATA_SERVICE_ENDPOINT: ${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}
@@ -438,7 +438,7 @@ services:
     restart: "no"
     container_name: dbrepo-dashboard-service
     hostname: dashboard-service
-    image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/dashboard-service:1.7.0
     ports:
       - "3000:3000"
     volumes:
@@ -465,7 +465,7 @@ services:
     init: true
     container_name: dbrepo-storage-service-init
     hostname: storage-service-init
-    image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0
     environment:
       S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-seaweedfsadmin}
       S3_BUCKET: "${S3_BUCKET:-dbrepo}"
@@ -511,7 +511,7 @@ services:
     restart: "no"
     container_name: dbrepo-data-service
     hostname: data-service
-    image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.5
+    image: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0
     volumes:
       - "${SHARED_VOLUME:-/tmp}:/tmp"
     environment:
diff --git a/.docs/.openapi/api.base.yaml b/.docs/.openapi/api.base.yaml
index f0420d1412b6c86f3397593aa001abe31fcb7840..abadb218e7fa3b74a11caea3b01d3f73f2fa988a 100644
--- a/.docs/.openapi/api.base.yaml
+++ b/.docs/.openapi/api.base.yaml
@@ -11,7 +11,7 @@ components:
       type: http
 externalDocs:
   description: Project Website
-  url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/
+  url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/
 info:
   contact:
     email: andreas.rauber@tuwien.ac.at
@@ -24,7 +24,7 @@ info:
     name: Apache 2.0
     url: https://www.apache.org/licenses/LICENSE-2.0
   title: DBRepo REST API
-  version: 1.6.5
+  version: 1.7.0
 openapi: 3.1.0
 servers:
   - description: Test Instance
diff --git a/.docs/.openapi/api.yaml b/.docs/.openapi/api.yaml
index c5d75bca5ae848f542e636fe91d656195e2dc6b2..c23937c6e72cdc9a8b8956b34aeeec63bfd15ce2 100644
--- a/.docs/.openapi/api.yaml
+++ b/.docs/.openapi/api.yaml
@@ -16,7 +16,7 @@ info:
     name: Apache 2.0
     url: 'https://www.apache.org/licenses/LICENSE-2.0'
   title: DBRepo REST API
-  version: 1.6.2
+  version: 1.7.2
 servers:
   - description: Test Instance
     url: 'https://test.dbrepo.tuwien.ac.at'
@@ -24,7 +24,7 @@ servers:
     url: 'http://localhost'
 externalDocs:
   description: Project Website
-  url: 'https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/'
+  url: 'https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/'
 paths:
   /api/analyse/datatypes:
     get:
diff --git a/.docs/changelog.md b/.docs/changelog.md
index 1db165e41e91de37023f8ce5b669ce6ecfbf4db6..7914aeb06a5fdaeb999cf030ca2f59066ccfd2dd 100644
--- a/.docs/changelog.md
+++ b/.docs/changelog.md
@@ -2,9 +2,15 @@
 author: Martin Weise
 ---
 
+## v1.7.0 (????)
+
+### What's Changed
+
+TBD
+
 ## v1.6.5 (2025-02-18)
 
-[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.5)
+[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.7.0)
 
 ### What's Changed
 
diff --git a/.docs/index.md b/.docs/index.md
index f4c159d7bcfc3693a8e742a3b6b2a82e1250b240..aa9c6e7693f3758fadcddbe05cd5904c5e92b7da 100644
--- a/.docs/index.md
+++ b/.docs/index.md
@@ -14,7 +14,7 @@ author: Martin Weise
 ![Maintainability Rating](./images/maintainability.svg)
 ![Security Rating](./images/security.svg)
 
-Documentation for version: [v1.6.5](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases).
+Documentation for version: [v1.7.0](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases).
 
 DBRepo is a repository for data in databases that are used from the beginning until the end of a research 
 project supporting data evolution, -citation and -versioning. It implements the query store of the 
diff --git a/.docs/installation.md b/.docs/installation.md
index 1c6db304ccf3d760c44e56b7d49aef49d76330ff..272c62d53281b68af8db66ddcfaa0a3bdac3fa4f 100644
--- a/.docs/installation.md
+++ b/.docs/installation.md
@@ -11,7 +11,7 @@ author: Martin Weise
 If you have [Docker](https://docs.docker.com/engine/install/) already installed on your system, you can install DBRepo with:
 
 ```shell
-curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | bash
+curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | bash
 ```
 
 !!! bug "Default installation security disclaimer"
@@ -38,7 +38,7 @@ SSL/TLS certificate is recommended. Follow the [secure installation](#secure-ins
 Execute the installation script to download only the environment and save it to `dist`.
 
 ```shell
-curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | DOWNLOAD_ONLY=1 bash
+curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | DOWNLOAD_ONLY=1 bash
 ```
 
 ### Static Configuration
@@ -82,7 +82,7 @@ the variable `IDENTITY_SERVICE_ADMIN_PASSWORD` in `.env`.
 Update the client secret of the `dbrepo-client`:
 
 ```bash
-curl -sSL "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/.scripts/reg-client-secret.sh" | bash
+curl -sSL "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/.scripts/reg-client-secret.sh" | bash
 ```
    
 Also, update the JWT key according to the 
diff --git a/.docs/kubernetes.md b/.docs/kubernetes.md
index e2aa101097df87728a250cc96a8fd17004f839e5..9413c784dfcccf6e14f527495243e33162922f23 100644
--- a/.docs/kubernetes.md
+++ b/.docs/kubernetes.md
@@ -6,7 +6,7 @@ author: Martin Weise
 
 To install DBRepo in your existing cluster, download the
 sample [
-`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.6/helm/dbrepo/values.yaml)
+`values.yaml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.7/helm/dbrepo/values.yaml)
 for your deployment and update the variables, especially `hostname`.
 
 ```shell
@@ -14,7 +14,7 @@ helm upgrade --install dbrepo \
   -n dbrepo \
   "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" \
   --values ./values.yaml \
-  --version "1.6.5" \
+  --version "1.7.0" \
   --create-namespace \
   --cleanup-on-fail
 ```
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 166f504e42ec3e9b328944da3a61d7835e1477cf..6e084f17d40ca2f0de1a3d730bfab6ac8e5b9af9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,9 +9,9 @@ variables:
   NODE_VERSION: "18"
   SONARQUBE_VERSION: "10.0"
   BUN_VERSION: "1.1.40"
-  DOC_VERSION: "1.6"
-  APP_VERSION: "1.6.5"
-  CHART_VERSION: "1.6.5"
+  DOC_VERSION: "1.7"
+  APP_VERSION: "1.7.0"
+  CHART_VERSION: "1.7.0"
   CACHE_FALLBACK_KEY: "${CI_DEFAULT_BRANCH}"
   # This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
   # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
@@ -304,16 +304,16 @@ test-analyse-service:
   script:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
-    - cd ./dbrepo-analyse-service/ && coverage run -m pytest tests/test_determine_dt.py tests/test_determine_pk.py tests/test_s3_client.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt
+    - cd ./dbrepo-analyse-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_determine_dt.py tests/test_determine_pk.py tests/test_s3_client.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
     paths:
-      - ./dbrepo-analyse-service/report.xml
+      - ./dbrepo-analyse-service/coverage.xml
       - ./dbrepo-analyse-service/coverage.txt
     expire_in: 1 days
     reports:
-      junit: ./dbrepo-analyse-service/report.xml
+      junit: ./dbrepo-analyse-service/coverage.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
 test-auth-service-init:
@@ -326,16 +326,16 @@ test-auth-service-init:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
   script:
-    - cd ./dbrepo-auth-service/init/ && coverage run -m pytest tests/test_unit_app.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt
+    - cd ./dbrepo-auth-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_app.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
     paths:
-      - ./dbrepo-auth-service/init/report.xml
+      - ./dbrepo-auth-service/init/coverage.xml
       - ./dbrepo-auth-service/init/coverage.txt
     expire_in: 1 days
     reports:
-      junit: ./dbrepo-auth-service/init/report.xml
+      junit: ./dbrepo-auth-service/init/coverage.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
 test-search-service:
@@ -357,16 +357,16 @@ test-search-service:
   script:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
-    - cd ./dbrepo-search-service/ && coverage run -m pytest tests/test_app.py tests/test_jwt.py tests/test_opensearch_client.py tests/test_keycloak_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
+    - cd ./dbrepo-search-service/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_jwt.py tests/test_opensearch_client.py tests/test_keycloak_client.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
     paths:
-      - ./dbrepo-search-service/report.xml
+      - ./dbrepo-search-service/coverage.xml
       - ./dbrepo-search-service/coverage.txt
     expire_in: 1 days
     reports:
-      junit: ./dbrepo-search-service/report.xml
+      junit: ./dbrepo-search-service/coverage.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
 test-search-service-init:
@@ -381,16 +381,16 @@ test-search-service-init:
   script:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
-    - cd ./dbrepo-search-service/init/ && coverage run -m pytest tests/test_app.py tests/test_keycloak_client.py tests/test_opensearch_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt
+    - cd ./dbrepo-search-service/init/ && coverage run --rcfile=.coveragerc -m pytest tests/test_app.py tests/test_keycloak_client.py tests/test_opensearch_client.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
     paths:
-      - ./dbrepo-search-service/report.xml
+      - ./dbrepo-search-service/coverage.xml
       - ./dbrepo-search-service/coverage.txt
     expire_in: 1 days
     reports:
-      junit: ./dbrepo-search-service/report.xml
+      junit: ./dbrepo-search-service/coverage.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
 test-lib:
@@ -405,16 +405,16 @@ test-lib:
   script:
     - "pip install pipenv"
     - "pipenv install gunicorn && pipenv install --dev --system --deploy"
-    - cd ./lib/python/ && coverage run -m pytest tests/test_unit_container.py tests/test_unit_concept.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py tests/test_unit_unit.py --junitxml=report.xml && coverage html --omit="tests/*" && coverage report --omit="tests/*" > ./coverage.txt
+    - cd ./lib/python/ && coverage run --rcfile=.coveragerc -m pytest tests/test_unit_container.py tests/test_unit_concept.py tests/test_unit_database.py tests/test_unit_identifier.py tests/test_unit_license.py tests/test_unit_query.py tests/test_unit_rest_client.py tests/test_unit_table.py tests/test_unit_user.py tests/test_unit_view.py tests/test_unit_unit.py && coverage html && coverage xml && coverage report > ./coverage.txt
     - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'"
   artifacts:
     when: always
     paths:
-      - ./lib/python/report.xml
+      - ./lib/python/coverage.xml
       - ./lib/python/coverage.txt
     expire_in: 1 days
     reports:
-      junit: ./lib/python/report.xml
+      junit: ./lib/python/coverage.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
 test-ui:
diff --git a/.gitlab/agents/dev/values.yaml b/.gitlab/agents/dev/values.yaml
index 5841a5e97bd5d9f9ddde4d13a2b74623a91cf4fb..50a1615d0ed948905a9963cdbcdc70e83e220eee 100644
--- a/.gitlab/agents/dev/values.yaml
+++ b/.gitlab/agents/dev/values.yaml
@@ -28,7 +28,7 @@ authservice:
     secret: MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG
   setupJob:
     image:
-      name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.3
+      name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.7.0
   persistence:
     enabled: true
 
@@ -71,12 +71,12 @@ searchdb:
 analyseservice:
   enabled: true
   image:
-    name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.3
+    name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0
 
 metadataservice:
   enabled: true
   image:
-    name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.3
+    name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0
   admin:
     email: noreply@example.com
   deletedRecord: permanent
@@ -92,7 +92,7 @@ metadataservice:
 dataservice:
   enabled: true
   image:
-    name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.3
+    name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0
   rabbitmq:
     consumer:
       username: admin
@@ -106,16 +106,16 @@ dataservice:
 searchservice:
   enabled: true
   image:
-    name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.3
+    name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0
   init:
     image:
-      name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.3
+      name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0
 
 storageservice:
   enabled: true
   init:
     image:
-      name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.3
+      name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0
 
 uploadservice:
   enabled: true
@@ -132,7 +132,7 @@ metricdb:
 ui:
   enabled: true
   image:
-    name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.3
+    name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0
   public:
     api:
       client: https://s155.datalab.tuwien.ac.at
diff --git a/Makefile b/Makefile
index e84c4f80a83a72c864c8a3f85060ef08b9c48f66..e8f2553784f38ea5e656d776e34043886ed1ed4c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 .PHONY: all
 
-APP_VERSION ?= 1.6.5
-CHART_VERSION ?= 1.6.5
+APP_VERSION ?= 1.7.0
+CHART_VERSION ?= 1.7.0
 REPOSITORY_URL ?= registry.datalab.tuwien.ac.at/dbrepo
 
 .PHONY: all
diff --git a/README.md b/README.md
index 628da3f3f3335717b5b4e0962a6ff45d36fed420..901d24dd06dd2863da84c5622f9aa8b157462171 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ If you have [Docker](https://docs.docker.com/engine/install/) already installed
 with:
 
 ```bash
-curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.6/install.sh | bash
+curl -sSL https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/release-1.7/install.sh | bash
 ```
 
 ## Documentation
diff --git a/dbrepo-analyse-service/.coveragerc b/dbrepo-analyse-service/.coveragerc
new file mode 100644
index 0000000000000000000000000000000000000000..35271a237a7e1c5f3fe0d1d9bda277fb12611efd
--- /dev/null
+++ b/dbrepo-analyse-service/.coveragerc
@@ -0,0 +1,10 @@
+[report]
+format = text
+omit =
+    # omit tests
+    ./tests/*
+    # omit ext lib
+    ./omlib/*
+
+[html]
+directory = htmlcov
\ No newline at end of file
diff --git a/dbrepo-analyse-service/Pipfile b/dbrepo-analyse-service/Pipfile
index 06b6434be71e054367e1ef521a3dae8e9401e360..6b144eec80011a340dbbaabc0c3bce5894e3c654 100644
--- a/dbrepo-analyse-service/Pipfile
+++ b/dbrepo-analyse-service/Pipfile
@@ -21,7 +21,7 @@ numpy = "*"
 pandas = "*"
 minio = "*"
 pydantic = "*"
-dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"}
+dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"}
 opensearch-py = "*"
 
 [dev-packages]
diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock
index 96591a28b95119b0725038b3c2fa66e883d5ba7e..d600643542c4764ae750491e59e0fd8382a1ace7 100644
--- a/dbrepo-analyse-service/Pipfile.lock
+++ b/dbrepo-analyse-service/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "1013ec1b081d79912b7ec0878b4824cb4f885a96fec148ae728d746de601b493"
+            "sha256": "0af9d522f713554dd7996401992cffddf372ade320c11d7950bdcd5888aa1a03"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -180,20 +180,20 @@
         },
         "boto3": {
             "hashes": [
-                "sha256:39957eabdce009353d72d131046489fbbfa15891865d5f069f1e8bfa414e6b81",
-                "sha256:768c8a4d4a6227fe2258105efa086f1424cba5ca915a5eb2305b2cd979306ad1"
+                "sha256:777ec08a6fe0ad77fa0607b431542c51d2d2e4145fecd512bee9f383ee4184f2",
+                "sha256:c9055fe6a33f79c43053c06db432092cfcf88f4b4181950f5ca8f2f0cb6abb87"
             ],
             "index": "pypi",
             "markers": "python_version >= '3.8'",
-            "version": "==1.36.22"
+            "version": "==1.36.24"
         },
         "botocore": {
             "hashes": [
-                "sha256:59520247d5a479731724f97c995d5a1c2aae3b303b324f39d99efcfad1d3019e",
-                "sha256:75d6b34acb0686ee4d54ff6eb285e78ccfe318407428769d1e3e13351714d890"
+                "sha256:7d35ba92ccbed7aa7e1563b12bb339bde612d5f845c89bfdd79a6db8c26b9f2e",
+                "sha256:b8b2ad60e6545aaef3a40163793c39555fcfd67fb081a38695018026c4f4db25"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==1.36.22"
+            "version": "==1.36.24"
         },
         "certifi": {
             "hashes": [
@@ -421,9 +421,9 @@
         },
         "dbrepo": {
             "hashes": [
-                "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00"
+                "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9"
             ],
-            "path": "./lib/dbrepo-1.6.5.tar.gz"
+            "path": "./lib/dbrepo-1.7.0.tar.gz"
         },
         "events": {
             "hashes": [
@@ -847,11 +847,11 @@
         },
         "mistune": {
             "hashes": [
-                "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a",
-                "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c"
+                "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319",
+                "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==3.1.1"
+            "version": "==3.1.2"
         },
         "multidict": {
             "hashes": [
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl
deleted file mode 100644
index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000
Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz
deleted file mode 100644
index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000
Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5.tar.gz and /dev/null differ
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl
deleted file mode 100644
index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000
Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz
deleted file mode 100644
index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000
Binary files a/dbrepo-analyse-service/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7
Binary files /dev/null and b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl differ
diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323
Binary files /dev/null and b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz differ
diff --git a/dbrepo-auth-service/init/.coveragerc b/dbrepo-auth-service/init/.coveragerc
index 5951051c8d9d6377182ca2b4090cb9008691dfba..a387be84259ecf1c8b1387a407e3cfc528960a30 100644
--- a/dbrepo-auth-service/init/.coveragerc
+++ b/dbrepo-auth-service/init/.coveragerc
@@ -1,4 +1,9 @@
 [report]
+omit =
+    # omit tests
+    ./tests/*
+    # omit ext lib
+    ./omlib/*
 
-exclude_lines =
-    if __name__ == .__main__.:
\ No newline at end of file
+[html]
+directory = htmlcov
diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar
index f370c8825750a431296ef68c3d482a2e4eee9389..8da93ba40f621cea1db4e46414fd28ef77856fc4 100644
Binary files a/dbrepo-auth-service/listeners/target/create-event-listener.jar and b/dbrepo-auth-service/listeners/target/create-event-listener.jar differ
diff --git a/dbrepo-dashboard-service/.coverage b/dbrepo-dashboard-service/.coverage
deleted file mode 100644
index 506ffe7fba86b0e70757d0f15ea4bb6516472b50..0000000000000000000000000000000000000000
Binary files a/dbrepo-dashboard-service/.coverage and /dev/null differ
diff --git a/dbrepo-dashboard-service/Dockerfile b/dbrepo-dashboard-service/Dockerfile
index 00fc60339b15b2e1ebeda9dbbf7849c96bd7a401..e4d9d8f5056d01714c0fc15c3840f8bf05cac921 100644
--- a/dbrepo-dashboard-service/Dockerfile
+++ b/dbrepo-dashboard-service/Dockerfile
@@ -1,9 +1,9 @@
-FROM docker.io/bitnami/grafana:10.4.9-debian-12-r0 AS runtime
+FROM docker.io/bitnami/grafana:11.5.1 AS runtime
 LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at"
 
 WORKDIR /app
 
-COPY --chown=grafana:grafana  ./dashboards /app/dashboards
-COPY --chown=grafana:grafana  ./provisioning /etc/grafana/provisioning
-COPY --chown=grafana:grafana  ./grafana.ini /etc/grafana/grafana.ini
-COPY --chown=grafana:grafana  ./ldap.toml /etc/grafana/ldap.toml
+COPY --chown=grafana:grafana ./dashboards /app/dashboards
+COPY --chown=grafana:grafana ./provisioning /etc/grafana/provisioning
+COPY --chown=grafana:grafana ./grafana.ini /etc/grafana/grafana.ini
+COPY --chown=grafana:grafana ./ldap.toml /etc/grafana/ldap.toml
diff --git a/dbrepo-dashboard-service/access.py b/dbrepo-dashboard-service/access.py
deleted file mode 100644
index 2f576db368e0f898c64b5a2cd3dd35f22f2384f2..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/access.py
+++ /dev/null
@@ -1,41 +0,0 @@
-import logging
-
-from grafana_client.client import GrafanaException
-from werkzeug.exceptions import NotFound
-
-from api.dto import Permission
-from clients import grafana_client
-
-statistics_row_title = '${table_id}'
-
-
-def remove_anonymous_read_access(uid: str) -> None:
-    grafana = grafana_client.connect()
-    permissions = grafana.dashboard.get_permissions_by_uid(uid)
-    viewer_role = [permission for permission in permissions if
-                   'permissionName' in permission and permission['permissionName'] != 'View']
-    if len(viewer_role) == 0:
-        logging.warning(f'Failed to find permissionName=View')
-        return None
-    try:
-        response = grafana_client.generic_post(f'/api/access-control/dashboards/{uid}/builtInRoles/Viewer',
-                                               Permission(permission='').model_dump())
-        if response.status_code != 200:
-            raise OSError(f'Failed to remove anonymous read access: {response.content}')
-    except GrafanaException as e:
-        raise OSError(f'Failed to remove anonymous read access: {e.message}')
-    logging.info(f"Removed anonymous read access from dashboard with uid: {uid}")
-
-
-def update_access(uid: str, username: str, permission: Permission) -> None:
-    try:
-        response = grafana_client.generic_get(f'/api/users/lookup?loginOrEmail={username}')
-        if response.status_code == 404:
-            raise NotFound(f"Failed to find user: {username}")
-        if response.status_code != 200:
-            raise OSError(f"Failed to add access to user: {username}")
-        grafana_client.generic_post(f"/api/access-control/dashboards/{uid}/users/{response.json()['id']}",
-                                    permission.model_dump())
-    except GrafanaException as e:
-        logging.error(f'Failed to add access: {e.message}')
-    logging.info(f"Add access for dashboard with uid: {uid}")
diff --git a/dbrepo-dashboard-service/api/dto.py b/dbrepo-dashboard-service/api/dto.py
deleted file mode 100644
index e2dab237d52e9aa7a29b93081f20d76c97fabd19..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/api/dto.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from __future__ import annotations
-
-from typing import Optional
-
-from pydantic import BaseModel
-
-
-class Datasource(BaseModel):
-    uid: str
-    type: str
-    id: Optional[int] = None
-    orgId: Optional[int] = None
-    name: Optional[str] = None
-    typeLogoUrl: Optional[str] = None
-    access: Optional[str] = None
-    url: Optional[str] = None
-    user: Optional[str] = None
-    basicAuth: Optional[bool] = None
-    withCredentials: Optional[bool] = None
-    isDefault: Optional[bool] = None
-    version: Optional[int] = None
-    readOnly: Optional[bool] = None
-    jsonData: Optional[dict] = None
-    secureJsonFields: Optional[dict] = None
-    basicAuthUser: Optional[str] = None
-    basicAuthPassword: Optional[str] = None
-    password: Optional[str] = None
-
-
-class CreateDatasource(BaseModel):
-    name: str
-    type: str
-    access: str
-    url: str
-    basicAuth: bool
-    version: int
-    readOnly: bool
-    jsonData: Optional[dict] = None
-    secureJsonData: Optional[dict] = None
-    basicAuthUser: Optional[str] = None
-
-
-class Permission(BaseModel):
-    permission: str
-
-
-class CreateDatasourceRequest(BaseModel):
-    database_internal_name: str
-    readonly: bool
-    type: str
diff --git a/dbrepo-dashboard-service/clients/grafana_client.py b/dbrepo-dashboard-service/clients/grafana_client.py
deleted file mode 100644
index 8f7d5aab0f3b28b702cf83cfd51e98bf1bc3c98e..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/clients/grafana_client.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import logging
-import os
-
-import requests
-from requests import Response
-
-from grafana_client import GrafanaApi
-
-url = os.getenv('DASHBOARD_UI_ENDPOINT', 'http://localhost:3000')
-username = os.getenv('SYSTEM_USERNAME', 'admin')
-password = os.getenv('SYSTEM_PASSWORD', 'admin')
-
-
-def connect() -> GrafanaApi:
-    return GrafanaApi.from_url(url=f'{url}', credential=(username, password))
-
-
-def generic_get(api_url: str) -> Response:
-    request_url = url + api_url
-    logging.debug(f'generic get url={request_url}, auth=({username}, <reacted>)')
-    return requests.get(request_url, auth=(username, password))
-
-
-def generic_post(api_url: str, payload: dict) -> Response:
-    request_url = url + api_url
-    logging.debug(f'generic post url={request_url}, payload={payload}, auth=({username}, <reacted>)')
-    return requests.post(request_url, json=payload, auth=(username, password))
diff --git a/dbrepo-dashboard-service/clients/keycloak_client.py b/dbrepo-dashboard-service/clients/keycloak_client.py
deleted file mode 100644
index a04998e90986c7ede455454935e4b9c1cfe16b5a..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/clients/keycloak_client.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-import requests
-from dataclasses import dataclass
-from typing import List
-
-from flask import current_app
-from jwt import jwk_from_pem, JWT
-
-
-@dataclass(init=True, eq=True)
-class User:
-    username: str
-    roles: List[str]
-
-
-class KeycloakClient:
-
-    def obtain_user_token(self, username: str, password: str) -> str:
-        response = requests.post(
-            f"{current_app.config['AUTH_SERVICE_ENDPOINT']}/realms/dbrepo/protocol/openid-connect/token",
-            data={
-                "username": username,
-                "password": password,
-                "grant_type": "password",
-                "client_id": current_app.config["AUTH_SERVICE_CLIENT"],
-                "client_secret": current_app.config["AUTH_SERVICE_CLIENT_SECRET"]
-            })
-        body = response.json()
-        if "access_token" not in body:
-            raise AssertionError(f"Failed to obtain user token(s): {response.status_code}")
-        return response.json()["access_token"]
-
-    def verify_jwt(self, access_token: str) -> User:
-        public_key = jwk_from_pem(str(current_app.config["JWT_PUBKEY"]).encode('utf-8'))
-        payload = JWT().decode(message=access_token, key=public_key, do_time_check=True)
-        return User(username=payload.get('client_id'), roles=payload.get('realm_access')["roles"])
diff --git a/dbrepo-dashboard-service/coverage.txt b/dbrepo-dashboard-service/coverage.txt
deleted file mode 100644
index 5436bf1f29acf58ee8eec467fbf34cc949d912d3..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/coverage.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Name                           Stmts   Miss  Cover
---------------------------------------------------
-app.py                           210     29    86%
-clients/keycloak_client.py        36      9    75%
-clients/opensearch_client.py     179     51    72%
---------------------------------------------------
-TOTAL                            425     89    79%
diff --git a/dbrepo-dashboard-service/dashboard.py b/dbrepo-dashboard-service/dashboard.py
deleted file mode 100644
index c77c1834ccf5a50340b09ff30ad82821dbad3c0a..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/dashboard.py
+++ /dev/null
@@ -1,273 +0,0 @@
-import logging
-import os
-
-from dbrepo.api.dto import Database, Table
-from grafana_client.client import GrafanaException
-
-from clients import grafana_client
-
-statistics_row_title = '${table_id}'
-
-base_url = os.getenv('BASE_URL', 'http://localhost')
-datasource_uid = os.getenv('JSON_DATASOURCE_NAME', 'dbrepojson0')
-
-
-def map_link(title: str, url: str) -> dict:
-    return dict(targetBlank=True,
-                asDropdown=False,
-                includeVars=False,
-                keepTime=False,
-                tags=[],
-                type='link',
-                icon='info',
-                title=title,
-                url=url)
-
-
-def map_statistics_row(dashboard: dict) -> dict | None:
-    filtered_panels = [panel for panel in dashboard['panels'] if
-                       panel['type'] == 'row' and panel['title'] == statistics_row_title and 'id' in panel]
-    if len(filtered_panels) > 0 and filtered_panels[0]['id'] is not None:
-        return filtered_panels[0]
-    logging.warning(f'Failed to find statistics row id')
-    return None
-
-
-def map_links(database: Database) -> [dict]:
-    links = []
-    if len(database.identifiers) > 0:
-        links.append(map_link('Database', f"{base_url}/pid/{database.identifiers[0].id}"))
-    else:
-        links.append(map_link('Database', f"{base_url}/database/{database.id}"))
-    return links
-
-
-def map_templating(database: Database) -> dict:
-    options = [dict(selected=False,
-                    text=table.name,
-                    value=str(table.id)) for table in database.tables]
-    selected = dict(selected=True,
-                    text=[table.name for table in database.tables],
-                    value=[str(table.id) for table in database.tables])
-    datasource = dict(uid=datasource_uid,
-                      type='yesoreyeram-infinity-datasource')
-    return dict(list=[dict(description='',
-                           name='table_id',
-                           hide=0,
-                           includeAll=True,
-                           multi=True,
-                           datasource=datasource,
-                           refresh=1,
-                           regex='',
-                           sort=0,
-                           definition='dbrepo-json- (infinity) json',
-                           query=dict(queryType='infinity',
-                                      query='',
-                                      infinityQuery=dict(format='table',
-                                                         filters=[],
-                                                         parser='backend',
-                                                         refId='variable',
-                                                         root_selector='',
-                                                         source='url',
-                                                         type='json',
-                                                         url=f"/api/database/{database.id}/table",
-                                                         columns=[dict(selector='id',
-                                                                       text='value',
-                                                                       type='number'),
-                                                                  dict(
-                                                                      selector='internal_name',
-                                                                      text='name',
-                                                                      type='string')],
-                                                         url_options=dict(data='',
-                                                                          method='GET'))),
-                           label='Table ID',
-                           skipUrlSync=False,
-                           type='query',
-                           current=selected,
-                           options=options)])
-
-
-def map_timeseries_panel(database: Database, table: Table) -> dict:
-    datasource = dict(uid=datasource_uid,
-                      type='yesoreyeram-infinity-datasource')
-    return dict(
-        title=table['name'],
-        type='timeseries',
-        datasource=datasource,
-        targets=[dict(datasource=datasource,
-                      format='table',
-                      global_query_id='',
-                      hide=False,
-                      refId='A',
-                      root_selector='',
-                      source='url',
-                      type='json',
-                      url=f"/api/database/{database['id']}/table/{table['id']}",
-                      url_options=dict(data='',
-                                       method='GET'))],
-        gridPos=dict(h=8,
-                     w=12,
-                     x=0,
-                     y=0),
-        options=dict(legend=dict(displayMode='list',
-                                 placement='bottom',
-                                 showLegend=True),
-                     tooltip=dict(mode='single',
-                                  sort='none')),
-        fieldConfig=dict(
-            defaults=dict(color=dict(mode='palette-classic'),
-                          custom=dict(
-                              axisBorderShow=False,
-                              axisCenteredZero=False,
-                              axisColorMode='text',
-                              axisLabel='',
-                              axisPlacement='auto',
-                              barAlignment=0,
-                              drawStyle='line',
-                              fillOpacity=0,
-                              gradientMode='none',
-                              hideFrom=dict(legend=False,
-                                            tooltip=False,
-                                            viz=False),
-                              insertNulls=False,
-                              lineInterpolation='linear',
-                              lineWidth=1,
-                              pointSize=5,
-                              scaleDistribution=dict(type='linear'),
-                              showPoints='auto',
-                              spanNulls=False,
-                              stacking=dict(group='A',
-                                            mode='none'),
-                              thresholdsStyle=dict(mode='absolute')))))
-
-
-def map_panels(dashboard: dict, database_id: int | None = None) -> [dict]:
-    datasource = dict(uid=datasource_uid,
-                      type='yesoreyeram-infinity-datasource')
-    if map_statistics_row(dashboard) is None:
-        dashboard['panels'].append(dict(collapsed=False,
-                                        repeat='table_id',
-                                        repeatDirection='h',
-                                        title=statistics_row_title,
-                                        type='row',
-                                        panels=[],
-                                        targets=[dict(refId='A',
-                                                      datasource=datasource)],
-                                        gridPos=dict(h=1,
-                                                     w=24,
-                                                     x=0,
-                                                     y=0)))
-        dashboard['panels'].append(dict(title='Sample',
-                                        type='table',
-                                        fieldConfig=dict(
-                                            defaults=dict(
-                                                color=dict(mode='palette-classic'),
-                                                custom=dict(axisBorderShow=False,
-                                                            axisCenteredZero=False,
-                                                            axisColorMode='text',
-                                                            axisLabel='',
-                                                            axisPlacement='auto',
-                                                            barAlignment=0,
-                                                            drawStyle='line',
-                                                            fillOpacity=0,
-                                                            gradientMode='none',
-                                                            hideFrom=dict(
-                                                                legend=False,
-                                                                tooltip=False,
-                                                                viz=False),
-                                                            insertNulls=False,
-                                                            lineInterpolation='linear',
-                                                            lineWidth=1,
-                                                            pointSize=5,
-                                                            scaleDistribution=dict(
-                                                                type='linear'),
-                                                            showPoints='auto',
-                                                            spanNulls=False,
-                                                            stacking=dict(group='A',
-                                                                          mode='none'),
-                                                            thresholdsStyle=dict(
-                                                                mode='off'))),
-                                            overrides=[]),
-                                        options=dict(legend=dict(displayMode='list',
-                                                                 placement='bottom',
-                                                                 showLegend=True,
-                                                                 calcs=[]),
-                                                     tooltip=dict(mode='single',
-                                                                  sort='none')),
-                                        targets=[dict(format='json',
-                                                      columns=[],
-                                                      datasource=datasource,
-                                                      filters=[],
-                                                      global_query_id='',
-                                                      refId='A',
-                                                      root_selector='',
-                                                      source='url',
-                                                      type='json',
-                                                      url='/api/database/' + str(
-                                                          database_id) + '/table/${table_id}/data',
-                                                      url_options=dict(data='',
-                                                                       method='GET'))],
-                                        datasource=datasource,
-                                        gridPos=dict(h=4,
-                                                     w=12,
-                                                     x=0,
-                                                     y=0)))
-    return dashboard['panels']
-
-
-def find(uid: str):
-    grafana = grafana_client.connect()
-    try:
-        return grafana.dashboard.get_dashboard(uid)
-    except GrafanaException:
-        return None
-
-
-def create(database_name: str, uid: str = '') -> dict:
-    grafana = grafana_client.connect()
-    dashboard = dict(uid=uid,
-                     title=f'{database_name} Overview',
-                     tags=['generated', 'dbrepo'],
-                     timezone='browser',
-                     fiscalYearStartMonth=1,
-                     panels=[])
-    dashboard['panels'] = map_panels(dashboard)
-    payload = dict(folderUid='',
-                   overwrite=False,
-                   dashboard=dashboard)
-    dashboard = grafana.dashboard.update_dashboard(payload)
-    logging.info(f"Created dashboard with uid: {dashboard['uid']}")
-    return dashboard
-
-
-def find(uid: str) -> dict | None:
-    grafana = grafana_client.connect()
-    try:
-        return grafana.dashboard.get_dashboard(uid)['dashboard']
-    except GrafanaException:
-        return None
-
-
-def delete(uid: str) -> None:
-    grafana = grafana_client.connect()
-    grafana.dashboard.delete_dashboard(uid)
-
-
-def update(database: Database) -> dict:
-    grafana = grafana_client.connect()
-    dashboard = find(database.dashboard_uid)
-    # update metadata
-    if len(database.identifiers) > 0 and len(database.identifiers[0].titles) > 0:
-        dashboard['title'] = database.identifiers[0].titles[0].title
-    if len(database.identifiers) > 0 and len(database.identifiers[0].descriptions) > 0:
-        dashboard['description'] = database.identifiers[0].descriptions[0].description
-    dashboard['links'] = map_links(database)
-    dashboard['templating'] = map_templating(database)
-    # update panels
-    dashboard['panels'] = map_panels(dashboard, database.id)
-    payload = dict(folderUid='',
-                   overwrite=True,
-                   dashboard=dashboard)
-    dashboard = grafana.dashboard.update_dashboard(payload)
-    logging.info(f"Updated dashboard with uid: {dashboard['uid']}")
-    return dashboard
diff --git a/dbrepo-dashboard-service/report.xml b/dbrepo-dashboard-service/report.xml
deleted file mode 100644
index 202b3db684cda7c928023ebabbfa21b929ab63df..0000000000000000000000000000000000000000
--- a/dbrepo-dashboard-service/report.xml
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="48" time="25.604" timestamp="2025-01-29T15:46:14.797988+01:00" hostname="medusa"><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_auth_fails" time="11.131" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_role_fails" time="0.317" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_not_found_fails" time="0.370" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_succeeds" time="0.524" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_fails" time="0.154" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_succeeds" time="0.218" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_no_query_fails" time="0.173" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_succeeds" time="0.283" /><testcase classname="test.test_app.JwtTest" name="test_get_index_fails" time="0.240" /><testcase classname="test.test_app.JwtTest" name="test_get_index_succeeds" time="0.190" /><testcase classname="test.test_app.JwtTest" name="test_health_succeeds" time="0.160" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_column_succeeds" time="0.386" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_concept_succeeds" time="0.341" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_identifier_succeeds" time="0.312" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_media_type_fails" time="0.140" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_no_body_fails" time="0.134" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_succeeds" time="0.284" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_table_succeeds" time="0.336" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_unit_succeeds" time="0.246" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_view_succeeds" time="0.281" /><testcase classname="test.test_app.JwtTest" name="test_update_database_empty_body_fails" time="0.177" /><testcase classname="test.test_app.JwtTest" name="test_update_database_malformed_body_fails" time="0.180" /><testcase classname="test.test_app.JwtTest" name="test_update_database_media_type_fails" time="0.231" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_auth_fails" time="0.119" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_body_fails" time="0.150" /><testcase classname="test.test_app.JwtTest" name="test_update_database_succeeds" time="0.243" /><testcase classname="test.test_jwt.JwtTest" name="test_get_user_roles_succeeds" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_password_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_username_fails" time="0.127" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_password_fails" time="0.142" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_username_fails" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_succeeds" time="0.152" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_empty_token_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_malformed_token_fails" time="0.143" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_no_token_fails" time="0.130" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_succeeds" time="0.212" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_fails" time="0.120" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_succeeds" time="0.172" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_fuzzy_search_succeeds" time="0.190" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_database_succeeds" time="0.201" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_user_succeeds" time="0.202" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_unit_independent_search_fails" time="0.208" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_create_succeeds" time="0.205" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_malformed_fails" time="0.237" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_succeeds" time="0.214" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_malformed_fails" time="0.112" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_succeeds" time="0.149" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_verify_jwt_succeeds" time="0.684" /></testsuite></testsuites>
\ No newline at end of file
diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml
index 3f049bd040829373491e3991f7443f31f08c5299..697e9ece1b5e0fda90a8a10ddfcb551736c8f109 100644
--- a/dbrepo-data-service/pom.xml
+++ b/dbrepo-data-service/pom.xml
@@ -11,7 +11,7 @@
     <groupId>at.tuwien</groupId>
     <artifactId>dbrepo-data-service</artifactId>
     <name>dbrepo-data-service</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <description>Service that manages the data</description>
 
@@ -23,7 +23,7 @@
         <module>report</module>
     </modules>
 
-    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url>
+    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url>
     <developers>
         <developer>
             <name>Martin Weise</name>
diff --git a/dbrepo-data-service/querystore/pom.xml b/dbrepo-data-service/querystore/pom.xml
index 6270990971c7d35275152c3c27dc07d8543f276c..1aa138f611c7fa5ec2fc4f6dc98beb8a177f24b5 100644
--- a/dbrepo-data-service/querystore/pom.xml
+++ b/dbrepo-data-service/querystore/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-data-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-data-service-querystore</artifactId>
     <name>dbrepo-data-service-querystore</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies/>
 
diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml
index b78405d9de1c4b93dcaa5fac40f505797cd9209f..98536501d3beb70b5c05f632e673a401b03ae2cd 100644
--- a/dbrepo-data-service/report/pom.xml
+++ b/dbrepo-data-service/report/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-data-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>report</artifactId>
     <name>dbrepo-data-service-report</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
     <description>
         This module is only intended for the pipeline coverage report. See the detailed report in the
         respective modules
diff --git a/dbrepo-data-service/rest-service/pom.xml b/dbrepo-data-service/rest-service/pom.xml
index 4ac7c352a08ddab420e340d13726ed3be9d7a3d1..434c423ef056566305e2d72db984781e7b1429fc 100644
--- a/dbrepo-data-service/rest-service/pom.xml
+++ b/dbrepo-data-service/rest-service/pom.xml
@@ -6,18 +6,18 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-data-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>rest-service</artifactId>
     <name>dbrepo-data-service-rest-service</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
             <groupId>at.tuwien</groupId>
             <artifactId>services</artifactId>
-            <version>1.6.5</version>
+            <version>1.7.0</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
index 4d3803a1e1c7159903ae090515edf5d9f353b068..84d04971e3bbeb376ea77277cdb52ef279a6954b 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
@@ -74,7 +74,7 @@ public class AccessEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @PathVariable("userId") UUID userId,
                                        @Valid @RequestBody CreateAccessDto data)
             throws NotAllowedException, DatabaseUnavailableException, DatabaseNotFoundException,
@@ -130,7 +130,7 @@ public class AccessEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @PathVariable("userId") UUID userId,
                                        @Valid @RequestBody CreateAccessDto access) throws NotAllowedException,
             DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException,
@@ -162,7 +162,7 @@ public class AccessEndpoint extends RestEndpoint {
             @ApiResponse(responseCode = "202",
                     description = "Invalidated access cache succeeded")
     })
-    public ResponseEntity<Void> invalidateAccess(@NotNull @PathVariable("databaseId") Long databaseId) {
+    public ResponseEntity<Void> invalidateAccess(@NotNull @PathVariable("databaseId") UUID databaseId) {
         log.debug("endpoint empty access cache for database, databaseId={}", databaseId);
         credentialService.invalidateAccess(databaseId);
         return ResponseEntity.accepted()
@@ -203,7 +203,7 @@ public class AccessEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @PathVariable("userId") UUID userId) throws NotAllowedException,
             DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException,
             DatabaseMalformedException, MetadataServiceException {
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
index 27848cf517ca0187f8ccd69d5ec894a4a6121304..0d12384dfa8842197d20bb608b87434d30cad1c7 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
@@ -28,6 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.sql.SQLException;
+import java.util.UUID;
 
 @Log4j2
 @RestController
@@ -128,7 +129,7 @@ public class DatabaseEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @Valid @RequestBody UpdateUserPasswordDto data)
             throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException,
             DatabaseMalformedException, MetadataServiceException {
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java
index 7f1f516495dd1d337a0ae98e5960362a3cef7a11..245774726f3725252ddb4d834af6ff2b3171ee25 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java
@@ -100,7 +100,7 @@ public class SubsetEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<QueryDto>> list(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<List<QueryDto>> list(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                @RequestParam(name = "persisted", required = false) Boolean filterPersisted,
                                                Principal principal)
             throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException,
@@ -157,8 +157,8 @@ public class SubsetEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<?> findById(@NotNull @PathVariable("databaseId") Long databaseId,
-                                      @NotNull @PathVariable("subsetId") Long subsetId,
+    public ResponseEntity<?> findById(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                      @NotNull @PathVariable("subsetId") UUID subsetId,
                                       @NotNull @RequestHeader("Accept") String accept,
                                       @RequestParam(required = false) Instant timestamp,
                                       Principal principal)
@@ -181,7 +181,7 @@ public class SubsetEndpoint extends RestEndpoint {
             timestamp = Instant.now();
             log.debug("timestamp not set: default to {}", timestamp);
         }
-        if (accept == null || accept.isEmpty() || accept.isBlank()) {
+        if (accept == null || accept.isBlank()) {
             accept = MediaType.APPLICATION_JSON_VALUE;
             log.debug("accept header not set: default to {}", accept);
         }
@@ -192,7 +192,7 @@ public class SubsetEndpoint extends RestEndpoint {
             case "text/csv":
                 log.trace("accept header matches csv");
                 final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, null, null);
-                final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, null, null, null, null);
+                final Dataset<Row> dataset = subsetService.getData(database, query);
                 metricsService.countSubsetGetData(databaseId, subsetId);
                 final ExportResourceDto resource = storageService.transformDataset(dataset);
                 final HttpHeaders headers = new HttpHeaders();
@@ -247,7 +247,7 @@ public class SubsetEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<Map<String, Object>>> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<List<Map<String, Object>>> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                             @Valid @RequestBody ExecuteStatementDto data,
                                                             Principal principal,
                                                             @NotNull HttpServletRequest request,
@@ -288,7 +288,7 @@ public class SubsetEndpoint extends RestEndpoint {
         final DatabaseDto database = credentialService.getDatabase(databaseId);
         endpointValidator.validateOnlyPrivateSchemaAccess(database, principal);
         try {
-            final Long subsetId = subsetService.create(database, data.getStatement(), timestamp, userId);
+            final UUID subsetId = subsetService.create(database, data.getStatement(), timestamp, userId);
             return getData(databaseId, subsetId, principal, request, timestamp, page, size);
         } catch (SQLException e) {
             log.error("Failed to establish connection to database: {}", e.getMessage());
@@ -304,9 +304,9 @@ public class SubsetEndpoint extends RestEndpoint {
     @ApiResponses(value = {
             @ApiResponse(responseCode = "200",
                     description = "Retrieved subset data",
-                    headers = {@Header(name = "X-Count", description = "Number of rows", schema = @Schema(implementation = Long.class)),
+                    headers = {@Header(name = "X-Count", description = "Number of rows", schema = @Schema(implementation = UUID.class)),
                             @Header(name = "X-Headers", description = "The list of headers separated by comma", schema = @Schema(implementation = String.class)),
-                            @Header(name = "X-Id", description = "The subset id", schema = @Schema(implementation = Long.class), required = true),
+                            @Header(name = "X-Id", description = "The subset id", schema = @Schema(implementation = UUID.class), required = true),
                             @Header(name = "Access-Control-Expose-Headers", description = "Reverse proxy exposing of custom headers", schema = @Schema(implementation = String.class), required = true)},
                     content = {@Content(
                             mediaType = "application/json",
@@ -332,8 +332,8 @@ public class SubsetEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                             @NotNull @PathVariable("subsetId") Long subsetId,
+    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                             @NotNull @PathVariable("subsetId") UUID subsetId,
                                                              Principal principal,
                                                              @NotNull HttpServletRequest request,
                                                              @RequestParam(required = false) Instant timestamp,
@@ -381,7 +381,7 @@ public class SubsetEndpoint extends RestEndpoint {
                         .build();
             }
             final String query = mariaDbMapper.rawSelectQuery(subset.getQuery(), timestamp, page, size);
-            final Dataset<Row> dataset = subsetService.getData(database, query, timestamp, page, size, null, null);
+            final Dataset<Row> dataset = subsetService.getData(database, query);
             metricsService.countSubsetGetData(databaseId, subsetId);
             final String viewName = metadataMapper.queryDtoToViewName(subset);
             databaseService.createView(database, CreateViewDto.builder()
@@ -440,8 +440,8 @@ public class SubsetEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<QueryDto> persist(@NotNull @PathVariable("databaseId") Long databaseId,
-                                            @NotNull @PathVariable("queryId") Long queryId,
+    public ResponseEntity<QueryDto> persist(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                            @NotNull @PathVariable("queryId") UUID queryId,
                                             @NotNull @Valid @RequestBody QueryPersistDto data,
                                             @NotNull Principal principal) throws NotAllowedException,
             RemoteUnavailableException, DatabaseNotFoundException, QueryStorePersistException,
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
index 82ed0a96f7596e025301f11e6ebceed2cd393acc..fc7dd5be7909eb412bdc07df53645d73f0a35c34 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
@@ -41,6 +41,7 @@ import java.sql.SQLException;
 import java.time.Instant;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 @Log4j2
 @RestController
@@ -106,7 +107,7 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                            @Valid @RequestBody TableCreateDto data) throws DatabaseNotFoundException,
             RemoteUnavailableException, TableMalformedException, DatabaseUnavailableException, TableExistsException,
             TableNotFoundException, QueryMalformedException, MetadataServiceException, ContainerNotFoundException {
@@ -155,8 +156,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") Long databaseId,
-                                           @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                           @NotNull @PathVariable("tableId") UUID tableId,
                                            @Valid @RequestBody TableUpdateDto data) throws RemoteUnavailableException,
             TableMalformedException, DatabaseUnavailableException, TableNotFoundException, MetadataServiceException {
         log.debug("endpoint update table, databaseId={}, data.description={}", databaseId, data.getDescription());
@@ -199,8 +200,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId,
-                                       @NotNull @PathVariable("tableId") Long tableId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                       @NotNull @PathVariable("tableId") UUID tableId)
             throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException,
             QueryMalformedException, MetadataServiceException {
         log.debug("endpoint delete table, databaseId={}, tableId={}", databaseId, tableId);
@@ -249,8 +250,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                             @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                             @NotNull @PathVariable("tableId") UUID tableId,
                                                              @RequestParam(required = false) Instant timestamp,
                                                              @RequestParam(required = false) Long page,
                                                              @RequestParam(required = false) Long size,
@@ -296,7 +297,7 @@ public class TableEndpoint extends RestEndpoint {
             final String query = mariaDbMapper.defaultRawSelectQuery(table.getDatabase().getInternalName(),
                     table.getInternalName(), timestamp, page, size);
             final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(table.getTdbid()),
-                    query, timestamp, page, size, null, null);
+                    query);
             metricsService.countTableGetData(databaseId, tableId);
             return ResponseEntity.ok()
                     .headers(headers)
@@ -337,8 +338,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> insertRawTuple(@NotNull @PathVariable("databaseId") Long databaseId,
-                                               @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> insertRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                               @NotNull @PathVariable("tableId") UUID tableId,
                                                @Valid @RequestBody TupleDto data,
                                                @NotNull Principal principal,
                                                @RequestHeader("Authorization") String authorization)
@@ -390,8 +391,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> updateRawTuple(@NotNull @PathVariable("databaseId") Long databaseId,
-                                               @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> updateRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                               @NotNull @PathVariable("tableId") UUID tableId,
                                                @Valid @RequestBody TupleUpdateDto data,
                                                @NotNull Principal principal,
                                                @RequestHeader("Authorization") String authorization)
@@ -443,8 +444,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> deleteRawTuple(@NotNull @PathVariable("databaseId") Long databaseId,
-                                               @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> deleteRawTuple(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                               @NotNull @PathVariable("tableId") UUID tableId,
                                                @Valid @RequestBody TupleDeleteDto data,
                                                @NotNull Principal principal,
                                                @RequestHeader("Authorization") String authorization)
@@ -498,8 +499,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<TableHistoryDto>> getHistory(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                            @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<List<TableHistoryDto>> getHistory(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                            @NotNull @PathVariable("tableId") UUID tableId,
                                                             @RequestParam(value = "size", required = false) Long size,
                                                             Principal principal) throws DatabaseUnavailableException,
             RemoteUnavailableException, TableNotFoundException, NotAllowedException, MetadataServiceException,
@@ -567,7 +568,7 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<TableDto>> getSchema(@NotNull @PathVariable("databaseId") Long databaseId)
+    public ResponseEntity<List<TableDto>> getSchema(@NotNull @PathVariable("databaseId") UUID databaseId)
             throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException,
             DatabaseMalformedException, TableNotFoundException, MetadataServiceException {
         log.debug("endpoint inspect table schemas, databaseId={}", databaseId);
@@ -612,8 +613,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                             @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                             @NotNull @PathVariable("tableId") UUID tableId,
                                                              @RequestParam(required = false) Instant timestamp,
                                                              Principal principal)
             throws RemoteUnavailableException, TableNotFoundException, NotAllowedException, StorageUnavailableException,
@@ -635,7 +636,7 @@ public class TableEndpoint extends RestEndpoint {
         final String query = mariaDbMapper.defaultRawSelectQuery(table.getDatabase().getInternalName(),
                 table.getInternalName(), timestamp, null, null);
         final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(table.getTdbid()),
-                query, timestamp, null, null, null, null);
+                query);
         metricsService.countTableGetData(databaseId, tableId);
         final ExportResourceDto resource = storageService.transformDataset(dataset);
         final HttpHeaders headers = new HttpHeaders();
@@ -676,8 +677,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> importDataset(@NotNull @PathVariable("databaseId") Long databaseId,
-                                              @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> importDataset(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                              @NotNull @PathVariable("tableId") UUID tableId,
                                               @Valid @RequestBody ImportDto data,
                                               @NotNull Principal principal,
                                               @RequestHeader("Authorization") String authorization)
@@ -730,8 +731,8 @@ public class TableEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                       @NotNull @PathVariable("tableId") Long tableId)
+    public ResponseEntity<TableStatisticDto> statistic(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                       @NotNull @PathVariable("tableId") UUID tableId)
             throws DatabaseUnavailableException, RemoteUnavailableException, TableNotFoundException,
             MetadataServiceException, TableMalformedException {
         log.debug("endpoint generate table statistic, databaseId={}, tableId={}", databaseId, tableId);
diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
index 25dfd50dd434df444a45c4f7850fcdd803f0e9de..47b4bb81db2371e42eefd546937af97314bfef5d 100644
--- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
+++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
@@ -37,6 +37,7 @@ import java.sql.SQLException;
 import java.time.Instant;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 @Log4j2
 @RestController
@@ -45,7 +46,6 @@ import java.util.Map;
 public class ViewEndpoint extends RestEndpoint {
 
     private final ViewService viewService;
-    private final TableService tableService;
     private final MariaDbMapper mariaDbMapper;
     private final SubsetService subsetService;
     private final MetricsService metricsService;
@@ -55,12 +55,10 @@ public class ViewEndpoint extends RestEndpoint {
     private final EndpointValidator endpointValidator;
 
     @Autowired
-    public ViewEndpoint(ViewService viewService, TableService tableService, MariaDbMapper mariaDbMapper,
-                        SubsetService subsetService, MetricsService metricsService, StorageService storageService,
-                        DatabaseService databaseService, CredentialService credentialService,
-                        EndpointValidator endpointValidator) {
+    public ViewEndpoint(ViewService viewService, MariaDbMapper mariaDbMapper, SubsetService subsetService,
+                        MetricsService metricsService, StorageService storageService, DatabaseService databaseService,
+                        CredentialService credentialService, EndpointValidator endpointValidator) {
         this.viewService = viewService;
-        this.tableService = tableService;
         this.mariaDbMapper = mariaDbMapper;
         this.subsetService = subsetService;
         this.metricsService = metricsService;
@@ -107,7 +105,7 @@ public class ViewEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<ViewDto>> getSchema(@NotNull @PathVariable("databaseId") Long databaseId)
+    public ResponseEntity<List<ViewDto>> getSchema(@NotNull @PathVariable("databaseId") UUID databaseId)
             throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException,
             DatabaseMalformedException, MetadataServiceException, ViewNotFoundException {
         log.debug("endpoint inspect view schemas, databaseId={}", databaseId);
@@ -152,7 +150,7 @@ public class ViewEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ViewDto> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<ViewDto> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                           @Valid @RequestBody CreateViewDto data) throws DatabaseUnavailableException,
             DatabaseNotFoundException, RemoteUnavailableException, ViewMalformedException, MetadataServiceException {
         log.debug("endpoint create view, databaseId={}, data.name={}", databaseId, data.getName());
@@ -195,8 +193,8 @@ public class ViewEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId,
-                                       @NotNull @PathVariable("viewId") Long viewId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                       @NotNull @PathVariable("viewId") UUID viewId)
             throws DatabaseUnavailableException, RemoteUnavailableException, ViewNotFoundException,
             ViewMalformedException, MetadataServiceException {
         log.debug("endpoint delete view, databaseId={}, viewId={}", databaseId, viewId);
@@ -250,8 +248,8 @@ public class ViewEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                             @NotNull @PathVariable("viewId") Long viewId,
+    public ResponseEntity<List<Map<String, Object>>> getData(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                             @NotNull @PathVariable("viewId") UUID viewId,
                                                              @RequestParam(required = false) Long page,
                                                              @RequestParam(required = false) Long size,
                                                              @RequestParam(required = false) Instant timestamp,
@@ -297,7 +295,7 @@ public class ViewEndpoint extends RestEndpoint {
             final String query = mariaDbMapper.defaultRawSelectQuery(view.getDatabase().getInternalName(),
                     view.getInternalName(), timestamp, page, size);
             final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(databaseId),
-                    query, timestamp, page, size, null, null);
+                    query);
             metricsService.countViewGetData(databaseId, viewId);
             return ResponseEntity.ok()
                     .headers(headers)
@@ -340,8 +338,8 @@ public class ViewEndpoint extends RestEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                             @NotNull @PathVariable("viewId") Long viewId,
+    public ResponseEntity<InputStreamResource> exportDataset(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                             @NotNull @PathVariable("viewId") UUID viewId,
                                                              @RequestParam(required = false) Instant timestamp,
                                                              Principal principal)
             throws RemoteUnavailableException, ViewNotFoundException, NotAllowedException, MetadataServiceException,
@@ -364,7 +362,7 @@ public class ViewEndpoint extends RestEndpoint {
         final String query = mariaDbMapper.defaultRawSelectQuery(view.getDatabase().getInternalName(),
                 view.getInternalName(), timestamp, null, null);
         final Dataset<Row> dataset = subsetService.getData(credentialService.getDatabase(databaseId),
-                query, timestamp, null, null, null, null);
+                query);
         metricsService.countViewGetData(databaseId, viewId);
         final ExportResourceDto resource = storageService.transformDataset(dataset);
         final HttpHeaders headers = new HttpHeaders();
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java
index d4daa90741fa306a2d5c19093d5ad9ebe0d6ba2a..709e3893867dd12eaddde505cb80e4667de14d8c 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java
@@ -141,11 +141,11 @@ public class MariaDbConfig {
         }
     }
 
-    public static void insertQueryStore(DatabaseDto database, QueryDto query, UUID userId) throws SQLException {
+    public static UUID insertQueryStore(DatabaseDto database, QueryDto query, UUID userId) throws SQLException {
         final String jdbc = "jdbc:mariadb://" + database.getContainer().getHost() + ":" + database.getContainer().getPort() + "/" + database.getInternalName();
         log.trace("connect to database: {}", jdbc);
         try (Connection connection = DriverManager.getConnection(jdbc, database.getContainer().getUsername(), database.getContainer().getPassword())) {
-            final PreparedStatement prepareStatement = connection.prepareStatement(
+            PreparedStatement prepareStatement = connection.prepareStatement(
                     "INSERT INTO qs_queries (created_by, query, query_normalized, is_persisted, query_hash, result_hash, result_number, created, executed) VALUES (?,?,?,?,?,?,?,?,?)");
             prepareStatement.setString(1, String.valueOf(userId));
             prepareStatement.setString(2, query.getQuery());
@@ -158,6 +158,13 @@ public class MariaDbConfig {
             prepareStatement.setTimestamp(9, Timestamp.from(query.getExecution()));
             log.trace("prepared statement: {}", prepareStatement);
             prepareStatement.executeUpdate();
+            /* select */
+            prepareStatement = connection.prepareStatement("SELECT id FROM qs_queries WHERE query_hash = ? LIMIT 1");
+            prepareStatement.setString(1, query.getQueryHash());
+            final ResultSet result = prepareStatement.executeQuery();
+            UUID queryId;
+            result.next();
+            return UUID.fromString(result.getString(1));
         }
     }
 
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java
index 8837ccb0d1c96f3dff61c0826fcabb956ecdc914..f29226406040247bd274c0562d4d2d99dff9d278 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java
@@ -34,6 +34,7 @@ import java.sql.SQLException;
 import java.time.Instant;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -147,7 +148,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
     @Test
     @WithMockUser(username = USER_1_USERNAME)
     public void findById_privateDataPrivateSchema_succeeds() throws DatabaseNotFoundException, SQLException,
-            RemoteUnavailableException, UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseUnavailableException, TableNotFoundException, StorageUnavailableException, NotAllowedException, ViewMalformedException, QueryMalformedException, FormatNotAvailableException {
+            RemoteUnavailableException, UserNotFoundException, QueryNotFoundException, MetadataServiceException,
+            DatabaseUnavailableException, TableNotFoundException, StorageUnavailableException, NotAllowedException,
+            QueryMalformedException, FormatNotAvailableException {
 
         /* mock */
         when(credentialService.getDatabase(DATABASE_1_ID))
@@ -164,8 +167,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
     public void findById_publicDataPrivateSchema_succeeds() throws DatabaseNotFoundException, SQLException,
             RemoteUnavailableException, UserNotFoundException, DatabaseUnavailableException, NotAllowedException,
             StorageUnavailableException, QueryMalformedException, QueryNotFoundException,
-            FormatNotAvailableException, TableNotFoundException, MetadataServiceException,
-            ViewMalformedException {
+            FormatNotAvailableException, TableNotFoundException, MetadataServiceException {
 
         /* mock */
         when(credentialService.getDatabase(DATABASE_3_ID))
@@ -199,7 +201,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
     public void findById_privateDataPrivateSchemaAcceptCsv_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
             UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException,
             QueryNotFoundException, FormatNotAvailableException, SQLException, MetadataServiceException,
-            TableNotFoundException, ViewMalformedException, NotAllowedException {
+            TableNotFoundException, NotAllowedException {
         final Dataset<Row> mock = sparkSession.emptyDataFrame();
 
         /* mock */
@@ -207,7 +209,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(DATABASE_1_PRIVILEGED_DTO);
         when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID))
                 .thenReturn(QUERY_5_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(storageService.transformDataset(any(Dataset.class)))
                 .thenReturn(EXPORT_RESOURCE_DTO);
@@ -243,7 +245,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(DATABASE_3_PRIVILEGED_DTO);
         when(subsetService.findById(DATABASE_4_PRIVILEGED_DTO, QUERY_5_ID))
                 .thenReturn(QUERY_5_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(storageService.transformDataset(any(Dataset.class)))
                 .thenReturn(EXPORT_RESOURCE_DTO);
@@ -303,10 +305,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         /* mock */
         when(credentialService.getDatabase(DATABASE_3_ID))
                 .thenReturn(DATABASE_3_PRIVILEGED_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
-        when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong()))
+        when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), any(UUID.class)))
                 .thenReturn(QUERY_5_DTO);
+        when(subsetService.create(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), any(UUID.class)))
+                .thenReturn(QUERY_5_ID);
         when(databaseService.inspectView(any(DatabaseDto.class), anyString()))
                 .thenReturn(QUERY_5_VIEW_DTO);
         when(httpServletRequest.getMethod())
@@ -353,7 +357,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(QUERY_5_ID);
         when(subsetService.findById(any(DatabaseDto.class), eq(QUERY_5_ID)))
                 .thenReturn(QUERY_5_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(databaseService.createView(any(DatabaseDto.class), any(CreateViewDto.class)))
                 .thenReturn(QUERY_5_VIEW_DTO);
@@ -402,9 +406,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         /* mock */
         when(credentialService.getDatabase(DATABASE_4_ID))
                 .thenReturn(DATABASE_4_PRIVILEGED_DTO);
-        when(subsetService.findById(eq(DATABASE_4_PRIVILEGED_DTO), anyLong()))
+        when(subsetService.findById(eq(DATABASE_4_PRIVILEGED_DTO), any(UUID.class)))
                 .thenReturn(QUERY_5_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.create(eq(DATABASE_4_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(null)))
+                .thenReturn(QUERY_5_ID);
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(databaseService.inspectView(any(DatabaseDto.class), anyString()))
                 .thenReturn(QUERY_5_VIEW_DTO);
@@ -430,9 +436,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         /* mock */
         when(credentialService.getDatabase(DATABASE_1_ID))
                 .thenReturn(DATABASE_1_PRIVILEGED_DTO);
-        when(subsetService.findById(eq(DATABASE_1_PRIVILEGED_DTO), anyLong()))
+        when(subsetService.findById(eq(DATABASE_1_PRIVILEGED_DTO), any(UUID.class)))
                 .thenReturn(QUERY_1_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.create(eq(DATABASE_1_PRIVILEGED_DTO), eq(QUERY_1_STATEMENT), any(Instant.class), any(UUID.class)))
+                .thenReturn(QUERY_1_ID);
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(databaseService.inspectView(any(DatabaseDto.class), anyString()))
                 .thenReturn(QUERY_1_VIEW_DTO);
@@ -456,9 +464,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         /* mock */
         when(credentialService.getDatabase(DATABASE_2_ID))
                 .thenReturn(DATABASE_2_PRIVILEGED_DTO);
-        when(subsetService.findById(eq(DATABASE_2_PRIVILEGED_DTO), anyLong()))
+        when(subsetService.findById(eq(DATABASE_2_PRIVILEGED_DTO), any(UUID.class)))
                 .thenReturn(QUERY_2_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(httpServletRequest.getMethod())
                 .thenReturn("POST");
@@ -483,7 +491,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(QUERY_5_DTO);
         when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO))
                 .thenReturn(QUERY_5_RESULT_NUMBER);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(databaseService.inspectView(any(DatabaseDto.class), anyString()))
                 .thenReturn(QUERY_5_VIEW_DTO);
@@ -535,7 +543,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(QUERY_1_DTO);
         when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO))
                 .thenReturn(QUERY_1_RESULT_NUMBER);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(databaseService.inspectView(any(DatabaseDto.class), anyString()))
                 .thenReturn(QUERY_1_VIEW_DTO);
@@ -705,7 +713,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         });
     }
 
-    protected List<QueryDto> generic_list(Long databaseId, DatabaseDto database, Principal principal)
+    protected List<QueryDto> generic_list(UUID databaseId, DatabaseDto database, Principal principal)
             throws NotAllowedException, DatabaseUnavailableException, QueryNotFoundException, DatabaseNotFoundException,
             RemoteUnavailableException, MetadataServiceException {
 
@@ -725,11 +733,11 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
         return response.getBody();
     }
 
-    protected void generic_findById(Long databaseId, Long subsetId, String accept, Instant timestamp,
+    protected void generic_findById(UUID databaseId, UUID subsetId, String accept, Instant timestamp,
                                     Principal principal) throws UserNotFoundException, DatabaseUnavailableException,
             StorageUnavailableException, NotAllowedException, QueryMalformedException, QueryNotFoundException,
             DatabaseNotFoundException, RemoteUnavailableException, FormatNotAvailableException,
-            MetadataServiceException, TableNotFoundException, ViewMalformedException {
+            MetadataServiceException, TableNotFoundException {
 
         /* test */
         final ResponseEntity<?> response = subsetEndpoint.findById(databaseId, subsetId, accept, timestamp, principal);
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
index b37007a0108946429481c7fa229eb575bc6e98f0..57e6ede962cec6fa7f97721bc0089604ee900eff 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
@@ -290,7 +290,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(TABLE_8_PRIVILEGED_DTO);
         when(credentialService.getDatabase(DATABASE_3_ID))
                 .thenReturn(DATABASE_3_PRIVILEGED_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(httpServletRequest.getMethod())
                 .thenReturn("GET");
@@ -313,7 +313,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(TABLE_8_PRIVILEGED_DTO);
         when(tableService.getCount(eq(TABLE_8_PRIVILEGED_DTO), any(Instant.class)))
                 .thenReturn(3L);
-        when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), anyString()))
                 .thenReturn(mock);
         when(httpServletRequest.getMethod())
                 .thenReturn("HEAD");
@@ -373,7 +373,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(DATABASE_3_PRIVILEGED_DTO);
         doThrow(QueryMalformedException.class)
                 .when(subsetService)
-                .getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null));
+                .getData(any(DatabaseDto.class), anyString());
         when(httpServletRequest.getMethod())
                 .thenReturn("GET");
 
@@ -416,7 +416,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(DATABASE_1_PRIVILEGED_DTO);
         when(credentialService.getAccess(DATABASE_1_ID, USER_2_ID))
                 .thenReturn(access);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(httpServletRequest.getMethod())
                 .thenReturn("GET");
@@ -1159,7 +1159,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(TABLE_8_PRIVILEGED_DTO);
         when(credentialService.getDatabase(DATABASE_3_ID))
                 .thenReturn(DATABASE_3_PRIVILEGED_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
 
         /* test */
@@ -1182,7 +1182,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(access);
         when(credentialService.getDatabase(DATABASE_1_ID))
                 .thenReturn(DATABASE_1_PRIVILEGED_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(null), eq(null), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
 
         /* test */
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java
index b003ebfb4fd427c0b6bd92aef0595915f5c2bdbd..3421ed6124c284099eca5b72796ebdfd54c928f5 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java
@@ -274,8 +274,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
     @Test
     @WithMockUser(username = USER_1_USERNAME, authorities = {"view-database-view-data"})
     public void getData_privateDataPrivateSchema_succeeds() throws RemoteUnavailableException, ViewNotFoundException,
-            SQLException, DatabaseUnavailableException, QueryMalformedException, PaginationException,
-            NotAllowedException, MetadataServiceException, TableNotFoundException, DatabaseNotFoundException {
+            DatabaseUnavailableException, QueryMalformedException, PaginationException, NotAllowedException,
+            MetadataServiceException, TableNotFoundException, DatabaseNotFoundException {
         final Dataset<Row> mock = sparkSession.emptyDataFrame();
 
         /* mock */
@@ -285,7 +285,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
                 .thenReturn(DATABASE_1_PRIVILEGED_DTO);
         when(credentialService.getAccess(DATABASE_1_ID, USER_1_ID))
                 .thenReturn(DATABASE_1_USER_1_READ_ACCESS_DTO);
-        when(subsetService.getData(any(DatabaseDto.class), anyString(), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)))
+        when(subsetService.getData(any(DatabaseDto.class), anyString()))
                 .thenReturn(mock);
         when(httpServletRequest.getMethod())
                 .thenReturn("GET");
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java
index affb56208032bc818ce5f1dbe1d99008613ffa32..664e504248bb2136206817f8fabc8964fae0fdaf 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/MetadataServiceGatewayUnitTest.java
@@ -54,6 +54,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest {
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME);
         headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD);
+        headers.set("X-Jdbc-Method", IMAGE_1_JDBC);
 
         /* mock */
         when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(TableDto.class)))
@@ -158,6 +159,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest {
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME);
         headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD);
+        headers.set("X-Jdbc-Method", IMAGE_1_JDBC);
 
         /* mock */
         when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(DatabaseDto.class)))
@@ -256,6 +258,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest {
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME);
         headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD);
+        headers.set("X-Jdbc-Method", IMAGE_1_JDBC);
 
         /* mock */
         when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(ContainerDto.class)))
@@ -354,6 +357,7 @@ public class MetadataServiceGatewayUnitTest extends AbstractUnitTest {
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Username", CONTAINER_1_PRIVILEGED_USERNAME);
         headers.set("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD);
+        headers.set("X-Jdbc-Method", IMAGE_1_JDBC);
 
         /* mock */
         when(internalRestTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(ViewDto.class)))
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java
index 74042aa5788c38205d8b73abff31aadf162999e3..120f5936808a7bafab30f28a7b21149077a7954f 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/listener/DefaultListenerUnitTest.java
@@ -78,7 +78,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest {
     @Test
     public void onMessage_messageMalformed_fails(CapturedOutput output) throws TableNotFoundException,
             RemoteUnavailableException, MetadataServiceException {
-        final Message request = buildMessage("dbrepo.1.1", "{,}", new HashMap<>());
+        final Message request = buildMessage(TABLE_1_ROUTING_KEY, "{,}", new HashMap<>());
 
         /* mock */
         when(credentialService.getTable(DATABASE_1_ID, TABLE_1_ID))
@@ -92,7 +92,7 @@ public class DefaultListenerUnitTest extends AbstractUnitTest {
     @Test
     public void onMessage_tableNotFound_fails(CapturedOutput output) throws TableNotFoundException,
             RemoteUnavailableException, MetadataServiceException {
-        final Message request = buildMessage("dbrepo.1.1", "{\"id\":1}", new HashMap<>());
+        final Message request = buildMessage(TABLE_1_ROUTING_KEY, "{\"id\": 1}", new HashMap<>());
 
         /* mock */
         doThrow(TableNotFoundException.class)
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
index 120fe49d8f98f61e36840b69d8c33fa00bc27053..dacc80acceec164a6c61f50ec3d9a069b5807aad 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
@@ -7,17 +7,14 @@ import at.tuwien.api.database.table.TupleDeleteDto;
 import at.tuwien.api.database.table.TupleDto;
 import at.tuwien.api.database.table.TupleUpdateDto;
 import at.tuwien.config.MetricsConfig;
-import at.tuwien.endpoints.*;
+import at.tuwien.endpoints.SubsetEndpoint;
+import at.tuwien.endpoints.TableEndpoint;
+import at.tuwien.endpoints.ViewEndpoint;
 import at.tuwien.listener.DefaultListener;
 import at.tuwien.test.AbstractUnitTest;
-import io.micrometer.observation.annotation.Observed;
 import io.micrometer.observation.tck.TestObservationRegistry;
-import io.swagger.v3.oas.annotations.Operation;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.io.FileUtils;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,14 +28,11 @@ import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
 
 import static at.tuwien.utils.RabbitMqUtils.buildMessage;
 import static io.micrometer.observation.tck.TestObservationRegistryAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -63,12 +57,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
     @Autowired
     private HttpServletRequest httpServletRequest;
 
-    @Autowired
-    private AccessEndpoint accessEndpoint; /* no metrics */
-
-    @Autowired
-    private DatabaseEndpoint databaseEndpoint; /* no metrics */
-
     @Autowired
     private SubsetEndpoint subsetEndpoint;
 
@@ -78,8 +66,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
     @Autowired
     private ViewEndpoint viewEndpoint;
 
-    private static final Map<String, String> metrics = new TreeMap<>(); /* sorted */
-
     @TestConfiguration
     static class ObservationTestConfiguration {
 
@@ -89,16 +75,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
         }
     }
 
-    @BeforeAll
-    public static void beforeAll() {
-        FileUtils.deleteQuietly(new File("../metrics.txt"));
-    }
-
-    @AfterAll
-    public static void afterAll() throws IOException {
-        saveObservedMetrics(metrics);
-    }
-
     @Test
     public void prometheus_succeeds() throws Exception {
 
@@ -121,7 +97,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
         /* test */
         assertThat(registry)
                 .hasObservationWithNameEqualTo("dbrepo_message_receive");
-        generic_openApiDocs(DefaultListener.class);
     }
 
     @Test
@@ -161,7 +136,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(SubsetEndpoint.class);
     }
 
     @Test
@@ -212,7 +186,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(TableEndpoint.class);
     }
 
     @Test
@@ -229,21 +202,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
         /* test */
         assertThat(registry)
                 .hasObservationWithNameEqualTo("dbrepo_view_data");
-        generic_openApiDocs(ViewEndpoint.class);
-    }
-
-    private static void generic_openApiDocs(Class<?> endpoint) {
-        final List<Method> methods = Arrays.stream(endpoint.getMethods())
-                .filter(m -> m.getDeclaringClass().equals(endpoint))
-                .toList();
-        methods.forEach(m -> {
-            final Observed observed = m.getDeclaredAnnotation(Observed.class);
-            final Operation operation = m.getDeclaredAnnotation(Operation.class);
-            if (observed != null) {
-                assertNotNull(operation);
-                metrics.put(observed.name(), operation.summary());
-            }
-        });
     }
 
 }
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
index e1579fbe95d8d04cbdbe41f87f5dc066b874b26c..ef4f8713c87058268bdf86c653248c425113a7b8 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java
@@ -79,7 +79,7 @@ public class ContainerServiceIntegrationTest extends AbstractUnitTest {
     }
 
     @Test
-    public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException, InterruptedException {
+    public void createQueryStore_succeeds() throws SQLException, QueryStoreCreateException {
 
         /* test */
         createQueryStore_generic(DATABASE_1_INTERNALNAME);
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java
index 07e283640a92bd68a774158d196578a0ab9fd23d..764dd92af3be5ea185b7e7ef319fde19a5e794af 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/CredentialServiceUnitTest.java
@@ -127,7 +127,7 @@ public class CredentialServiceUnitTest extends AbstractUnitTest {
             InterruptedException, ContainerNotFoundException {
 
         /* mock */
-        when(metadataServiceGateway.getContainerById(DATABASE_1_ID))
+        when(metadataServiceGateway.getContainerById(CONTAINER_1_ID))
                 .thenReturn(CONTAINER_2_PRIVILEGED_DTO) /* needs to be different id for test case */
                 .thenReturn(CONTAINER_1_PRIVILEGED_DTO);
 
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
index 6663a71d135033e5fb4a3b3810d04d54130e270a..8fd4a26c5ea83f66b6f8f3e2d55d3a6589dd7ee5 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
@@ -39,6 +39,7 @@ import java.sql.SQLException;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -709,21 +710,7 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest {
         assertEquals(TABLE_1_COLUMNS.size(), response.getColumns().size());
     }
 
-    protected static void assertViewColumn(ViewColumnDto column, ViewColumnDto other) {
-        assertNotNull(column);
-        assertNotNull(other);
-        assertEquals(column.getId(), other.getId());
-        assertEquals(column.getDatabaseId(), other.getDatabaseId());
-        assertEquals(column.getName(), other.getName());
-        assertEquals(column.getInternalName(), other.getInternalName());
-        assertEquals(column.getColumnType(), other.getColumnType());
-        assertEquals(column.getSize(), other.getSize());
-        assertEquals(column.getD(), other.getD());
-        assertEquals(column.getIsNullAllowed(), other.getIsNullAllowed());
-        assertEquals(column.getDescription(), other.getDescription());
-    }
-
-    protected static void assertColumn(ColumnDto column, Long id, Long tableId, Long databaseId, String name,
+    protected static void assertColumn(ColumnDto column, UUID id, UUID tableId, UUID databaseId, String name,
                                        String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed,
                                        String description) {
         log.trace("assert column: {}", internalName);
diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java
index 56115690b503ce3c71bb241fdd84704710a0bb0b..cd92d5579c0f66297c10661ad3c0a2a0201141f0 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SubsetServiceIntegrationTest.java
@@ -21,6 +21,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
 
 import java.sql.SQLException;
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
@@ -55,8 +56,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         /* test */
         final List<QueryDto> response = findAll_generic(null);
         assertEquals(2, response.size());
-        assertEquals(1L, response.get(0).getId());
-        assertEquals(2L, response.get(1).getId());
+        assertNotNull(response.get(0).getId());
+        assertNotNull(response.get(1).getId());
     }
 
     @Test
@@ -66,7 +67,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         /* test */
         final List<QueryDto> response = findAll_generic(true);
         assertEquals(1, response.size());
-        assertEquals(1L, response.get(0).getId());
+        assertNotNull(response.get(0).getId());
     }
 
     @Test
@@ -76,15 +77,18 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         /* test */
         final List<QueryDto> response = findAll_generic(false);
         assertEquals(1, response.size());
-        assertEquals(2L, response.get(0).getId());
+        assertNotNull(response.get(0).getId());
     }
 
     @Test
     public void findById_succeeds() throws SQLException, QueryNotFoundException, UserNotFoundException,
             RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException {
 
+        /* mock */
+        final UUID queryId = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID);
+
         /* test */
-        findById_generic(QUERY_1_ID);
+        findById_generic(queryId);
     }
 
     @Test
@@ -92,7 +96,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
 
         /* test */
         assertThrows(QueryNotFoundException.class, () -> {
-            findById_generic(9999L);
+            findById_generic(UUID.randomUUID());
         });
     }
 
@@ -102,13 +106,14 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
             InterruptedException {
 
         /* mock */
+        final UUID queryId2 = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID);
         when(metadataServiceGateway.getUserById(USER_1_ID))
                 .thenReturn(USER_1_DTO);
 
         /* test */
-        persist_generic(QUERY_2_ID, List.of(IDENTIFIER_5_BRIEF_DTO), true);
-        final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_2_ID);
-        assertEquals(2L, response.getId());
+        persist_generic(queryId2, List.of(IDENTIFIER_5_BRIEF_DTO), true);
+        final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId2);
+        assertEquals(queryId2, response.getId());
         assertTrue(response.getIsPersisted());
     }
 
@@ -118,17 +123,18 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
             InterruptedException {
 
         /* mock */
+        final UUID queryId1 = MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID);
         when(metadataServiceGateway.getUserById(USER_1_ID))
                 .thenReturn(USER_1_DTO);
 
         /* test */
-        persist_generic(QUERY_1_ID, List.of(IDENTIFIER_2_BRIEF_DTO), false);
-        final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID);
-        assertEquals(1L, response.getId());
+        persist_generic(queryId1, List.of(IDENTIFIER_2_BRIEF_DTO), false);
+        final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId1);
+        assertEquals(queryId1, response.getId());
         assertFalse(response.getIsPersisted());
     }
 
-    protected void findById_generic(Long queryId) throws RemoteUnavailableException, SQLException,
+    protected void findById_generic(UUID queryId) throws RemoteUnavailableException, SQLException,
             UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseNotFoundException,
             InterruptedException {
 
@@ -136,15 +142,14 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         Thread.sleep(1000) /* wait for test container some more */;
 
         /* mock */
-        when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, QUERY_1_ID))
+        when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, queryId))
                 .thenReturn(List.of(IDENTIFIER_2_BRIEF_DTO));
         when(metadataServiceGateway.getUserById(USER_1_ID))
                 .thenReturn(USER_1_DTO);
-        MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID);
 
         /* test */
         final QueryDto response = queryService.findById(DATABASE_1_PRIVILEGED_DTO, queryId);
-        assertEquals(QUERY_1_ID, response.getId());
+        assertEquals(queryId, response.getId());
     }
 
     protected List<QueryDto> findAll_generic(Boolean filterPersisted) throws SQLException, QueryNotFoundException,
@@ -164,7 +169,7 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         return queryService.findAll(DATABASE_1_PRIVILEGED_DTO, filterPersisted);
     }
 
-    protected void persist_generic(Long queryId, List<IdentifierBriefDto> identifiers, Boolean persist)
+    protected void persist_generic(UUID queryId, List<IdentifierBriefDto> identifiers, Boolean persist)
             throws RemoteUnavailableException, SQLException, QueryStorePersistException, MetadataServiceException,
             DatabaseNotFoundException, InterruptedException {
 
@@ -174,8 +179,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
         /* mock */
         when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, queryId))
                 .thenReturn(identifiers);
-        MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID);
-        MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_2_DTO, USER_1_ID);
 
         /* test */
         queryService.persist(DATABASE_1_PRIVILEGED_DTO, queryId, persist);
diff --git a/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql b/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql
index 3e7471df3e1eb3a1bb79db7246ecb805a06f495c..c5cb8d31dcee26afba046ca79cae129265baaef8 100644
--- a/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql
+++ b/dbrepo-data-service/rest-service/src/test/resources/init/querystore.sql
@@ -1,5 +1,5 @@
 CREATE SEQUENCE `qs_queries_seq` NOCACHE;
-CREATE TABLE `qs_queries` ( `id` bigint not null primary key default nextval(`qs_queries_seq`), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint ) WITH SYSTEM VERSIONING;
+CREATE TABLE `qs_queries` ( `id` varchar(36) not null primary key default uuid(), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint ) WITH SYSTEM VERSIONING;
 CREATE PROCEDURE hash_table(IN name VARCHAR(255), OUT hash VARCHAR(255), OUT count BIGINT) BEGIN DECLARE _sql TEXT; SELECT CONCAT('SELECT SHA2(GROUP_CONCAT(CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') SEPARATOR \',\'), 256) AS hash, COUNT(*) AS count FROM `', name, '` INTO @hash, @count;') FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = name INTO _sql; PREPARE stmt FROM _sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET hash = @hash; SET count = @count; END;
-CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;
-CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;
\ No newline at end of file
+CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId varchar(36)) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;
+CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId varchar(36)) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;
\ No newline at end of file
diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml
index 3b1ea7b0e925cc60074d23407d8be6b1eba5abbb..5252e6a3d30439671d085b9ac2d6bca81bf462c0 100644
--- a/dbrepo-data-service/services/pom.xml
+++ b/dbrepo-data-service/services/pom.xml
@@ -6,18 +6,18 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-data-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>services</artifactId>
     <name>dbrepo-data-service-services</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
             <groupId>at.tuwien</groupId>
             <artifactId>dbrepo-data-service-querystore</artifactId>
-            <version>1.6.5</version>
+            <version>1.7.0</version>
         </dependency>
     </dependencies>
 
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java
index c798537b5b378822a82119b2ffcb7ec4c7bf1384..6fc7e7250cad33f8d2b9f81f3e2ec95f9fa934b9 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/config/CacheConfig.java
@@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit;
 public class CacheConfig {
 
     @Value("${dbrepo.credentialCacheTimeout}")
-    private Long credentialCacheTimeout;
+    private Integer credentialCacheTimeout;
 
     @Bean
     public Cache<UUID, UserDto> userCache() {
@@ -27,28 +27,28 @@ public class CacheConfig {
     }
 
     @Bean
-    public Cache<Long, ViewDto> viewCache() {
-        return new ExpiryCache<Long, ViewDto>().build();
+    public Cache<UUID, ViewDto> viewCache() {
+        return new ExpiryCache<UUID, ViewDto>().build();
     }
 
     @Bean
-    public Cache<Long, DatabaseAccessDto> accessCache() {
-        return new ExpiryCache<Long, DatabaseAccessDto>().build();
+    public Cache<UUID, DatabaseAccessDto> accessCache() {
+        return new ExpiryCache<UUID, DatabaseAccessDto>().build();
     }
 
     @Bean
-    public Cache<Long, TableDto> tableCache() {
-        return new ExpiryCache<Long, TableDto>().build();
+    public Cache<UUID, TableDto> tableCache() {
+        return new ExpiryCache<UUID, TableDto>().build();
     }
 
     @Bean
-    public Cache<Long, DatabaseDto> databaseCache() {
-        return new ExpiryCache<Long, DatabaseDto>().build();
+    public Cache<UUID, DatabaseDto> databaseCache() {
+        return new ExpiryCache<UUID, DatabaseDto>().build();
     }
 
     @Bean
-    public Cache<Long, ContainerDto> containerCache() {
-        return new ExpiryCache<Long, ContainerDto>().build();
+    public Cache<UUID, ContainerDto> containerCache() {
+        return new ExpiryCache<UUID, ContainerDto>().build();
     }
 
     class ExpiryCache<K, T> {
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java
index f7fe2f207512791b17144cea27cedcc5f7bfd2b9..38b28ebcac140827059fa0e510d5250755eaaf37 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/MetadataServiceGateway.java
@@ -24,7 +24,7 @@ public interface MetadataServiceGateway {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException,
+    ContainerDto getContainerById(UUID containerId) throws RemoteUnavailableException,
             ContainerNotFoundException, MetadataServiceException;
 
     /**
@@ -36,7 +36,7 @@ public interface MetadataServiceGateway {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException,
+    DatabaseDto getDatabaseById(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException;
 
     /**
@@ -49,7 +49,7 @@ public interface MetadataServiceGateway {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException, RemoteUnavailableException,
+    TableDto getTableById(UUID databaseId, UUID id) throws TableNotFoundException, RemoteUnavailableException,
             MetadataServiceException;
 
     /**
@@ -62,7 +62,7 @@ public interface MetadataServiceGateway {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException, ViewNotFoundException,
+    ViewDto getViewById(UUID databaseId, UUID id) throws RemoteUnavailableException, ViewNotFoundException,
             MetadataServiceException;
 
     /**
@@ -86,7 +86,7 @@ public interface MetadataServiceGateway {
      * @throws NotAllowedException        The access to this database is denied for the given user.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException, NotAllowedException,
+    DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException, NotAllowedException,
             MetadataServiceException;
 
     /**
@@ -99,7 +99,7 @@ public interface MetadataServiceGateway {
      * @throws DatabaseNotFoundException  The database was not found.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    List<IdentifierBriefDto> getIdentifiers(@NotNull Long databaseId, Long subsetId) throws MetadataServiceException,
+    List<IdentifierBriefDto> getIdentifiers(@NotNull UUID databaseId, UUID subsetId) throws MetadataServiceException,
             RemoteUnavailableException, DatabaseNotFoundException;
 
     /**
@@ -112,6 +112,6 @@ public interface MetadataServiceGateway {
      * @throws TableNotFoundException     The table was not found.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    void updateTableStatistics(Long databaseId, Long tableId, String authorization) throws TableNotFoundException,
+    void updateTableStatistics(UUID databaseId, UUID tableId, String authorization) throws TableNotFoundException,
             MetadataServiceException, RemoteUnavailableException;
 }
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java
index 7b02192b7ed0209bae55614808e5c236d03da6ef..d90250f0287806b8c8a659268eb0c81ff1a4bd2f 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/MetadataServiceGatewayImpl.java
@@ -44,11 +44,11 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
     }
 
     @Override
-    public ContainerDto getContainerById(Long containerId) throws RemoteUnavailableException,
+    public ContainerDto getContainerById(UUID containerId) throws RemoteUnavailableException,
             ContainerNotFoundException, MetadataServiceException {
         final ResponseEntity<ContainerDto> response;
         final String url = "/api/container/" + containerId;
-        log.debug("get  container info from metadata service: {}", url);
+        log.debug("get container info from metadata service: {}", url);
         try {
             response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY,
                     ContainerDto.class);
@@ -63,7 +63,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find container with id {}: service responded unsuccessful: {}", containerId, response.getStatusCode());
             throw new MetadataServiceException("Failed to find container: service responded unsuccessful: " + response.getStatusCode());
         }
-        final List<String> expectedHeaders = List.of("X-Username", "X-Password");
+        final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method");
         if (!response.getHeaders().keySet().containsAll(expectedHeaders)) {
             log.error("Failed to find all  container headers");
             log.debug("expected headers: {}", expectedHeaders);
@@ -77,16 +77,17 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
         final ContainerDto container = metadataMapper.containerDtoToContainerDto(response.getBody());
         container.setUsername(response.getHeaders().get("X-Username").get(0));
         container.setPassword(response.getHeaders().get("X-Password").get(0));
+        container.getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0));
         container.setLastRetrieved(Instant.now());
         return container;
     }
 
     @Override
-    public DatabaseDto getDatabaseById(Long id) throws DatabaseNotFoundException, RemoteUnavailableException,
+    public DatabaseDto getDatabaseById(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException {
         final ResponseEntity<DatabaseDto> response;
         final String url = "/api/database/" + id;
-        log.debug("get  database info from metadata service: {}", url);
+        log.debug("get database info from metadata service: {}", url);
         try {
             response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, DatabaseDto.class);
         } catch (ResourceAccessException | HttpServerErrorException e) {
@@ -100,7 +101,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find database with id {}: service responded unsuccessful: {}", id, response.getStatusCode());
             throw new MetadataServiceException("Failed to find database: service responded unsuccessful: " + response.getStatusCode());
         }
-        final List<String> expectedHeaders = List.of("X-Username", "X-Password");
+        final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method");
         if (!response.getHeaders().keySet().containsAll(expectedHeaders)) {
             log.error("Failed to find all  database headers");
             log.debug("expected headers: {}", expectedHeaders);
@@ -114,16 +115,17 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
         final DatabaseDto database = response.getBody();
         database.getContainer().setUsername(response.getHeaders().get("X-Username").get(0));
         database.getContainer().setPassword(response.getHeaders().get("X-Password").get(0));
+        database.getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0));
         database.setLastRetrieved(Instant.now());
         return database;
     }
 
     @Override
-    public TableDto getTableById(Long databaseId, Long id) throws TableNotFoundException,
+    public TableDto getTableById(UUID databaseId, UUID id) throws TableNotFoundException,
             RemoteUnavailableException, MetadataServiceException {
         final ResponseEntity<TableDto> response;
         final String url = "/api/database/" + databaseId + "/table/" + id;
-        log.debug("get  table info from metadata service: {}", url);
+        log.debug("get table info from metadata service: {}", url);
         try {
             response = internalRestTemplate.exchange(url, HttpMethod.GET, HttpEntity.EMPTY, TableDto.class);
         } catch (ResourceAccessException | HttpServerErrorException e) {
@@ -137,7 +139,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find table with id {}: service responded unsuccessful: {}", id, response.getStatusCode());
             throw new MetadataServiceException("Failed to find table: service responded unsuccessful: " + response.getStatusCode());
         }
-        final List<String> expectedHeaders = List.of("X-Username", "X-Password");
+        final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method");
         if (!response.getHeaders().keySet().containsAll(expectedHeaders)) {
             log.error("Failed to find all  table headers");
             log.debug("expected headers: {}", expectedHeaders);
@@ -151,12 +153,13 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
         final TableDto table = metadataMapper.tableDtoToTableDto(response.getBody());
         table.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0));
         table.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0));
+        table.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0));
         table.setLastRetrieved(Instant.now());
         return table;
     }
 
     @Override
-    public ViewDto getViewById(Long databaseId, Long id) throws RemoteUnavailableException,
+    public ViewDto getViewById(UUID databaseId, UUID id) throws RemoteUnavailableException,
             ViewNotFoundException, MetadataServiceException {
         final ResponseEntity<ViewDto> response;
         final String url = "/api/database/" + databaseId + "/view/" + id;
@@ -174,7 +177,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
             log.error("Failed to find view with id {}: service responded unsuccessful: {}", id, response.getStatusCode());
             throw new MetadataServiceException("Failed to find view: service responded unsuccessful: " + response.getStatusCode());
         }
-        final List<String> expectedHeaders = List.of("X-Username", "X-Password");
+        final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Jdbc-Method");
         if (!response.getHeaders().keySet().containsAll(expectedHeaders)) {
             log.error("Failed to find all  view headers");
             log.debug("expected headers: {}", expectedHeaders);
@@ -188,6 +191,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
         final ViewDto view = metadataMapper.viewDtoToViewDto(response.getBody());
         view.getDatabase().getContainer().setUsername(response.getHeaders().get("X-Username").get(0));
         view.getDatabase().getContainer().setPassword(response.getHeaders().get("X-Password").get(0));
+        view.getDatabase().getContainer().getImage().setJdbcMethod(response.getHeaders().get("X-Jdbc-Method").get(0));
         view.setLastRetrieved(Instant.now());
         return view;
     }
@@ -230,7 +234,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
     }
 
     @Override
-    public DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException,
+    public DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException,
             NotAllowedException, MetadataServiceException {
         final ResponseEntity<DatabaseAccessDto> response;
         final String url = "/api/database/" + databaseId + "/access/" + userId;
@@ -256,7 +260,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
     }
 
     @Override
-    public List<IdentifierBriefDto> getIdentifiers(@NotNull Long databaseId, Long subsetId) throws MetadataServiceException,
+    public List<IdentifierBriefDto> getIdentifiers(@NotNull UUID databaseId, UUID subsetId) throws MetadataServiceException,
             RemoteUnavailableException, DatabaseNotFoundException {
         final ResponseEntity<IdentifierBriefDto[]> response;
         final String url = "/api/identifier?dbid=" + databaseId + (subsetId != null ? ("&qid=" + subsetId) : "");
@@ -282,7 +286,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway {
     }
 
     @Override
-    public void updateTableStatistics(Long databaseId, Long tableId, String authorization) throws TableNotFoundException,
+    public void updateTableStatistics(UUID databaseId, UUID tableId, String authorization) throws TableNotFoundException,
             MetadataServiceException, RemoteUnavailableException {
         final ResponseEntity<Void> response;
         final String url = "/api/database/" + databaseId + "/table/" + tableId + "/statistic";
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java b/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java
index d2a66ab548d44192638801189f0bd36294f6c321..336a48311739f15ec95c3546ebbeaee4130a8cde 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/listener/DefaultListener.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 
 @Log4j2
 @Component
@@ -53,8 +54,8 @@ public class DefaultListener implements MessageListener {
             log.error("Failed to map database and table names from routing key: is not 3-part");
             return;
         }
-        final Long databaseId = Long.parseLong(parts[1]);
-        final Long tableId = Long.parseLong(parts[2]);
+        final UUID databaseId = UUID.fromString(parts[1]);
+        final UUID tableId = UUID.fromString(parts[2]);
         log.trace("received message for table with id {} of database id {}: {} bytes", tableId, databaseId, message.getMessageProperties().getContentLength());
         final Map<String, Object> body;
         try {
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java
index 3fedaedc66dd7864258fb7593efa02328df42df7..65cf82bfcb10004cdb677577b09461f5b6e10923 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/DataMapper.java
@@ -17,7 +17,6 @@ import at.tuwien.api.database.table.constraints.foreign.ReferenceTypeDto;
 import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto;
 import at.tuwien.api.database.table.constraints.unique.UniqueDto;
 import at.tuwien.api.user.UserBriefDto;
-import at.tuwien.config.QueryConfig;
 import at.tuwien.exception.TableNotFoundException;
 import org.apache.hadoop.shaded.com.google.common.hash.Hashing;
 import org.apache.hadoop.shaded.org.apache.commons.io.FileUtils;
@@ -171,7 +170,7 @@ public interface DataMapper {
         return table;
     }
 
-    default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view, QueryConfig queryConfig) throws SQLException {
+    default ViewDto resultSetToTable(ResultSet resultSet, ViewDto view) throws SQLException {
         final ViewColumnDto column = ViewColumnDto.builder()
                 .ordinalPosition(resultSet.getInt(1) - 1) /* start at zero */
                 .isNullAllowed(resultSet.getString(3).equals("YES"))
@@ -191,14 +190,13 @@ public interface DataMapper {
         }
         view.getColumns()
                 .add(column);
-        log.trace("parsed view column: {}.{}", view.getInternalName(), column.getInternalName());
         return view;
     }
 
     default QueryDto resultSetToQueryDto(@NotNull ResultSet data) throws SQLException {
         /* note that next() is called outside this mapping function */
         final QueryDto subset = QueryDto.builder()
-                .id(data.getLong(1))
+                .id(UUID.fromString(data.getString(1)))
                 .query(data.getString(4))
                 .queryHash(data.getString(5))
                 .resultHash(data.getString(6))
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
index 8be9ef68e3dff7246a061664d10273eee95d24f0..4e48c02786ba60cfed541c80048e921fc39d6b61 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
@@ -112,14 +112,8 @@ public interface MariaDbMapper {
         return statement.toString();
     }
 
-    default String queryStoreCreateSequenceRawQuery() {
-        final String statement = "CREATE SEQUENCE `qs_queries_seq` NOCACHE;";
-        log.trace("mapped create query store sequence statement: {}", statement);
-        return statement;
-    }
-
     default String queryStoreCreateTableRawQuery() {
-        final String statement = "CREATE TABLE `qs_queries` ( `id` bigint not null primary key default nextval(`qs_queries_seq`), `created` datetime not null default now(), `executed` datetime not null default now(), `created_by` varchar(36), `query` text not null, `query_normalized` text not null, `is_persisted` boolean not null, `query_hash` varchar(255) not null, `result_hash` varchar(255), `result_number` bigint) WITH SYSTEM VERSIONING;";
+        final String statement = "CREATE TABLE `qs_queries` ( `id` VARCHAR(36) NOT NULL PRIMARY KEY DEFAULT UUID(), `created` datetime NOT NULL DEFAULT NOW(), `executed` datetime NOT NULL default now(), `created_by` VARCHAR(36), `query` text NOT NULL, `query_normalized` text NOT NULL, `is_persisted` boolean NOT NULL, `query_hash` VARCHAR(255) NOT NULL, `result_hash` VARCHAR(255), `result_number` bigint) WITH SYSTEM VERSIONING;";
         log.trace("mapped create query store table statement: {}", statement);
         return statement;
     }
@@ -131,13 +125,13 @@ public interface MariaDbMapper {
     }
 
     default String queryStoreCreateStoreQueryProcedureRawQuery() {
-        final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _username varchar(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;";
+        final String statement = "CREATE PROCEDURE store_query(IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _username VARCHAR(255) DEFAULT REGEXP_REPLACE(current_user(), '@.*', ''); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;";
         log.trace("mapped create query store store_query procedure statement: {}", statement);
         return statement;
     }
 
     default String queryStoreCreateInternalStoreQueryProcedureRawQuery() {
-        final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId BIGINT) BEGIN DECLARE _queryhash varchar(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;";
+        final String statement = "CREATE DEFINER = 'root' PROCEDURE _store_query(IN _username VARCHAR(255), IN query TEXT, IN executed DATETIME, OUT queryId VARCHAR(36)) BEGIN DECLARE _queryhash VARCHAR(255) DEFAULT SHA2(query, 256); DECLARE _query TEXT DEFAULT CONCAT('CREATE OR REPLACE TABLE _tmp AS (', query, ')'); PREPARE stmt FROM _query; EXECUTE stmt; DEALLOCATE PREPARE stmt; CALL hash_table('_tmp', @hash, @count); DROP TABLE IF EXISTS `_tmp`; IF @hash IS NULL THEN INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` IS NULL); ELSE INSERT INTO `qs_queries` (`created_by`, `query`, `query_normalized`, `is_persisted`, `query_hash`, `result_hash`, `result_number`, `executed`) SELECT _username, query, query, false, _queryhash, @hash, @count, executed WHERE NOT EXISTS (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); SET queryId = (SELECT `id` FROM `qs_queries` WHERE `query_hash` = _queryhash AND `result_hash` = @hash); END IF; END;";
         log.trace("mapped create query store _store_query procedure statement: {}", statement);
         return statement;
     }
@@ -307,7 +301,7 @@ public interface MariaDbMapper {
         final StringBuilder stringBuilder = new StringBuilder("CREATE TABLE `")
                 .append(nameToInternalName(data.getName()))
                 .append("` (");
-        log.trace("primary key column(s) exist: {}", data.getConstraints().getPrimaryKey());
+        log.trace("PRIMARY KEY column(s) exist: {}", data.getConstraints().getPrimaryKey());
         final int[] idx = {0};
         for (CreateTableColumnDto column : data.getColumns()) {
             stringBuilder.append(idx[0]++ > 0 ? ", " : "")
@@ -326,11 +320,11 @@ public interface MariaDbMapper {
             }
 
         }
-        /* create primary key index */
+        /* create PRIMARY KEY index */
         if (data.getConstraints() != null) {
             log.trace("constraints are {}", data.getConstraints());
             if (data.getConstraints().getPrimaryKey() != null && !data.getConstraints().getPrimaryKey().isEmpty()) {
-                /* create primary key index */
+                /* create PRIMARY KEY index */
                 stringBuilder.append(", PRIMARY KEY (")
                         .append(String.join(",", data.getConstraints()
                                 .getPrimaryKey()
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java
index 116737e2ed01bbcfb890174881d9abb14f5e1614..803116e6029f0e540519832dbb4865f9964957d8 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java
@@ -18,6 +18,8 @@ import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
 
+import java.util.UUID;
+
 @Mapper(componentModel = "spring", imports = {DatabaseDto.class, ContainerDto.class, ImageDto.class})
 public interface MetadataMapper {
 
@@ -52,7 +54,7 @@ public interface MetadataMapper {
 
     IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data);
 
-    default String metricToUri(String baseUrl, Long databaseId, Long tableId, Long subsetId, Long viewId) {
+    default String metricToUri(String baseUrl, UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) {
         final StringBuilder uri = new StringBuilder(baseUrl)
                 .append("/database/")
                 .append(databaseId);
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java
index fe3df343dba29ca489a8559e1cc741b7cc03359c..543e84ab51d03fa3c4c2a9992ce84700219efc01 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/CredentialService.java
@@ -22,7 +22,7 @@ public interface CredentialService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    DatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException,
+    DatabaseDto getDatabase(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException;
 
     /**
@@ -35,7 +35,7 @@ public interface CredentialService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    ContainerDto getContainer(Long id) throws ContainerNotFoundException, RemoteUnavailableException,
+    ContainerDto getContainer(UUID id) throws ContainerNotFoundException, RemoteUnavailableException,
             MetadataServiceException;
 
     /**
@@ -49,7 +49,7 @@ public interface CredentialService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    TableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException,
+    TableDto getTable(UUID databaseId, UUID tableId) throws RemoteUnavailableException,
             MetadataServiceException, TableNotFoundException;
 
     /**
@@ -63,7 +63,7 @@ public interface CredentialService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException,
+    ViewDto getView(UUID databaseId, UUID viewId) throws RemoteUnavailableException,
             MetadataServiceException, ViewNotFoundException;
 
     /**
@@ -90,7 +90,7 @@ public interface CredentialService {
      * @throws RemoteUnavailableException The remote service is not available.
      * @throws MetadataServiceException   The remote service returned invalid data.
      */
-    DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException,
+    DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException,
             MetadataServiceException, NotAllowedException;
 
     /**
@@ -98,5 +98,5 @@ public interface CredentialService {
      *
      * @param databaseId The database id.
      */
-    void invalidateAccess(Long databaseId);
+    void invalidateAccess(UUID databaseId);
 }
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java
index 131bae7287292192931ea09e70cc8709512c9029..2beed4b773fea686aa3b9262e063acca82863667 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/MetricsService.java
@@ -1,10 +1,12 @@
 package at.tuwien.service;
 
+import java.util.UUID;
+
 public interface MetricsService {
 
-    void countTableGetData(Long databaseId, Long tableId);
+    void countTableGetData(UUID databaseId, UUID tableId);
 
-    void countSubsetGetData(Long databaseId, Long subsetId);
+    void countSubsetGetData(UUID databaseId, UUID subsetId);
 
-    void countViewGetData(Long databaseId, Long viewId);
+    void countViewGetData(UUID databaseId, UUID viewId);
 }
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java
index e2fc56002799d26e75fc05ca496cb76d330cdb07..49bd560c7a6a247461a273815e6b9ed0913f1d5f 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/SubsetService.java
@@ -1,6 +1,5 @@
 package at.tuwien.service;
 
-import at.tuwien.api.SortTypeDto;
 import at.tuwien.api.database.DatabaseDto;
 import at.tuwien.api.database.query.QueryDto;
 import at.tuwien.exception.*;
@@ -25,7 +24,7 @@ public interface SubsetService {
      * @throws QueryStoreInsertException The query store refused to insert the query.
      * @throws SQLException              The connection to the database could not be established.
      */
-    Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId)
+    UUID create(DatabaseDto database, String statement, Instant timestamp, UUID userId)
             throws QueryStoreInsertException, SQLException;
 
     /**
@@ -45,15 +44,11 @@ public interface SubsetService {
      *
      * @param database The database.
      * @param query   The query statements.
-     * @param page     The page number.
-     * @param size     Te result size.
      * @return The data.
      * @throws QueryMalformedException The mapped query produced a database error.
      * @throws TableNotFoundException  The database table is malformed.
      */
-    Dataset<Row> getData(DatabaseDto database, String query, Instant timestamp, Long page, Long size,
-                         SortTypeDto sortDirection, String sortColumn) throws QueryMalformedException,
-            TableNotFoundException;
+    Dataset<Row> getData(DatabaseDto database, String query) throws QueryMalformedException, TableNotFoundException;
 
     /**
      * Finds all queries in the query store of the given database id and query id.
@@ -97,7 +92,7 @@ public interface SubsetService {
      * @throws DatabaseNotFoundException  The database metadata was not found in the Metadata Service.
      * @throws MetadataServiceException   Communication with the Metadata Service failed.
      */
-    QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException,
+    QueryDto findById(DatabaseDto database, UUID queryId) throws QueryNotFoundException, SQLException,
             RemoteUnavailableException, UserNotFoundException, DatabaseNotFoundException, MetadataServiceException;
 
     /**
@@ -110,7 +105,7 @@ public interface SubsetService {
      * @throws SQLException              The connection to the database could not be established.
      * @throws QueryStoreInsertException The query store failed to insert the query.
      */
-    Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException,
+    UUID storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException,
             QueryStoreInsertException;
 
     /**
@@ -122,7 +117,7 @@ public interface SubsetService {
      * @throws SQLException               The connection to the database could not be established.
      * @throws QueryStorePersistException The query store failed to persist/unpersist the query.
      */
-    void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException,
+    void persist(DatabaseDto database, UUID queryId, Boolean persist) throws SQLException,
             QueryStorePersistException;
 
     /**
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java
index aedba1aed2902b35b424832d117e200dcc02aca9..9e35574d8ddb1eb21b9fd566d009abceecf49043 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceMariaDbImpl.java
@@ -71,10 +71,6 @@ public class ContainerServiceMariaDbImpl extends DataConnector implements Contai
         try {
             /* create query store */
             long start = System.currentTimeMillis();
-            connection.prepareStatement(mariaDbMapper.queryStoreCreateSequenceRawQuery())
-                    .execute();
-            log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
-            start = System.currentTimeMillis();
             connection.prepareStatement(mariaDbMapper.queryStoreCreateTableRawQuery())
                     .execute();
             log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java
index fbc800bf4719bee556dc597ad593de93b8e9e0be..8f3553515f386afcc91627a0cecd11a05d263f27 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/CredentialServiceImpl.java
@@ -22,29 +22,28 @@ public class CredentialServiceImpl implements CredentialService {
 
     private final MetadataServiceGateway gateway;
     private final Cache<UUID, UserDto> userCache;
-    private final Cache<Long, ViewDto> viewCache;
-    private final Cache<Long, DatabaseAccessDto> accessCache;
-    private final Cache<Long, TableDto> tableCache;
-    private final Cache<Long, DatabaseDto> databaseCache;
-    private final Cache<Long, ContainerDto> containerCache;
+    private final Cache<UUID, ViewDto> viewCache;
+    private final Cache<UUID, TableDto> tableCache;
+    private final Cache<UUID, DatabaseDto> databaseCache;
+    private final Cache<UUID, ContainerDto> containerCache;
+    private final Cache<UUID, DatabaseAccessDto> accessCache;
 
     @Autowired
     public CredentialServiceImpl(MetadataServiceGateway gateway, Cache<UUID, UserDto> userCache,
-                                 Cache<Long, ViewDto> viewCache, Cache<Long, DatabaseAccessDto> accessCache,
-                                 Cache<Long, TableDto> tableCache,
-                                 Cache<Long, DatabaseDto> databaseCache,
-                                 Cache<Long, ContainerDto> containerCache) {
+                                 Cache<UUID, ViewDto> viewCache, Cache<UUID, TableDto> tableCache,
+                                 Cache<UUID, DatabaseAccessDto> accessCache, Cache<UUID, DatabaseDto> databaseCache,
+                                 Cache<UUID, ContainerDto> containerCache) {
         this.gateway = gateway;
         this.userCache = userCache;
         this.viewCache = viewCache;
-        this.accessCache = accessCache;
         this.tableCache = tableCache;
+        this.accessCache = accessCache;
         this.databaseCache = databaseCache;
         this.containerCache = containerCache;
     }
 
     @Override
-    public DatabaseDto getDatabase(Long id) throws DatabaseNotFoundException, RemoteUnavailableException,
+    public DatabaseDto getDatabase(UUID id) throws DatabaseNotFoundException, RemoteUnavailableException,
             MetadataServiceException {
         final DatabaseDto cacheDatabase = databaseCache.getIfPresent(id);
         if (cacheDatabase != null) {
@@ -58,7 +57,7 @@ public class CredentialServiceImpl implements CredentialService {
     }
 
     @Override
-    public TableDto getTable(Long databaseId, Long tableId) throws RemoteUnavailableException,
+    public TableDto getTable(UUID databaseId, UUID tableId) throws RemoteUnavailableException,
             MetadataServiceException, TableNotFoundException {
         final TableDto cacheTable = tableCache.getIfPresent(tableId);
         if (cacheTable != null) {
@@ -72,13 +71,13 @@ public class CredentialServiceImpl implements CredentialService {
     }
 
     @Override
-    public void invalidateAccess(Long databaseId) {
+    public void invalidateAccess(UUID databaseId) {
         accessCache.invalidate(databaseId);
         log.debug("invalidated access for database with id {} in cache", databaseId);
     }
 
     @Override
-    public ContainerDto getContainer(Long id) throws RemoteUnavailableException, MetadataServiceException,
+    public ContainerDto getContainer(UUID id) throws RemoteUnavailableException, MetadataServiceException,
             ContainerNotFoundException {
         final ContainerDto cacheContainer = containerCache.getIfPresent(id);
         if (cacheContainer != null) {
@@ -92,7 +91,7 @@ public class CredentialServiceImpl implements CredentialService {
     }
 
     @Override
-    public ViewDto getView(Long databaseId, Long viewId) throws RemoteUnavailableException,
+    public ViewDto getView(UUID databaseId, UUID viewId) throws RemoteUnavailableException,
             MetadataServiceException, ViewNotFoundException {
         final ViewDto cacheView = viewCache.getIfPresent(viewId);
         if (cacheView != null) {
@@ -120,7 +119,7 @@ public class CredentialServiceImpl implements CredentialService {
     }
 
     @Override
-    public DatabaseAccessDto getAccess(Long databaseId, UUID userId) throws RemoteUnavailableException,
+    public DatabaseAccessDto getAccess(UUID databaseId, UUID userId) throws RemoteUnavailableException,
             MetadataServiceException, NotAllowedException {
         final DatabaseAccessDto cacheAccess = accessCache.getIfPresent(databaseId);
         if (cacheAccess != null) {
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java
index 4d899c99782f99813c3618dd4c051a2a2a0f2da8..f7e12c69f6d2937850d0e2d9a2973b1e6e7dadf2 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceMariaDbImpl.java
@@ -7,7 +7,6 @@ import at.tuwien.api.database.table.TableDto;
 import at.tuwien.api.database.table.constraints.unique.UniqueDto;
 import at.tuwien.api.database.table.internal.TableCreateDto;
 import at.tuwien.api.user.internal.UpdateUserPasswordDto;
-import at.tuwien.config.QueryConfig;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.DataMapper;
 import at.tuwien.mapper.MariaDbMapper;
@@ -32,15 +31,13 @@ import java.util.List;
 public class DatabaseServiceMariaDbImpl extends DataConnector implements DatabaseService {
 
     private final DataMapper dataMapper;
-    private final QueryConfig queryConfig;
     private final MariaDbMapper mariaDbMapper;
     private final MetadataMapper metadataMapper;
 
     @Autowired
-    public DatabaseServiceMariaDbImpl(DataMapper dataMapper, QueryConfig queryConfig, MariaDbMapper mariaDbMapper,
+    public DatabaseServiceMariaDbImpl(DataMapper dataMapper, MariaDbMapper mariaDbMapper,
                                       MetadataMapper metadataMapper) {
         this.dataMapper = dataMapper;
-        this.queryConfig = queryConfig;
         this.mariaDbMapper = mariaDbMapper;
         this.metadataMapper = metadataMapper;
     }
@@ -151,7 +148,7 @@ public class DatabaseServiceMariaDbImpl extends DataConnector implements Databas
             statement2.setString(2, view.getInternalName());
             final ResultSet resultSet2 = statement2.executeQuery();
             while (resultSet2.next()) {
-                view = dataMapper.resultSetToTable(resultSet2, view, queryConfig);
+                view = dataMapper.resultSetToTable(resultSet2, view);
             }
             connection.commit();
         } catch (SQLException e) {
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java
index 73754c9f5f2183d24f2576548b57a3f8a672b7a7..0b49804c31a8b486ccbc3878220776726909bea2 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/MetricsServicePrometheusImpl.java
@@ -8,6 +8,8 @@ import io.micrometer.core.instrument.Metrics;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.stereotype.Service;
 
+import java.util.UUID;
+
 @Log4j2
 @Service
 public class MetricsServicePrometheusImpl implements MetricsService {
@@ -21,21 +23,21 @@ public class MetricsServicePrometheusImpl implements MetricsService {
     }
 
     @Override
-    public void countTableGetData(Long databaseId, Long tableId) {
+    public void countTableGetData(UUID databaseId, UUID tableId) {
         countGetData(databaseId, tableId, null, null);
     }
 
     @Override
-    public void countSubsetGetData(Long databaseId, Long subsetId) {
+    public void countSubsetGetData(UUID databaseId, UUID subsetId) {
         countGetData(databaseId, null, subsetId, null);
     }
 
     @Override
-    public void countViewGetData(Long databaseId, Long viewId) {
+    public void countViewGetData(UUID databaseId, UUID viewId) {
         countGetData(databaseId, null, null, viewId);
     }
 
-    public void countGetData(Long databaseId, Long tableId, Long subsetId, Long viewId) {
+    public void countGetData(UUID databaseId, UUID tableId, UUID subsetId, UUID viewId) {
         Counter.builder("dbrepo.datasource.data.get")
                 .tag("uri", metadataMapper.metricToUri(metricsConfig.getBaseUrl(), databaseId, tableId, subsetId, viewId))
                 .tag("protocol", "http")
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java
index bdfdb14838a608ce87b40a94faebe52a27546a63..8adaae9c6a065296fd42ea66e5cad8328cc6e06a 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/impl/SubsetServiceMariaDbImpl.java
@@ -1,6 +1,5 @@
 package at.tuwien.service.impl;
 
-import at.tuwien.api.SortTypeDto;
 import at.tuwien.api.database.DatabaseDto;
 import at.tuwien.api.database.query.QueryDto;
 import at.tuwien.api.identifier.IdentifierBriefDto;
@@ -44,9 +43,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     }
 
     @Override
-    public Dataset<Row> getData(DatabaseDto database, String query, Instant timestamp, Long page, Long size,
-                                SortTypeDto sortDirection, String sortColumn)
-            throws QueryMalformedException, TableNotFoundException {
+    public Dataset<Row> getData(DatabaseDto database, String query) throws QueryMalformedException, TableNotFoundException {
         try {
             return sparkSession.read()
                     .format("jdbc")
@@ -68,7 +65,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     }
 
     @Override
-    public Long create(DatabaseDto database, String statement, Instant timestamp, UUID userId)
+    public UUID create(DatabaseDto database, String statement, Instant timestamp, UUID userId)
             throws QueryStoreInsertException, SQLException {
         return storeQuery(database, statement, timestamp, userId);
     }
@@ -133,14 +130,14 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     }
 
     @Override
-    public QueryDto findById(DatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException,
+    public QueryDto findById(DatabaseDto database, UUID queryId) throws QueryNotFoundException, SQLException,
             RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException {
         final ComboPooledDataSource dataSource = getDataSource(database);
         final Connection connection = dataSource.getConnection();
         try {
             final long start = System.currentTimeMillis();
             final PreparedStatement preparedStatement = connection.prepareStatement(mariaDbMapper.queryStoreFindQueryRawQuery());
-            preparedStatement.setLong(1, queryId);
+            preparedStatement.setString(1, String.valueOf(queryId));
             final ResultSet resultSet = preparedStatement.executeQuery();
             log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
             if (!resultSet.next()) {
@@ -160,10 +157,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     }
 
     @Override
-    public Long storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException,
+    public UUID storeQuery(DatabaseDto database, String query, Instant timestamp, UUID userId) throws SQLException,
             QueryStoreInsertException {
         /* save */
-        final Long queryId;
+        final UUID queryId;
         final ComboPooledDataSource dataSource = getDataSource(database);
         final Connection connection = dataSource.getConnection();
         try {
@@ -177,10 +174,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             }
             callableStatement.setString(2, query);
             callableStatement.setTimestamp(3, Timestamp.from(timestamp));
-            callableStatement.registerOutParameter(4, Types.BIGINT);
+            callableStatement.registerOutParameter(4, Types.VARCHAR);
             callableStatement.executeUpdate();
             log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
-            queryId = callableStatement.getLong(4);
+            queryId = UUID.fromString(callableStatement.getString(4));
             callableStatement.close();
             log.info("Stored query with id {} in database with name {}", queryId, database.getInternalName());
             connection.commit();
@@ -195,7 +192,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
     }
 
     @Override
-    public void persist(DatabaseDto database, Long queryId, Boolean persist) throws SQLException,
+    public void persist(DatabaseDto database, UUID queryId, Boolean persist) throws SQLException,
             QueryStorePersistException {
         final ComboPooledDataSource dataSource = getDataSource(database);
         final Connection connection = dataSource.getConnection();
@@ -204,7 +201,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer
             final long start = System.currentTimeMillis();
             final PreparedStatement preparedStatement = connection.prepareStatement(mariaDbMapper.queryStoreUpdateQueryRawQuery());
             preparedStatement.setBoolean(1, persist);
-            preparedStatement.setLong(2, queryId);
+            preparedStatement.setString(2, String.valueOf(queryId));
             preparedStatement.executeUpdate();
             log.trace("executed statement in {} ms", System.currentTimeMillis() - start);
         } catch (SQLException e) {
diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf
index 60348a8197261ce82e73cdf8b81553ba6a4ffdac..94109cf9cc991f81643a6af439d5a177bda67c77 100644
--- a/dbrepo-gateway-service/dbrepo.conf
+++ b/dbrepo-gateway-service/dbrepo.conf
@@ -52,7 +52,7 @@ server {
     listen 8080 default_server;
     server_name _;
 
-    location /dashboard/ {
+    location /dashboard {
         rewrite  ^/dashboard/(.*)  /$1 break;
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
@@ -63,7 +63,7 @@ server {
     }
 
     # Proxy Grafana Live WebSocket connections.
-    location /dashboard/api/live/ {
+    location /dashboard/api/live {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -129,7 +129,7 @@ server {
         proxy_read_timeout      90;
     }
 
-    location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export) {
+    location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/table/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|history|export)" {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -138,7 +138,7 @@ server {
         proxy_read_timeout      90;
     }
 
-    location ~ /api/database/([0-9]+)/view/([0-9]+)/(data|export) {
+    location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/(data|export)" {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -147,7 +147,7 @@ server {
         proxy_read_timeout      90;
     }
 
-    location ~ /api/database/([0-9]+)/view {
+    location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/view" {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -156,7 +156,7 @@ server {
         proxy_read_timeout      90;
     }
 
-    location ~ /api/database/([0-9]+)/subset {
+    location ~ "/api/database/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/subset" {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -165,7 +165,7 @@ server {
         proxy_read_timeout      600;
     }
 
-    location ~ /api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user) {
+    location ~ "/api/(database|concept|container|identifier|image|message|license|oai|ontology|unit|user)" {
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -174,7 +174,7 @@ server {
         proxy_read_timeout      90;
     }
 
-    location ~ /pid/([0-9]+) {
+    location ~ "/pid/([0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})" {
         rewrite /pid/(.*) /api/identifier/$1 break;
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql
index 99f5fe2c3b9da1cd57d30d64a16cdbd54073d7dd..b9055cf884bdb3d310310c52a17471504cdc6fac 100644
--- a/dbrepo-metadata-db/1_setup-schema.sql
+++ b/dbrepo-metadata-db/1_setup-schema.sql
@@ -2,390 +2,341 @@ BEGIN;
 
 CREATE TABLE IF NOT EXISTS `mdb_users`
 (
-    id               character varying(36)  NOT NULL,
-    keycloak_id      character varying(36)  NOT NULL,
-    username         character varying(255) NOT NULL,
-    firstname        character varying(255),
-    lastname         character varying(255),
-    orcid            character varying(255),
-    affiliation      character varying(255),
-    is_internal      BOOLEAN                NOT NULL DEFAULT FALSE,
-    mariadb_password character varying(255) NOT NULL,
-    theme            character varying(255) NOT NULL default ('light'),
-    language         character varying(3)   NOT NULL default ('en'),
-    PRIMARY KEY (id),
-    UNIQUE (keycloak_id),
-    UNIQUE (username)
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    keycloak_id      VARCHAR(36)  NOT NULL,
+    username         VARCHAR(255) NOT NULL,
+    firstname        VARCHAR(255),
+    lastname         VARCHAR(255),
+    orcid            VARCHAR(255),
+    affiliation      VARCHAR(255),
+    is_internal      BOOLEAN      NOT NULL DEFAULT FALSE,
+    mariadb_password VARCHAR(255) NOT NULL,
+    theme            VARCHAR(255) NOT NULL DEFAULT ('light'),
+    language         VARCHAR(3)   NOT NULL DEFAULT ('en'),
+    PRIMARY KEY (`id`),
+    UNIQUE (`keycloak_id`),
+    UNIQUE (`username`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_images`
 (
-    id            SERIAL,
-    registry      character varying(255) NOT NULL DEFAULT 'docker.io',
-    name          character varying(255) NOT NULL,
-    version       character varying(255) NOT NULL,
-    default_port  integer                NOT NULL,
-    dialect       character varying(255) NOT NULL,
-    driver_class  character varying(255) NOT NULL,
-    jdbc_method   character varying(255) NOT NULL,
-    is_default    BOOLEAN                NOT NULL DEFAULT FALSE,
-    created       timestamp              NOT NULL DEFAULT NOW(),
-    last_modified timestamp,
-    PRIMARY KEY (id),
-    UNIQUE (name, version),
-    UNIQUE (is_default)
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    registry      VARCHAR(255) NOT NULL DEFAULT 'docker.io',
+    name          VARCHAR(255) NOT NULL,
+    version       VARCHAR(255) NOT NULL,
+    DEFAULT_port  INT          NOT NULL,
+    dialect       VARCHAR(255) NOT NULL,
+    driver_class  VARCHAR(255) NOT NULL,
+    jdbc_method   VARCHAR(255) NOT NULL,
+    is_DEFAULT    BOOLEAN      NOT NULL DEFAULT FALSE,
+    created       TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified TIMESTAMP,
+    PRIMARY KEY (`id`),
+    UNIQUE (`name`, `version`),
+    UNIQUE (`is_DEFAULT`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_containers`
 (
-    id                  SERIAL,
-    internal_name       character varying(255) NOT NULL,
-    name                character varying(255) NOT NULL,
-    host                character varying(255) NOT NULL,
-    port                integer                NOT NULL default 3306,
-    ui_host             character varying(255) NOT NULL default host,
-    ui_port             integer                NOT NULL default port,
-    ui_additional_flags text,
-    sidecar_host        character varying(255),
-    sidecar_port        integer,
-    image_id            bigint                 NOT NULL,
-    created             timestamp              NOT NULL DEFAULT NOW(),
-    last_modified       timestamp,
-    privileged_username character varying(255) NOT NULL,
-    privileged_password character varying(255) NOT NULL,
-    quota               integer                NOT NULL DEFAULT 50,
-    PRIMARY KEY (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_data`
-(
-    ID           SERIAL,
-    PROVENANCE   text,
-    FileEncoding text,
-    FileType     character varying(100),
-    Version      text,
-    Seperator    text,
-    PRIMARY KEY (ID)
+    id                  VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    internal_name       VARCHAR(255) NOT NULL,
+    name                VARCHAR(255) NOT NULL,
+    host                VARCHAR(255) NOT NULL,
+    port                INT          NOT NULL DEFAULT 3306,
+    ui_host             VARCHAR(255) NOT NULL DEFAULT host,
+    ui_port             INT          NOT NULL DEFAULT port,
+    ui_additional_flags TEXT,
+    image_id            VARCHAR(36)  NOT NULL,
+    created             TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified       TIMESTAMP,
+    privileged_username VARCHAR(255) NOT NULL,
+    privileged_password VARCHAR(255) NOT NULL,
+    quota               INT,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES mdb_images (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_licenses`
 (
-    identifier  character varying(255) NOT NULL,
-    uri         text                   NOT NULL,
-    description text                   NOT NULL,
-    PRIMARY KEY (identifier),
+    identifier  VARCHAR(255) NOT NULL,
+    uri         TEXT         NOT NULL,
+    description TEXT         NOT NULL,
+    PRIMARY KEY (`identifier`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_databases`
 (
-    id               SERIAL,
-    cid              BIGINT UNSIGNED        NOT NULL,
-    name             character varying(255) NOT NULL,
-    internal_name    character varying(255) NOT NULL,
-    exchange_name    character varying(255) NOT NULL,
-    description      text,
-    engine           character varying(20),
-    is_public        boolean                NOT NULL DEFAULT TRUE,
-    is_schema_public boolean                NOT NULL DEFAULT TRUE,
-    image            longblob,
-    owned_by         character varying(36),
-    contact_person   character varying(36),
-    created          timestamp              NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    PRIMARY KEY (id),
-    FOREIGN KEY (cid) REFERENCES mdb_containers (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id),
-    FOREIGN KEY (contact_person) REFERENCES mdb_users (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_databases_subjects`
-(
-    dbid     BIGINT                 NOT NULL,
-    subjects character varying(255) NOT NULL,
-    PRIMARY KEY (dbid, subjects)
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    cid              VARCHAR(36)  NOT NULL,
+    name             VARCHAR(255) NOT NULL,
+    internal_name    VARCHAR(255) NOT NULL,
+    exchange_name    VARCHAR(255) NOT NULL,
+    description      TEXT,
+    engine           VARCHAR(20),
+    is_public        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    image            LONGBLOB,
+    owned_by         VARCHAR(36)  NOT NULL,
+    contact_person   VARCHAR(36)  NOT NULL,
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`cid`) REFERENCES mdb_containers (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`),
+    FOREIGN KEY (`contact_person`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_tables`
 (
-    ID               SERIAL,
-    tDBID            BIGINT UNSIGNED       NOT NULL,
-    tName            VARCHAR(64)           NOT NULL,
-    internal_name    VARCHAR(64)           NOT NULL,
-    queue_name       VARCHAR(255)          NOT NULL,
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tDBID            VARCHAR(36)  NOT NULL,
+    tName            VARCHAR(64)  NOT NULL,
+    internal_name    VARCHAR(64)  NOT NULL,
+    queue_name       VARCHAR(255) NOT NULL,
     routing_key      VARCHAR(255),
     tDescription     VARCHAR(2048),
     num_rows         BIGINT,
     data_length      BIGINT,
     max_data_length  BIGINT,
     avg_row_length   BIGINT,
-    `separator`      CHAR(1),
-    quote            CHAR(1),
-    element_null     VARCHAR(50),
-    skip_lines       BIGINT,
-    element_true     VARCHAR(50),
-    element_false    VARCHAR(50),
-    Version          TEXT,
-    created          timestamp             NOT NULL DEFAULT NOW(),
-    versioned        boolean               not null default true,
-    is_public        boolean               not null default true,
-    is_schema_public boolean               not null default true,
-    owned_by         character varying(36) NOT NULL,
-    last_modified    timestamp,
-    PRIMARY KEY (ID),
-    UNIQUE (tDBID, internal_name),
-    FOREIGN KEY (tDBID) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    versioned        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_public        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    owned_by         VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    last_modified    TIMESTAMP,
+    PRIMARY KEY (`ID`),
+    UNIQUE (`tDBID`, `internal_name`),
+    FOREIGN KEY (`tDBID`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns`
 (
-    ID               SERIAL,
-    tID              BIGINT UNSIGNED NOT NULL,
+    id               VARCHAR(36)     NOT NULL DEFAULT UUID(),
+    tID              VARCHAR(36)     NOT NULL,
     cName            VARCHAR(64),
     internal_name    VARCHAR(64)     NOT NULL,
     Datatype         ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','SERIAL','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'),
     length           BIGINT UNSIGNED NULL,
-    ordinal_position INTEGER         NOT NULL,
+    ordinal_position INT             NOT NULL,
     index_length     BIGINT UNSIGNED NULL,
     description      VARCHAR(2048),
     size             BIGINT UNSIGNED,
     d                BIGINT UNSIGNED,
-    is_null_allowed  BOOLEAN         NOT NULL DEFAULT true,
+    is_null_allowed  BOOLEAN         NOT NULL DEFAULT TRUE,
     val_min          NUMERIC         NULL,
     val_max          NUMERIC         NULL,
     mean             NUMERIC         NULL,
     median           NUMERIC         NULL,
     std_dev          Numeric         NULL,
-    created          timestamp       NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE,
-    PRIMARY KEY (ID),
-    UNIQUE (tID, internal_name)
+    created          TIMESTAMP       NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    FOREIGN KEY (`tID`) REFERENCES mdb_tables (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`ID`),
+    UNIQUE (`tID`, `internal_name`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_enums`
 (
-    id        SERIAL,
-    column_id BIGINT UNSIGNED        NOT NULL,
-    value     CHARACTER VARYING(255) NOT NULL,
-    FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE,
-    PRIMARY KEY (id)
+    id        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    column_id VARCHAR(36)  NOT NULL,
+    value     VARCHAR(255) NOT NULL,
+    FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_sets`
 (
-    id        SERIAL,
-    column_id BIGINT UNSIGNED        NOT NULL,
-    value     CHARACTER VARYING(255) NOT NULL,
-    FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE,
-    PRIMARY KEY (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_columns_nom`
-(
-    cID           BIGINT UNSIGNED,
-    tID           BIGINT UNSIGNED,
-    maxlength     INTEGER,
-    last_modified timestamp,
-    created       timestamp NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_columns_cat`
-(
-    cID           BIGINT UNSIGNED,
-    tID           BIGINT UNSIGNED,
-    num_cat       INTEGER,
-    --    cat_array     TEXT[],
-    last_modified timestamp,
-    created       timestamp NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    id        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    column_id VARCHAR(36)  NOT NULL,
+    value     VARCHAR(255) NOT NULL,
+    FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key`
 (
-    fkid      SERIAL,
-    tid       BIGINT UNSIGNED NOT NULL,
-    rtid      BIGINT UNSIGNED NOT NULL,
-    name      VARCHAR(255)    NOT NULL,
-    on_update VARCHAR(50)     NULL,
-    on_delete VARCHAR(50)     NULL,
-    position  INT             NULL,
-    PRIMARY KEY (fkid),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE,
-    FOREIGN KEY (rtid) REFERENCES mdb_tables (id)
+    fkid      VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tid       VARCHAR(36)  NOT NULL,
+    rtid      VARCHAR(36)  NOT NULL,
+    name      VARCHAR(255) NOT NULL,
+    on_update VARCHAR(50)  NULL,
+    on_delete VARCHAR(50)  NULL,
+    position  INT          NULL,
+    PRIMARY KEY (`fkid`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE,
+    FOREIGN KEY (`rtid`) REFERENCES mdb_tables (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key`
 (
-    pkid SERIAL,
-    tID  BIGINT UNSIGNED NOT NULL,
-    cid  BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (pkid),
-    FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE,
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE
+    pkid VARCHAR(36) NOT NULL DEFAULT UUID(),
+    tID  VARCHAR(36) NOT NULL,
+    cid  VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`pkid`),
+    FOREIGN KEY (`tID`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE,
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference`
 (
-    id   SERIAL,
-    fkid BIGINT UNSIGNED NOT NULL,
-    cid  BIGINT UNSIGNED NOT NULL,
-    rcid BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (id),
+    id   VARCHAR(36) NOT NULL DEFAULT UUID(),
+    fkid VARCHAR(36) NOT NULL,
+    cid  VARCHAR(36) NOT NULL,
+    rcid VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`id`),
     UNIQUE (fkid, cid, rcid),
-    FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE,
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id),
-    FOREIGN KEY (rcid) REFERENCES mdb_columns (id)
+    FOREIGN KEY (`fkid`) REFERENCES mdb_constraints_foreign_key (`fkid`) ON UPDATE CASCADE,
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`),
+    FOREIGN KEY (`rcid`) REFERENCES mdb_columns (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_unique`
 (
-    uid      SERIAL,
-    name     VARCHAR(255)    NOT NULL,
-    tid      BIGINT UNSIGNED NOT NULL,
-    position INT             NULL,
-    PRIMARY KEY (uid),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE
+    uid      VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    name     VARCHAR(255) NOT NULL,
+    tid      VARCHAR(36)  NOT NULL,
+    position INT          NULL,
+    PRIMARY KEY (`uid`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns`
 (
-    id  SERIAL,
-    uid BIGINT UNSIGNED NOT NULL,
-    cid BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid),
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE
+    id  VARCHAR(36) NOT NULL DEFAULT UUID(),
+    uid VARCHAR(36) NOT NULL,
+    cid VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`uid`) REFERENCES mdb_constraints_unique (`uid`),
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_checks`
 (
-    id     SERIAL,
-    tid    BIGINT UNSIGNED NOT NULL,
-    checks VARCHAR(255)    NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE
+    id     VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tid    VARCHAR(36)  NOT NULL,
+    checks VARCHAR(255) NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 
 CREATE TABLE IF NOT EXISTS `mdb_concepts`
 (
-    id          SERIAL,
-    uri         text         not null,
+    id          VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    uri         TEXT         NOT NULL,
     name        VARCHAR(255) null,
     description TEXT         null,
-    created     timestamp    NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (id),
+    created     TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (`id`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_units`
 (
-    id          SERIAL,
-    uri         text         not null,
+    id          VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    uri         TEXT         NOT NULL,
     name        VARCHAR(255) null,
     description TEXT         null,
-    created     timestamp    NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (id),
+    created     TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (`id`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_concepts`
 (
-    id      BIGINT UNSIGNED NOT NULL,
-    cID     BIGINT UNSIGNED NOT NULL,
-    created timestamp       NOT NULL DEFAULT NOW(),
+    id      VARCHAR(36) NOT NULL DEFAULT UUID(),
+    cID     VARCHAR(36) NOT NULL,
+    created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cid),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_units`
 (
-    id      BIGINT UNSIGNED NOT NULL,
-    cID     BIGINT UNSIGNED NOT NULL,
-    created timestamp       NOT NULL DEFAULT NOW(),
+    id      VARCHAR(36) NOT NULL DEFAULT UUID(),
+    cID     VARCHAR(36) NOT NULL,
+    created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_view`
 (
-    id               SERIAL,
-    vdbid            BIGINT UNSIGNED       NOT NULL,
-    vName            VARCHAR(64)           NOT NULL,
-    internal_name    VARCHAR(64)           NOT NULL,
-    Query            TEXT                  NOT NULL,
-    query_hash       VARCHAR(255)          NOT NULL,
-    Public           BOOLEAN               NOT NULL DEFAULT TRUE,
-    is_schema_public boolean               NOT NULL DEFAULT TRUE,
-    InitialView      BOOLEAN               NOT NULL,
-    created          timestamp             NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    owned_by         character varying(36) NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (vdbid) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_banner_messages`
-(
-    id            SERIAL,
-    type          ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL default 'INFO',
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    vdbid            VARCHAR(36)  NOT NULL,
+    vName            VARCHAR(64)  NOT NULL,
+    internal_name    VARCHAR(64)  NOT NULL,
+    Query            TEXT         NOT NULL,
+    query_hash       VARCHAR(255) NOT NULL,
+    Public           BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    InitialView      BOOLEAN      NOT NULL,
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    owned_by         VARCHAR(36)  NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`vdbid`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
+) WITH SYSTEM VERSIONING;
+
+CREATE TABLE IF NOT EXISTS `mdb_messages`
+(
+    id            VARCHAR(36)                       NOT NULL DEFAULT UUID(),
+    type          ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL DEFAULT 'INFO',
     message       TEXT                              NOT NULL,
     link          TEXT                              NULL,
-    link_text     VARCHAR(255)                      NULL,
-    display_start timestamp                         NULL,
-    display_end   timestamp                         NULL,
-    PRIMARY KEY (id)
+    link_TEXT     VARCHAR(255)                      NULL,
+    display_start TIMESTAMP                         NULL,
+    display_end   TIMESTAMP                         NULL,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_ontologies`
 (
-    id              SERIAL,
-    prefix          VARCHAR(8) NOT NULL,
-    uri             TEXT       NOT NULL,
+    id              VARCHAR(36) NOT NULL DEFAULT UUID(),
+    prefix          VARCHAR(8)  NOT NULL,
+    uri             TEXT        NOT NULL,
     uri_pattern     TEXT,
-    sparql_endpoint TEXT       NULL,
-    rdf_path        TEXT       NULL,
-    last_modified   timestamp,
-    created         timestamp  NOT NULL DEFAULT NOW(),
-    UNIQUE (prefix),
+    sparql_endpoint TEXT        NULL,
+    rdf_path        TEXT        NULL,
+    last_modified   TIMESTAMP,
+    created         TIMESTAMP   NOT NULL DEFAULT NOW(),
+    UNIQUE (`prefix`),
     UNIQUE (uri(200)),
-    PRIMARY KEY (id)
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_view_columns`
 (
-    id               SERIAL,
-    view_id          BIGINT UNSIGNED NOT NULL,
+    id               VARCHAR(36) NOT NULL DEFAULT UUID(),
+    view_id          VARCHAR(36) NOT NULL,
     name             VARCHAR(64),
-    internal_name    VARCHAR(64)     NOT NULL,
+    internal_name    VARCHAR(64) NOT NULL,
     column_type      ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'),
-    ordinal_position INTEGER         NOT NULL,
+    ordinal_position INT         NOT NULL,
     size             BIGINT UNSIGNED,
     d                BIGINT UNSIGNED,
-    is_null_allowed  BOOLEAN         NOT NULL DEFAULT true,
-    PRIMARY KEY (id),
-    FOREIGN KEY (view_id) REFERENCES mdb_view (id) ON DELETE CASCADE,
+    is_null_allowed  BOOLEAN     NOT NULL DEFAULT TRUE,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`view_id`) REFERENCES mdb_view (`id`) ON DELETE CASCADE,
     UNIQUE (view_id, internal_name)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifiers`
 (
-    id                SERIAL,
-    dbid              BIGINT UNSIGNED                              NOT NULL,
-    qid               BIGINT UNSIGNED,
-    vid               BIGINT UNSIGNED,
-    tid               BIGINT UNSIGNED,
+    id                VARCHAR(36)                                  NOT NULL DEFAULT UUID(),
+    dbid              VARCHAR(36)                                  NOT NULL,
+    qid               VARCHAR(36)                                  NOT NULL,
+    vid               VARCHAR(36)                                  NOT NULL,
+    tid               VARCHAR(36)                                  NOT NULL,
     publisher         VARCHAR(255)                                 NOT NULL,
     language          VARCHAR(2),
-    publication_year  INTEGER                                      NOT NULL,
-    publication_month INTEGER,
-    publication_day   INTEGER,
+    publication_year  INT                                          NOT NULL,
+    publication_month INT,
+    publication_day   INT,
     identifier_type   ENUM ('DATABASE', 'SUBSET', 'VIEW', 'TABLE') NOT NULL,
     status            ENUM ('DRAFT', 'PUBLISHED')                  NOT NULL DEFAULT ('PUBLISHED'),
     query             TEXT,
@@ -398,153 +349,146 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers`
     created           TIMESTAMP                                    NOT NULL DEFAULT NOW(),
     owned_by          VARCHAR(36)                                  NOT NULL,
     last_modified     TIMESTAMP,
-    PRIMARY KEY (id), /* must be a single id from persistent identifier concept */
-    FOREIGN KEY (dbid) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
+    PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */
+    FOREIGN KEY (`dbid`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses`
 (
-    pid        BIGINT UNSIGNED NOT NULL,
-    license_id VARCHAR(255)    NOT NULL,
+    pid        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    license_id VARCHAR(255) NOT NULL,
     PRIMARY KEY (pid, license_id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id),
-    FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier)
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`),
+    FOREIGN KEY (`license_id`) REFERENCES mdb_licenses (`identifier`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_titles`
 (
-    id         SERIAL,
-    pid        BIGINT UNSIGNED NOT NULL,
-    title      text            NOT NULL,
+    id         VARCHAR(36) NOT NULL DEFAULT UUID(),
+    pid        VARCHAR(36) NOT NULL,
+    title      TEXT        NOT NULL,
     title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'),
     language   VARCHAR(2),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_funders`
 (
-    id                     SERIAL,
-    pid                    BIGINT UNSIGNED NOT NULL,
-    funder_name            VARCHAR(255)    NOT NULL,
+    id                     VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    pid                    VARCHAR(36)  NOT NULL,
+    funder_name            VARCHAR(255) NOT NULL,
     funder_identifier      TEXT,
     funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'),
-    scheme_uri             text,
+    scheme_uri             TEXT,
     award_number           VARCHAR(255),
-    award_title            text,
+    award_title            TEXT,
     language               VARCHAR(255),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions`
 (
-    id               SERIAL,
-    pid              BIGINT UNSIGNED NOT NULL,
-    description      text            NOT NULL,
+    id               VARCHAR(36) NOT NULL DEFAULT UUID(),
+    pid              VARCHAR(36) NOT NULL,
+    description      TEXT        NOT NULL,
     description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'),
     language         VARCHAR(2),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
-CREATE TABLE IF NOT EXISTS `mdb_related_identifiers`
+CREATE TABLE IF NOT EXISTS `mdb_identifier_related`
 (
-    id       SERIAL,
-    pid      BIGINT UNSIGNED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      NOT NULL,
-    value    varchar(255)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         NOT NULL,
+    id       VARCHAR(36)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          NOT NULL DEFAULT UUID(),
+    pid      VARCHAR(36)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          NOT NULL DEFAULT UUID(),
+    value    VARCHAR(255)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         NOT NULL,
     type     ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID')                                                                                                                                                                                                                                                                                                                                                                                                                             NOT NULL,
     relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL,
-    PRIMARY KEY (id), /* must be a single id from persistent identifier concept */
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id),
+    PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`),
     UNIQUE (pid, value)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_creators`
 (
-    id                                SERIAL,
-    pid                               BIGINT UNSIGNED NOT NULL,
-    given_names                       text,
-    family_name                       text,
-    creator_name                      VARCHAR(255)    NOT NULL,
-    name_type                         ENUM ('PERSONAL', 'ORGANIZATIONAL') default 'PERSONAL',
-    name_identifier                   text,
+    id                                VARCHAR(36)  NOT NULL               DEFAULT UUID(),
+    pid                               VARCHAR(36)  NOT NULL,
+    given_names                       TEXT,
+    family_name                       TEXT,
+    creator_name                      VARCHAR(255) NOT NULL,
+    name_type                         ENUM ('PERSONAL', 'ORGANIZATIONAL') DEFAULT 'PERSONAL',
+    name_identifier                   TEXT,
     name_identifier_scheme            ENUM ('ROR', 'GRID', 'ISNI', 'ORCID'),
-    name_identifier_scheme_uri        text,
+    name_identifier_scheme_uri        TEXT,
     affiliation                       VARCHAR(255),
-    affiliation_identifier            text,
+    affiliation_identifier            TEXT,
     affiliation_identifier_scheme     ENUM ('ROR', 'GRID', 'ISNI'),
-    affiliation_identifier_scheme_uri text,
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_update`
-(
-    uUserID character varying(255) NOT NULL,
-    uDBID   BIGINT UNSIGNED        NOT NULL,
-    created timestamp              NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (uUserID, uDBID),
-    FOREIGN KEY (uDBID) REFERENCES mdb_databases (id)
+    affiliation_identifier_scheme_uri TEXT,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_access`
 (
-    aUserID  character varying(255) NOT NULL,
-    aDBID    BIGINT UNSIGNED REFERENCES mdb_databases (id),
+    aUserID  VARCHAR(255) NOT NULL,
+    aDBID    VARCHAR(36)  NOT NULL,
     attime   TIMESTAMP,
     download BOOLEAN,
-    created  timestamp              NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (aUserID, aDBID)
+    created  TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (aUserID, aDBID),
+    FOREIGN KEY (`aDBID`) REFERENCES mdb_databases (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_have_access`
 (
-    user_id     character varying(36)                   NOT NULL,
-    database_id BIGINT UNSIGNED REFERENCES mdb_databases (id),
+    user_id     VARCHAR(36)                             NOT NULL,
+    database_id VARCHAR(36)                             NOT NULL,
     access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL,
-    created     timestamp                               NOT NULL DEFAULT NOW(),
+    created     TIMESTAMP                               NOT NULL DEFAULT NOW(),
     PRIMARY KEY (user_id, database_id),
-    FOREIGN KEY (user_id) REFERENCES mdb_users (id)
+    FOREIGN KEY (`database_id`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`user_id`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_image_types`
 (
-    id            SERIAL,
-    image_id      BIGINT UNSIGNED NOT NULL,
-    display_name  varchar(255)    NOT NULL,
-    value         varchar(255)    NOT NULL,
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    image_id      VARCHAR(36)  NOT NULL,
+    display_name  VARCHAR(255) NOT NULL,
+    value         VARCHAR(255) NOT NULL,
     size_min      INT UNSIGNED,
     size_max      INT UNSIGNED,
-    size_default  INT UNSIGNED,
-    size_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no size',
+    size_DEFAULT  INT UNSIGNED,
+    size_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no size',
     size_step     INT UNSIGNED,
     d_min         INT UNSIGNED,
     d_max         INT UNSIGNED,
-    d_default     INT UNSIGNED,
-    d_required    BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no d',
+    d_DEFAULT     INT UNSIGNED,
+    d_required    BOOLEAN comment 'When setting NULL, the service assumes the data type has no d',
     d_step        INT UNSIGNED,
     type_hint     TEXT,
     data_hint     TEXT,
-    documentation TEXT            NOT NULL,
-    is_generated  BOOLEAN         NOT NULL,
-    is_quoted     BOOLEAN         NOT NULL,
-    is_buildable  BOOLEAN         NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`),
-    UNIQUE (value)
+    documentation TEXT         NOT NULL,
+    is_generated  BOOLEAN      NOT NULL,
+    is_quoted     BOOLEAN      NOT NULL,
+    is_buildable  BOOLEAN      NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`),
+    UNIQUE (`value`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_image_operators`
 (
-    id            SERIAL,
-    image_id      BIGINT UNSIGNED NOT NULL,
-    display_name  varchar(255)    NOT NULL,
-    value         varchar(255)    NOT NULL,
-    documentation TEXT            NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`),
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    image_id      VARCHAR(36)  NOT NULL,
+    display_name  VARCHAR(255) NOT NULL,
+    value         VARCHAR(255) NOT NULL,
+    documentation TEXT         NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`),
     UNIQUE (image_id, value)
 ) WITH SYSTEM VERSIONING;
 
@@ -558,110 +502,121 @@ VALUES ('CC0-1.0', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
        ('CC-BY-4.0', 'https://creativecommons.org/licenses/by/4.0/legalcode',
         'The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.');
 
-INSERT INTO `mdb_images` (name, registry, version, default_port, dialect, driver_class, jdbc_method)
-VALUES ('mariadb', 'docker.io', '11.1.3', 3306, 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver',
-        'mariadb');
+INSERT INTO `mdb_images` (id, name, registry, version, DEFAULT_port, dialect, driver_class, jdbc_method)
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'mariadb', 'docker.io', '11.1.3', 3306,
+        'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', 'mariadb');
 
-INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_default, size_required,
-                               size_step, d_min, d_max, d_default, d_required, d_step, type_hint, data_hint,
+INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_DEFAULT, size_required,
+                               size_step, d_min, d_max, d_DEFAULT, d_required, d_step, type_hint, data_hint,
                                documentation, is_quoted, is_buildable, is_generated)
-VALUES (1, 'BIGINT(size)', 'bigint', 0, null, null, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bigint/', false, true, false),
-       (1, 'BINARY(size)', 'binary', 0, 255, 255, true, 1, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/binary/', false, true, false),
-       (1, 'BIT(size)', 'bit', 0, 64, null, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bit/', false, true, false),
-       (1, 'BLOB(size)', 'blob', 0, 65535, null, false, 1, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/blob/', false, false, false),
-       (1, 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bool/', false, true, false),
-       (1, 'CHAR(size)', 'char', 0, 255, 255, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/char/', false, true, false),
-       (1, 'DATE', 'date', null, null, null, null, null, null, null, null, null, null,
-        'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD',
-        'https://mariadb.com/kb/en/date/', true, true, false),
-       (1, 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, null, null,
-        'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9',
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIGINT(size)', 'bigint', 0, null, null, FALSE, 1, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/bigint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BINARY(size)', 'binary', 0, 255, 255, TRUE, 1, null, null, null, null,
+        null, 'size in Bytes', null, 'https://mariadb.com/kb/en/binary/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIT(size)', 'bit', 0, 64, null, FALSE, 1, null, null, null, null, null,
+        null, null, 'https://mariadb.com/kb/en/bit/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BLOB(size)', 'blob', 0, 65535, null, FALSE, 1, null, null, null, null,
+        null, 'size in Bytes', null, 'https://mariadb.com/kb/en/blob/', FALSE, FALSE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BOOL', 'bool', null, null, null, null, null, null, null, null, null,
+        null, null, null, 'https://mariadb.com/kb/en/bool/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'CHAR(size)', 'char', 0, 255, 255, FALSE, 1, null, null, null, null,
+        null, null, null, 'https://mariadb.com/kb/en/char/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATE', 'date', null, null, null, null, null, null, null, null, null,
+        null, 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD',
+        'https://mariadb.com/kb/en/date/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null,
+        null, null, 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9',
         'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD',
-        'https://mariadb.com/kb/en/datetime/', true, true, false),
-       (1, 'DECIMAL(size, d)', 'decimal', 0, 65, null, false, 1, 0, 38, null, false, null, null, null,
-        'https://mariadb.com/kb/en/decimal/', false, true, false),
-       (1, 'DOUBLE(size, d)', 'double', null, null, null, false, null, null, null, null, false, null, null, null,
-        'https://mariadb.com/kb/en/double/', false, true, false),
-       (1, 'ENUM(v1,v2,...)', 'enum', null, null, null, null, null, null, null, null, null, null, null,
-        'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/enum/', true, true, false),
-       (1, 'FLOAT(size)', 'float', null, null, null, false, null, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/float/', false, true, false),
-       (1, 'INT(size)', 'int', null, null, null, false, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/int/', false, true, false),
-       (1, 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null,
-        'https://mariadb.com/kb/en/longblob/', false, true, false),
-       (1, 'LONGTEXT', 'longtext', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null,
-        'https://mariadb.com/kb/en/longtext/', true, true, false),
-       (1, 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, null, null, null, 'max. 15.999 MiB',
-        null, 'https://mariadb.com/kb/en/mediumblob/', false, true, false),
-       (1, 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/mediumint/', false, true, false),
-       (1, 'MEDIUMTEXT', 'mediumtext', null, null, null, null, null, null, null, null, null, null, 'size in Bytes',
-        null, 'https://mariadb.com/kb/en/mediumtext/', true, true, false),
-       (1, 'SERIAL', 'serial', null, null, null, null, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/bigint/', true, true, true),
-       (1, 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, null, null, null,
-        'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', true, true, false),
-       (1, 'SMALLINT(size)', 'smallint', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes',
-        null, 'https://mariadb.com/kb/en/smallint/', false, true, false),
-       (1, 'TEXT(size)', 'text', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/text/', true, true, false),
-       (1, 'TIME(fsp)', 'time', 0, 6, 0, false, null, null, null, null, null, null,
+        'https://mariadb.com/kb/en/datetime/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DECIMAL(size, d)', 'decimal', 0, 65, null, FALSE, 1, 0, 38, null,
+        FALSE, null, null, null, 'https://mariadb.com/kb/en/decimal/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DOUBLE(size, d)', 'double', null, null, null, FALSE, null, null, null,
+        null, FALSE, null, null, null, 'https://mariadb.com/kb/en/double/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ENUM(v1,v2,...)', 'ENUM', null, null, null, null, null, null, null,
+        null, null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/ENUM/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'FLOAT(size)', 'float', null, null, null, FALSE, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/float/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'INT(size)', 'int', null, null, null, FALSE, null, null, null, null,
+        null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/int/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null,
+        null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longblob/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGTEXT', 'longTEXT', null, null, null, null, null, null, null, null,
+        null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null,
+        null, null, null, 'max. 15.999 MiB', null, 'https://mariadb.com/kb/en/mediumblob/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMTEXT', 'mediumTEXT', null, null, null, null, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SERIAL', 'serial', null, null, null, null, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/bigint/', TRUE, TRUE, TRUE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null,
+        null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SMALLINT(size)', 'smallint', 0, null, null, FALSE, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/smallint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TEXT(size)', 'TEXT', 0, null, null, FALSE, null, null, null, null,
+        null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/TEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIME(fsp)', 'time', 0, 6, 0, FALSE, null, null, null, null, null, null,
         'fsp=microsecond precision, min. 0, max. 6', 'e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S',
-        'https://mariadb.com/kb/en/time/', true, true, false),
-       (1, 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, false, null, null, null, null, null, null,
-        'fsp=microsecond precision, min. 0, max. 6',
+        'https://mariadb.com/kb/en/time/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, FALSE, null, null, null, null,
+        null, null, 'fsp=microsecond precision, min. 0, max. 6',
         'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD',
-        'https://mariadb.com/kb/en/timestamp/', true, true, false),
-       (1, 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, null, null, null,
-        'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', false, true, false),
-       (1, 'TINYINT(size)', 'tinyint', 0, null, null, false, null, null, null, null, null, null, null,
-        'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', false, true, false),
-       (1, 'TINYTEXT', 'tinytext', null, null, null, null, null, null, null, null, null, null, null,
-        'max. 255 characters', 'https://mariadb.com/kb/en/tinytext/', true, true, false),
-       (1, 'YEAR', 'year', 2, 4, null, false, 2, null, null, null, null, null, 'min. 1901, max. 2155', 'e.g. YYYY, YY',
-        'https://mariadb.com/kb/en/year/', false, true, false),
-       (1, 'VARBINARY(size)', 'varbinary', 0, null, null, true, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/varbinary/', false, true, false),
-       (1, 'VARCHAR(size)', 'varchar', 0, 65532, 255, true, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/varchar/', false, true, false);
+        'https://mariadb.com/kb/en/timestamp/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null,
+        null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', FALSE,
+        TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYINT(size)', 'tinyint', 0, null, null, FALSE, null, null, null,
+        null, null, null, null, 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYTEXT', 'tinyTEXT', null, null, null, null, null, null, null, null,
+        null, null, null, 'max. 255 characters', 'https://mariadb.com/kb/en/tinyTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'YEAR', 'year', 2, 4, null, FALSE, 2, null, null, null, null, null,
+        'min. 1901, max. 2155', 'e.g. YYYY, YY', 'https://mariadb.com/kb/en/year/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARBINARY(size)', 'varbinary', 0, null, null, TRUE, null, null, null,
+        null, null, null, null, null, 'https://mariadb.com/kb/en/varbinary/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARCHAR(size)', 'VARCHAR', 0, 65532, 255, TRUE, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/VARCHAR/', FALSE, TRUE, FALSE);
+
 
 INSERT INTO `mdb_image_operators` (image_id, display_name, value, documentation)
-VALUES (1, 'Equal operator', '=', 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'),
-       (1, 'NULL-safe equal operator', '<=>', 'https://mariadb.com/kb/en/null-safe-equal/'),
-       (1, 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'),
-       (1, 'Less than or equal operator', '<=', 'https://mariadb.com/kb/en/less-than-or-equal/'),
-       (1, 'Greater-than operator', '>', 'https://mariadb.com/kb/en/greater-than/'),
-       (1, 'Greater than or equal operator', '>=', 'https://mariadb.com/kb/en/greater-than-or-equal/'),
-       (1, 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'),
-       (1, 'Addition operator', '+', 'https://mariadb.com/kb/en/addition-operator/'),
-       (1, 'Division operator', '/', 'https://mariadb.com/kb/en/division-operator/'),
-       (1, 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'),
-       (1, 'Multiplication operator', '*', 'https://mariadb.com/kb/en/multiplication-operator/'),
-       (1, 'Subtraction operator', '-', 'https://mariadb.com/kb/en/subtraction-operator-/'),
-       (1, 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'),
-       (1, 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'),
-       (1, 'IN', 'IN', 'https://mariadb.com/kb/en/in/'),
-       (1, 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'),
-       (1, 'IS', 'IS', 'https://mariadb.com/kb/en/is/'),
-       (1, 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'),
-       (1, 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'),
-       (1, 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'),
-       (1, 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'),
-       (1, 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'),
-       (1, 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'),
-       (1, 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'),
-       (1, 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'),
-       (1, 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'),
-       (1, 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'),
-       (1, 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'),
-       (1, 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/');
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Equal operator', '=',
+        'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NULL-safe equal operator', '<=>',
+        'https://mariadb.com/kb/en/null-safe-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less than or equal operator', '<=',
+        'https://mariadb.com/kb/en/less-than-or-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater-than operator', '>',
+        'https://mariadb.com/kb/en/greater-than/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater than or equal operator', '>=',
+        'https://mariadb.com/kb/en/greater-than-or-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Addition operator', '+',
+        'https://mariadb.com/kb/en/addition-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Division operator', '/',
+        'https://mariadb.com/kb/en/division-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Multiplication operator', '*',
+        'https://mariadb.com/kb/en/multiplication-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Subtraction operator', '-',
+        'https://mariadb.com/kb/en/subtraction-operator-/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IN', 'IN', 'https://mariadb.com/kb/en/in/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS', 'IS', 'https://mariadb.com/kb/en/is/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/');
 
 INSERT
 INTO `mdb_ontologies` (prefix, uri, uri_pattern, sparql_endpoint, rdf_path)
diff --git a/dbrepo-metadata-db/2_setup-data.sql b/dbrepo-metadata-db/2_setup-data.sql
index e806e1e181dbdcc3f0e4e29f837bffac7123317c..dc4917cd8bd1ce95be2159bb225b1524383081e7 100644
--- a/dbrepo-metadata-db/2_setup-data.sql
+++ b/dbrepo-metadata-db/2_setup-data.sql
@@ -1,8 +1,8 @@
 BEGIN;
 
-INSERT INTO `mdb_containers` (name, internal_name, image_id, host, port, ui_host, ui_port, sidecar_host, sidecar_port,
-                              privileged_username, privileged_password)
-VALUES ('mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3', 1, 'data-db', 3306, 'localhost', 3306, 'data-db-sidecar', 8080,
-        'root', 'dbrepo');
+INSERT INTO `mdb_containers` (id, name, internal_name, image_id, host, port, ui_host, ui_port, privileged_username,
+                              privileged_password)
+VALUES ('6cfb3b8e-1792-4e46-871a-f3d103527203', 'mariadb:11.1.3-debian-11-r6', 'mariadb_11_1_3',
+        'd79cb089-363c-488b-9717-649e44d8fcc5', 'data-db', 3306, 'localhost', 3306, 'root', 'dbrepo');
 
 COMMIT;
diff --git a/dbrepo-metadata-service/api/pom.xml b/dbrepo-metadata-service/api/pom.xml
index 37e8bec63f5b772f35dc97529c899edea14200fe..6c3b1aa13fbe0ccac21e0e0ce1ede0a78e6f340d 100644
--- a/dbrepo-metadata-service/api/pom.xml
+++ b/dbrepo-metadata-service/api/pom.xml
@@ -6,18 +6,18 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-metadata-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-api</artifactId>
     <name>dbrepo-metadata-service-api</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
             <groupId>at.tuwien</groupId>
             <artifactId>dbrepo-metadata-service-entities</artifactId>
-            <version>1.6.5</version>
+            <version>1.7.0</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java
deleted file mode 100644
index a9f95ad04d9c5e2ca8c953dc5169f5f0d9250bb0..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CredentialDto.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package at.tuwien.api.auth;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class CredentialDto {
-
-    @NotBlank
-    @Schema(example = "password")
-    private String type;
-
-    @NotBlank
-    @Schema(example = "abc123")
-    private String value;
-
-    @NotNull
-    @Schema(example = "false")
-    private Boolean temporary;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
deleted file mode 100644
index 93d562ca77a81caf86f93a9ec6e96184f706d7ae..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package at.tuwien.api.auth;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.util.List;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class JwtResponseDto {
-
-    @NotNull
-    @ToString.Exclude
-    private String token;
-
-    private String type;
-
-    private Long id;
-
-    @Schema(example = "user")
-    private String username;
-
-    @Schema(example = "user@example.com")
-    private String email;
-
-    private List<String> roles;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java
deleted file mode 100644
index 01c0a2d0348a2facf9009d9b865fd52338f2bab9..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/KeycloakErrorDto.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package at.tuwien.api.auth;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-import java.io.Serializable;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class KeycloakErrorDto implements Serializable {
-
-    @NotNull
-    @Schema(example = "invalid_grant")
-    private String error;
-
-    @NotNull
-    @JsonProperty("error_description")
-    private String errorDescription;
-
-    private String errorMessage;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
deleted file mode 100644
index 809de9881bc424fefe1da8937df03217facb1456..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package at.tuwien.api.auth;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class LoginRequestDto {
-
-    @NotNull
-    @Schema(example = "user")
-    private String username;
-
-    @NotNull
-    @ToString.Exclude
-    private String password;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java
deleted file mode 100644
index 05b8dfd3b5f51007011ea2f2f0d87e34181aeae4..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/RefreshTokenRequestDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.tuwien.api.auth;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class RefreshTokenRequestDto {
-
-    @NotNull
-    @JsonProperty("refresh_token")
-    @Schema(example = "refresh_token")
-    private String refreshToken;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java
deleted file mode 100644
index 8a2fa624b5794a36304949c3269ac3958beeaee1..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/TokenIntrospectDto.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package at.tuwien.api.auth;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class TokenIntrospectDto {
-
-    @NotNull
-    @Schema(description = "expiration timestamp", example = "1679602372")
-    private Long exp;
-
-    @NotNull
-    @Schema(example = "1679602072")
-    private Long iat;
-
-    @NotNull
-    @Schema(example = "6aa375aa-d5bb-4b1e-9f89-347084a739e3")
-    private String jti;
-
-    @NotNull
-    @Schema(description = "issuer", example = "6aa375aa-d5bb-4b1e-9f89-347084a739e3")
-    private String iss;
-
-    @NotNull
-    @Schema(description = "user id", example = "9670828b-8159-4642-be19-e77ca018e644")
-    private String sub;
-
-    @NotNull
-    @Schema(description = "type", example = "Bearer")
-    private String typ;
-
-    @NotNull
-    @Schema(example = "0170887f-4ffc-4bb7-9292-9334132cd430")
-    private String azp;
-
-    @NotNull
-    @Schema(example = "0170887f-4ffc-4bb7-9292-9334132cd430")
-    @JsonProperty("session_state")
-    private String sessionState;
-
-    @NotNull
-    @Schema(example = "1")
-    private Integer acr;
-
-    @NotNull
-    @JsonProperty("allowed-origins")
-    @Schema(example = "[\"*\"]")
-    private String[] allowedOrigins;
-
-    @NotNull
-    @JsonProperty("realm_access")
-    private RealmAccessDto realmAccess;
-
-    @NotNull
-    @JsonProperty("client_id")
-    @Schema(example = "dbrepo-client")
-    private String clientId;
-
-    @NotNull
-    @JsonProperty("preferred_username")
-    @Schema(example = "jdoe")
-    private String username;
-
-    @NotNull
-    @Schema(example = "openid email profile")
-    private String scope;
-
-    @NotNull
-    @Schema(example = "true")
-    private Boolean active;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
index 71e7601b164bbda3a1efd21557d9695322ad0715..91253b12baaefc02c0b078bf31fd832a01f29864 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
@@ -10,6 +10,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -22,8 +23,8 @@ import java.time.Instant;
 public class ContainerBriefDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "7ddb7e87-b965-43a2-9a24-4fa406d998f4")
+    private UUID id;
 
     @NotNull
     @Schema(example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
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 913ab26d9d4469fb3335d5dc1da8463c9afc0bd6..35bfafdf464d0876e96924b2d98605e41ba14bda 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
@@ -10,6 +10,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -22,8 +23,8 @@ import java.time.Instant;
 public class ContainerDto extends CacheableDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "7ddb7e87-b965-43a2-9a24-4fa406d998f4")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "Air Quality")
@@ -51,7 +52,6 @@ public class ContainerDto extends CacheableDto {
     @NotNull
     private ImageDto image;
 
-    @NotNull
     @Schema(example = "50")
     private Long quota;
 
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java
index 23062ffd9082098f13524ddd283b39310ecf39d5..f2ac7df46abb989797bc1bab23d8145d71ee5687 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/CreateContainerDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -22,8 +24,8 @@ public class CreateContainerDto {
 
     @NotNull
     @JsonProperty("image_id")
-    @Schema(example = "1", description = "Image ID")
-    private Long imageId;
+    @Schema(example = "2360f3c4-85e0-4fac-a7c6-73b296b9dde2", description = "Image ID")
+    private UUID imageId;
 
     @NotBlank
     @Schema(example = "data-db2", description = "Hostname of container")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
index 6a9a970c0f5b3931bbcab7f53be099138d568c12..ecbd050966f43c6f8fbe8a04b6f458570448fd59 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized;
 public class ImageBriefDto {
 
     @NotNull
-    @Schema(example = "5")
-    private Long id;
+    @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dcce")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "mariadb")
@@ -29,11 +31,6 @@ public class ImageBriefDto {
     @Schema(example = "10.5")
     private String version;
 
-    @NotBlank
-    @JsonProperty("jdbc_method")
-    @Schema(example = "mariadb")
-    private String jdbcMethod;
-
     @NotNull
     @JsonProperty("default")
     @Schema(example = "false")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
index a9c37fb8485db0e90b4b5d56b91b53ad4ec47940..ec4b0ad4894bcb220d03d4bb86828ba3b25bfc63 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
@@ -1,5 +1,6 @@
 package at.tuwien.api.container.image;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
@@ -8,6 +9,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -20,12 +22,8 @@ import java.util.List;
 public class ImageDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
-
-    @NotBlank
-    @Schema(example = "docker.io/library")
-    private String registry;
+    @Schema(example = "816f55d5-1098-4f60-a4af-c8121c04dcce")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "mariadb")
@@ -36,16 +34,7 @@ public class ImageDto {
     private String version;
 
     @NotBlank
-    @JsonProperty("driver_class")
-    @Schema(example = "org.mariadb.jdbc.Driver")
-    private String driverClass;
-
-    @NotBlank
-    @Schema(example = "org.hibernate.dialect.MariaDBDialect")
-    private String dialect;
-
-    @NotBlank
-    @JsonProperty("jdbc_method")
+    @JsonIgnore
     @Schema(example = "mariadb")
     private String jdbcMethod;
 
@@ -54,11 +43,6 @@ public class ImageDto {
     @Schema(example = "false")
     private Boolean isDefault;
 
-    @NotNull
-    @JsonProperty("default_port")
-    @Schema(example = "3306")
-    private Integer defaultPort;
-
     @NotNull
     @JsonProperty("data_types")
     private List<DataTypeDto> dataTypes;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java
index 96113b5347e6fcd8d99878154686927da9c978ac..b4b9061354aaa40d6588af7dd53bc7916e719424 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/container/image/OperatorDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -17,7 +19,7 @@ import lombok.extern.jackson.Jacksonized;
 @ToString
 public class OperatorDto {
 
-    private Long id;
+    private UUID id;
 
     @NotBlank
     @JsonProperty("display_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java
index c10d6b0b5e2618a6c3854e591d99e477be952035..e7fd08e771176346fb13d361f2c436ce3aaf6627 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/CreateDatabaseDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,8 +21,8 @@ public class CreateDatabaseDto {
 
     @NotNull
     @JsonProperty("container_id")
-    @Schema(example = "1")
-    private Long cid;
+    @Schema(example = "0888e108-d521-46e2-9d3e-82099185305b")
+    private UUID cid;
 
     @NotBlank
     @Schema(example = "Air Quality")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
index d065a5892afb0cb342c12975f562820d1eeb6b10..7e393561f844b3f10f8fc450b04a29158e3e3cbd 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
@@ -26,7 +26,7 @@ public class DatabaseAccessDto {
 
     @NotNull
     @JsonIgnore
-    private Long hdbid;
+    private UUID hdbid;
 
     @NotNull
     private UserBriefDto user;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
index 4cff48db18b1b337de7ae9d3a50c986e4c329028..4bb262b781d3c18013cf3ae65401e39f2469c3e1 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
@@ -23,8 +23,8 @@ import java.util.UUID;
 public class DatabaseBriefDto {
 
     @NotNull
-    @Schema(example = "3")
-    private Long id;
+    @Schema(example = "fc29f89c-86a8-4020-9e36-4d954736c6cc")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "Air Quality")
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 d6ea2bff9e2203439891e3a1a6aec6f17afc86a6..5ecca1bebc980e9ba7d436206fc2c9b19e059df6 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
@@ -14,6 +14,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -26,8 +27,8 @@ import java.util.List;
 public class DatabaseDto extends CacheableDto {
 
     @NotNull
-    @Schema(example = "3")
-    private Long id;
+    @Schema(example = "fc29f89c-86a8-4020-9e36-4d954736c6cc")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "Air Quality")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
deleted file mode 100644
index a82f6669ed62eac5402e0141d2bf414d01dbc462..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.tuwien.api.database;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotNull;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@EqualsAndHashCode
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class SubjectModifyDto {
-
-    private Long id;
-
-    @NotNull
-    @Schema(example = "air")
-    private String name;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java
index f68067e8a870f01b402b23a3b27bd0a065e186fd..47107ac54fe042b026e3a0ac954e5be2650b59d8 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewBriefDto.java
@@ -20,13 +20,13 @@ import java.util.UUID;
 public class ViewBriefDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "787439d0-e85e-400c-a7e6-996a023bfad9")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long vdbid;
+    @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4")
+    private UUID vdbid;
 
     @NotBlank
     @Schema(example = "Air Quality")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java
index 24cca8e4cc7325904c83845d42d060814753d171..766fbfd32103992a8af744c1c105948ebc02f09a 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewColumnDto.java
@@ -9,6 +9,8 @@ import jakarta.validation.constraints.Size;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -20,13 +22,13 @@ import lombok.extern.jackson.Jacksonized;
 public class ViewColumnDto {
 
     @NotNull
-    @Schema(example = "12")
-    private Long id;
+    @Schema(example = "6aec3a91-2e0b-4e92-a16a-9c3c5e892da1")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4")
+    private UUID databaseId;
 
     @NotNull
     @JsonProperty("ord")
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 82a7081e16f08a2cc2c3a7c02a28760adc7ef9d1..7abd47121591e2ad5611c61dde9b6712df56dbc3 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
@@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -24,13 +25,13 @@ import java.util.List;
 public class ViewDto extends CacheableDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "787439d0-e85e-400c-a7e6-996a023bfad9")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long vdbid;
+    @Schema(example = "2b5b2b03-fdd0-40d6-afe0-e5d02fd839e4")
+    private UUID vdbid;
 
     @NotBlank
     @Schema(example = "Air Quality")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java
index b2efa7567e6e33b30664cd35adf652c7531a3026..76ee117931565173e94b4eb8684bc9a7ecd6d0d1 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/internal/CreateDatabaseDto.java
@@ -20,8 +20,8 @@ public class CreateDatabaseDto {
 
     @NotNull
     @JsonProperty("container_id")
-    @Schema(example = "1")
-    private Long containerId;
+    @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7")
+    private UUID containerId;
 
     @NotBlank
     @JsonProperty("internal_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
deleted file mode 100644
index 1cc1d501c825d99c564564b71b268f76f431cf56..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package at.tuwien.api.database.query;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.*;
-import lombok.extern.jackson.Jacksonized;
-
-@Getter
-@Setter
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@Jacksonized
-@ToString
-public class ExecuteInternalQueryDto {
-
-    @JsonProperty("container_id")
-    private String containerId;
-
-    private String query;
-
-}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
index 90a1af28bcf14d64d51eca1db1cc6b46760079fb..c55a108cfcb215bca68e2d826ab09be39283cccf 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
@@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 
 @Getter
@@ -25,11 +26,13 @@ import java.util.List;
 public class QueryBriefDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    private Long databaseId;
+    @Schema(example = "1a6fb0c0-49c3-4a22-a515-35f7a3dd8e62")
+    private UUID databaseId;
 
     @NotNull
     private UserBriefDto owner;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
index 41cb641a5d8cdf8ccc6187c2f083447e4cdb4714..3b0f17086aaadb9ec5c91b2c0e54f9f207811056 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
@@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -24,13 +25,13 @@ import java.util.List;
 public class QueryDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "83ea2326-f8f6-4263-baf8-cdf88a54efc7")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "1a6fb0c0-49c3-4a22-a515-35f7a3dd8e62")
+    private UUID databaseId;
 
     @NotNull
     private UserBriefDto owner;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
index 98932f30a294febdc3df41290888c0d6d3ae7e5d..3ba910b97950253569a080246cd603ccec6d9854 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
@@ -20,13 +20,13 @@ import java.util.UUID;
 public class TableBriefDto {
 
     @NotNull
-    @Schema(example = "3")
-    private Long id;
+    @Schema(example = "41ed10e0-687b-4e18-8521-810f5cffbce1")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "2")
-    private Long databaseId;
+    @Schema(example = "a8fec026-dfaf-4b1d-8f6c-f01720d91705")
+    private UUID databaseId;
 
     @NotBlank
     @Schema(example = "Air Quality")
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 1021d167ca1364eb63b06d321040e708c4f7d6e2..3104794394e360ae23ebc82ab29364654b2ee992 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
@@ -18,6 +18,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -30,13 +31,13 @@ import java.util.List;
 public class TableDto extends CacheableDto {
 
     @NotNull
-    @Schema(example = "3")
-    private Long id;
+    @Schema(example = "d346f844-b84c-490f-9aec-725a2dc8f820")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "2")
-    private Long tdbid;
+    @Schema(example = "692511b6-5af3-4043-8b9b-626af8756d92")
+    private UUID tdbid;
 
     @NotBlank
     @Schema(example = "Air Quality")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java
deleted file mode 100644
index 010bc68af285bb9fadd741355687e1a9218d1448..0000000000000000000000000000000000000000
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableKeyDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-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-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
index bc13700bdd83dfac5fe23c133509c0184834b7a9..08ee40caa46f977fe3b7bd81055d94ab18d410c5 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
@@ -8,6 +8,8 @@ import jakarta.validation.constraints.Size;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,18 +21,18 @@ import lombok.extern.jackson.Jacksonized;
 public class ColumnBriefDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "a453e444-e00d-41ca-902c-11e9c54b39f1")
+    private UUID id;
 
     @NotNull
-    @Schema(example = "2")
     @JsonProperty("database_id")
-    private Long databaseId;
+    @Schema(example = "911f9052-c58c-4e1c-b3f2-66af2107be16")
+    private UUID databaseId;
 
     @NotNull
-    @Schema(example = "3")
     @JsonProperty("table_id")
-    private Long tableId;
+    @Schema(example = "bfffa915-a547-4466-9c65-ddc0d38fdb08")
+    private UUID tableId;
 
     @NotBlank
     @Size(max = 64)
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
index 462821b53c0a8a01a7acb36f15a25641ac895cd8..d50945740e9a42a8081abab7cd1188dd23a03b13 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
@@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -25,18 +26,18 @@ import java.util.List;
 public class ColumnDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "a453e444-e00d-41ca-902c-11e9c54b39f1")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "2")
-    private Long databaseId;
+    @Schema(example = "911f9052-c58c-4e1c-b3f2-66af2107be16")
+    private UUID databaseId;
 
     @NotNull
     @JsonProperty("table_id")
-    @Schema(example = "3")
-    private Long tableId;
+    @Schema(example = "bfffa915-a547-4466-9c65-ddc0d38fdb08")
+    private UUID tableId;
 
     @NotNull
     @JsonProperty("ord")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java
index 3cc1231c7452aa809ef7ecf4d85244d0c9f400e0..160807e7aaf1e7c59e33dc7813a4d4691fd06ba3 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptBriefDto.java
@@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized;
 public class ConceptBriefDto {
 
     @NotNull
-    @Schema(example = "23")
-    private Long id;
+    @Schema(example = "8cabc011-4bdf-44d4-9d33-b2648e2ddbf1")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "http://www.wikidata.org/entity/Q202444")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
index da00e64e8362ed298ba2bb9e2e98a596af716431..13595569439bc999e40c58a2be29469883631909 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
@@ -1,12 +1,14 @@
 package at.tuwien.api.database.table.columns.concepts;
 
 import at.tuwien.api.database.table.columns.ColumnBriefDto;
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -19,7 +21,8 @@ import java.util.List;
 public class ConceptDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "8cabc011-4bdf-44d4-9d33-b2648e2ddbf1")
+    private UUID id;
 
     @NotBlank
     private String uri;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java
index 15d9ae90823e05491b692932af518a768cfc1305..789f3de1500900848205e0598e8fab89f9a50c11 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitBriefDto.java
@@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized;
 public class UnitBriefDto {
 
     @NotNull
-    @Schema(example = "34")
-    private Long id;
+    @Schema(example = "ba1935e8-6817-488f-af0a-f54389af9000")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "http://www.wikidata.org/entity/Q1422583")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java
index 48c7180c067123ec4ea09b0eb1b6cd167c4c9d7b..ca3899f7cc1f7d858d4e85fa0aa3107e6633dbf7 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java
@@ -1,12 +1,14 @@
 package at.tuwien.api.database.table.columns.concepts;
 
 import at.tuwien.api.database.table.columns.ColumnBriefDto;
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -19,7 +21,8 @@ import java.util.List;
 public class UnitDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "ba1935e8-6817-488f-af0a-f54389af9000")
+    private UUID id;
 
     @NotBlank
     private String uri;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java
index 56dd9863245a51219c1604c43636dd27adea2bd8..4acc205efdebaec4b6e82c322a539d9fb945a30c 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyBriefDto.java
@@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -13,6 +15,6 @@ import lombok.extern.jackson.Jacksonized;
 @ToString
 public class ForeignKeyBriefDto {
 
-    @Schema(example = "8")
-    private Long id;
+    @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a")
+    private UUID id;
 }
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java
index 254666f9eb6b056501bc08ecebb745c5eac61345..94063c77dc579a13aad2c52af5ac32739fdf89d0 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyDto.java
@@ -10,6 +10,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -20,8 +21,8 @@ import java.util.List;
 @ToString
 public class ForeignKeyDto {
 
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a")
+    private UUID id;
 
     @NotNull
     @Schema(example = "fk_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java
index f0d5b249cdbc41222a5c71c6d41855f1aa5cc5df..2423b92a624042f6b638b8baa1b1dbe818b14235 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/foreign/ForeignKeyReferenceDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -16,8 +18,8 @@ import lombok.extern.jackson.Jacksonized;
 @ToString
 public class ForeignKeyReferenceDto {
 
-    @Schema(example = "8")
-    private Long id;
+    @Schema(example = "f2b740ec-0b13-4d07-88a9-529d354bba6a")
+    private UUID id;
 
     @NotNull
     @JsonProperty("foreign_key")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java
index 86d1d49960d2c9496ce5d23e26fa99edadec344e..59117a579576e86cd9b01828695de57aaece9fd7 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/primary/PrimaryKeyDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -16,8 +18,8 @@ import lombok.extern.jackson.Jacksonized;
 @ToString
 public class PrimaryKeyDto {
 
-    @Schema(example = "8")
-    private Long id;
+    @Schema(example = "d984f9d7-e8a7-4b81-b59a-862db1871f18")
+    private UUID id;
 
     @NotNull
     private TableBriefDto table;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java
index 755f3a31b7a9634bff74c8992bb384719297c256..64db6dfde0b0ce6d8de017a0cba9f61c7e64d304 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/constraints/unique/UniqueDto.java
@@ -8,6 +8,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -19,8 +20,8 @@ import java.util.List;
 public class UniqueDto {
 
     @NotNull
-    @Schema(example = "5")
-    private Long id;
+    @Schema(example = "d984f9d7-e8a7-4b81-b59a-862db1871f13")
+    private UUID id;
 
     @NotNull
     @Schema(example = "uk_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java
index db55272383828e1bfc0c870f086ecc2c27ecba03..5f2e73fc07badf436c3527fc8423b21d641967b7 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreateIdentifierDto.java
@@ -11,6 +11,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -23,20 +24,20 @@ public class CreateIdentifierDto {
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "d002e8d5-8db4-4ff7-ab3a-bc3f52d9ec44")
+    private UUID databaseId;
 
     @JsonProperty("query_id")
     @Schema(example = "null")
-    private Long queryId;
+    private UUID queryId;
 
     @JsonProperty("view_id")
     @Schema(example = "null")
-    private Long viewId;
+    private UUID viewId;
 
     @JsonProperty("table_id")
     @Schema(example = "null")
-    private Long tableId;
+    private UUID tableId;
 
     @NotNull
     @Schema(example = "database")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java
index 8265a1106bc8daef632f887e9c38c148d765fb01..95b0d588f7bccc0c812c3bd823f94022d3da9d38 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorBriefDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 
 @Getter
 @Setter
@@ -19,8 +21,8 @@ import lombok.extern.jackson.Jacksonized;
 public class CreatorBriefDto {
 
     @NotNull
-    @Schema(example = "11")
-    private Long id;
+    @Schema(example = "e41f94a6-2b94-4a12-ac0e-678684e1c070")
+    private UUID id;
 
     @NotBlank
     @JsonProperty("creator_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
index a3a2976901aee60e60162788dd10df239206e826..1382baec51d8f3de1b048fafc8d8f564aecc6e4f 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
@@ -9,6 +9,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.extern.jackson.Jacksonized;
 import org.springframework.data.annotation.Id;
 
+import java.util.UUID;
+
 
 @Getter
 @Setter
@@ -21,8 +23,8 @@ import org.springframework.data.annotation.Id;
 public class CreatorDto {
 
     @NotNull
-    @Schema(example = "11")
-    private Long id;
+    @Schema(example = "e41f94a6-2b94-4a12-ac0e-678684e1c070")
+    private UUID id;
 
     @Schema(example = "Josiah")
     private String firstname;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java
index f94edc2cf75421855a8bcd761252e6aba249bb27..43e32b8ae083ee154f221e0667ad3a2e10706071 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierBriefDto.java
@@ -20,25 +20,25 @@ import java.util.UUID;
 public class IdentifierBriefDto {
 
     @NotNull
-    @Schema(example = "2")
-    private Long id;
+    @Schema(example = "b97cd56b-66ca-4354-9e6c-f47210cfaaec")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
     @Schema(example = "1")
-    private Long databaseId;
+    private UUID databaseId;
 
     @JsonProperty("query_id")
     @Schema(example = "1")
-    private Long queryId;
+    private UUID queryId;
 
     @JsonProperty("table_id")
     @Schema(example = "1")
-    private Long tableId;
+    private UUID tableId;
 
     @JsonProperty("view_id")
     @Schema(example = "1")
-    private Long viewId;
+    private UUID viewId;
 
     @NotNull
     @Schema(example = "database")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java
index fbcbb3afe7b6cb9ca27aee16b2875c5ed5d03c1b..32ff2455ccde07b8d8ce39ad674245d65dd21174 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDescriptionDto.java
@@ -8,6 +8,8 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 import org.springframework.data.annotation.Id;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id;
 public class IdentifierDescriptionDto {
 
     @NotNull
-    @Schema(example = "3")
-    private Long id;
+    @Schema(example = "e0e9692c-910b-4b60-b53a-fc7c358a917d")
+    private UUID id;
 
     @Schema(example = "Air quality reports at Stephansplatz, Vienna")
     private String description;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
index 53d40ecd781169f531a6cf215d370fd69be9d2b0..57ecb5ad625017fec1571a1da53a83cbd5fcf852 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
@@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -25,25 +26,25 @@ import java.util.List;
 public class IdentifierDto {
 
     @NotNull
-    @Schema(example = "2")
-    private Long id;
+    @Schema(example = "b97cd56b-66ca-4354-9e6c-f47210cfaaec")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "null")
+    private UUID databaseId;
 
     @JsonProperty("query_id")
-    @Schema(example = "1")
-    private Long queryId;
+    @Schema(example = "null")
+    private UUID queryId;
 
     @JsonProperty("table_id")
-    @Schema(example = "1")
-    private Long tableId;
+    @Schema(example = "null")
+    private UUID tableId;
 
     @JsonProperty("view_id")
-    @Schema(example = "1")
-    private Long viewId;
+    @Schema(example = "null")
+    private UUID viewId;
 
     @NotNull
     @Schema(example = "database")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java
index 93084d2d17679b94d825600761c1aa03c3b1bdde..4184f2cf2afade6121711cca63a629b047156120 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierFunderDto.java
@@ -8,6 +8,8 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 import org.springframework.data.annotation.Id;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id;
 public class IdentifierFunderDto {
 
     @NotNull
-    @Schema(example = "2")
-    private Long id;
+    @Schema(example = "39693413-e0ce-46da-ad5e-029c0556d439")
+    private UUID id;
 
     @NotBlank
     @JsonProperty("funder_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java
index ed4d445de0ffd2686a84331981d3d5899a4a9b65..f63c3ae79cdc84c9c4ec85edb62917282e06c815 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierSaveDto.java
@@ -11,6 +11,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -22,25 +23,25 @@ import java.util.List;
 public class IdentifierSaveDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "68e11675-1e0f-4d24-a6d9-887ad1c4445d")
+    private UUID id;
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "null")
+    private UUID databaseId;
 
     @JsonProperty("query_id")
     @Schema(example = "null")
-    private Long queryId;
+    private UUID queryId;
 
     @JsonProperty("view_id")
     @Schema(example = "null")
-    private Long viewId;
+    private UUID viewId;
 
     @JsonProperty("table_id")
     @Schema(example = "null")
-    private Long tableId;
+    private UUID tableId;
 
     @NotNull
     @Schema(example = "database")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java
index 27e3b323eaca7d9ab481af61059a05fbe576c42d..d995527d88d281e22f96b220cd0566e05811dbbc 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/IdentifierTitleDto.java
@@ -8,6 +8,8 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 import org.springframework.data.annotation.Id;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,8 +21,8 @@ import org.springframework.data.annotation.Id;
 public class IdentifierTitleDto {
 
     @NotNull
-    @Schema(example = "4")
-    private Long id;
+    @Schema(example = "70ce5164-fd74-413f-8712-f996b91defbf")
+    private UUID id;
 
     @Schema(example = "Airquality Demonstrator")
     private String title;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
index 6ff5d9aed1297f5a12755d76d03cc668a273e0e5..7205bc6e0b76e823bb3d2405aced77dd41b9adb5 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
@@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized;
 import org.springframework.data.annotation.Id;
 
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -24,8 +25,8 @@ import java.time.Instant;
 public class RelatedIdentifierDto {
 
     @NotNull
-    @Schema(example = "8")
-    private Long id;
+    @Schema(example = "ce9d11f0-60a2-448d-a3e4-44719a443e8a")
+    private UUID id;
 
     @NotNull
     @Schema(example = "10.70124/dc4zh-9ce78")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java
index c87ff81d3c058edd475d89102c8e29468dae211e..0866a5cb3b5dc36f7ad0484dddf860c7371816d9 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierCreatorDto.java
@@ -8,6 +8,8 @@ import lombok.*;
 import jakarta.validation.constraints.NotBlank;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized;
 public class SaveIdentifierCreatorDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "da9dd034-00a8-4517-b93d-d1b2adfee418")
+    private UUID id;
 
     @Schema(example = "Josiah")
     private String firstname;
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java
index 1d251db634d4f1a6cb0b369013c113aae69f1968..bc1ad4f3dfd98fbbbd4c2edc1d73f562cc1f0d23 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierDescriptionDto.java
@@ -8,6 +8,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized;
 public class SaveIdentifierDescriptionDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "35bd84d8-b181-43c8-b786-4d024e4f843c")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "Air quality reports at Stephansplatz, Vienna")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java
index 89bea57a1cf5c69a4184fae5edc3d77f8062bb39..1709c109b28a9aa3c57c10bcea1589d445d91c6c 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierFunderDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -17,8 +19,8 @@ import lombok.extern.jackson.Jacksonized;
 public class SaveIdentifierFunderDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "1c6b9212-a315-44b9-946c-3682a7a0e517")
+    private UUID id;
 
     @NotBlank
     @JsonProperty("funder_name")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java
index 0832a77cee0323db7220cf88ff295982fee2c0a1..07ebc35e2ca6ce2458746ee9253dbf9dc296a337 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveIdentifierTitleDto.java
@@ -8,6 +8,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -18,8 +20,8 @@ import lombok.extern.jackson.Jacksonized;
 public class SaveIdentifierTitleDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "2af9f40e-eaf5-4ea1-861a-1a696587bf29")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "Airquality Demonstrator")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java
index b3a95eee06fe4cc0cb91fb8df822e52c3f507221..d22c8216e366d602e119abe824af6f543a5fac8f 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/identifier/SaveRelatedIdentifierDto.java
@@ -6,6 +6,8 @@ import lombok.extern.jackson.Jacksonized;
 
 import jakarta.validation.constraints.NotNull;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -16,8 +18,8 @@ import jakarta.validation.constraints.NotNull;
 public class SaveRelatedIdentifierDto {
 
     @NotNull
-    @Schema(example = "1")
-    private Long id;
+    @Schema(example = "5bb272c7-7421-4f74-83ac-0486812d0f44")
+    private UUID id;
 
     @NotNull
     @Schema(example = "10.70124/dc4zh-9ce78")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java
index e9c15c212e100f997e6c4afc6c585a4726e92feb..d344ccd6b461460d77b7f865ab03e44d84fc6956 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/maintenance/BannerMessageDto.java
@@ -9,6 +9,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -21,9 +22,11 @@ import java.time.Instant;
 public class BannerMessageDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "ae3f795b-a3da-4ebe-bdc4-21a8ce631e6f")
+    private UUID id;
 
     @NotNull
+    @Schema(example = "WARNING")
     private BannerMessageTypeDto type;
 
     @NotBlank
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java
index b908b6e09e26ea5938b7eb0b44554db0a746d22e..29d5116a70bfe3b59c1223534616eebb80b9c57e 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyBriefDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -18,7 +20,8 @@ import lombok.extern.jackson.Jacksonized;
 public class OntologyBriefDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "7c491e40-082a-47b8-b82c-51d03c520466")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "http://www.wikidata.org/")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java
index 686cd9f030c952ace5d85a0eecb3f049bcd1a2a9..a3e7c46d014d5de6c06ec5ed3608f51cb8700de3 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java
@@ -10,6 +10,7 @@ import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -22,7 +23,8 @@ import java.time.Instant;
 public class OntologyDto {
 
     @NotNull
-    private Long id;
+    @Schema(example = "7c491e40-082a-47b8-b82c-51d03c520466")
+    private UUID id;
 
     @NotBlank
     @Schema(example = "http://www.wikidata.org/")
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java
index 79ea8d6a5a511a5794df53c455dddd912678219e..f4a2147a29cbdb1f0ee7aa03a26fa500eb370d91 100644
--- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/TableColumnEntityDto.java
@@ -7,6 +7,8 @@ import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
+import java.util.UUID;
+
 @Getter
 @Setter
 @Builder
@@ -19,18 +21,18 @@ public class TableColumnEntityDto {
 
     @NotNull
     @JsonProperty("database_id")
-    @Schema(example = "1")
-    private Long databaseId;
+    @Schema(example = "475b4107-a64d-4495-a7ef-3cb0dadd4804")
+    private UUID databaseId;
 
     @NotNull
     @JsonProperty("table_id")
-    @Schema(example = "1")
-    private Long tableId;
+    @Schema(example = "9a9208af-90ea-4382-9a11-0c8f6d89bd1f")
+    private UUID tableId;
 
     @NotNull
     @JsonProperty("column_id")
-    @Schema(example = "1")
-    private Long columnId;
+    @Schema(example = "297860e3-3b29-451c-ae8a-a85ed5941018")
+    private UUID columnId;
 
     @NotBlank
     @Schema(example = "https://www.wikidata.org/entity/Q1686799")
diff --git a/dbrepo-metadata-service/entities/pom.xml b/dbrepo-metadata-service/entities/pom.xml
index b73a11050c8d9ea55bf8649a1694bfc1c00c7600..313309e18831501558a149cab52920bb90e89e91 100644
--- a/dbrepo-metadata-service/entities/pom.xml
+++ b/dbrepo-metadata-service/entities/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-metadata-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-entities</artifactId>
     <name>dbrepo-metadata-service-entity</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies/>
 
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..458dcec7ebb282ff5abc703668aa8010ca3e5d97 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
@@ -5,14 +5,14 @@ import at.tuwien.entities.database.Database;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
 import java.util.List;
-
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -26,9 +26,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Container {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false)
     private String name;
@@ -48,8 +48,8 @@ public class Container {
     @Column
     private Integer uiPort;
 
-    @Column(nullable = false, columnDefinition = "INT DEFAULT 50")
-    private Integer quota = 50;
+    @Column
+    private Integer quota;
 
     @Column
     private String uiAdditionalFlags;
@@ -84,4 +84,11 @@ public class Container {
     @Column
     private String privilegedPassword;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..336a278d7d8ff6f2f4d2b56ebbde1f156e198659 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
@@ -4,14 +4,14 @@ import at.tuwien.entities.container.Container;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
 import java.util.List;
-
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -28,9 +28,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class ContainerImage {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    public Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false)
     private String name;
@@ -79,4 +79,11 @@ public class ContainerImage {
     @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST}, mappedBy = "image")
     private List<Operator> operators;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..347ca47e960e74f846eea32b3ddc166e3a0efc0e 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
@@ -2,9 +2,10 @@ package at.tuwien.entities.container.image;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -18,9 +19,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class DataType {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    public Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(name = "display_name", nullable = false)
     private String displayName;
@@ -75,4 +76,11 @@ public class DataType {
     })
     private ContainerImage image;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..adeb6dd8ef7c977222021d3c1b0fdb54fb304a17 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
@@ -2,9 +2,10 @@ package at.tuwien.entities.container.image;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -18,9 +19,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Operator {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    public Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(name = "display_name", nullable = false)
     private String displayName;
@@ -39,4 +40,11 @@ public class Operator {
     })
     private ContainerImage image;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..41e161dbe4def45425b1dfdffa677729f5306d78 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
@@ -42,9 +42,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Database implements Serializable {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @JdbcTypeCode(java.sql.Types.VARCHAR)
     @Column(name = "owned_by", columnDefinition = "VARCHAR(36)")
@@ -56,8 +56,8 @@ public class Database implements Serializable {
     })
     private User owner;
 
-    @Column(nullable = false)
-    private Long cid;
+    @Column(nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID cid;
 
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@@ -131,4 +131,11 @@ public class Database implements Serializable {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..e5f7dd3012d9d5b510f7e072dfadf255297e4a8e 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
@@ -42,8 +42,9 @@ public class DatabaseAccess {
     private User user;
 
     @Id
-    @Column(name = "database_id", updatable = false)
-    private Long hdbid;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(name = "database_id", nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID hdbid;
 
     @ToString.Exclude
     @EqualsAndHashCode.Exclude
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
index 83806068525ef9073e0bb18ca01b1a933f74a090..b6963c290c38186fc7d78af149b07622804e7301 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
@@ -10,5 +10,5 @@ public class DatabaseAccessKey implements Serializable {
 
     private UUID huserid;
 
-    private Long hdbid;
+    private UUID hdbid;
 }
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..3fd8fd06c8e1488b2d69e3add3dbac6277478f7e 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
@@ -17,8 +17,6 @@ import java.time.Instant;
 import java.util.List;
 import java.util.UUID;
 
-import static jakarta.persistence.GenerationType.IDENTITY;
-
 @Data
 @Entity
 @Builder
@@ -37,13 +35,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class View {
 
     @Id
-    @org.springframework.data.annotation.Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
-
-    @Column(updatable = false, nullable = false)
-    private Long vdbid;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @ToString.Exclude
     @JdbcTypeCode(java.sql.Types.VARCHAR)
@@ -114,4 +108,11 @@ public class View {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..2b18132e8cca75d05ee203143a5dbba40eabf21f 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
@@ -3,8 +3,11 @@ package at.tuwien.entities.database;
 import at.tuwien.entities.database.table.columns.TableColumnType;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
+import java.util.UUID;
+
 import static jakarta.persistence.GenerationType.IDENTITY;
 
 @Data
@@ -21,9 +24,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class ViewColumn implements Comparable<ViewColumn> {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @ToString.Exclude
     @EqualsAndHashCode.Exclude
@@ -59,4 +62,11 @@ public class ViewColumn implements Comparable<ViewColumn> {
     public int compareTo(ViewColumn viewColumn) {
         return Integer.compare(this.ordinalPosition, viewColumn.getOrdinalPosition());
     }
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..1e2aa72b924cdd6c1a37aa5c98f64728ba92fc20 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
@@ -38,12 +38,12 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Table {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(name = "ID", updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(updatable = false, nullable = false)
-    private Long tdbid;
+    private UUID tdbid;
 
     @JdbcTypeCode(java.sql.Types.VARCHAR)
     @Column(name = "owned_by", columnDefinition = "VARCHAR(36)")
@@ -128,5 +128,12 @@ public class Table {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
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..8d169590626f2ee4e07694938d49f0bf17ae36af 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
@@ -4,6 +4,7 @@ import at.tuwien.entities.database.table.Table;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -11,6 +12,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 import java.math.BigDecimal;
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -31,9 +33,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class TableColumn implements Comparable<TableColumn> {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @ToString.Exclude
     @EqualsAndHashCode.Exclude
@@ -129,4 +131,11 @@ public class TableColumn implements Comparable<TableColumn> {
     public int compareTo(TableColumn tableColumn) {
         return Integer.compare(this.ordinalPosition, tableColumn.getOrdinalPosition());
     }
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..edf39d84e36a41fdf9d783fb3c5fdaea4fd920cf 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
@@ -3,11 +3,13 @@ package at.tuwien.entities.database.table.columns;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -29,9 +31,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class TableColumnConcept {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(updatable = false, nullable = false, columnDefinition = "TEXT")
     private String uri;
@@ -57,4 +59,11 @@ public class TableColumnConcept {
             },
             joinColumns = @JoinColumn(name = "id", referencedColumnName = "id"))
     private List<TableColumn> columns;
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..9d48062d33a3489892fee857b0c06440336e362c 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
@@ -3,11 +3,13 @@ package at.tuwien.entities.database.table.columns;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -29,9 +31,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class TableColumnUnit {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(updatable = false, nullable = false, columnDefinition = "TEXT")
     private String uri;
@@ -57,4 +59,11 @@ public class TableColumnUnit {
             },
             joinColumns = @JoinColumn(name = "id", referencedColumnName = "id"))
     private List<TableColumn> columns;
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..92271b32328ed66215311389de57413b722d5ebe 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
@@ -3,11 +3,11 @@ package at.tuwien.entities.database.table.constraints.foreignKey;
 import at.tuwien.entities.database.table.Table;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.util.List;
-
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -21,9 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class ForeignKey {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(name = "fkid", updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(name = "fkid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()")
+    private UUID id;
 
     @Column(updatable = false, nullable = false)
     private String name;
@@ -54,4 +54,11 @@ public class ForeignKey {
     @Column(columnDefinition = "VARCHAR(50)")
     @Enumerated(EnumType.STRING)
     private ReferenceType onDelete;
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..850b25ac5ca3d156600c5c0b5be92663c33f2cca 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
@@ -3,8 +3,11 @@ package at.tuwien.entities.database.table.constraints.foreignKey;
 import at.tuwien.entities.database.table.columns.TableColumn;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
+import java.util.UUID;
+
 import static jakarta.persistence.GenerationType.IDENTITY;
 
 @Data
@@ -21,9 +24,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class ForeignKeyReference {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @ToString.Exclude
     @EqualsAndHashCode.Exclude
@@ -45,4 +48,11 @@ public class ForeignKeyReference {
     })
     private TableColumn referencedColumn;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..26e0f132991a5b8bf7a1b2f572575f8f6a48820f 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
@@ -4,9 +4,10 @@ import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -20,9 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class PrimaryKey {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(name = "pkid", updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(name = "pkid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()")
+    private UUID id;
 
     @ToString.Exclude
     @EqualsAndHashCode.Exclude
@@ -41,4 +42,11 @@ public class PrimaryKey {
             @JoinColumn(name = "cid", referencedColumnName = "id", nullable = false)
     })
     private TableColumn column;
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
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..e1ad4c4c4d167bf5ccf21b33d5a22e67d424d988 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
@@ -4,11 +4,11 @@ import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.util.List;
-
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -22,9 +22,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Unique {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(name = "uid", updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(name = "uid", nullable = false, columnDefinition = "VARCHAR(36) DEFAULT UUID()")
+    private UUID id;
 
     @Column(updatable = false, nullable = false)
     private String name;
@@ -51,4 +51,11 @@ public class Unique {
             }
     )
     private List<TableColumn> columns;
+
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
 }
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
index 1b0692ae50adf8d6ca280a5403908cb3e8d65f42..cdbcf797773cc2d7e9d7dbdecb6dc0fcb0d6afae 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
@@ -2,8 +2,11 @@ package at.tuwien.entities.identifier;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
+import java.util.UUID;
+
 import static jakarta.persistence.GenerationType.IDENTITY;
 
 @Data
@@ -18,10 +21,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Creator {
 
     @Id
-    @org.springframework.data.annotation.Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(name = "given_names")
     private String firstname;
@@ -104,4 +106,11 @@ public class Creator {
         return this.getFirstname().charAt(0) + ". " + this.getLastname();
     }
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..43dbb849e341c7aba5dbfc4a3097115ef1ce378b 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
@@ -39,18 +39,18 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Identifier implements Serializable {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
-    @Column(name = "qid")
-    private Long queryId;
+    @Column(name = "qid", columnDefinition = "VARCHAR(36)")
+    private UUID queryId;
 
-    @Column(name = "tid")
-    private Long tableId;
+    @Column(name = "tid", columnDefinition = "VARCHAR(36)")
+    private UUID tableId;
 
-    @Column(name = "vid")
-    private Long viewId;
+    @Column(name = "vid", columnDefinition = "VARCHAR(36)")
+    private UUID viewId;
 
     /**
      * Creators are created/updated/deleted by the Identifier entity.
@@ -176,6 +176,13 @@ public class Identifier implements Serializable {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
 
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java
index af684d2347b20bd54a959040b7b07937fc69952f..32adddccfc7c73750a1fd516edc6c4638d150739 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierDescription.java
@@ -3,9 +3,11 @@ package at.tuwien.entities.identifier;
 import at.tuwien.entities.database.LanguageType;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.io.Serializable;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -21,10 +23,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class IdentifierDescription implements Serializable {
 
     @Id
-    @org.springframework.data.annotation.Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false, columnDefinition = "TEXT")
     private String description;
@@ -44,6 +45,13 @@ public class IdentifierDescription implements Serializable {
     })
     private Identifier identifier;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
 
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java
index c5720223467f5e52ac54354c11dc21baf36fcd0d..5b69b2e8f70a947dad40460609b0ee5ffc530dfa 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierFunder.java
@@ -2,9 +2,11 @@ package at.tuwien.entities.identifier;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.io.Serializable;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -20,9 +22,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class IdentifierFunder implements Serializable {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false)
     private String funderName;
@@ -50,6 +52,13 @@ public class IdentifierFunder implements Serializable {
     })
     private Identifier identifier;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
 
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java
index cecc2c5c9804114529be0c6543de1ea69f5668aa..769ff12a678a9f18d10f877e29461585f5cd2b59 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/IdentifierTitle.java
@@ -3,9 +3,11 @@ package at.tuwien.entities.identifier;
 import at.tuwien.entities.database.LanguageType;
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.io.Serializable;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -21,9 +23,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class IdentifierTitle implements Serializable {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false, columnDefinition = "TEXT")
     private String title;
@@ -43,6 +45,13 @@ public class IdentifierTitle implements Serializable {
     })
     private Identifier identifier;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
 
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
index e8b1acde125265bdda9d94918daf0bf478ff4904..24ac7adb1fe1fabd49491a320b29256f8178a0de 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
@@ -2,9 +2,10 @@ package at.tuwien.entities.identifier;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import static jakarta.persistence.GenerationType.IDENTITY;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -14,15 +15,15 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 @NoArgsConstructor
 @EqualsAndHashCode
 @EntityListeners(AuditingEntityListener.class)
-@Table(name = "mdb_related_identifiers", uniqueConstraints = {
+@Table(name = "mdb_identifier_related", uniqueConstraints = {
         @UniqueConstraint(columnNames = {"id", "pid"})
 })
 public class RelatedIdentifier {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false)
     private String value;
@@ -42,6 +43,13 @@ public class RelatedIdentifier {
     })
     private Identifier identifier;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
 
 
diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java
index f22cee71a7a3dc4a97c8294619b5ec8931db1714..8a5f2d76a3d4b73f89d7223af8df88c7ac7efdb9 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/maintenance/BannerMessage.java
@@ -2,9 +2,11 @@ package at.tuwien.entities.maintenance;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -16,16 +18,16 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 @NoArgsConstructor
 @EqualsAndHashCode
 @EntityListeners(AuditingEntityListener.class)
-@Table(name = "mdb_banner_messages")
+@Table(name = "mdb_messages")
 @NamedQueries({
         @NamedQuery(name = "BannerMessage.findByActive", query = "select m from BannerMessage m where (m.displayStart = null and m.displayEnd = null) or (m.displayStart = null and m.displayEnd >= NOW()) or (m.displayStart <= NOW() and m.displayEnd >= NOW()) or (m.displayStart <= NOW() and m.displayEnd = null)")
 })
 public class BannerMessage {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false, columnDefinition = "ENUM('ERROR','WARNING','INFO')")
     @Enumerated(EnumType.STRING)
@@ -46,4 +48,11 @@ public class BannerMessage {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant displayEnd;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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..664b284c3d087250fee1623a624f77305e19c1eb 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
@@ -2,11 +2,13 @@ package at.tuwien.entities.semantics;
 
 import jakarta.persistence.*;
 import lombok.*;
+import org.hibernate.annotations.JdbcTypeCode;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import java.time.Instant;
+import java.util.UUID;
 
 import static jakarta.persistence.GenerationType.IDENTITY;
 
@@ -27,9 +29,9 @@ import static jakarta.persistence.GenerationType.IDENTITY;
 public class Ontology {
 
     @Id
-    @GeneratedValue(strategy = IDENTITY)
-    @Column(updatable = false, nullable = false)
-    private Long id;
+    @JdbcTypeCode(java.sql.Types.VARCHAR)
+    @Column(columnDefinition = "VARCHAR(36)")
+    private UUID id;
 
     @Column(nullable = false, unique = true)
     private String uri;
@@ -56,4 +58,11 @@ public class Ontology {
     @Column(columnDefinition = "TIMESTAMP")
     private Instant lastModified;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
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 156fc3b4c8efbd44e4d8389b50a7cb0f65814aac..44d36e5e03c1e38a3fd9ecd807abce21116eb768 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
@@ -27,7 +27,7 @@ public class User {
 
     @Id
     @JdbcTypeCode(java.sql.Types.VARCHAR)
-    @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
+    @Column(name = "ID", columnDefinition = "VARCHAR(36)")
     private UUID id;
 
     @JdbcTypeCode(java.sql.Types.VARCHAR)
@@ -68,4 +68,11 @@ public class User {
     @Column(name = "is_internal", nullable = false, updatable = false, columnDefinition = "bool default false")
     private Boolean isInternal;
 
+    @PrePersist
+    public void prePersist() {
+        if (this.id == null) {
+            this.id = UUID.randomUUID();
+        }
+    }
+
 }
diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml
index a9c3a1f388e6f1e7e55c6e1ec47f4e3d7acf70fc..54c464b11a31cea0e588f797fa38012c573a1d02 100644
--- a/dbrepo-metadata-service/oai/pom.xml
+++ b/dbrepo-metadata-service/oai/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-metadata-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-oai</artifactId>
     <name>dbrepo-metadata-service-oai</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies/>
 
diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml
index 54115d9e16441c6f651c9dad9579089bee2d6e1e..d294d8583b08b34fc56c835c08bac25229a6a9b7 100644
--- a/dbrepo-metadata-service/pom.xml
+++ b/dbrepo-metadata-service/pom.xml
@@ -11,7 +11,7 @@
     <groupId>at.tuwien</groupId>
     <artifactId>dbrepo-metadata-service</artifactId>
     <name>dbrepo-metadata-service</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <description>Service that manages the metadata</description>
 
@@ -27,7 +27,7 @@
         <module>report</module>
     </modules>
 
-    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url>
+    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url>
     <developers>
         <developer>
             <name>Martin Weise</name>
diff --git a/dbrepo-metadata-service/report/pom.xml b/dbrepo-metadata-service/report/pom.xml
index f78cb7c2599f35692bbf13b8e001c683eadb01d3..6bcb8d579b67439ad4bcd590cf5af3819f70218e 100644
--- a/dbrepo-metadata-service/report/pom.xml
+++ b/dbrepo-metadata-service/report/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <artifactId>dbrepo-metadata-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-report</artifactId>
     <name>dbrepo-metadata-service-report</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml
index 696b3c223ae7a5ac113efe544b21a6b5ba67f3a0..4d3b5f933d2c39674b2f9e58461387c0a2cffdb8 100644
--- a/dbrepo-metadata-service/repositories/pom.xml
+++ b/dbrepo-metadata-service/repositories/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <artifactId>dbrepo-metadata-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-repositories</artifactId>
     <name>dbrepo-metadata-service-repositories</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java
index cff05b8d6f1d670398703c12f79d86aefe8be1be..ebe69cd7d73efece9c5dc1cf692480cfa0a5a8ac 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java
@@ -318,7 +318,7 @@ public interface MetadataMapper {
     Identifier identifierDtoToIdentifier(IdentifierDto data);
 
     @Mappings({
-            @Mapping(target = "databaseId", source = "database.id"),
+            @Mapping(target = "databaseId", source = "database.id")
     })
     IdentifierDto identifierToIdentifierDto(Identifier data);
 
@@ -821,13 +821,14 @@ public interface MetadataMapper {
     }
 
     @Mappings({
+            @Mapping(target = "vdbid", source = "database.id"),
             @Mapping(target = "database.views", ignore = true),
             @Mapping(target = "database.tables", ignore = true)
     })
     ViewDto viewToViewDto(View data);
 
     @Mappings({
-            @Mapping(target = "databaseId", source = "view.vdbid"),
+            @Mapping(target = "databaseId", source = "view.database.id"),
     })
     ViewColumnDto viewColumnToViewColumnDto(ViewColumn data);
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java
index 8d7aee77e712a3c47f9ebc676457c158a9a13381..c12dc7b83f562ec1237dc7941db60700a78f1a59 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/BannerMessageRepository.java
@@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.UUID;
 
 @Repository
-public interface BannerMessageRepository extends JpaRepository<BannerMessage, Long> {
+public interface BannerMessageRepository extends JpaRepository<BannerMessage, UUID> {
 
     List<BannerMessage> findByActive();
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java
index c77641200c7856dc3300cbba66f008265f17a60f..1e70cfdfb245c7de9cda405444c6bd43176cca14 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ConceptRepository.java
@@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface ConceptRepository extends JpaRepository<TableColumnConcept, Long> {
+public interface ConceptRepository extends JpaRepository<TableColumnConcept, UUID> {
 
     Optional<TableColumnConcept> findByUri(String uri);
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java
index 8155aef9cc3f67eb83c52ed5bb15c4a67c50c208..536802cf4165e746dc8a27ed796c058ed86d44e5 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ContainerRepository.java
@@ -7,9 +7,10 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface ContainerRepository extends JpaRepository<Container, Long> {
+public interface ContainerRepository extends JpaRepository<Container, UUID> {
 
     Optional<Container> findByInternalName(String internalName);
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java
index 38a0a8044162cbf3abe9178de26fca4a21e7ee4c..67c0df76ee417054e5ac221754ede3cba3d9c39b 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/DatabaseRepository.java
@@ -9,7 +9,7 @@ import java.util.Optional;
 import java.util.UUID;
 
 @Repository
-public interface DatabaseRepository extends JpaRepository<Database, Long> {
+public interface DatabaseRepository extends JpaRepository<Database, UUID> {
 
     List<Database> findAllDesc();
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java
index 12b309ec521e84c7eaed1bf446442498bfd4c481..9e49f2aa1c5e530dfe60a65aa1e1b4a35fdb0e01 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/IdentifierRepository.java
@@ -6,9 +6,10 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface IdentifierRepository extends JpaRepository<Identifier, Long> {
+public interface IdentifierRepository extends JpaRepository<Identifier, UUID> {
 
     /**
      * Finds identifiers by given database id.
@@ -16,7 +17,7 @@ public interface IdentifierRepository extends JpaRepository<Identifier, Long> {
      * @param databaseId The database id.
      * @return List of matching identifiers.
      */
-    List<Identifier> findByDatabaseId(Long databaseId);
+    List<Identifier> findByDatabaseId(UUID databaseId);
 
     /**
      * Finds identifiers by given database id and query id.
@@ -25,11 +26,11 @@ public interface IdentifierRepository extends JpaRepository<Identifier, Long> {
      * @param queryId    The query id.
      * @return List of matching identifiers.
      */
-    List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId);
+    List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId);
 
-    List<Identifier> findDatabaseIdentifier(Long databaseId);
+    List<Identifier> findDatabaseIdentifier(UUID databaseId);
 
-    List<Identifier> findSubsetIdentifier(Long databaseId, Long queryId);
+    List<Identifier> findSubsetIdentifier(UUID databaseId, UUID queryId);
 
     List<Identifier> findAllDatabaseIdentifiers();
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java
index 23fa40c5be1fd3a6e9e430fafcaccc896e37970d..6282ed90405ba08a69cadb9a8ec0a7fd01f17888 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ImageRepository.java
@@ -4,11 +4,11 @@ import at.tuwien.entities.container.image.ContainerImage;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface ImageRepository extends JpaRepository<ContainerImage, Long> {
+public interface ImageRepository extends JpaRepository<ContainerImage, UUID> {
 
     Optional<ContainerImage> findByNameAndVersion(String name, String version);
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java
index a7fad56076dc454ad1a67a1350ce5d6d2fa926ad..69b4e204be72c14d60f45ff9535fa89bc9de7629 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/OntologyRepository.java
@@ -6,9 +6,10 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface OntologyRepository extends JpaRepository<Ontology, Long> {
+public interface OntologyRepository extends JpaRepository<Ontology, UUID> {
 
     List<Ontology> findAllProcessable();
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java
index fda9e78ce537b20201ecf88487171a9bb956ea16..bc126eaa27660e84b9e71d5adea18859e1be4fe7 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/TableRepository.java
@@ -4,10 +4,12 @@ import at.tuwien.entities.database.table.Table;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 /**
  * TO BE USED READONLY
  */
 @Repository
-public interface TableRepository extends JpaRepository<Table, Long> {
+public interface TableRepository extends JpaRepository<Table, UUID> {
 
 }
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java
index 3bcb0c0a49c0d73ff7d20af29fee6a5c17226d3d..6676410730a1f562638e1bc32053b2b8a5fc5c2b 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/UnitRepository.java
@@ -5,9 +5,10 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface UnitRepository extends JpaRepository<TableColumnUnit, Long> {
+public interface UnitRepository extends JpaRepository<TableColumnUnit, UUID> {
 
     Optional<TableColumnUnit> findByUri(String uri);
 
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java
index de678d90ae99d41a76987be29b1a001929222ceb..50544822e50db796ca862be696640b8edf3c73a1 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/ViewRepository.java
@@ -4,10 +4,12 @@ import at.tuwien.entities.database.View;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 /**
  * TO BE USED READONLY
  */
 @Repository
-public interface ViewRepository extends JpaRepository<View, Long> {
+public interface ViewRepository extends JpaRepository<View, UUID> {
 
 }
diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml
index f3d420f35ec25fb27dd66a8df3a90561e649b33d..9e9f23d11fdbab4fc2308bead597a7626272ceb1 100644
--- a/dbrepo-metadata-service/rest-service/pom.xml
+++ b/dbrepo-metadata-service/rest-service/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <artifactId>dbrepo-metadata-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-rest-service</artifactId>
     <name>dbrepo-metadata-service-rest</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
index 9c109c87d68664793b3033d7be123d71a7b02d69..79dc5fd8e987dfad2d8e59dcd14ac156803fab91 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/AccessEndpoint.java
@@ -38,15 +38,15 @@ public class AccessEndpoint extends AbstractEndpoint {
 
     private final UserService userService;
     private final AccessService accessService;
-    private final MetadataMapper databaseMapper;
+    private final MetadataMapper metadataMapper;
     private final DatabaseService databaseService;
 
     @Autowired
-    public AccessEndpoint(UserService userService, AccessService accessService, MetadataMapper databaseMapper,
+    public AccessEndpoint(UserService userService, AccessService accessService, MetadataMapper metadataMapper,
                           DatabaseService databaseService) {
         this.userService = userService;
         this.accessService = accessService;
-        this.databaseMapper = databaseMapper;
+        this.metadataMapper = metadataMapper;
         this.databaseService = databaseService;
     }
 
@@ -89,7 +89,7 @@ public class AccessEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseAccessDto> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseAccessDto> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                     @PathVariable("userId") UUID userId,
                                                     @Valid @RequestBody CreateAccessDto data,
                                                     @NotNull Principal principal) throws NotAllowedException, DataServiceException,
@@ -151,7 +151,7 @@ public class AccessEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> update(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @PathVariable("userId") UUID userId,
                                        @Valid @RequestBody CreateAccessDto data,
                                        @NotNull Principal principal) throws NotAllowedException,
@@ -203,7 +203,7 @@ public class AccessEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseAccessDto> find(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseAccessDto> find(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                   @PathVariable("userId") UUID userId,
                                                   @NotNull Principal principal) throws DatabaseNotFoundException,
             UserNotFoundException, AccessNotFoundException, NotAllowedException {
@@ -219,7 +219,7 @@ public class AccessEndpoint extends AbstractEndpoint {
         final Database database = databaseService.findById(databaseId);
         final User user = userService.findById(userId);
         final DatabaseAccess access = accessService.find(database, user);
-        return ResponseEntity.ok(databaseMapper.databaseAccessToDatabaseAccessDto(access));
+        return ResponseEntity.ok(metadataMapper.databaseAccessToDatabaseAccessDto(access));
     }
 
     @DeleteMapping("/{userId}")
@@ -258,7 +258,7 @@ public class AccessEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<Void> revoke(@NotNull @PathVariable("databaseId") UUID databaseId,
                                        @PathVariable("userId") UUID userId,
                                        @NotNull Principal principal) throws NotAllowedException, DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException,
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
index b5d153318cc9688d13784a80df41c6f28a862de3..dc588c06073144702a5f6c645323a36f611e9505 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerEndpoint.java
@@ -1,8 +1,8 @@
 package at.tuwien.endpoints;
 
 import at.tuwien.api.container.ContainerBriefDto;
-import at.tuwien.api.container.CreateContainerDto;
 import at.tuwien.api.container.ContainerDto;
+import at.tuwien.api.container.CreateContainerDto;
 import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.entities.container.Container;
 import at.tuwien.exception.ContainerAlreadyExistsException;
@@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 
@@ -129,7 +130,7 @@ public class ContainerEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("containerId") Long containerId,
+    public ResponseEntity<ContainerDto> findById(@NotNull @PathVariable("containerId") UUID containerId,
                                                  Principal principal)
             throws ContainerNotFoundException {
         log.debug("endpoint find container, containerId={}", containerId);
@@ -139,7 +140,8 @@ public class ContainerEndpoint extends AbstractEndpoint {
             log.trace("attach privileged credential information");
             headers.set("X-Username", container.getPrivilegedUsername());
             headers.set("X-Password", container.getPrivilegedPassword());
-            headers.set("Access-Control-Expose-Headers", "X-Username X-Password");
+            headers.set("X-Jdbc-Method", container.getImage().getJdbcMethod());
+            headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method");
         }
         return ResponseEntity.ok()
                 .headers(headers)
@@ -167,7 +169,7 @@ public class ContainerEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("containerId") Long containerId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("containerId") UUID containerId)
             throws ContainerNotFoundException {
         log.debug("endpoint delete container, containerId={}", containerId);
         containerService.remove(containerService.find(containerId));
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
index ccfd23e1ceda849cef32b6620ea4e21f36458cf0..ec0810b23ca31157fd143cfb402e0cbf148f6528 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
@@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.*;
 import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @RestController
@@ -160,7 +161,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
             ContainerQuotaException {
         log.debug("endpoint create database, data.name={}", data.getName());
         final Container container = containerService.find(data.getCid());
-        if (container.getDatabases().size() + 1 > container.getQuota()) {
+        if (container.getQuota() != null && container.getDatabases().size() + 1 > container.getQuota()) {
             log.error("Failed to create database: quota of {} exceeded", container.getQuota());
             throw new ContainerQuotaException("Failed to create database: quota of " + container.getQuota() + " exceeded");
         }
@@ -209,7 +210,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseBriefDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                                  @NotNull Principal principal) throws DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, MalformedException,
@@ -258,7 +259,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseBriefDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseBriefDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                                 @NotNull Principal principal) throws DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, ViewNotFoundException {
@@ -311,7 +312,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseBriefDto> visibility(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseBriefDto> visibility(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                        @Valid @RequestBody DatabaseModifyVisibilityDto data,
                                                        @NotNull Principal principal) throws DatabaseNotFoundException,
             NotAllowedException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException {
@@ -365,7 +366,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseBriefDto> transfer(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseBriefDto> transfer(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                      @Valid @RequestBody DatabaseTransferDto data,
                                                      @NotNull Principal principal) throws NotAllowedException,
             DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException,
@@ -421,7 +422,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<DatabaseBriefDto> modifyImage(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseBriefDto> modifyImage(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                         @Valid @RequestBody DatabaseModifyImageDto data,
                                                         @NotNull Principal principal) throws NotAllowedException,
             DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException,
@@ -456,7 +457,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))})
     })
-    public ResponseEntity<byte[]> findPreviewImage(@NotNull @PathVariable("databaseId") Long databaseId)
+    public ResponseEntity<byte[]> findPreviewImage(@NotNull @PathVariable("databaseId") UUID databaseId)
             throws DatabaseNotFoundException {
         log.debug("endpoint get database preview image, databaseId={}", databaseId);
         return ResponseEntity.ok()
@@ -490,7 +491,7 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))})
     })
-    public ResponseEntity<DatabaseDto> findById(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<DatabaseDto> findById(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                 Principal principal) throws DatabaseNotFoundException,
             NotAllowedException {
         log.debug("endpoint find database, databaseId={}", databaseId);
@@ -547,7 +548,8 @@ public class DatabaseEndpoint extends AbstractEndpoint {
         if (isSystem(principal)) {
             headers.set("X-Username", database.getContainer().getPrivilegedUsername());
             headers.set("X-Password", database.getContainer().getPrivilegedPassword());
-            headers.set("Access-Control-Expose-Headers", "X-Username X-Password");
+            headers.set("X-Jdbc-Method", database.getContainer().getImage().getJdbcMethod());
+            headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method");
         } else {
             removeInternalData(dto.getContainer());
         }
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
index b3d699086ee93b943801a3139a2e2488dc9dcc8c..31dd1e542d53112ff42b49a6e5f6269255088ac6 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/IdentifierEndpoint.java
@@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.*;
 import java.security.Principal;
 import java.util.List;
 import java.util.Objects;
+import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -90,10 +91,10 @@ public class IdentifierEndpoint extends AbstractEndpoint {
     })
     public ResponseEntity<?> findAll(@Valid @RequestParam(value = "type", required = false) IdentifierTypeDto type,
                                      @Valid @RequestParam(value = "status", required = false) IdentifierStatusTypeDto status,
-                                     @Valid @RequestParam(value = "dbid", required = false) Long dbid,
-                                     @Valid @RequestParam(value = "qid", required = false) Long qid,
-                                     @Valid @RequestParam(value = "vid", required = false) Long vid,
-                                     @Valid @RequestParam(value = "tid", required = false) Long tid,
+                                     @Valid @RequestParam(value = "dbid", required = false) UUID dbid,
+                                     @Valid @RequestParam(value = "qid", required = false) UUID qid,
+                                     @Valid @RequestParam(value = "vid", required = false) UUID vid,
+                                     @Valid @RequestParam(value = "tid", required = false) UUID tid,
                                      @RequestHeader(HttpHeaders.ACCEPT) String accept,
                                      Principal principal) {
         log.debug("endpoint find identifiers, type={}, status={}, dbid={}, qid={}, vid={}, tid={}, accept={}", type,
@@ -185,7 +186,7 @@ public class IdentifierEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<?> find(@Valid @PathVariable("identifierId") Long identifierId,
+    public ResponseEntity<?> find(@Valid @PathVariable("identifierId") UUID identifierId,
                                   @RequestHeader(HttpHeaders.ACCEPT) String accept,
                                   Principal principal) throws IdentifierNotFoundException,
             DataServiceException, DataServiceConnectionException, MalformedException, FormatNotAvailableException,
@@ -278,7 +279,7 @@ public class IdentifierEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("identifierId") Long identifierId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("identifierId") UUID identifierId)
             throws IdentifierNotFoundException, NotAllowedException, DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException {
@@ -332,7 +333,7 @@ public class IdentifierEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<IdentifierDto> publish(@Valid @PathVariable("identifierId") Long identifierId)
+    public ResponseEntity<IdentifierDto> publish(@Valid @PathVariable("identifierId") UUID identifierId)
             throws SearchServiceException, DatabaseNotFoundException, SearchServiceConnectionException,
             MalformedException, DataServiceConnectionException, IdentifierNotFoundException, ExternalServiceException {
         log.debug("endpoint publish identifier, identifierId={}", identifierId);
@@ -380,7 +381,7 @@ public class IdentifierEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<IdentifierDto> save(@NotNull @PathVariable("identifierId") Long identifierId,
+    public ResponseEntity<IdentifierDto> save(@NotNull @PathVariable("identifierId") UUID identifierId,
                                               @NotNull @Valid @RequestBody IdentifierSaveDto data,
                                               @NotNull Principal principal) throws UserNotFoundException,
             DatabaseNotFoundException, MalformedException, NotAllowedException, DataServiceException,
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java
index 2aaad860a8bbb70e4d7023b00587cc0ad70b7e94..62c00d1ee8d4ef5a395b22e77595859c44774c56 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ImageEndpoint.java
@@ -10,7 +10,7 @@ import at.tuwien.exception.ImageAlreadyExistsException;
 import at.tuwien.exception.ImageInvalidException;
 import at.tuwien.exception.ImageNotFoundException;
 import at.tuwien.mapper.MetadataMapper;
-import at.tuwien.service.impl.ImageServiceImpl;
+import at.tuwien.service.ImageService;
 import io.micrometer.observation.annotation.Observed;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.ArraySchema;
@@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 @Log4j2
 @RestController
@@ -39,11 +40,11 @@ import java.util.List;
 @RequestMapping(path = "/api/image")
 public class ImageEndpoint extends AbstractEndpoint {
 
+    private final ImageService imageService;
     private final MetadataMapper metadataMapper;
-    private final ImageServiceImpl imageService;
 
     @Autowired
-    public ImageEndpoint(ImageServiceImpl imageService, MetadataMapper metadataMapper) {
+    public ImageEndpoint(ImageService imageService, MetadataMapper metadataMapper) {
         this.imageService = imageService;
         this.metadataMapper = metadataMapper;
     }
@@ -119,7 +120,7 @@ public class ImageEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ImageDto> findById(@NotNull @PathVariable("imageId") Long imageId) throws ImageNotFoundException {
+    public ResponseEntity<ImageDto> findById(@NotNull @PathVariable("imageId") UUID imageId) throws ImageNotFoundException {
         log.debug("endpoint find image, imageId={}", imageId);
         return ResponseEntity.ok()
                 .body(metadataMapper.containerImageToImageDto(imageService.find(imageId)));
@@ -144,7 +145,7 @@ public class ImageEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ImageDto> update(@NotNull @PathVariable("imageId") Long imageId,
+    public ResponseEntity<ImageDto> update(@NotNull @PathVariable("imageId") UUID imageId,
                                            @RequestBody @Valid ImageChangeDto changeDto)
             throws ImageNotFoundException {
         log.debug("endpoint update image, imageId={}, changeDto={}", imageId, changeDto);
@@ -170,7 +171,7 @@ public class ImageEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("imageId") Long imageId) throws ImageNotFoundException {
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("imageId") UUID imageId) throws ImageNotFoundException {
         log.debug("endpoint delete image, imageId={}", imageId);
         imageService.delete(imageService.find(imageId));
         return ResponseEntity.accepted()
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java
index 0aeeac9401c796b82060d363a5e1ed01e6ac0e61..656279a86d680877849d9d2aa6fce327b6ba8ecb 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/MessageEndpoint.java
@@ -27,6 +27,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.UUID;
 
 @Log4j2
 @CrossOrigin(origins = "*")
@@ -83,7 +84,7 @@ public class MessageEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<BannerMessageDto> find(@NotNull @PathVariable("messageId") Long messageId)
+    public ResponseEntity<BannerMessageDto> find(@NotNull @PathVariable("messageId") UUID messageId)
             throws MessageNotFoundException {
         log.debug("endpoint find one maintenance message, messageId={}", messageId);
         return ResponseEntity.ok(metadataMapper.bannerMessageToBannerMessageDto(
@@ -128,7 +129,7 @@ public class MessageEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<BannerMessageDto> update(@NotNull @PathVariable("messageId") Long messageId,
+    public ResponseEntity<BannerMessageDto> update(@NotNull @PathVariable("messageId") UUID messageId,
                                                    @Valid @RequestBody BannerMessageUpdateDto data)
             throws MessageNotFoundException {
         log.debug("endpoint update maintenance message, messageId={}, data={}", messageId, data);
@@ -154,7 +155,7 @@ public class MessageEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("messageId") Long messageId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("messageId") UUID messageId)
             throws MessageNotFoundException {
         log.debug("endpoint delete maintenance message, messageId={}", messageId);
         final BannerMessage message = bannerMessageService.find(messageId);
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java
index 7bc6bc037e75501bfd7de5006150550a7a42366b..c723568556ce097c600ece7b8aad9b57d3914b77 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/OntologyEndpoint.java
@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 @Log4j2
 @CrossOrigin(origins = "*")
@@ -83,7 +84,7 @@ public class OntologyEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<OntologyDto> find(@NotNull @PathVariable("ontologyId") Long ontologyId)
+    public ResponseEntity<OntologyDto> find(@NotNull @PathVariable("ontologyId") UUID ontologyId)
             throws OntologyNotFoundException {
         log.debug("endpoint find all ontologies, ontologyId={}", ontologyId);
         return ResponseEntity.ok(metadataMapper.ontologyToOntologyDto(ontologyService.find(ontologyId)));
@@ -127,7 +128,7 @@ public class OntologyEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<OntologyDto> update(@NotNull @PathVariable("ontologyId") Long ontologyId,
+    public ResponseEntity<OntologyDto> update(@NotNull @PathVariable("ontologyId") UUID ontologyId,
                                               @NotNull @Valid @RequestBody OntologyModifyDto data)
             throws OntologyNotFoundException {
         log.debug("endpoint update ontology, ontologyId={}, data={}", ontologyId, data);
@@ -153,7 +154,7 @@ public class OntologyEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("ontologyId") Long ontologyId)
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("ontologyId") UUID ontologyId)
             throws OntologyNotFoundException {
         log.debug("endpoint delete ontology, ontologyId={}", ontologyId);
         ontologyService.delete(ontologyService.find(ontologyId));
@@ -194,7 +195,7 @@ public class OntologyEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<EntityDto>> find(@NotNull @PathVariable("ontologyId") Long id,
+    public ResponseEntity<List<EntityDto>> find(@NotNull @PathVariable("ontologyId") UUID id,
                                                 @RequestParam(name = "label", required = false) String label,
                                                 @RequestParam(name = "uri", required = false) String uri)
             throws OntologyNotFoundException, UriMalformedException, FilterBadRequestException, MalformedException {
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 32075fb5d8ef41d8c36b444a7c645e1ef55c7cbd..c3f4ad1a71cf2d77bcbe9f241bb9150dd709da00 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
@@ -37,6 +37,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 @Log4j2
@@ -89,7 +90,7 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<TableBriefDto>> list(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<List<TableBriefDto>> list(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                     Principal principal) throws NotAllowedException,
             DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException {
         log.debug("endpoint list tables, databaseId={}", databaseId);
@@ -142,8 +143,8 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<EntityDto>> analyseTable(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                        @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<List<EntityDto>> analyseTable(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                        @NotNull @PathVariable("tableId") UUID tableId,
                                                         @NotNull Principal principal)
             throws MalformedException, TableNotFoundException, DatabaseNotFoundException, NotAllowedException {
         log.debug("endpoint analyse table semantics, databaseId={}, tableId={}, principal.name={}", databaseId, tableId,
@@ -194,8 +195,8 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> updateStatistic(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> updateStatistic(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                @NotNull @PathVariable("tableId") UUID tableId,
                                                 @NotNull Principal principal)
             throws TableNotFoundException, DatabaseNotFoundException, SearchServiceException, NotAllowedException,
             SearchServiceConnectionException, MalformedException, DataServiceException, DataServiceConnectionException {
@@ -251,9 +252,9 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ColumnDto> updateColumn(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                  @NotNull @PathVariable("tableId") Long tableId,
-                                                  @NotNull @PathVariable("columnId") Long columnId,
+    public ResponseEntity<ColumnDto> updateColumn(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                  @NotNull @PathVariable("tableId") UUID tableId,
+                                                  @NotNull @PathVariable("columnId") UUID columnId,
                                                   @NotNull @Valid @RequestBody ColumnSemanticsUpdateDto updateDto,
                                                   @NotNull Principal principal) throws NotAllowedException,
             MalformedException, DataServiceException, DataServiceConnectionException, UserNotFoundException,
@@ -301,9 +302,9 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<TableColumnEntityDto>> analyseTableColumn(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                                         @NotNull @PathVariable("tableId") Long tableId,
-                                                                         @NotNull @PathVariable("columnId") Long columnId,
+    public ResponseEntity<List<TableColumnEntityDto>> analyseTableColumn(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                                         @NotNull @PathVariable("tableId") UUID tableId,
+                                                                         @NotNull @PathVariable("columnId") UUID columnId,
                                                                          @NotNull Principal principal)
             throws MalformedException, TableNotFoundException, DatabaseNotFoundException {
         log.debug("endpoint analyse table column semantics, databaseId={}, tableId={}, columnId={}, principal.name={}",
@@ -358,7 +359,7 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                 @NotNull @Valid @RequestBody CreateTableDto data,
                                                 @NotNull Principal principal) throws NotAllowedException, MalformedException,
             DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, UserNotFoundException,
@@ -413,8 +414,8 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId,
-                                                @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                                @NotNull @PathVariable("tableId") UUID tableId,
                                                 @NotNull @Valid @RequestBody TableUpdateDto data,
                                                 @NotNull Principal principal) throws NotAllowedException,
             DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException,
@@ -458,8 +459,8 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<TableDto> findById(@NotNull @PathVariable("databaseId") Long databaseId,
-                                             @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<TableDto> findById(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                             @NotNull @PathVariable("tableId") UUID tableId,
                                              Principal principal) throws TableNotFoundException,
             DatabaseNotFoundException, UserNotFoundException, NotAllowedException {
         log.debug("endpoint find table, databaseId={}, tableId={}", databaseId, tableId);
@@ -489,7 +490,8 @@ public class TableEndpoint extends AbstractEndpoint {
         if (isSystem(principal)) {
             headers.set("X-Username", table.getDatabase().getContainer().getPrivilegedUsername());
             headers.set("X-Password", table.getDatabase().getContainer().getPrivilegedPassword());
-            headers.set("Access-Control-Expose-Headers", "X-Username X-Password");
+            headers.set("X-Jdbc-Method", table.getDatabase().getContainer().getImage().getJdbcMethod());
+            headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method");
         } else {
             removeInternalData(dto.getDatabase().getContainer());
         }
@@ -534,8 +536,8 @@ public class TableEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId,
-                                       @NotNull @PathVariable("tableId") Long tableId,
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                       @NotNull @PathVariable("tableId") UUID tableId,
                                        @NotNull Principal principal) throws NotAllowedException,
             DataServiceException, DataServiceConnectionException, TableNotFoundException, DatabaseNotFoundException,
             SearchServiceException, SearchServiceConnectionException {
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
index e8b40de8b2bfa05f9901a01ce0e269fbbffefe41..2214343ee67ae5e8c0d1acca7857e08cb08f275b 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/ViewEndpoint.java
@@ -35,6 +35,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 @Log4j2
@@ -75,7 +76,7 @@ public class ViewEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<List<ViewBriefDto>> findAll(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<List<ViewBriefDto>> findAll(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                       Principal principal) throws UserNotFoundException,
             DatabaseNotFoundException {
         log.debug("endpoint find all views, databaseId={}", databaseId);
@@ -136,7 +137,7 @@ public class ViewEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ViewBriefDto> create(@NotNull @PathVariable("databaseId") Long databaseId,
+    public ResponseEntity<ViewBriefDto> create(@NotNull @PathVariable("databaseId") UUID databaseId,
                                                @NotNull @Valid @RequestBody CreateViewDto data,
                                                @NotNull Principal principal) throws NotAllowedException,
             MalformedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException,
@@ -184,8 +185,8 @@ public class ViewEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ViewDto> find(@NotNull @PathVariable("databaseId") Long databaseId,
-                                        @NotNull @PathVariable("viewId") Long viewId,
+    public ResponseEntity<ViewDto> find(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                        @NotNull @PathVariable("viewId") UUID viewId,
                                         Principal principal) throws DatabaseNotFoundException,
             ViewNotFoundException {
         log.debug("endpoint find view, databaseId={}, viewId={}", databaseId, viewId);
@@ -200,7 +201,8 @@ public class ViewEndpoint extends AbstractEndpoint {
             headers.set("X-Type", database.getContainer().getImage().getJdbcMethod());
             headers.set("X-Database", database.getInternalName());
             headers.set("X-View", view.getInternalName());
-            headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View");
+            headers.set("X-Jdbc-Method", view.getDatabase().getContainer().getImage().getJdbcMethod());
+            headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method");
         }
         final ViewDto dto = metadataMapper.viewToViewDto(view);
         if (!isSystem(principal)) {
@@ -252,8 +254,8 @@ public class ViewEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") Long databaseId,
-                                       @NotNull @PathVariable("viewId") Long viewId,
+    public ResponseEntity<Void> delete(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                       @NotNull @PathVariable("viewId") UUID viewId,
                                        @NotNull Principal principal) throws NotAllowedException, DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException,
             SearchServiceConnectionException, UserNotFoundException {
@@ -305,8 +307,8 @@ public class ViewEndpoint extends AbstractEndpoint {
                             mediaType = "application/json",
                             schema = @Schema(implementation = ApiErrorDto.class))}),
     })
-    public ResponseEntity<ViewBriefDto> update(@NotNull @PathVariable("databaseId") Long databaseId,
-                                               @NotNull @PathVariable("viewId") Long viewId,
+    public ResponseEntity<ViewBriefDto> update(@NotNull @PathVariable("databaseId") UUID databaseId,
+                                               @NotNull @PathVariable("viewId") UUID viewId,
                                                @NotNull @Valid @RequestBody ViewUpdateDto data,
                                                @NotNull Principal principal) throws NotAllowedException,
             DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException,
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java
index 376769e3c318eaabc93e2a65def2673d85d3e7d2..49b5d48de8602ad79473142a3f05e36c336d97b9 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/AccessEndpointUnitTest.java
@@ -347,7 +347,7 @@ public class AccessEndpointUnitTest extends AbstractUnitTest {
         assertNull(response.getBody());
     }
 
-    protected void generic_find(Long databaseId, Database database, DatabaseAccess access, Principal principal,
+    protected void generic_find(UUID databaseId, Database database, DatabaseAccess access, Principal principal,
                                 User caller, UUID userId, User user) throws UserNotFoundException,
             DatabaseNotFoundException, AccessNotFoundException, NotAllowedException {
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java
index 00185d9ea134c33eba73ba7c24a02ff2d606ab1d..bce95faff57132842796d47e19ba78ae2c2d4921 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ContainerEndpointUnitTest.java
@@ -25,6 +25,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.doNothing;
@@ -68,10 +69,11 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest {
 
         /* test */
         final ResponseEntity<ContainerDto> response = findById_generic(CONTAINER_1_ID, CONTAINER_1, USER_LOCAL_ADMIN_PRINCIPAL);
-        final HttpHeaders headers = response.getHeaders() ;
+        final HttpHeaders headers = response.getHeaders();
         assertEquals(List.of(CONTAINER_1_PRIVILEGED_USERNAME), headers.get("X-Username"));
         assertEquals(List.of(CONTAINER_1_PRIVILEGED_PASSWORD), headers.get("X-Password"));
-        assertEquals(List.of("X-Username X-Password"), headers.get("Access-Control-Expose-Headers"));
+        assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Jdbc-Method"));
+        assertEquals(List.of("X-Username X-Password X-Jdbc-Method"), headers.get("Access-Control-Expose-Headers"));
     }
 
     @Test
@@ -178,7 +180,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest {
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
 
-    public ResponseEntity<ContainerDto> findById_generic(Long containerId, Container container, Principal principal)
+    public ResponseEntity<ContainerDto> findById_generic(UUID containerId, Container container, Principal principal)
             throws ContainerNotFoundException {
 
         /* mock */
@@ -192,7 +194,7 @@ public class ContainerEndpointUnitTest extends AbstractUnitTest {
         return response;
     }
 
-    public void delete_generic(Long containerId, Container container) throws ContainerNotFoundException {
+    public void delete_generic(UUID containerId, Container container) throws ContainerNotFoundException {
 
         /* mock */
         when(containerService.find(containerId))
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java
index 1340d552d1b8ff3da3be847704d3d9ccd328eabc..9978574d156702eabe253c5b785cc56002aa0074 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/DatabaseEndpointUnitTest.java
@@ -743,7 +743,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest {
         doNothing()
                 .when(messageQueueService)
                 .setVirtualHostPermissions(user);
-        when(databaseService.findById(anyLong()))
+        when(databaseService.findById(any(UUID.class)))
                 .thenReturn(DATABASE_1);
 
         /* test */
@@ -752,7 +752,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    public void visibility_generic(Long databaseId, Database database, DatabaseModifyVisibilityDto data,
+    public void visibility_generic(UUID databaseId, Database database, DatabaseModifyVisibilityDto data,
                                    Principal principal) throws NotAllowedException, DatabaseNotFoundException,
             SearchServiceException, SearchServiceConnectionException, UserNotFoundException {
 
@@ -774,7 +774,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    public DatabaseDto findById_generic(Long databaseId, Database database, Principal principal)
+    public DatabaseDto findById_generic(UUID databaseId, Database database, Principal principal)
             throws DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException,
             DataServiceException, UserNotFoundException, NotAllowedException {
 
@@ -796,7 +796,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest {
         return body;
     }
 
-    public ResponseEntity<byte[]> findPreviewImage_generic(Long databaseId, Database database) throws DatabaseNotFoundException {
+    public ResponseEntity<byte[]> findPreviewImage_generic(UUID databaseId, Database database) throws DatabaseNotFoundException {
 
         /* mock */
         if (database != null) {
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java
index 419393b485096b84f6495bfcd6ce2910e0c9ae46..1e003041027ed22072d167eae81fab3a5d32c813 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java
@@ -41,6 +41,7 @@ import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Stream;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -92,32 +93,32 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
 
     public static Stream<Arguments> malformedDatabase_parameters() {
         return Stream.of(
-                Arguments.arguments("queryId", 9999L, null, null),
-                Arguments.arguments("viewId", null, 9999L, null),
-                Arguments.arguments("tableId", null, null, 9999L)
+                Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null),
+                Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null),
+                Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7")
         );
     }
 
     public static Stream<Arguments> malformedSubset_parameters() {
         return Stream.of(
                 Arguments.arguments("queryId", null, null, null),
-                Arguments.arguments("viewId", null, 9999L, null),
-                Arguments.arguments("tableId", null, null, 9999L)
+                Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null),
+                Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7")
         );
     }
 
     public static Stream<Arguments> malformedView_parameters() {
         return Stream.of(
-                Arguments.arguments("queryId", 9999L, null, null),
+                Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null),
                 Arguments.arguments("viewId", null, null, null),
-                Arguments.arguments("tableId", null, null, 9999L)
+                Arguments.arguments("tableId", null, null, "deadbeef-1f60-4297-9eab-5b0321d96dd7")
         );
     }
 
     public static Stream<Arguments> malformedTable_parameters() {
         return Stream.of(
-                Arguments.arguments("queryId", 9999L, null, null),
-                Arguments.arguments("viewId", null, 9999L, null),
+                Arguments.arguments("queryId", "deadbeef-1f60-4297-9eab-5b0321d96dd7", null, null),
+                Arguments.arguments("viewId", null, "deadbeef-1f60-4297-9eab-5b0321d96dd7", null),
                 Arguments.arguments("tableId", null, null, null)
         );
     }
@@ -125,7 +126,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     public static Stream<Arguments> findAll_anonymousFilterDatabase_parameters() {
         return Stream.of(
                 Arguments.arguments("dbid", DATABASE_1_ID, null, null, null, null, 1),
-                Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, null, 0),
+                Arguments.arguments("qid", DATABASE_1_ID, QUERY_1_ID, null, null, null, 1),
                 Arguments.arguments("vid", DATABASE_1_ID, null, VIEW_1_ID, null, null, 0),
                 Arguments.arguments("tid", DATABASE_1_ID, null, null, TABLE_1_ID, null, 0),
                 Arguments.arguments("status_published", DATABASE_1_ID, null, null, null, "PUBLISHED", 1),
@@ -143,7 +144,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     public static Stream<Arguments> findAll_filterDatabase_parameters() {
         return Stream.of(
                 Arguments.arguments("database_dbid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL),
-                Arguments.arguments("database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, USER_1_PRINCIPAL),
+                Arguments.arguments("database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, USER_1_PRINCIPAL),
                 Arguments.arguments("database_vid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, USER_1_PRINCIPAL),
                 Arguments.arguments("database_tid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, USER_1_PRINCIPAL),
                 Arguments.arguments("subset_dbid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, null, 1, USER_1_PRINCIPAL),
@@ -159,7 +160,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
                 Arguments.arguments("table_vid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, USER_1_PRINCIPAL),
                 Arguments.arguments("table_tid", IdentifierTypeDto.TABLE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 1, USER_1_PRINCIPAL),
                 Arguments.arguments("anon_database_dbid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, null, 1, null),
-                Arguments.arguments("anon_database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 0, null),
+                Arguments.arguments("anon_database_qid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, QUERY_1_ID, null, null, 1, null),
                 Arguments.arguments("anon_database_vid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, VIEW_1_ID, null, 0, null),
                 Arguments.arguments("anon_database_tid", IdentifierTypeDto.DATABASE, null, DATABASE_1_ID, null, null, TABLE_1_ID, 0, null),
                 Arguments.arguments("anon_subset_dbid", IdentifierTypeDto.SUBSET, null, DATABASE_1_ID, null, null, null, 1, null),
@@ -210,8 +211,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("findAll_anonymousFilterDatabase_parameters")
     @WithAnonymousUser
-    public void findAll_anonymousFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId,
-                                                         Long tableId, IdentifierStatusTypeDto status,
+    public void findAll_anonymousFilterDatabase_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId,
+                                                         UUID tableId, IdentifierStatusTypeDto status,
                                                          Integer expectedSize) throws ViewNotFoundException,
             TableNotFoundException, DatabaseNotFoundException {
 
@@ -239,7 +240,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("findAll_filterSubset_parameters")
     @WithMockUser(username = USER_2_USERNAME)
-    public void findAll_filterSubset_succeeds(String name, Long databaseId, Long queryId, Long viewId, Long tableId,
+    public void findAll_filterSubset_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId, UUID tableId,
                                               IdentifierStatusTypeDto status, Integer expectedSize) {
 
         /* mock */
@@ -258,8 +259,8 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("findAll_anonymousFilterDatabase_parameters")
     @WithAnonymousUser
-    public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, Long databaseId, Long queryId, Long viewId,
-                                                              Long tableId, IdentifierStatusTypeDto status,
+    public void findAll_wrongPrincipalFilterDatabase_succeeds(String name, UUID databaseId, UUID queryId, UUID viewId,
+                                                              UUID tableId, IdentifierStatusTypeDto status,
                                                               Integer expectedSize)
             throws ViewNotFoundException, TableNotFoundException, DatabaseNotFoundException {
 
@@ -288,7 +289,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @MethodSource("findAll_filterDatabase_parameters")
     @WithAnonymousUser
     public void findAll_filterDatabase_succeeds(String name, IdentifierTypeDto type, IdentifierStatusTypeDto status,
-                                                Long databaseId, Long queryId, Long viewId, Long tableId,
+                                                UUID databaseId, UUID queryId, UUID viewId, UUID tableId,
                                                 Integer expectedSize, Principal principal) throws ViewNotFoundException,
             TableNotFoundException, DatabaseNotFoundException {
 
@@ -1115,7 +1116,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
         final ResponseEntity<?> response = generic_find(null, null);
         assertEquals(HttpStatus.MOVED_PERMANENTLY, response.getStatusCode());
         assertNotNull(response.getHeaders().get("Location"));
-        assertEquals(endpointConfig.getWebsiteUrl() + "/database/" + IDENTIFIER_1_DATABASE_ID + "/info?pid=" + IDENTIFIER_1_DATABASE_ID,
+        assertEquals(endpointConfig.getWebsiteUrl() + "/database/" + DATABASE_1_ID + "/info?pid=" + IDENTIFIER_1_ID,
                 response.getHeaders().getFirst("Location"));
     }
 
@@ -1148,7 +1149,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
             SearchServiceException, SearchServiceConnectionException, TableNotFoundException, ExternalServiceException {
 
         /* mock */
-        when(dataServiceGateway.findQuery(DATABASE_2_ID, IDENTIFIER_5_QUERY_ID))
+        when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID))
                 .thenReturn(QUERY_2_DTO);
 
         /* test */
@@ -1158,12 +1159,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("malformedSubset_parameters")
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
-    public void save_malformedSubset_fails(String name, Long queryId, Long viewId, Long tableId) {
+    public void save_malformedSubset_fails(String name, UUID queryId, UUID viewId, UUID tableId) {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
                 .queryId(queryId)
                 .viewId(viewId)
                 .tableId(tableId)
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of())
@@ -1183,12 +1184,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("malformedView_parameters")
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
-    public void save_malformedView_fails(String name, Long queryId, Long viewId, Long tableId) {
+    public void save_malformedView_fails(String name, UUID queryId, UUID viewId, UUID tableId) {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
                 .queryId(queryId)
                 .viewId(viewId)
                 .tableId(tableId)
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of())
@@ -1208,12 +1209,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("malformedTable_parameters")
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
-    public void save_malformedTable_fails(String name, Long queryId, Long viewId, Long tableId) {
+    public void save_malformedTable_fails(String name, UUID queryId, UUID viewId, UUID tableId) {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
                 .queryId(queryId)
                 .viewId(viewId)
                 .tableId(tableId)
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of())
@@ -1233,12 +1234,12 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("malformedDatabase_parameters")
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
-    public void save_malformedDatabase_fails(String name, Long queryId, Long viewId, Long tableId) {
+    public void save_malformedDatabase_fails(String name, UUID queryId, UUID viewId, UUID tableId) {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
                 .queryId(queryId)
                 .viewId(viewId)
                 .tableId(tableId)
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of())
@@ -1259,7 +1260,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
     public void save_invalidDateDay_fails() {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO))
@@ -1281,7 +1282,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
     public void save_invalidDateMonth_fails() {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
-                .databaseId(IDENTIFIER_1_DATABASE_ID)
+                .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
                 .relatedIdentifiers(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO))
@@ -1319,7 +1320,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
     public void save_invalidTable_fails() {
         final IdentifierSaveDto request = IdentifierSaveDto.builder()
-                .viewId(1L)  // <--
+                .viewId(UUID.randomUUID())  // <--
                 .databaseId(DATABASE_1_ID)
                 .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO))
                 .titles(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))
@@ -1341,7 +1342,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     @ParameterizedTest
     @MethodSource("save_parameters")
     @WithMockUser(username = USER_1_USERNAME, authorities = {"create-identifier"})
-    public void save_noForeign_fails(String name, Long databaseId, Database database, DatabaseAccess access,
+    public void save_noForeign_fails(String name, UUID databaseId, Database database, DatabaseAccess access,
                                      Identifier identifier, IdentifierSaveDto data, Principal principal, User user) {
 
         /* test */
@@ -1455,7 +1456,7 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest {
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
 
-    protected void generic_save(Long databaseId, Database database, DatabaseAccess access, Identifier identifier,
+    protected void generic_save(UUID databaseId, Database database, DatabaseAccess access, Identifier identifier,
                                 IdentifierSaveDto data, Principal principal, User user) throws MalformedException,
             NotAllowedException, DataServiceException, DataServiceConnectionException, UserNotFoundException,
             DatabaseNotFoundException, AccessNotFoundException, QueryNotFoundException,
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java
index bf1b2ffa55c51e74ebb7d643d374407954bfdbd3..b5be98cfb6f8ce6fc0ed840c065dca5524b10502 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ImageEndpointUnitTest.java
@@ -25,6 +25,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -260,7 +261,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    public void findById_generic(Long imageId, ContainerImage image) throws ImageNotFoundException {
+    public void findById_generic(UUID imageId, ContainerImage image) throws ImageNotFoundException {
 
         /* mock */
         when(imageService.find(imageId))
@@ -272,7 +273,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    public void delete_generic(Long imageId, ContainerImage image) throws ImageNotFoundException {
+    public void delete_generic(UUID imageId, ContainerImage image) throws ImageNotFoundException {
 
         /* mock */
         when(imageService.find(imageId))
@@ -284,7 +285,7 @@ public class ImageEndpointUnitTest extends AbstractUnitTest {
         assertNull(response.getBody());
     }
 
-    public void modify_generic(Long imageId, ContainerImage image, ImageChangeDto data) throws ImageNotFoundException {
+    public void modify_generic(UUID imageId, ContainerImage image, ImageChangeDto data) throws ImageNotFoundException {
 
         /* mock */
         when(imageService.find(imageId))
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java
index 22516074ae83d88c5140de9e9fb0d32e575e598d..0fabc67c9175fdde835e8c14a8cbbabdc14d158f 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MessageEndpointUnitTest.java
@@ -21,6 +21,7 @@ import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -215,7 +216,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    protected void find_generic(Long messageId, BannerMessage message) throws MessageNotFoundException {
+    protected void find_generic(UUID messageId, BannerMessage message) throws MessageNotFoundException {
 
         /* mock */
         if (message != null) {
@@ -245,7 +246,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    protected void update_generic(BannerMessageUpdateDto data, Long messageId, BannerMessage message)
+    protected void update_generic(BannerMessageUpdateDto data, UUID messageId, BannerMessage message)
             throws MessageNotFoundException {
 
         /* mock */
@@ -260,7 +261,7 @@ public class MessageEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(response.getBody());
     }
 
-    protected void delete_generic(Long messageId, BannerMessage message) throws MessageNotFoundException {
+    protected void delete_generic(UUID messageId, BannerMessage message) throws MessageNotFoundException {
 
         /* mock */
         if (message != null) {
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
index 8853728d471e3649c5b5108a21ea5404e5ed1ea2..98f756a1c0a0de2674ecca8732dd319411a95223 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/MetadataEndpointUnitTest.java
@@ -19,6 +19,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
@@ -143,7 +144,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest {
     public void getRecord_dc_succeeds() {
         final OaiRecordParameters parameters = new OaiRecordParameters();
         parameters.setMetadataPrefix("oai_dc");
-        parameters.setIdentifier("oai:1");
+        parameters.setIdentifier("oai:" + IDENTIFIER_1_ID);
 
         /* mock */
         when(identifierRepository.findById(IDENTIFIER_1_ID))
@@ -163,7 +164,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest {
     public void getRecord_datacite_succeeds() {
         final OaiRecordParameters parameters = new OaiRecordParameters();
         parameters.setMetadataPrefix("oai_datacite");
-        parameters.setIdentifier("oai:1");
+        parameters.setIdentifier("oai:" + IDENTIFIER_1_ID);
 
         /* mock */
         when(identifierRepository.findById(IDENTIFIER_1_ID))
@@ -183,7 +184,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest {
     public void getRecord_invalidIdentifierPrefix_succeeds() {
         final OaiRecordParameters parameters = new OaiRecordParameters();
         parameters.setMetadataPrefix("oai_datacite");
-        parameters.setIdentifier("ark:1");
+        parameters.setIdentifier("ark:" + IDENTIFIER_1_ID);
 
         /* mock */
         when(identifierRepository.findById(IDENTIFIER_1_ID))
@@ -201,7 +202,7 @@ public class MetadataEndpointUnitTest extends AbstractUnitTest {
     public void getRecord_notFound_fails() {
         final OaiRecordParameters parameters = new OaiRecordParameters();
         parameters.setMetadataPrefix("oai_dc");
-        parameters.setIdentifier("oai:9999");
+        parameters.setIdentifier("oai:" + UUID.randomUUID());
 
         /* mock */
         when(identifierRepository.findById(IDENTIFIER_1_ID))
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java
index c3f276c2dfca9a557117571bfa3a147b0f8bc507..ab3d0775ad1a694d9f33d822e65e37ae8772b032 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/OntologyEndpointUnitTest.java
@@ -26,6 +26,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
@@ -84,20 +85,21 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
     @Test
     @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-semantic-query"})
     public void find_noSparql_fails() throws OntologyNotFoundException {
+        final UUID id = UUID.randomUUID();
         final Ontology mock = Ontology.builder()
-                .id(9999L)
+                .id(id)
                 .uri(ONTOLOGY_1_URI)
                 .uriPattern(ONTOLOGY_1_URI_PATTERN)
                 .sparqlEndpoint(null) // <<<
                 .build();
 
         /* mock */
-        when(ontologyService.find(9999L))
+        when(ontologyService.find(id))
                 .thenReturn(mock);
 
         /* test */
         assertThrows(OntologyNotFoundException.class, () -> {
-            ontologyEndpoint.find(9999L, null, UNIT_1_URI);
+            ontologyEndpoint.find(id, null, UNIT_1_URI);
         });
     }
 
@@ -107,7 +109,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
 
         /* test */
         assertThrows(OntologyNotFoundException.class, () -> {
-            find_generic(99999L, null);
+            find_generic(UUID.randomUUID(), null);
         });
     }
 
@@ -293,7 +295,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
         assertEquals(4, body.size());
     }
 
-    public void find_generic(Long ontologyId, Ontology ontology) throws OntologyNotFoundException {
+    public void find_generic(UUID ontologyId, Ontology ontology) throws OntologyNotFoundException {
 
         /* mock */
         if (ontology != null) {
@@ -340,7 +342,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(body);
     }
 
-    public void update_generic(Long ontologyId, OntologyModifyDto modifyDto, Ontology ontology)
+    public void update_generic(UUID ontologyId, OntologyModifyDto modifyDto, Ontology ontology)
             throws OntologyNotFoundException {
 
         /* mock */
@@ -362,7 +364,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(body);
     }
 
-    public void delete_generic(Long ontologyId, Ontology ontology) throws OntologyNotFoundException {
+    public void delete_generic(UUID ontologyId, Ontology ontology) throws OntologyNotFoundException {
 
         /* mock */
         doNothing()
@@ -374,7 +376,7 @@ public class OntologyEndpointUnitTest extends AbstractUnitTest {
         assertEquals(HttpStatus.ACCEPTED, response.getStatusCode());
     }
 
-    public List<EntityDto> find_generic(Long ontologyId, String label, String uri, Ontology ontology,
+    public List<EntityDto> find_generic(UUID ontologyId, String label, String uri, Ontology ontology,
                                         EntityDto entityDto) throws MalformedException, UriMalformedException,
             FilterBadRequestException, OntologyNotFoundException {
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java
index 16551784c883cc69dfbb87504fafc504f1af7015..092b8c563ddf2ccee2910d140638ca3ad087a6ac 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/TableEndpointUnitTest.java
@@ -1131,7 +1131,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
 
-    public void analyseTable_generic(Long databaseId, Database database, Long tableId, Table table, Principal principal)
+    public void analyseTable_generic(UUID databaseId, Database database, UUID tableId, Table table, Principal principal)
             throws MalformedException, TableNotFoundException, DatabaseNotFoundException, NotAllowedException {
 
         /* mock */
@@ -1149,7 +1149,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(body);
     }
 
-    public void analyseTableColumn_generic(Long databaseId, Database database, Long tableId, Long columnId,
+    public void analyseTableColumn_generic(UUID databaseId, Database database, UUID tableId, UUID columnId,
                                            TableColumn tableColumn, Principal principal)
             throws MalformedException, TableNotFoundException, DatabaseNotFoundException {
 
@@ -1165,7 +1165,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
         assertNotNull(body);
     }
 
-    protected ResponseEntity<List<TableBriefDto>> generic_list(Long databaseId, Database database, Principal principal,
+    protected ResponseEntity<List<TableBriefDto>> generic_list(UUID databaseId, Database database, Principal principal,
                                                                User user, DatabaseAccess access)
             throws NotAllowedException, DatabaseNotFoundException, AccessNotFoundException, UserNotFoundException {
 
@@ -1193,7 +1193,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
         return tableEndpoint.list(databaseId, principal);
     }
 
-    protected ResponseEntity<TableBriefDto> generic_create(Long databaseId, Database database, CreateTableDto data,
+    protected ResponseEntity<TableBriefDto> generic_create(UUID databaseId, Database database, CreateTableDto data,
                                                            Principal principal, User user, DatabaseAccess access)
             throws MalformedException, NotAllowedException, DataServiceException, DataServiceConnectionException,
             UserNotFoundException, DatabaseNotFoundException, AccessNotFoundException, TableNotFoundException,
@@ -1226,11 +1226,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
         return tableEndpoint.create(databaseId, data, principal);
     }
 
-    protected ResponseEntity<TableDto> generic_findById(Long databaseId, Database database, Long tableId,
+    protected ResponseEntity<TableDto> generic_findById(UUID databaseId, Database database, UUID tableId,
                                                         Table table, Principal principal, User user,
-                                                        DatabaseAccess access) throws DataServiceException,
-            DataServiceConnectionException, TableNotFoundException, DatabaseNotFoundException, AccessNotFoundException,
-            QueueNotFoundException, UserNotFoundException, NotAllowedException {
+                                                        DatabaseAccess access) throws TableNotFoundException,
+            DatabaseNotFoundException, AccessNotFoundException, UserNotFoundException, NotAllowedException {
 
         /* mock */
         if (database != null) {
@@ -1277,15 +1276,15 @@ public class TableEndpointUnitTest extends AbstractUnitTest {
         /* mock */
         when(databaseService.findById(DATABASE_1_ID))
                 .thenReturn(DATABASE_1);
-        when(tableService.findById(any(Database.class), anyLong()))
+        when(tableService.findById(any(Database.class), any(UUID.class)))
                 .thenReturn(table);
 
         /* test */
         return tableEndpoint.delete(DATABASE_1_ID, TABLE_1_ID, principal);
     }
 
-    protected ResponseEntity<ColumnDto> generic_updateColumn(Long databaseId, Database database, Long tableId,
-                                                             Table table, Long columnId, TableColumn column,
+    protected ResponseEntity<ColumnDto> generic_updateColumn(UUID databaseId, Database database, UUID tableId,
+                                                             Table table, UUID columnId, TableColumn column,
                                                              Principal principal, User user,
                                                              ColumnSemanticsUpdateDto data, DatabaseAccess access)
             throws DataServiceException, DataServiceConnectionException, MalformedException, NotAllowedException,
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java
index c69701e6dd649565e8070c8c2403b0867c1aed19..5f0341fa7b53d828554d01f166acbc1c81241860 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java
@@ -8,8 +8,6 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.AuthServiceException;
 import at.tuwien.exception.NotAllowedException;
 import at.tuwien.exception.UserNotFoundException;
-import at.tuwien.service.AuthenticationService;
-import at.tuwien.service.DatabaseService;
 import at.tuwien.service.UserService;
 import at.tuwien.test.AbstractUnitTest;
 import lombok.extern.log4j.Log4j2;
@@ -44,12 +42,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest {
     @MockBean
     private UserService userService;
 
-    @MockBean
-    private DatabaseService databaseService;
-
-    @MockBean
-    private AuthenticationService authenticationService;
-
     @Autowired
     private UserEndpoint userEndpoint;
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java
index d1434ef9e4035cd13d81a4f12ec68bad71683bf1..1fa3d599206b7c25f31b383be3efba6d8f4bdef8 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/ViewEndpointUnitTest.java
@@ -190,7 +190,8 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
         assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Type"));
         assertEquals(List.of(DATABASE_3_INTERNALNAME), headers.get("X-Database"));
         assertEquals(List.of(VIEW_5_INTERNAL_NAME), headers.get("X-View"));
-        assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View"), headers.get("Access-Control-Expose-Headers"));
+        assertEquals(List.of(IMAGE_1_JDBC), headers.get("X-Jdbc-Method"));
+        assertEquals(List.of("X-Username X-Password X-Host X-Port X-Type X-Database X-View X-Jdbc-Method"), headers.get("Access-Control-Expose-Headers"));
     }
 
     @Test
@@ -441,7 +442,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
 
-    protected void findAll_generic(Long databaseId, Database database, Principal principal, UUID userId, User user,
+    protected void findAll_generic(UUID databaseId, Database database, Principal principal, UUID userId, User user,
                                    DatabaseAccess access) throws AccessNotFoundException, UserNotFoundException,
             DatabaseNotFoundException {
 
@@ -477,7 +478,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
         }
     }
 
-    protected void create_generic(Long databaseId, Database database, Principal principal, UUID userId, User user,
+    protected void create_generic(UUID databaseId, Database database, Principal principal, UUID userId, User user,
                                   DatabaseAccess access) throws MalformedException, DataServiceException,
             DataServiceConnectionException, NotAllowedException, UserNotFoundException, DatabaseNotFoundException,
             AccessNotFoundException, SearchServiceException, SearchServiceConnectionException {
@@ -514,7 +515,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
         assertEquals(VIEW_1_NAME, response.getBody().getName());
     }
 
-    protected ResponseEntity<ViewDto> find_generic(Long databaseId, Database database, Principal principal,
+    protected ResponseEntity<ViewDto> find_generic(UUID databaseId, Database database, Principal principal,
                                                    UUID userId, User user, DatabaseAccess access)
             throws DatabaseNotFoundException, UserNotFoundException, AccessNotFoundException, ViewNotFoundException {
 
@@ -533,10 +534,10 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
         if (principal != null) {
             when(userService.findById(userId))
                     .thenReturn(user);
-            when(viewService.findById(any(Database.class), anyLong()))
+            when(viewService.findById(any(Database.class), any(UUID.class)))
                     .thenReturn(VIEW_5);
         } else {
-            when(viewService.findById(any(Database.class), anyLong()))
+            when(viewService.findById(any(Database.class), any(UUID.class)))
                     .thenReturn(VIEW_5);
         }
 
@@ -548,7 +549,7 @@ public class ViewEndpointUnitTest extends AbstractUnitTest {
         return response;
     }
 
-    protected void delete_generic(Long databaseId, Database database, Long viewId, View view, Principal principal,
+    protected void delete_generic(UUID databaseId, Database database, UUID viewId, View view, Principal principal,
                                   UUID userId, User user, DatabaseAccess access) throws NotAllowedException,
             DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, AccessNotFoundException,
             SearchServiceException, SearchServiceConnectionException, ViewNotFoundException, UserNotFoundException {
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..4fdb83bcd73535f5c0aae86cccdd29ab7b6361d5
--- /dev/null
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/entities/EntitiesUnitTest.java
@@ -0,0 +1,20 @@
+package at.tuwien.entities;
+
+import at.tuwien.test.AbstractUnitTest;
+import lombok.extern.log4j.Log4j2;
+import org.junit.jupiter.api.Test;
+
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@Log4j2
+public class EntitiesUnitTest extends AbstractUnitTest {
+
+    @Test
+    public void uuidVersion_succeeds() {
+
+        /* test */
+        assertEquals(4, UUID.randomUUID().version());
+    }
+}
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
index 6505506eeaca607cd96e3324e869c2db0907cc4f..ac1103d2e5ad0a4c9a12b781c575ddff9aa39bcf 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
@@ -1,7 +1,9 @@
 package at.tuwien.mapper;
 
+import at.tuwien.api.database.ViewDto;
 import at.tuwien.api.identifier.IdentifierTypeDto;
 import at.tuwien.api.user.UserBriefDto;
+import at.tuwien.entities.database.View;
 import at.tuwien.entities.identifier.Identifier;
 import at.tuwien.entities.identifier.IdentifierType;
 import at.tuwien.test.AbstractUnitTest;
@@ -87,7 +89,7 @@ public class MetadataMapperUnitTest extends AbstractUnitTest {
         assertNull(response.getDatabase());
         assertNull(response.getViewId());
         assertNull(response.getTableId());
-        assertEquals(IDENTIFIER_2_QUERY_ID, response.getQueryId());
+        assertEquals(QUERY_1_ID, response.getQueryId());
         assertNull(response.getDoi());
         assertEquals(IDENTIFIER_2_TYPE, response.getType());
     }
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java
index 0365db6c4a09dfaedb742528b3bb08d4784d53f1..e47229bd0ae17c3b56a46ed60002e5f2226ae204 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/AuthenticationPrivilegedIntegrationMvcTest.java
@@ -1,6 +1,7 @@
 package at.tuwien.mvc;
 
 import at.tuwien.api.keycloak.TokenDto;
+import at.tuwien.entities.database.View;
 import at.tuwien.exception.AuthServiceConnectionException;
 import at.tuwien.exception.AuthServiceException;
 import at.tuwien.exception.CredentialsInvalidException;
@@ -12,6 +13,7 @@ import at.tuwien.repository.UserRepository;
 import at.tuwien.test.AbstractUnitTest;
 import at.tuwien.utils.KeycloakUtils;
 import dasniko.testcontainers.keycloak.KeycloakContainer;
+import jakarta.transaction.Transactional;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -96,10 +98,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().doesNotExist("X-Username"))
                 .andExpect(header().doesNotExist("X-Password"))
+                .andExpect(header().doesNotExist("X-Jdbc-Method"))
                 .andExpect(header().doesNotExist("Access-Control-Expose-Headers"))
                 .andExpect(status().isOk());
     }
@@ -111,11 +114,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1").with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD)))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME))
                 .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD))
-                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password"))
+                .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC))
+                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"))
                 .andExpect(status().isOk());
     }
 
@@ -127,11 +131,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         final TokenDto jwt = keycloakGateway.obtainUserToken(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1").header("Authorization", "Bearer " + jwt.getAccessToken()))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID).header("Authorization", "Bearer " + jwt.getAccessToken()))
                 .andDo(print())
                 .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME))
                 .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD))
-                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password"))
+                .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC))
+                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"))
                 .andExpect(status().isOk());
     }
 
@@ -144,11 +149,12 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
 
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1/table/1").header("Authorization", "Bearer " + jwt.getAccessToken()))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).header("Authorization", "Bearer " + jwt.getAccessToken()))
                 .andDo(print())
                 .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME))
                 .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD))
-                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password"))
+                .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC))
+                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"))
                 .andExpect(status().isOk());
     }
 
@@ -159,10 +165,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1/table/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().doesNotExist("X-Username"))
                 .andExpect(header().doesNotExist("X-Password"))
+                .andExpect(header().doesNotExist("X-Jdbc-Method"))
                 .andExpect(header().doesNotExist("Access-Control-Expose-Headers"))
                 .andExpect(status().isOk());
     }
@@ -174,25 +181,28 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         keycloakUtils.createUser(USER_LOCAL_ADMIN_ID, USER_LOCAL_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1/table/1").with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD)))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/table/" + TABLE_1_ID).with(httpBasic(USER_LOCAL_ADMIN_USERNAME, USER_LOCAL_ADMIN_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().string("X-Username", CONTAINER_1_PRIVILEGED_USERNAME))
                 .andExpect(header().string("X-Password", CONTAINER_1_PRIVILEGED_PASSWORD))
-                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password"))
+                .andExpect(header().string("X-Jdbc-Method", IMAGE_1_JDBC))
+                .andExpect(header().string("Access-Control-Expose-Headers", "X-Username X-Password X-Jdbc-Method"))
                 .andExpect(status().isOk());
     }
 
     @Test
+    @Transactional
     public void findById_view_basicUser_succeeds() throws Exception {
 
         /* mock */
         keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/database/1/view/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
+        this.mockMvc.perform(get("/api/database/" + DATABASE_1_ID + "/view/" + VIEW_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().doesNotExist("X-Username"))
                 .andExpect(header().doesNotExist("X-Password"))
+                .andExpect(header().doesNotExist("X-Jdbc-Method"))
                 .andExpect(header().doesNotExist("Access-Control-Expose-Headers"))
                 .andExpect(status().isOk());
     }
@@ -204,10 +214,11 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest
         keycloakUtils.createUser(USER_1_ID, USER_1_KEYCLOAK_SIGNUP_REQUEST);
 
         /* test */
-        this.mockMvc.perform(get("/api/container/1").with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
+        this.mockMvc.perform(get("/api/container/" + CONTAINER_1_ID).with(httpBasic(USER_1_USERNAME, USER_1_PASSWORD)))
                 .andDo(print())
                 .andExpect(header().doesNotExist("X-Username"))
                 .andExpect(header().doesNotExist("X-Password"))
+                .andExpect(header().doesNotExist("X-Jdbc-Method"))
                 .andExpect(header().doesNotExist("Access-Control-Expose-Headers"))
                 .andExpect(status().isOk());
     }
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java
index 96af6cfa8d14e4974a4afb8e410d9cc9a29bbbeb..7f9ba9743d24f1d888f2a488bd8330755478d1e9 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java
@@ -122,7 +122,7 @@ public class MetadataEndpointMvcTest extends AbstractUnitTest {
                 .thenReturn(Optional.of(IDENTIFIER_1));
 
         /* test */
-        this.mockMvc.perform(get("/api/oai?verb=GetRecord&identifier=oai:1"))
+        this.mockMvc.perform(get("/api/oai?verb=GetRecord&identifier=oai:" + IDENTIFIER_1_ID))
                 .andDo(print())
                 .andExpect(content().contentType("text/xml;charset=UTF-8"))
                 .andExpect(xpath("//request[@verb='GetRecord']").exists())
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
index 7611a0a8b539124d14a66c0a1b5c7465cf8d8e7f..2adc2f0647150f47605cb4b0d70566c041cd81f7 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/PrometheusEndpointMvcTest.java
@@ -9,13 +9,8 @@ import at.tuwien.api.identifier.IdentifierTypeDto;
 import at.tuwien.config.MetricsConfig;
 import at.tuwien.endpoints.*;
 import at.tuwien.test.AbstractUnitTest;
-import io.micrometer.observation.annotation.Observed;
 import io.micrometer.observation.tck.TestObservationRegistry;
-import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.log4j.Log4j2;
-import org.apache.commons.io.FileUtils;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,13 +25,7 @@ import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
 
 import static io.micrometer.observation.tck.TestObservationRegistryAssert.assertThat;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
@@ -99,8 +88,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
     @Autowired
     private ViewEndpoint viewEndpoint;
 
-    private static final Map<String, String> metrics = new TreeMap<>(); /* sorted */
-
     @TestConfiguration
     static class ObservationTestConfiguration {
 
@@ -110,16 +97,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
         }
     }
 
-    @BeforeAll
-    public static void beforeAll() {
-        FileUtils.deleteQuietly(new File("../metrics.md"));
-    }
-
-    @AfterAll
-    public static void afterAll() throws IOException {
-        saveObservedMetrics(metrics);
-    }
-
     @Test
     public void prometheus_succeeds() throws Exception {
 
@@ -160,7 +137,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(AccessEndpoint.class);
     }
 
     @Test
@@ -194,7 +170,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(ContainerEndpoint.class);
     }
 
     @Test
@@ -243,7 +218,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(DatabaseEndpoint.class);
     }
 
     @Test
@@ -289,7 +263,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(IdentifierEndpoint.class);
     }
 
     @Test
@@ -329,7 +302,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(ImageEndpoint.class);
     }
 
     @Test
@@ -346,7 +318,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
         /* test */
         assertThat(registry)
                 .hasObservationWithNameEqualTo("dbrepo_license_findall");
-        generic_openApiDocs(LicenseEndpoint.class);
     }
 
     @Test
@@ -385,7 +356,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(MessageEndpoint.class);
     }
 
     @Test
@@ -419,7 +389,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(MetadataEndpoint.class);
     }
 
     @Test
@@ -463,7 +432,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(OntologyEndpoint.class);
     }
 
     @Test
@@ -482,7 +450,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(ConceptEndpoint.class);
     }
 
     @Test
@@ -501,7 +468,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(UnitEndpoint.class);
     }
 
     @Test
@@ -563,7 +529,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(TableEndpoint.class);
     }
 
     @Test
@@ -592,7 +557,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(UserEndpoint.class);
     }
 
     @Test
@@ -627,16 +591,6 @@ public class PrometheusEndpointMvcTest extends AbstractUnitTest {
             assertThat(registry)
                     .hasObservationWithNameEqualTo(metric);
         }
-        generic_openApiDocs(ViewEndpoint.class);
-    }
-
-    private static void generic_openApiDocs(Class<?> endpoint) {
-        final List<Method> methods = Arrays.stream(endpoint.getMethods())
-                .filter(m -> m.getDeclaringClass().equals(endpoint))
-                .toList();
-        methods.forEach(m -> {
-            metrics.put(m.getDeclaredAnnotation(Observed.class).name(), m.getDeclaredAnnotation(Operation.class).summary());
-        });
     }
 
 }
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java
index bb19a404ddf23f29e257808974c0ebd787e3c416..a6fbbf759269d7f6b9331dc829ad2b83197be1ad 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceUnitTest.java
@@ -1,11 +1,13 @@
 package at.tuwien.service;
 
 import at.tuwien.api.container.CreateContainerDto;
-import at.tuwien.test.AbstractUnitTest;
 import at.tuwien.entities.container.Container;
-import at.tuwien.exception.*;
+import at.tuwien.exception.ContainerAlreadyExistsException;
+import at.tuwien.exception.ContainerNotFoundException;
+import at.tuwien.exception.ImageNotFoundException;
 import at.tuwien.repository.ContainerRepository;
 import at.tuwien.repository.ImageRepository;
+import at.tuwien.test.AbstractUnitTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -20,11 +22,11 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.when;
 
 @Log4j2
@@ -87,7 +89,7 @@ public class ContainerServiceUnitTest extends AbstractUnitTest {
     public void create_imageNotFound_fails() {
         final CreateContainerDto request = CreateContainerDto.builder()
                 .name(CONTAINER_3_NAME)
-                .imageId(9999L)
+                .imageId(UUID.randomUUID())
                 .build();
 
         /* mock */
@@ -169,14 +171,14 @@ public class ContainerServiceUnitTest extends AbstractUnitTest {
         assertEquals(limit, response.size());
     }
 
-    protected void find_generic(Long containerId, Container container) throws ContainerNotFoundException {
+    protected void find_generic(UUID containerId, Container container) throws ContainerNotFoundException {
 
         /* mock */
         if (container != null) {
             when(containerRepository.findById(containerId))
                     .thenReturn(Optional.of(container));
         } else {
-            when(containerRepository.findById(anyLong()))
+            when(containerRepository.findById(any(UUID.class)))
                     .thenReturn(Optional.empty());
         }
 
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 b77bc30d3811ed30c7994129ae2110e12903d0f9..260aebe7be411cd1ac32c63160a8964d26c0f9a3 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
@@ -36,6 +36,7 @@ import org.springframework.web.client.RestClientException;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -88,7 +89,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
         /* test */
         final List<Identifier> response = dataCiteIdentifierService.findAll(null, null, null, null, null);
         assertEquals(7, response.size());
-        for (Long id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) {
+        for (UUID id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) {
             assertTrue(response.stream().map(Identifier::getId).toList().contains(id));
         }
     }
@@ -110,7 +111,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final List<Identifier> response = dataCiteIdentifierService.findAll(null, null, QUERY_1_ID, null, null);
-        assertEquals(1, response.size());
+        assertEquals(2, response.size());
     }
 
     @Test
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java
index 9c91084f77cdac6c554cb11ea847bbb447185283..b1886aa835f2cc0cb2aac9e53365d869ec30724c 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java
@@ -63,16 +63,6 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest {
         assertEquals(DATABASE_1, response);
     }
 
-    @Test
-    @Transactional(readOnly = true)
-    public void findAllPublicOrSchemaPublicByInternalName_succeeds() {
-
-        /* test */
-        final List<Database> response = databaseService.findAllPublicOrSchemaPublicByInternalName(DATABASE_3_INTERNALNAME);
-        assertEquals(1, response.size());
-        assertEquals(DATABASE_3, response.get(0));
-    }
-
     @Test
     @Transactional(readOnly = true)
     public void findAllPublicOrSchemaPublicByInternalName_privateEmpty_succeeds() {
@@ -91,16 +81,4 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest {
         assertEquals(0, response.size());
     }
 
-    @Test
-    @Transactional(readOnly = true)
-    public void findAllAtLestReadAccess_privateAccess_succeeds() {
-
-        /* test */
-        final List<Database> response = databaseService.findAllAtLestReadAccess(USER_2_ID);
-        assertEquals(3, response.size());
-        assertEquals(DATABASE_4, response.get(0));
-        assertEquals(DATABASE_2, response.get(1));
-        assertEquals(DATABASE_1, response.get(2));
-    }
-
 }
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 18d037fe452cb6cdab5b4d0f0fe68b5ed6142cf0..85829f6ae64809f594f19d512d0cd1dcfbe80de6 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
@@ -22,9 +22,11 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.*;
 
 @Log4j2
@@ -347,12 +349,12 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest {
     public void find_fails() {
 
         /* mock */
-        when(databaseRepository.findById(anyLong()))
+        when(databaseRepository.findById(any(UUID.class)))
                 .thenReturn(Optional.empty());
 
         /* test */
         assertThrows(DatabaseNotFoundException.class, () -> {
-            databaseService.findById(9999L);
+            databaseService.findById(UUID.randomUUID());
         });
     }
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java
index fd6ac82762ad838bb846a185d19ae57af55ea8e9..afe3b6e2b8b9c5e93c1afebed2eabb4a6fc9daa0 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/EntityServiceUnitTest.java
@@ -133,6 +133,7 @@ public class EntityServiceUnitTest extends AbstractUnitTest {
     }
 
     @Test
+    @Disabled
     public void suggestTableColumnSemantics_succeeds() throws MalformedException {
 
         /* mock */
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 40fc28fe4d89524a928d474e0d3328853bee5df7..c053afa51d4de9404a69aa5eee8b81cb1e567384 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
@@ -1,21 +1,20 @@
 package at.tuwien.service;
 
-import at.tuwien.entities.database.License;
-import at.tuwien.repository.ContainerRepository;
-import at.tuwien.repository.DatabaseRepository;
-import at.tuwien.repository.LicenseRepository;
-import at.tuwien.repository.UserRepository;
-import at.tuwien.test.AbstractUnitTest;
 import at.tuwien.api.database.query.QueryDto;
 import at.tuwien.api.identifier.BibliographyTypeDto;
 import at.tuwien.entities.database.Database;
+import at.tuwien.entities.database.License;
 import at.tuwien.entities.identifier.*;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.DataServiceGateway;
 import at.tuwien.gateway.SearchServiceGateway;
+import at.tuwien.repository.ContainerRepository;
+import at.tuwien.repository.DatabaseRepository;
+import at.tuwien.repository.LicenseRepository;
+import at.tuwien.repository.UserRepository;
+import at.tuwien.test.AbstractUnitTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
@@ -84,7 +84,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
         /* test */
         final List<Identifier> response = identifierService.findAll(null, null, null, null, null);
         assertEquals(7, response.size());
-        for (Long id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) {
+        for (UUID id : List.of(IDENTIFIER_1_ID, IDENTIFIER_2_ID, IDENTIFIER_3_ID, IDENTIFIER_4_ID, IDENTIFIER_5_ID, IDENTIFIER_6_ID, IDENTIFIER_7_ID)) {
             assertTrue(response.stream().map(Identifier::getId).toList().contains(id));
         }
     }
@@ -106,7 +106,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final List<Identifier> response = identifierService.findAll(null, null, QUERY_1_ID, null, null);
-        assertEquals(1, response.size());
+        assertEquals(2, response.size());
     }
 
     @Test
@@ -131,17 +131,11 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final List<Identifier> response = identifierService.findByDatabaseIdAndQueryId(DATABASE_1_ID, QUERY_1_ID);
-        assertEquals(1, response.size());
+        assertEquals(2, response.size());
         final Identifier identifier0 = response.get(0);
-        assertEquals(IDENTIFIER_2_ID, identifier0.getId());
-    }
-
-    @Test
-    public void findByDatabaseIdAndQueryId_fails() {
-
-        /* test */
-        final List<Identifier> response = identifierService.findByDatabaseIdAndQueryId(DATABASE_1_ID, QUERY_1_ID);
-        assertEquals(1, response.size());
+        assertEquals(IDENTIFIER_1_ID, identifier0.getId());
+        final Identifier identifier1 = response.get(1);
+        assertEquals(IDENTIFIER_2_ID, identifier1.getId());
     }
 
     @Test
@@ -149,7 +143,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         assertThrows(IdentifierNotFoundException.class, () -> {
-            identifierService.find(9999L);
+            identifierService.find(UUID.randomUUID());
         });
     }
 
@@ -173,7 +167,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
             QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException {
 
         /* mock */
-        when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID))
+        when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID))
                 .thenReturn(QUERY_2_DTO);
         when(searchServiceGateway.update(any(Database.class)))
                 .thenReturn(DATABASE_2_BRIEF_DTO);
@@ -307,7 +301,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
             QueryNotFoundException, SearchServiceException, SearchServiceConnectionException, ExternalServiceException {
 
         /* mock */
-        when(dataServiceGateway.findQuery(IDENTIFIER_5_DATABASE_ID, IDENTIFIER_5_QUERY_ID))
+        when(dataServiceGateway.findQuery(DATABASE_2_ID, QUERY_2_ID))
                 .thenReturn(QUERY_2_DTO);
 
         /* test */
@@ -326,7 +320,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
         assertEquals(IDENTIFIER_5_DESCRIPTION_1_TYPE, description0.getDescriptionType());
         assertNull(response.getDoi());
         assertEquals(IDENTIFIER_5_PUBLISHER, response.getPublisher());
-        assertEquals(IDENTIFIER_5_DATABASE_ID, response.getDatabase().getId());
+        assertEquals(DATABASE_2_ID, response.getDatabase().getId());
         assertNull(response.getLanguage());
         assertEquals(IDENTIFIER_5_PUBLICATION_YEAR, response.getPublicationYear());
         assertEquals(IDENTIFIER_5_PUBLICATION_MONTH, response.getPublicationMonth());
@@ -439,12 +433,12 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
             ExternalServiceException {
 
         /* mock */
-        when(dataServiceGateway.findQuery(IDENTIFIER_2_DATABASE_ID, IDENTIFIER_2_QUERY_ID))
+        when(dataServiceGateway.findQuery(DATABASE_1_ID, QUERY_1_ID))
                 .thenReturn(QUERY_1_DTO);
 
         /* test */
         final Identifier response = identifierService.save(DATABASE_1, USER_1, IDENTIFIER_2_SAVE_DTO);
-        assertEquals(IDENTIFIER_2_DATABASE_ID, response.getDatabase().getId());
+        assertEquals(DATABASE_1_ID, response.getDatabase().getId());
         assertEquals(IDENTIFIER_2_QUERY, response.getQuery());
         assertEquals(IDENTIFIER_2_QUERY_HASH, response.getQueryHash());
         assertEquals(IDENTIFIER_2_RESULT_HASH, response.getResultHash());
@@ -460,7 +454,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final Identifier response = identifierService.save(DATABASE_1, USER_1, IDENTIFIER_3_SAVE_DTO);
-        assertEquals(IDENTIFIER_3_DATABASE_ID, response.getDatabase().getId());
+        assertEquals(DATABASE_1_ID, response.getDatabase().getId());
         assertEquals(IDENTIFIER_3_QUERY, response.getQuery());
         assertEquals(IDENTIFIER_3_QUERY_HASH, response.getQueryHash());
         assertEquals(IDENTIFIER_3_RESULT_HASH, response.getResultHash());
@@ -476,7 +470,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final Identifier response = identifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_DTO);
-        assertEquals(8L, response.getId());
+        assertNotNull(response.getId());
     }
 
     @Test
@@ -487,7 +481,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         final Identifier response = identifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_WITH_DOI_DTO);
-        assertEquals(8L, response.getId());
+        assertNotNull(response.getId());
         assertEquals(IDENTIFIER_1_DOI, response.getDoi());
     }
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java
index d07a5facb802db9c4b2b0e70c2e465b6bfda1636..fb7806f454684e10e8dd819018a03283b90fb418 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MessageServiceUnitTest.java
@@ -18,6 +18,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -88,12 +89,12 @@ public class MessageServiceUnitTest extends AbstractUnitTest {
     public void find_notFound_fails() {
 
         /* mock */
-        when(bannerMessageRepository.findById(anyLong()))
+        when(bannerMessageRepository.findById(any(UUID.class)))
                 .thenReturn(Optional.empty());
 
         /* test */
         assertThrows(MessageNotFoundException.class, () -> {
-            bannerMessageService.find(9999L);
+            bannerMessageService.find(UUID.randomUUID());
         });
     }
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java
index fa10d09a877c5a967086f855efd091eee1f5efe2..2f4fd3a85aaca28de490b2953acde20804fb70cd 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/MetadataServiceUnitTest.java
@@ -1,9 +1,5 @@
 package at.tuwien.service;
 
-import at.tuwien.oaipmh.OaiErrorType;
-import at.tuwien.oaipmh.OaiListIdentifiersParameters;
-import at.tuwien.oaipmh.OaiRecordParameters;
-import at.tuwien.test.AbstractUnitTest;
 import at.tuwien.api.crossref.CrossrefDto;
 import at.tuwien.api.orcid.OrcidDto;
 import at.tuwien.api.ror.RorDto;
@@ -13,6 +9,10 @@ import at.tuwien.exception.*;
 import at.tuwien.gateway.CrossrefGateway;
 import at.tuwien.gateway.OrcidGateway;
 import at.tuwien.gateway.RorGateway;
+import at.tuwien.oaipmh.OaiErrorType;
+import at.tuwien.oaipmh.OaiListIdentifiersParameters;
+import at.tuwien.oaipmh.OaiRecordParameters;
+import at.tuwien.test.AbstractUnitTest;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.log4j.Log4j2;
@@ -29,10 +29,10 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.when;
@@ -114,11 +114,11 @@ public class MetadataServiceUnitTest extends AbstractUnitTest {
     @Transactional
     public void getRecord_succeeds() throws IdentifierNotFoundException {
         final OaiRecordParameters parameters = OaiRecordParameters.builder()
-                .identifier("oai:1")
+                .identifier("oai:" + IDENTIFIER_1_ID)
                 .build();
 
         /* mock */
-        when(identifierService.find(1L))
+        when(identifierService.find(IDENTIFIER_1_ID))
                 .thenReturn(IDENTIFIER_1);
 
         /* test */
@@ -133,13 +133,13 @@ public class MetadataServiceUnitTest extends AbstractUnitTest {
     @Test
     public void getRecord_oaiNotFound_fails() throws IdentifierNotFoundException {
         final OaiRecordParameters parameters = OaiRecordParameters.builder()
-                .identifier("oai:9999")
+                .identifier("oai:deadbeef-bf9c-4943-a30a-ee5295f5b8c2")
                 .build();
 
         /* mock */
         doThrow(IdentifierNotFoundException.class)
                 .when(identifierService)
-                .find(anyLong());
+                .find(any(UUID.class));
 
         /* test */
         assertThrows(IdentifierNotFoundException.class, () -> {
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 b0efccab9ac856f727ee3377554e7cf8a01bb2c7..286b7d89cc30a81f33fe1938e44bfe0832504321 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
@@ -4,6 +4,7 @@ import at.tuwien.api.database.table.CreateTableDto;
 import at.tuwien.api.database.table.columns.CreateTableColumnDto;
 import at.tuwien.api.database.table.columns.ColumnTypeDto;
 import at.tuwien.api.database.table.constraints.CreateTableConstraintsDto;
+import at.tuwien.entities.container.Container;
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
@@ -32,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.any;
@@ -155,7 +157,7 @@ public class TableServicePersistenceTest extends AbstractUnitTest {
 
         /* test */
         assertThrows(MalformedException.class, () -> {
-            tableService.findColumnById(TABLE_1, 9999L);
+            tableService.findColumnById(TABLE_1, UUID.randomUUID());
         });
     }
 
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 4ba217a60c0b5a520e7fcd1c59a610769530760e..75fab311dd0920eff19002c5976383f6b37e4d94 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
@@ -1,13 +1,13 @@
 package at.tuwien.service;
 
-import at.tuwien.repository.DatabaseRepository;
-import at.tuwien.test.AbstractUnitTest;
 import at.tuwien.api.database.CreateViewDto;
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.View;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.DataServiceGateway;
 import at.tuwien.gateway.SearchServiceGateway;
+import at.tuwien.repository.DatabaseRepository;
+import at.tuwien.test.AbstractUnitTest;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -18,6 +18,7 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.testcontainers.junit.jupiter.Testcontainers;
 
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -88,7 +89,7 @@ public class ViewServiceUnitTest extends AbstractUnitTest {
 
         /* test */
         assertThrows(ViewNotFoundException.class, () -> {
-            viewService.findById(DATABASE_1, 9999L);
+            viewService.findById(DATABASE_1, UUID.randomUUID());
         });
     }
 
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java
index 8105a7fb8907b508a336876e9c5e6ce94916e59d..1e7ce07afde0616c8915549cfa3e1bcc72bcb658 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/validator/EndpointValidatorUnitTest.java
@@ -26,10 +26,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Stream;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.when;
 
@@ -176,7 +178,7 @@ public class EndpointValidatorUnitTest extends AbstractUnitTest {
             DatabaseNotFoundException, AccessNotFoundException {
 
         /* mock */
-        when(databaseService.findById(anyLong()))
+        when(databaseService.findById(any(UUID.class)))
                 .thenReturn(DATABASE_3);
 
         /* test */
diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json
index 250db21b8f997330463558b8540a23d2f4521778..228849fe625df9c0b50dbb97542bd94057173d2f 100644
--- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json
+++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json
@@ -1,5 +1,5 @@
 {
-  "id": 7,
+  "id": "b216ae00-a31d-4ecb-95fb-37eb4da3946f",
   "type": "database",
   "titles": [],
   "descriptions": [],
@@ -11,7 +11,7 @@
   "licenses": [],
   "creators": [
     {
-      "id": 1,
+      "id": "b899c367-06c7-4f47-8aea-5f15061ee3ee",
       "firstname": "Max",
       "lastname": "Mustermann",
       "creator_name": "Mustermann, Max",
diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json
index 2a0da11e13c832bb1c9578e6982733fb2eb51c3f..82633c0de717d903bdf4011394b2130a4a626740 100644
--- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json
+++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json
@@ -1,16 +1,16 @@
 {
-  "id": 1,
-  "query_id": 1,
+  "id": "679a83f2-ef23-4b4b-98f7-ad77b9d68733",
+  "query_id": "60494137-f000-459e-acd3-4fcadbdf14ca",
   "type": "subset",
   "doi": "10.12345/183",
   "titles": [
     {
-      "id": 1,
+      "id": "3df6b286-9bd2-4ae3-b8f4-29c217544bef",
       "title": "Austrian weather data",
       "language": "en"
     },
     {
-      "id": 2,
+      "id": "903a7e5b-8014-4b8a-b8fd-44f477880905",
       "title": "Österreichische Wetterdaten",
       "type": "TranslatedTitle",
       "language": "de"
@@ -18,7 +18,7 @@
   ],
   "descriptions": [
     {
-      "id": 1,
+      "id": "1c438756-93f0-4797-983c-175a17e18c2c",
       "description": "Selecting all from the weather Austrian table",
       "language": "en"
     }
@@ -32,7 +32,7 @@
   "publisher": "Austrian Government",
   "creators": [
     {
-      "id": 1,
+      "id": "667cd1d6-4f94-4808-b5cb-12e5ec0788d8",
       "firstname": "Max",
       "lastname": "Mustermann",
       "creator_name": "Mustermann, Max",
diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml
index b817658a09424af38fb372ce440258e0b8be7b38..906fa5258b02807565c4acc0e361d5c65bd65b77 100644
--- a/dbrepo-metadata-service/services/pom.xml
+++ b/dbrepo-metadata-service/services/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <artifactId>dbrepo-metadata-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-services</artifactId>
     <name>dbrepo-metadata-service-services</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java
index 4ee76c36bf7adf98fe38a32fcab869759ec3af0a..5bb0303e16c14145f1e08ee913b4c4dcabdead61 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/DataServiceGateway.java
@@ -29,7 +29,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws DatabaseNotFoundException      Some of the privileged parameters of the given database were not provided by the metadata service.
      */
-    void createAccess(Long databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException,
+    void createAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException,
             DataServiceException, DatabaseNotFoundException;
 
     /**
@@ -42,7 +42,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws AccessNotFoundException        Some of the privileged parameters of the given database were not provided by the metadata service.
      */
-    void updateAccess(Long databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException,
+    void updateAccess(UUID databaseId, UUID userId, AccessTypeDto access) throws DataServiceConnectionException,
             DataServiceException, AccessNotFoundException;
 
     /**
@@ -54,7 +54,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws AccessNotFoundException        Some of the privileged parameters of the given database were not provided by the metadata service.
      */
-    void deleteAccess(Long databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException,
+    void deleteAccess(UUID databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException,
             AccessNotFoundException;
 
     /**
@@ -78,10 +78,10 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws DatabaseNotFoundException      Some of the privileged parameters of the given database were not provided by the metadata service.
      */
-    void updateDatabase(Long databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException,
+    void updateDatabase(UUID databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException,
             DataServiceException, DatabaseNotFoundException;
 
-    void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException,
+    void updateTable(UUID databaseId, UUID tableId, TableUpdateDto data) throws DataServiceConnectionException,
             DataServiceException, DatabaseNotFoundException;
 
     /**
@@ -94,7 +94,7 @@ public interface DataServiceGateway {
      * @throws DatabaseNotFoundException      Some of the privileged parameters of the given database were not provided by the metadata service.
      * @throws TableExistsException           A table with this internal name exists already in the database.
      */
-    void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException,
+    void createTable(UUID databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException,
             DatabaseNotFoundException, TableExistsException;
 
     /**
@@ -106,7 +106,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws TableNotFoundException         The given table was not found in the database.
      */
-    void deleteTable(Long databaseId, Long tableId) throws DataServiceConnectionException, DataServiceException,
+    void deleteTable(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException,
             TableNotFoundException;
 
     /**
@@ -118,7 +118,7 @@ public interface DataServiceGateway {
      * @throws DataServiceConnectionException The connection to the data service could not be established.
      * @throws DataServiceException           The data service responded unexpectedly.
      */
-    ViewDto createView(Long databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException;
+    ViewDto createView(UUID databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException;
 
     /**
      * Deletes a given view in the given database.
@@ -129,7 +129,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws ViewNotFoundException          The given view was not found in the database.
      */
-    void deleteView(Long databaseId, Long viewId) throws DataServiceConnectionException, DataServiceException,
+    void deleteView(UUID databaseId, UUID viewId) throws DataServiceConnectionException, DataServiceException,
             ViewNotFoundException;
 
     /**
@@ -142,7 +142,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws QueryNotFoundException         The given query was not found in the query store.
      */
-    QueryDto findQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, DataServiceException,
+    QueryDto findQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException,
             QueryNotFoundException;
 
     /**
@@ -155,7 +155,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws QueryNotFoundException         The given query was not found in the query store.
      */
-    ExportResourceDto exportQuery(Long databaseId, Long queryId) throws DataServiceConnectionException,
+    ExportResourceDto exportQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException,
             DataServiceException, QueryNotFoundException;
 
     /**
@@ -167,7 +167,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws TableNotFoundException         The table was not found in the database.
      */
-    List<TableDto> getTableSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException,
+    List<TableDto> getTableSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException,
             TableNotFoundException;
 
     /**
@@ -179,7 +179,7 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws ViewNotFoundException          The table was not found in the database.
      */
-    List<ViewDto> getViewSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException,
+    List<ViewDto> getViewSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException,
             ViewNotFoundException;
 
     /**
@@ -192,6 +192,6 @@ public interface DataServiceGateway {
      * @throws DataServiceException           The data service responded unexpectedly.
      * @throws TableNotFoundException         The table was not found in the database.
      */
-    TableStatisticDto getTableStatistics(Long databaseId, Long tableId) throws DataServiceConnectionException,
+    TableStatisticDto getTableStatistics(UUID databaseId, UUID tableId) throws DataServiceConnectionException,
             DataServiceException, TableNotFoundException;
 }
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 6632a08194411f74d5b4d22d4f1e0de6eda91a47..1b3b20485f22d1f11ef92c6bc1698271923e9f0f 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
@@ -4,9 +4,11 @@ import at.tuwien.api.database.DatabaseBriefDto;
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.*;
 
+import java.util.UUID;
+
 public interface SearchServiceGateway {
 
     DatabaseBriefDto update(Database database) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
 
-    void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
+    void delete(UUID databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException;
 }
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java
index 6ee2ef084b962e30bd614dd1073aecf65a0ced09..6439ab47a21aefabf38dda2e661ddf41e6788675 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/gateway/impl/DataServiceGatewayImpl.java
@@ -41,7 +41,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void createAccess(Long databaseId, UUID userId, AccessTypeDto access)
+    public void createAccess(UUID databaseId, UUID userId, AccessTypeDto access)
             throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/access/" + userId;
@@ -66,7 +66,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void updateAccess(Long databaseId, UUID userId, AccessTypeDto access)
+    public void updateAccess(UUID databaseId, UUID userId, AccessTypeDto access)
             throws DataServiceConnectionException, DataServiceException, AccessNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/access/" + userId;
@@ -91,7 +91,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void deleteAccess(Long databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException,
+    public void deleteAccess(UUID databaseId, UUID userId) throws DataServiceConnectionException, DataServiceException,
             AccessNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/access/" + userId;
@@ -140,7 +140,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void updateDatabase(Long databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException,
+    public void updateDatabase(UUID databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException,
             DataServiceException, DatabaseNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId;
@@ -164,7 +164,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException,
+    public void updateTable(UUID databaseId, UUID tableId, TableUpdateDto data) throws DataServiceConnectionException,
             DataServiceException, DatabaseNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/table/" + tableId;
@@ -188,7 +188,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void createTable(Long databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException,
+    public void createTable(UUID databaseId, CreateTableDto data) throws DataServiceConnectionException, DataServiceException,
             DatabaseNotFoundException, TableExistsException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/table";
@@ -215,7 +215,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void deleteTable(Long databaseId, Long tableId) throws DataServiceConnectionException, DataServiceException,
+    public void deleteTable(UUID databaseId, UUID tableId) throws DataServiceConnectionException, DataServiceException,
             TableNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/table/" + tableId;
@@ -239,7 +239,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public ViewDto createView(Long databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException {
+    public ViewDto createView(UUID databaseId, CreateViewDto data) throws DataServiceConnectionException, DataServiceException {
         final ResponseEntity<ViewDto> response;
         final String path = "/api/database/" + databaseId + "/view";
         log.trace("create view at endpoint {} with path {}", gatewayConfig.getDataEndpoint(), path);
@@ -264,7 +264,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public void deleteView(Long databaseId, Long viewId) throws DataServiceConnectionException, DataServiceException,
+    public void deleteView(UUID databaseId, UUID viewId) throws DataServiceConnectionException, DataServiceException,
             ViewNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/database/" + databaseId + "/view/" + viewId;
@@ -288,7 +288,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public QueryDto findQuery(Long databaseId, Long queryId) throws DataServiceConnectionException, DataServiceException,
+    public QueryDto findQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException, DataServiceException,
             QueryNotFoundException {
         final ResponseEntity<QueryDto> response;
         final String path = "/api/database/" + databaseId + "/subset/" + queryId;
@@ -316,7 +316,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public ExportResourceDto exportQuery(Long databaseId, Long queryId) throws DataServiceConnectionException,
+    public ExportResourceDto exportQuery(UUID databaseId, UUID queryId) throws DataServiceConnectionException,
             DataServiceException, QueryNotFoundException {
         final ResponseEntity<ExportResourceDto> response;
         final String path = "/api/database/" + databaseId + "/subset/" + queryId;
@@ -341,7 +341,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public List<TableDto> getTableSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException,
+    public List<TableDto> getTableSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException,
             TableNotFoundException {
         final ResponseEntity<TableDto[]> response;
         final String path = "/api/database/" + databaseId + "/table";
@@ -372,7 +372,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public List<ViewDto> getViewSchemas(Long databaseId) throws DataServiceConnectionException, DataServiceException,
+    public List<ViewDto> getViewSchemas(UUID databaseId) throws DataServiceConnectionException, DataServiceException,
             ViewNotFoundException {
         final ResponseEntity<ViewDto[]> response;
         final String path = "/api/database/" + databaseId + "/view";
@@ -403,7 +403,7 @@ public class DataServiceGatewayImpl implements DataServiceGateway {
     }
 
     @Override
-    public TableStatisticDto getTableStatistics(Long databaseId, Long tableId) throws DataServiceConnectionException,
+    public TableStatisticDto getTableStatistics(UUID databaseId, UUID tableId) throws DataServiceConnectionException,
             DataServiceException, TableNotFoundException {
         final ResponseEntity<TableStatisticDto> response;
         final String path = "/api/database/" + databaseId + "/table/" + tableId + "/statistic";
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 503cad47ec5d2a8abd7ec4e76757b2f8ddb48ecd..89b4dff5c71eb3f58b2fe1e9ac0616ab743cd5f6 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
@@ -18,6 +18,8 @@ import org.springframework.web.client.HttpServerErrorException;
 import org.springframework.web.client.ResourceAccessException;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.UUID;
+
 @Log4j2
 @Service
 public class SearchServiceGatewayImpl implements SearchServiceGateway {
@@ -64,7 +66,7 @@ public class SearchServiceGatewayImpl implements SearchServiceGateway {
     }
 
     @Override
-    public void delete(Long databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException {
+    public void delete(UUID databaseId) throws SearchServiceConnectionException, SearchServiceException, DatabaseNotFoundException {
         final ResponseEntity<Void> response;
         final String path = "/api/search/database/" + databaseId;
         log.trace("delete database at endpoint {} with path {}", gatewayConfig.getSearchEndpoint(), path);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java
index 3be407e6b2ef4d89dfa29e4dd61829836fb08594..a7973b6171d8cf941a0cc24b264b69f76255628e 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/BannerMessageService.java
@@ -6,6 +6,7 @@ import at.tuwien.entities.maintenance.BannerMessage;
 import at.tuwien.exception.MessageNotFoundException;
 
 import java.util.List;
+import java.util.UUID;
 
 public interface BannerMessageService {
 
@@ -30,7 +31,7 @@ public interface BannerMessageService {
      * @return The message, if successful.
      * @throws MessageNotFoundException The message was not found in the metadata database.
      */
-    BannerMessage find(Long id) throws MessageNotFoundException;
+    BannerMessage find(UUID id) throws MessageNotFoundException;
 
     /**
      * Creates a new maintenance message in the metadata database.
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java
index 9aa2dc6c89839999c255595d65deb7399e702feb..d559b5134d6b34b3d5855debb30ece42115caff5 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ContainerService.java
@@ -2,9 +2,12 @@ package at.tuwien.service;
 
 import at.tuwien.api.container.CreateContainerDto;
 import at.tuwien.entities.container.Container;
-import at.tuwien.exception.*;
+import at.tuwien.exception.ContainerAlreadyExistsException;
+import at.tuwien.exception.ContainerNotFoundException;
+import at.tuwien.exception.ImageNotFoundException;
 
 import java.util.List;
+import java.util.UUID;
 
 public interface ContainerService {
 
@@ -34,7 +37,7 @@ public interface ContainerService {
      * @return The container object, if successful.
      * @throws ContainerNotFoundException The container was not found in the metadata database.
      */
-    Container find(Long id) throws ContainerNotFoundException;
+    Container find(UUID id) throws ContainerNotFoundException;
 
     /**
      * Retrieve a list of all containers from the metadata database
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java
index 4e3765fd6ec8231d8bcfdcdaae83c0c96bcb8788..0d5695207354bf668b566c02158a912975cedf69 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/DatabaseService.java
@@ -54,7 +54,7 @@ public interface DatabaseService {
      * @return The database, if successful.
      * @throws DatabaseNotFoundException The database was not found in the metadata database.
      */
-    Database findById(Long databaseId) throws DatabaseNotFoundException;
+    Database findById(UUID databaseId) throws DatabaseNotFoundException;
 
     /**
      * Creates a new database with minimal metadata in the metadata database and creates a new database on the container.
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java
index 47183700f91df1b24194fef24d931992b6b8b932..605ded7d37faad52fc7119f4dd0a958c199b68b8 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/IdentifierService.java
@@ -12,6 +12,7 @@ import org.springframework.core.io.InputStreamResource;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.UUID;
 
 @Service
 public interface IdentifierService {
@@ -29,7 +30,7 @@ public interface IdentifierService {
      * @param databaseId The database id.
      * @return The list of identifiers.
      */
-    List<Identifier> findAll(Long databaseId);
+    List<Identifier> findAll(UUID databaseId);
 
     /**
      * Finds an identifier by given id.
@@ -38,7 +39,7 @@ public interface IdentifierService {
      * @return The identifier, if successful.
      * @throws IdentifierNotFoundException The identifier does not exist.
      */
-    Identifier find(Long id) throws IdentifierNotFoundException;
+    Identifier find(UUID id) throws IdentifierNotFoundException;
 
     /**
      * Finds an identifier by given doi.
@@ -56,7 +57,7 @@ public interface IdentifierService {
      * @param queryId    The query id.
      * @return The list of identifiers.
      */
-    List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId);
+    List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId);
 
     /**
      * Finds all identifiers in the metadata database which are identifying databases.
@@ -83,7 +84,7 @@ public interface IdentifierService {
      * @param tableId    Optional. The table id.
      * @return The list of identifiers.
      */
-    List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId);
+    List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId);
 
     /**
      * Publishes a draft identifier with DataCite.
@@ -95,7 +96,6 @@ public interface IdentifierService {
      * @throws SearchServiceConnectionException
      * @throws MalformedException
      * @throws DataServiceConnectionException
-     * @throws IdentifierNotFoundException
      */
     Identifier publish(Identifier identifier) throws SearchServiceException, DatabaseNotFoundException,
             SearchServiceConnectionException, MalformedException, DataServiceConnectionException,
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java
index cc51082d65f1b72a066208b83276169fd36d8f5d..c5f353c7a18a5cb5e6eecd6819b7923e4b49d08e 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ImageService.java
@@ -9,6 +9,7 @@ import at.tuwien.exception.ImageNotFoundException;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 public interface ImageService {
 
@@ -25,7 +26,7 @@ public interface ImageService {
      * @param imageId The image id.
      * @return The image, if successful.
      */
-    ContainerImage find(Long imageId) throws ImageNotFoundException;
+    ContainerImage find(UUID imageId) throws ImageNotFoundException;
 
     /**
      * Creates a new container image in the metadata database.
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java
index 6755a64952f35b14c9681ec839bafd3856a40e91..c8e4c7067642ca1b948a321dba5d004d0f9eb2d2 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/OntologyService.java
@@ -7,6 +7,7 @@ import at.tuwien.exception.OntologyNotFoundException;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 public interface OntologyService {
 
@@ -31,7 +32,7 @@ public interface OntologyService {
      * @return The ontology, if successful.
      * @throws OntologyNotFoundException The ontology was not found in the metadata database.
      */
-    Ontology find(Long ontologyId) throws OntologyNotFoundException;
+    Ontology find(UUID ontologyId) throws OntologyNotFoundException;
 
     Ontology find(String entityUri) throws OntologyNotFoundException;
 
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java
index c0880c07dc8230d803ad455093cbea17c3145f61..2edea6ebeb2a61a80e4891a59afe4fd018e42109 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/TableService.java
@@ -9,6 +9,7 @@ import at.tuwien.entities.database.table.columns.TableColumn;
 import at.tuwien.exception.*;
 
 import java.security.Principal;
+import java.util.UUID;
 
 public interface TableService {
 
@@ -19,7 +20,7 @@ public interface TableService {
      * @param tableId  The table id.
      * @return The table, if successful.
      */
-    Table findById(Database database, Long tableId) throws TableNotFoundException, DatabaseNotFoundException;
+    Table findById(Database database, UUID tableId) throws TableNotFoundException, DatabaseNotFoundException;
 
     /**
      * Find a table in the metadata database by database id and table name.
@@ -57,7 +58,7 @@ public interface TableService {
     TableColumn update(TableColumn column, ColumnSemanticsUpdateDto updateDto) throws DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException;
 
-    TableColumn findColumnById(Table table, Long columnId) throws MalformedException;
+    TableColumn findColumnById(Table table, UUID columnId) throws MalformedException;
 
     void updateStatistics(Table table) throws SearchServiceException, DatabaseNotFoundException, SearchServiceConnectionException, MalformedException, TableNotFoundException, DataServiceException, DataServiceConnectionException;
 }
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java
index 4d183f1cc467d070a51a89edca99850c81a9b2ed..a5769ea9868f1fcc60983733c1994ee7364edff9 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/ViewService.java
@@ -8,6 +8,7 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 
 import java.util.List;
+import java.util.UUID;
 
 public interface ViewService {
 
@@ -18,7 +19,7 @@ public interface ViewService {
      * @param viewId   The view id.
      * @return The view, if successful.
      */
-    View findById(Database database, Long viewId) throws ViewNotFoundException;
+    View findById(Database database, UUID viewId) throws ViewNotFoundException;
 
     /**
      * Find all views by database id.
@@ -50,7 +51,6 @@ public interface ViewService {
      * @throws DatabaseNotFoundException
      * @throws SearchServiceException
      * @throws SearchServiceConnectionException
-     * @throws ViewNotFoundException
      */
     View create(Database database, User user, CreateViewDto data) throws MalformedException, DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index 1c302c206871234da50f2cc9de234d7c94a84d66..e5b59ebda8accad54421a1ed9834c7114b9ab911 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -72,8 +72,8 @@ public class AccessServiceImpl implements AccessService {
                 .hdbid(database.getId())
                 .database(database)
                 .huserid(user.getId())
-                .type(metadataMapper.accessTypeDtoToAccessType(type))
                 .user(user)
+                .type(metadataMapper.accessTypeDtoToAccessType(type))
                 .build();
         database.getAccesses()
                 .add(access);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
index ac465232503374a1bd3df7d09e46bef00c473673..d75d384b3c293e68d00eba2da092ae85214617d5 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/BannerMessageServiceImpl.java
@@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -39,7 +40,7 @@ public class BannerMessageServiceImpl implements BannerMessageService {
     }
 
     @Override
-    public BannerMessage find(Long id) throws MessageNotFoundException {
+    public BannerMessage find(UUID id) throws MessageNotFoundException {
         final Optional<BannerMessage> optional = bannerMessageRepository.findById(id);
         if (optional.isEmpty()) {
             log.error("Failed to find banner message with id {}", id);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index 2a3c3215367605b943a3a2701c47b139c20c1b5d..d92b6c17dc052728af0eb2e861baecdcda150995 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -81,7 +82,7 @@ public class ContainerServiceImpl implements ContainerService {
 
     @Override
     @Transactional
-    public Container find(Long id) throws ContainerNotFoundException {
+    public Container find(UUID id) throws ContainerNotFoundException {
         final Optional<Container> container = containerRepository.findById(id);
         if (container.isEmpty()) {
             log.error("Failed to find container with id {} in metadata database", id);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
index b4e42a67e15939c2b779fc0dbe9d392371588c76..0c8ce27d1214b1ac47c6756d7f5d3fbe4c77adcd 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DataCiteIdentifierServiceImpl.java
@@ -33,6 +33,7 @@ import org.springframework.web.client.RestClientException;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
+import java.util.UUID;
 
 @Slf4j
 @Primary
@@ -64,7 +65,7 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService {
 
     @Override
     @Transactional(readOnly = true)
-    public List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId) {
+    public List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId) {
         return identifierService.findAll(type, databaseId, queryId, viewId, tableId);
     }
 
@@ -79,7 +80,7 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService {
 
     @Override
     @Transactional(readOnly = true)
-    public List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId) {
+    public List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId) {
         return identifierService.findByDatabaseIdAndQueryId(databaseId, queryId);
     }
 
@@ -167,13 +168,13 @@ public class DataCiteIdentifierServiceImpl implements IdentifierService {
     }
 
     @Override
-    public List<Identifier> findAll(Long databaseId) {
+    public List<Identifier> findAll(UUID databaseId) {
         return identifierService.findAll(databaseId);
     }
 
     @Override
     @Transactional(readOnly = true)
-    public Identifier find(Long identifierId) throws IdentifierNotFoundException {
+    public Identifier find(UUID identifierId) throws IdentifierNotFoundException {
         return identifierService.find(identifierId);
     }
 
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
index 8b4c73fb2f063cfc779fa001b7982675d74cf447..7e3298ef09d236b55720183c576ecd8284e5dd3d 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/DatabaseServiceImpl.java
@@ -84,7 +84,7 @@ public class DatabaseServiceImpl implements DatabaseService {
 
     @Override
     @Transactional(readOnly = true)
-    public Database findById(Long id) throws DatabaseNotFoundException {
+    public Database findById(UUID id) throws DatabaseNotFoundException {
         final Optional<Database> database = databaseRepository.findById(id);
         if (database.isEmpty()) {
             log.error("Failed to find database with id {} in metadata database", id);
@@ -130,10 +130,10 @@ public class DatabaseServiceImpl implements DatabaseService {
         final Database entity1 = databaseRepository.save(entity);
         entity1.getAccesses()
                 .add(metadataMapper.userToWriteAllAccess(entity1, user));
-        entity1.getAccesses()
-                .addAll(internalUsers.stream()
-                        .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser))
-                        .toList());
+//        entity1.getAccesses()
+//                .addAll(internalUsers.stream()
+//                        .map(internalUser -> metadataMapper.userToWriteAllAccess(entity1, internalUser))
+//                        .toList());
         final Database database = databaseRepository.save(entity1);
         /* create in search service */
         searchServiceGateway.update(database);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 96b8bd83963cca91e4731812ee0812a54a4630dc..b1d1f45932c61bb755a615f22a6a919297ffec46 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -31,10 +31,7 @@ import org.thymeleaf.context.Context;
 import org.thymeleaf.exceptions.TemplateInputException;
 
 import java.nio.charset.Charset;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Stream;
 
 @Slf4j
@@ -69,13 +66,13 @@ public class IdentifierServiceImpl implements IdentifierService {
     }
 
     @Override
-    public List<Identifier> findAll(Long databaseId) {
+    public List<Identifier> findAll(UUID databaseId) {
         return identifierRepository.findByDatabaseId(databaseId);
     }
 
     @Override
     @Transactional(readOnly = true)
-    public Identifier find(Long identifierId) throws IdentifierNotFoundException {
+    public Identifier find(UUID identifierId) throws IdentifierNotFoundException {
         final Optional<Identifier> optional = identifierRepository.findById(identifierId);
         if (optional.isEmpty()) {
             log.error("Failed to find identifier with id: {}", identifierId);
@@ -97,7 +94,7 @@ public class IdentifierServiceImpl implements IdentifierService {
 
     @Override
     @Transactional(readOnly = true)
-    public List<Identifier> findByDatabaseIdAndQueryId(Long databaseId, Long queryId) {
+    public List<Identifier> findByDatabaseIdAndQueryId(UUID databaseId, UUID queryId) {
         return identifierRepository.findByDatabaseIdAndQueryId(databaseId, queryId);
     }
 
@@ -113,7 +110,7 @@ public class IdentifierServiceImpl implements IdentifierService {
 
     @Override
     @Transactional(readOnly = true)
-    public List<Identifier> findAll(IdentifierTypeDto type, Long databaseId, Long queryId, Long viewId, Long tableId) {
+    public List<Identifier> findAll(IdentifierTypeDto type, UUID databaseId, UUID queryId, UUID viewId, UUID tableId) {
         final List<Identifier> identifiers = this.identifierRepository.findAll();
         log.trace("found {} identifiers before applying filter(s)", identifiers.size());
         Stream<Identifier> stream = identifiers.stream();
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
index 84fdffcf43b1e6e6f110bf0acf72d4ca75a3a3cf..b82c8ca38290d5bc24dff6f60a14c5051ecf4697 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ImageServiceImpl.java
@@ -19,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Slf4j
 @Service
@@ -41,7 +42,7 @@ public class ImageServiceImpl implements ImageService {
 
     @Override
     @Transactional
-    public ContainerImage find(Long imageId) throws ImageNotFoundException {
+    public ContainerImage find(UUID imageId) throws ImageNotFoundException {
         final Optional<ContainerImage> image = imageRepository.findById(imageId);
         if (image.isEmpty()) {
             log.error("Failed to find image with id {}", imageId);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
index 14c621e2f9d10799864d8d85a6f019353ca67b08..1b6051f5437ba8a07ee10eef0ebe1c5ef5e67587 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MetadataServiceImpl.java
@@ -28,6 +28,7 @@ import org.thymeleaf.context.Context;
 import java.time.Instant;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Slf4j
 @Service
@@ -97,7 +98,7 @@ public class MetadataServiceImpl implements MetadataService {
         if (parameters.getIdentifier().startsWith("doi")) {
             identifier = identifierService.findByDoi(parameters.getIdentifier().substring(4));
         } else if (parameters.getIdentifier().startsWith("oai")) {
-            identifier = identifierService.find(Long.parseLong(parameters.getIdentifier().substring(4)));
+            identifier = identifierService.find(UUID.fromString(parameters.getIdentifier().substring(4)));
         } else {
             final String prefix = parameters.getIdentifier().substring(0, 3);
             log.error("Invalid prefix: {}", prefix);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
index 3f242914e9ac0f187b7e05258d7fe16edf0715c2..d40239a06eb560272aea8acdf35a0f3bdc39fe4f 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/OntologyServiceImpl.java
@@ -17,6 +17,7 @@ import java.net.URISyntaxException;
 import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -45,7 +46,7 @@ public class OntologyServiceImpl implements OntologyService {
     }
 
     @Override
-    public Ontology find(Long id) throws OntologyNotFoundException {
+    public Ontology find(UUID id) throws OntologyNotFoundException {
         final Optional<Ontology> optional = ontologyRepository.findById(id);
         if (optional.isEmpty()) {
             log.error("Failed to find ontology with id {}", id);
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 da92fb7ef59eac9af0df3cf1f779da150c2d437f..01c0c990b773719f69f149b8516746c31ba83cd9 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
@@ -25,10 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.security.Principal;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 
 @Log4j2
 @Service
@@ -62,7 +59,7 @@ public class TableServiceImpl implements TableService {
 
     @Override
     @Transactional(readOnly = true)
-    public Table findById(Database database, Long tableId) throws TableNotFoundException {
+    public Table findById(Database database, UUID tableId) throws TableNotFoundException {
         final Optional<Table> table = database.getTables()
                 .stream()
                 .filter(t -> t.getId().equals(tableId))
@@ -265,7 +262,7 @@ public class TableServiceImpl implements TableService {
 
     @Override
     @Transactional(readOnly = true)
-    public TableColumn findColumnById(Table table, Long columnId) throws MalformedException {
+    public TableColumn findColumnById(Table table, UUID columnId) throws MalformedException {
         final Optional<TableColumn> optional = table.getColumns()
                 .stream()
                 .filter(c -> c.getId().equals(columnId))
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
index 8ca688b1edcc869be309561b4c9fef434e081285..7bb45d568e7ed729f7e8a2b379d7055500ccedd3 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java
@@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -42,14 +43,14 @@ public class ViewServiceImpl implements ViewService {
     }
 
     @Override
-    public View findById(Database database, Long viewId) throws ViewNotFoundException {
+    public View findById(Database database, UUID viewId) throws ViewNotFoundException {
         final Optional<View> optional = database.getViews()
                 .stream()
                 .filter(v -> v.getId().equals(viewId))
                 .findFirst();
         if (optional.isEmpty()) {
-            log.error("Failed to find view with id {}", viewId);
-            throw new ViewNotFoundException("Failed to find view with id " + viewId);
+            log.error("Failed to find view with id: {}", viewId);
+            throw new ViewNotFoundException("Failed to find view with id: " + viewId);
         }
         return optional.get();
     }
@@ -92,7 +93,6 @@ public class ViewServiceImpl implements ViewService {
             SearchServiceConnectionException {
         /* create in metadata database */
         final View view = View.builder()
-                .vdbid(database.getId())
                 .database(database)
                 .name(data.getName())
                 .internalName(metadataMapper.nameToInternalName(data.getName()))
diff --git a/dbrepo-metadata-service/test/pom.xml b/dbrepo-metadata-service/test/pom.xml
index a68140ebac0f0d0289e88e14a754a8f72a6f18cc..792523227eaa968b3dd8c340779bece2323cb461 100644
--- a/dbrepo-metadata-service/test/pom.xml
+++ b/dbrepo-metadata-service/test/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>at.tuwien</groupId>
         <artifactId>dbrepo-metadata-service</artifactId>
-        <version>1.6.5</version>
+        <version>1.7.0</version>
     </parent>
 
     <artifactId>dbrepo-metadata-service-test</artifactId>
     <name>dbrepo-metadata-service-test</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
index 1c88f1775a0d2aba3760178da9b8931cc7b4a603..b5da835fa1e471d8e5a0ccda75724ec4d9c7c6c3 100644
--- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
+++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
@@ -6,8 +6,6 @@ import at.tuwien.api.amqp.ExchangeDto;
 import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto;
 import at.tuwien.api.amqp.QueueDto;
 import at.tuwien.api.auth.CreateUserDto;
-import at.tuwien.api.auth.LoginRequestDto;
-import at.tuwien.api.auth.RefreshTokenRequestDto;
 import at.tuwien.api.container.ContainerBriefDto;
 import at.tuwien.api.container.ContainerDto;
 import at.tuwien.api.container.image.*;
@@ -66,20 +64,15 @@ import at.tuwien.entities.maintenance.BannerMessageType;
 import at.tuwien.entities.semantics.Ontology;
 import at.tuwien.entities.user.User;
 import at.tuwien.test.utils.ArrayUtils;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
-import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.nio.charset.Charset;
 import java.security.Principal;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -128,7 +121,7 @@ import static java.time.temporal.ChronoUnit.MINUTES;
  * <li>Identifier 6 (Title=en, Description=en, Query=3)</li>
  * </ul>
  * <p>
- * Database 4 (Public Data, Public Schema, User 4) -> Container 2
+ * Database 4 (Public Data, Public Schema, User 4) -> Container 4
  * <li>Table 9</li>
  * <li>Identifier 7</li>
  * <li>Query 7</li>
@@ -279,11 +272,7 @@ public abstract class BaseTest {
             .scope(TOKEN_ACCESS_SCOPE)
             .build();
 
-    public static final RefreshTokenRequestDto REFRESH_TOKEN_REQUEST_DTO = RefreshTokenRequestDto.builder()
-            .refreshToken("ey.yee.skrr")
-            .build();
-
-    public static final Long CONCEPT_1_ID = 1L;
+    public static final UUID CONCEPT_1_ID = UUID.fromString("8cabc011-4bdf-44d4-9d33-b2648e2ddbf1");
     public static final String CONCEPT_1_NAME = "precipitation";
     public static final String CONCEPT_1_URI = "http://www.wikidata.org/entity/Q25257";
     public static final String CONCEPT_1_DESCRIPTION = null;
@@ -323,7 +312,7 @@ public abstract class BaseTest {
             .label(CONCEPT_1_NAME)
             .build();
 
-    public static final Long CONCEPT_2_ID = 2L;
+    public static final UUID CONCEPT_2_ID = UUID.fromString("c5cf9914-15c1-4813-af11-eb2a070d59a9");
     public static final String CONCEPT_2_NAME = "FAIR data";
     public static final String CONCEPT_2_URI = "http://www.wikidata.org/entity/Q29032648";
     public static final String CONCEPT_2_DESCRIPTION = "data compliant with the terms of the FAIR Data Principles";
@@ -357,7 +346,7 @@ public abstract class BaseTest {
             .created(CONCEPT_2_CREATED)
             .build();
 
-    public static final Long UNIT_1_ID = 1L;
+    public static final UUID UNIT_1_ID = UUID.fromString("1fee60e4-42f8-4883-85a8-e282fddf6a62");
     public static final String UNIT_1_NAME = "millimetre";
     public static final String UNIT_1_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/millimetre";
     public static final String UNIT_1_DESCRIPTION = "The millimetre is a unit of length defined as 1.0e-3 metre.";
@@ -397,7 +386,7 @@ public abstract class BaseTest {
             .label(UNIT_1_NAME)
             .build();
 
-    public static final Long UNIT_2_ID = 2L;
+    public static final UUID UNIT_2_ID = UUID.fromString("d88591a9-5171-4b12-8381-bcff1cfe7442");
     public static final String UNIT_2_NAME = "tonne";
     public static final String UNIT_2_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/tonne";
     public static final String UNIT_2_DESCRIPTION = "The tonne is a unit of mass defined as 1000 kilogram.";
@@ -446,11 +435,6 @@ public abstract class BaseTest {
     @SuppressWarnings("java:S2068")
     public static final String USER_LOCAL_ADMIN_MARIADB_PASSWORD = "*440BA4FD1A87A0999647DB67C0EE258198B247BA";
 
-    public static final LoginRequestDto USER_LOCAL_ADMIN_LOGIN_REQUEST_DTO = LoginRequestDto.builder()
-            .username(USER_LOCAL_ADMIN_USERNAME)
-            .password(USER_LOCAL_ADMIN_PASSWORD)
-            .build();
-
     public static final UserDetails USER_LOCAL_ADMIN_DETAILS = UserDetailsDto.builder()
             .id(USER_LOCAL_ADMIN_ID.toString())
             .username(USER_LOCAL_ADMIN_USERNAME)
@@ -598,11 +582,6 @@ public abstract class BaseTest {
     public static final Principal USER_1_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_1_DETAILS,
             USER_1_PASSWORD, USER_1_DETAILS.getAuthorities());
 
-    public static final LoginRequestDto USER_1_LOGIN_REQUEST_DTO = LoginRequestDto.builder()
-            .username(USER_1_USERNAME)
-            .password(USER_1_PASSWORD)
-            .build();
-
     public static final UUID USER_2_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c");
     public static final UUID USER_2_KEYCLOAK_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c");
     public static final String USER_2_USERNAME = "junit2";
@@ -909,7 +888,7 @@ public abstract class BaseTest {
     public static final Principal USER_6_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_6_DETAILS,
             USER_6_PASSWORD, USER_6_DETAILS.getAuthorities());
 
-    public static final Long IMAGE_1_ID = 1L;
+    public static final UUID IMAGE_1_ID = UUID.fromString("e5449ade-acc1-4ba4-8858-e3496cdecd9c");
     public static final String IMAGE_1_REGISTRY = "docker.io";
     public static final String IMAGE_1_NAME = "mariadb";
     public static final String IMAGE_1_VERSION = "11.1.3";
@@ -952,14 +931,10 @@ public abstract class BaseTest {
 
     public static final ImageDto IMAGE_1_DTO = ImageDto.builder()
             .id(IMAGE_1_ID)
-            .registry(IMAGE_1_REGISTRY)
             .name(IMAGE_1_NAME)
             .version(IMAGE_1_VERSION)
-            .dialect(IMAGE_1_DIALECT)
-            .jdbcMethod(IMAGE_1_JDBC)
-            .driverClass(IMAGE_1_DRIVER)
-            .defaultPort(IMAGE_1_PORT)
             .isDefault(IMAGE_1_IS_DEFAULT)
+            .jdbcMethod(IMAGE_1_JDBC)
             .operators(null)
             .build();
 
@@ -968,10 +943,9 @@ public abstract class BaseTest {
             .name(IMAGE_1_NAME)
             .version(IMAGE_1_VERSION)
             .isDefault(IMAGE_1_IS_DEFAULT)
-            .jdbcMethod(IMAGE_1_JDBC)
             .build();
 
-    public static final Long IMAGE_1_OPERATORS_1_ID = 1L;
+    public static final UUID IMAGE_1_OPERATORS_1_ID = UUID.fromString("42a56348-38bd-4aba-b0f2-ac813d5d2da1");
     public static final String IMAGE_1_OPERATORS_1_DISPLAY_NAME = "XOR";
     public static final String IMAGE_1_OPERATORS_1_VALUE = "XOR";
     public static final String IMAGE_1_OPERATORS_1_DOCUMENTATION = "https://mariadb.com/kb/en/xor/";
@@ -993,7 +967,7 @@ public abstract class BaseTest {
                     .documentation(IMAGE_1_OPERATORS_1_DOCUMENTATION)
                     .build()));
 
-    public static final Long CONTAINER_1_ID = 1L;
+    public static final UUID CONTAINER_1_ID = UUID.fromString("7ddb7e87-b965-43a2-9a24-4fa406d998f4");
     public static final String CONTAINER_1_NAME = "u01";
     public static final String CONTAINER_1_INTERNALNAME = "dbrepo-userdb-u01";
     public static final String CONTAINER_1_UI_HOST = "localhost";
@@ -1022,6 +996,7 @@ public abstract class BaseTest {
             .uiAdditionalFlags(CONTAINER_1_UI_ADDITIONAL_FLAGS)
             .privilegedUsername(CONTAINER_1_PRIVILEGED_USERNAME)
             .privilegedPassword(CONTAINER_1_PRIVILEGED_PASSWORD)
+            .databases(null) /* DATABASE_1, DATABASE_2, DATABASE_3 */
             .build();
 
     public static final ContainerDto CONTAINER_1_DTO = ContainerDto.builder()
@@ -1054,7 +1029,7 @@ public abstract class BaseTest {
             .password(CONTAINER_1_PRIVILEGED_PASSWORD)
             .build();
 
-    public static final Long CONTAINER_2_ID = 2L;
+    public static final UUID CONTAINER_2_ID = UUID.fromString("c2ec601e-2bfb-4be8-8891-0cb804a08d4a");
     public static final ContainerImage CONTAINER_2_IMAGE = IMAGE_1;
     public static final ImageDto CONTAINER_2_IMAGE_DTO = IMAGE_1_DTO;
     public static final String CONTAINER_2_NAME = "u02";
@@ -1110,7 +1085,7 @@ public abstract class BaseTest {
             .password(CONTAINER_2_PRIVILEGED_PASSWORD)
             .build();
 
-    public static final Long CONTAINER_3_ID = 3L;
+    public static final UUID CONTAINER_3_ID = UUID.fromString("1731c7d2-8bd1-4392-85bc-18a3be99e01d");
     public static final ContainerImage CONTAINER_3_IMAGE = IMAGE_1;
     public static final String CONTAINER_3_NAME = "u03";
     public static final String CONTAINER_3_INTERNALNAME = "dbrepo-userdb-u03";
@@ -1136,7 +1111,7 @@ public abstract class BaseTest {
             .privilegedPassword(CONTAINER_3_PRIVILEGED_PASSWORD)
             .build();
 
-    public static final Long CONTAINER_4_ID = 4L;
+    public static final UUID CONTAINER_4_ID = UUID.fromString("67aee75c-791c-410b-abbb-175c11ddd252");
     public static final ContainerImage CONTAINER_4_IMAGE = IMAGE_1;
     public static final String CONTAINER_4_NAME = "u04";
     public static final String CONTAINER_4_INTERNALNAME = "dbrepo-userdb-u04";
@@ -1159,6 +1134,7 @@ public abstract class BaseTest {
             .quota(CONTAINER_4_QUOTA)
             .privilegedUsername(CONTAINER_4_PRIVILEGED_USERNAME)
             .privilegedPassword(CONTAINER_4_PRIVILEGED_PASSWORD)
+            .databases(null) /* DATABASE_4 */
             .build();
 
     public static final String EXCHANGE_DBREPO_NAME = "dbrepo";
@@ -1177,7 +1153,7 @@ public abstract class BaseTest {
             .internal(EXCHANGE_DBREPO_INTERNAL)
             .build();
 
-    public static final Long DATABASE_1_ID = 1L;
+    public static final UUID DATABASE_1_ID = UUID.fromString("b3bcb5bf-4f88-40e2-9726-9b0d2ee2b425");
     public static final String DATABASE_1_NAME = "Weather";
     public static final String DATABASE_1_DESCRIPTION = "Weather in Australia";
     public static final String DATABASE_1_INTERNALNAME = "weather";
@@ -1204,7 +1180,7 @@ public abstract class BaseTest {
             .privilegedPassword(CONTAINER_1_PRIVILEGED_PASSWORD)
             .build();
 
-    public static final Long DATABASE_2_ID = 2L;
+    public static final UUID DATABASE_2_ID = UUID.fromString("dd9dfee2-9fbd-46b0-92d5-98f0f8866ffe");
     public static final String DATABASE_2_NAME = "Zoo";
     public static final String DATABASE_2_DESCRIPTION = "Zoo data";
     public static final String DATABASE_2_INTERNALNAME = "zoo";
@@ -1222,7 +1198,7 @@ public abstract class BaseTest {
             .cid(CONTAINER_1_ID)
             .build();
 
-    public static final Long DATABASE_3_ID = 3L;
+    public static final UUID DATABASE_3_ID = UUID.fromString("9d8cb9a9-9468-4801-a2e0-2dac8bc67c31");
     public static final String DATABASE_3_NAME = "Musicology";
     public static final String DATABASE_3_DESCRIPTION = "Musicology data";
     public static final String DATABASE_3_INTERNALNAME = "musicology";
@@ -1278,7 +1254,7 @@ public abstract class BaseTest {
             .cid(CONTAINER_1_ID)
             .build();
 
-    public static final Long DATABASE_4_ID = 4L;
+    public static final UUID DATABASE_4_ID = UUID.fromString("c503d7f3-5952-4d97-b26a-da86bea4c20d");
     public static final String DATABASE_4_NAME = "Weather AT";
     public static final String DATABASE_4_DESCRIPTION = "Weather data";
     public static final Boolean DATABASE_4_PUBLIC = true;
@@ -1501,7 +1477,7 @@ public abstract class BaseTest {
                             .build()))
             .build();
 
-    public static final Long TABLE_1_ID = 1L;
+    public static final UUID TABLE_1_ID = UUID.fromString("666d0b6b-f017-4f7c-80d8-a47174d8b539");
     public static final String TABLE_1_NAME = "Weather AUS";
     public static final String TABLE_1_INTERNAL_NAME = "weather_aus";
     public static final Boolean TABLE_1_VERSIONED = true;
@@ -1510,8 +1486,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_1_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_1_DESCRIPTION = "Weather in Australia";
     public static final String TABLE_1_QUEUE_NAME = TABLE_1_INTERNAL_NAME;
-    public static final String TABLE_1_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_1_ID;
-    public static final Long TABLE_1_DATABASE_ID = DATABASE_1_ID;
+    public static final String TABLE_1_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_1_ID;
     public static final Long TABLE_1_AVG_ROW_LENGTH = 3L;
     public static final Long TABLE_1_NUM_ROWS = 3L;
     public static final Long TABLE_1_DATA_LENGTH = 2000L;
@@ -1587,8 +1562,18 @@ public abstract class BaseTest {
             .maxDataLength(TABLE_1_MAX_DATA_LENGTH)
             .build();
 
+    public static final UUID COLUMN_1_1_ID = UUID.fromString("377c0a6e-938e-458c-ad2b-bbbd75d46412");
+
+    public static final UUID COLUMN_1_2_ID = UUID.fromString("dbca4821-3023-479b-a25a-c08eb0ec02ce");
+
+    public static final UUID COLUMN_1_3_ID = UUID.fromString("8ff0351e-4882-4948-94af-598e4b264b25");
+
+    public static final UUID COLUMN_1_4_ID = UUID.fromString("9ab256eb-3324-4e76-af3b-e3e2a58ce161");
+
+    public static final UUID COLUMN_1_5_ID = UUID.fromString("619e9355-51aa-438f-8579-80cec30f35cb");
+
     public static final List<ColumnDto> TABLE_1_COLUMNS_DTO = List.of(ColumnDto.builder()
-                    .id(1L)
+                    .id(COLUMN_1_1_ID)
                     .tableId(TABLE_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(0)
@@ -1600,7 +1585,7 @@ public abstract class BaseTest {
                     .sets(null)
                     .build(),
             ColumnDto.builder()
-                    .id(2L)
+                    .id(COLUMN_1_2_ID)
                     .tableId(TABLE_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(1)
@@ -1612,7 +1597,7 @@ public abstract class BaseTest {
                     .sets(null)
                     .build(),
             ColumnDto.builder()
-                    .id(3L)
+                    .id(COLUMN_1_3_ID)
                     .tableId(TABLE_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(2)
@@ -1625,7 +1610,7 @@ public abstract class BaseTest {
                     .sets(null)
                     .build(),
             ColumnDto.builder()
-                    .id(4L)
+                    .id(COLUMN_1_4_ID)
                     .tableId(TABLE_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(3)
@@ -1639,7 +1624,7 @@ public abstract class BaseTest {
                     .sets(null)
                     .build(),
             ColumnDto.builder()
-                    .id(5L)
+                    .id(COLUMN_1_5_ID)
                     .tableId(TABLE_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(4)
@@ -1693,7 +1678,7 @@ public abstract class BaseTest {
             }}
     ));
 
-    public static final Long TABLE_2_ID = 2L;
+    public static final UUID TABLE_2_ID = UUID.fromString("0cc067b6-4e81-4871-b47e-17a38228a574");
     public static final String TABLE_2_NAME = "Weather Location";
     public static final String TABLE_2_INTERNALNAME = "weather_location";
     public static final Boolean TABLE_2_VERSIONED = true;
@@ -1702,7 +1687,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_2_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_2_DESCRIPTION = "Weather location";
     public static final String TABLE_2_QUEUE_NAME = TABLE_2_INTERNALNAME;
-    public static final String TABLE_2_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_2_ID;
+    public static final String TABLE_2_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_2_ID;
     public static final Instant TABLE_2_CREATED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */;
     public static final Instant TABLE_2_LAST_MODIFIED = Instant.ofEpochSecond(1677400007L) /* 2023-02-26 08:26:47 (UTC) */;
     public static final Long TABLE_2_AVG_ROW_LENGTH = 3L;
@@ -1788,7 +1773,7 @@ public abstract class BaseTest {
             .ownedBy(USER_2_ID)
             .build();
 
-    public static final Long TABLE_3_ID = 3L;
+    public static final UUID TABLE_3_ID = UUID.fromString("a94ee518-c235-496b-8613-b0c643bc1b11");
     public static final String TABLE_3_NAME = "Sensor";
     public static final String TABLE_3_INTERNALNAME = "sensor";
     public static final Boolean TABLE_3_VERSIONED = true;
@@ -1797,7 +1782,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_3_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_3_DESCRIPTION = "Some sensor data";
     public static final String TABLE_3_QUEUE_NAME = TABLE_3_INTERNALNAME;
-    public static final String TABLE_3_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_3_ID;
+    public static final String TABLE_3_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_3_ID;
     public static final Instant TABLE_3_CREATED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */;
     public static final Instant TABLE_3_LAST_MODIFIED = Instant.ofEpochSecond(1677400031L) /* 2023-02-26 08:27:11 (UTC) */;
     public static final Long TABLE_3_AVG_ROW_LENGTH = 6L;
@@ -1892,7 +1877,7 @@ public abstract class BaseTest {
             .constraints(TABLE_3_CONSTRAINTS_INVALID_CREATE_DTO)
             .build();
 
-    public static final Long TABLE_5_ID = 5L;
+    public static final UUID TABLE_5_ID = UUID.fromString("91306cbd-c51f-47d3-8722-debfdbd8a77e");
     public static final String TABLE_5_NAME = "zoo";
     public static final String TABLE_5_INTERNALNAME = "zoo";
     public static final Boolean TABLE_5_VERSIONED = true;
@@ -1901,7 +1886,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_5_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_5_DESCRIPTION = "Some Kaggle dataset";
     public static final String TABLE_5_QUEUE_NAME = TABLE_5_INTERNALNAME;
-    public static final String TABLE_5_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_5_ID;
+    public static final String TABLE_5_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_5_ID;
     public static final Instant TABLE_5_CREATED = Instant.ofEpochSecond(1677400067L) /* 2023-02-26 08:27:47 (UTC) */;
     public static final Instant TABLE_5_LAST_MODIFIED = Instant.ofEpochSecond(1677400067L) /* 2023-02-26 08:27:47 (UTC) */;
     public static final Long TABLE_5_AVG_ROW_LENGTH = 1080L;
@@ -1978,7 +1963,7 @@ public abstract class BaseTest {
             .ownedBy(USER_1_ID)
             .build();
 
-    public static final Long TABLE_6_ID = 6L;
+    public static final UUID TABLE_6_ID = UUID.fromString("ae84d169-d36c-4f5a-a390-153d090f9574");
     public static final String TABLE_6_NAME = "names";
     public static final String TABLE_6_INTERNALNAME = "names";
     public static final Boolean TABLE_6_VERSIONED = true;
@@ -1987,7 +1972,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_6_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_6_DESCRIPTION = "Some names dataset";
     public static final String TABLE_6_QUEUE_NAME = TABLE_6_INTERNALNAME;
-    public static final String TABLE_6_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_6_ID;
+    public static final String TABLE_6_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_6_ID;
     public static final Instant TABLE_6_CREATED = Instant.ofEpochSecond(1677400117L) /* 2023-02-26 08:28:37 (UTC) */;
     public static final Instant TABLE_6_LAST_MODIFIED = Instant.ofEpochSecond(1677400117L) /* 2023-02-26 08:28:37 (UTC) */;
 
@@ -2038,7 +2023,7 @@ public abstract class BaseTest {
             .ownedBy(USER_1_ID)
             .build();
 
-    public static final Long TABLE_7_ID = 7L;
+    public static final UUID TABLE_7_ID = UUID.fromString("e5d10200-3e4f-45f4-9f36-ff3ca39c6c29");
     public static final String TABLE_7_NAME = "likes";
     public static final String TABLE_7_INTERNAL_NAME = "likes";
     public static final Boolean TABLE_7_VERSIONED = true;
@@ -2047,7 +2032,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_7_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_7_DESCRIPTION = "Some likes dataset";
     public static final String TABLE_7_QUEUE_NAME = TABLE_7_INTERNAL_NAME;
-    public static final String TABLE_7_ROUTING_KEY = "dbrepo\\." + DATABASE_2_ID + "\\." + TABLE_7_ID;
+    public static final String TABLE_7_ROUTING_KEY = "dbrepo." + DATABASE_2_ID + "." + TABLE_7_ID;
     public static final Instant TABLE_7_CREATED = Instant.ofEpochSecond(1677400147L) /* 2023-02-26 08:29:07 (UTC) */;
     public static final Instant TABLE_7_LAST_MODIFIED = Instant.ofEpochSecond(1677400147L) /* 2023-02-26 08:29:07 (UTC) */;
 
@@ -2098,7 +2083,7 @@ public abstract class BaseTest {
             .ownedBy(USER_1_ID)
             .build();
 
-    public static final Long TABLE_4_ID = 4L;
+    public static final UUID TABLE_4_ID = UUID.fromString("6c87cbcf-5043-404f-9bf1-b09ddbac25a2");
     public static final String TABLE_4_NAME = "Sensor 2";
     public static final String TABLE_4_INTERNALNAME = "sensor_2";
     public static final Boolean TABLE_4_VERSIONED = true;
@@ -2106,7 +2091,7 @@ public abstract class BaseTest {
     public static final Boolean TABLE_4_SCHEMA_PUBLIC = false;
     public static final String TABLE_4_DESCRIPTION = "Hello sensor";
     public static final String TABLE_4_QUEUE_NAME = TABLE_4_INTERNALNAME;
-    public static final String TABLE_4_ROUTING_KEY = "dbrepo\\." + DATABASE_1_ID + "\\." + TABLE_4_ID;
+    public static final String TABLE_4_ROUTING_KEY = "dbrepo." + DATABASE_1_ID + "." + TABLE_4_ID;
     public static final Instant TABLE_4_CREATED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */;
     public static final Instant TABLE_4_LAST_MODIFIED = Instant.ofEpochSecond(1677400175L) /* 2023-02-26 08:29:35 (UTC) */;
     public static final Long TABLE_4_AVG_ROW_LENGTH = 0L;
@@ -2192,15 +2177,15 @@ public abstract class BaseTest {
             .build();
 
     public static final ColumnBriefDto TABLE_4_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
-            .id(44L)
+            .id(UUID.fromString("360f02be-6dfb-48ea-9d1e-1da488b0e324"))
             .name("Timestamp")
             .internalName("timestamp")
             .columnType(ColumnTypeDto.TIMESTAMP)
             .build();
 
-    public static final Long COLUMN_4_1_ID = 44L;
+    public static final UUID COLUMN_4_1_ID = UUID.fromString("c8ec8a56-dea1-4316-895f-56e6d289cbf7");
 
-    public static final Long COLUMN_4_2_ID = 45L;
+    public static final UUID COLUMN_4_2_ID = UUID.fromString("d06956ae-aabd-474f-a47d-47af1ba043d1");
 
     public static final List<TableColumn> TABLE_4_COLUMNS = List.of(TableColumn.builder()
                     .id(COLUMN_4_1_ID)
@@ -2274,8 +2259,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build());
 
-    public static final Long TABLE_8_ID = 8L;
-    public static final Long TABLE_8_DATABASE_ID = DATABASE_3_ID;
+    public static final UUID TABLE_8_ID = UUID.fromString("2e039d0d-3257-4083-8b32-76d7cfa1f7fd");
     public static final String TABLE_8_NAME = "location";
     public static final String TABLE_8_INTERNAL_NAME = "mfcc";
     public static final Boolean TABLE_8_VERSIONED = true;
@@ -2283,13 +2267,13 @@ public abstract class BaseTest {
     public static final Boolean TABLE_8_SCHEMA_PUBLIC = false;
     public static final String TABLE_8_DESCRIPTION = "Hello mfcc";
     public static final String TABLE_8_QUEUE_NAME = TABLE_8_INTERNAL_NAME;
-    public static final String TABLE_8_ROUTING_KEY = "dbrepo\\." + DATABASE_3_ID + "\\." + TABLE_8_ID;
+    public static final String TABLE_8_ROUTING_KEY = "dbrepo." + DATABASE_3_ID + "." + TABLE_8_ID;
     public static final Instant TABLE_8_CREATED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */;
     public static final Instant TABLE_8_LAST_MODIFIED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */;
 
     public static final Table TABLE_8 = Table.builder()
             .id(TABLE_8_ID)
-            .tdbid(TABLE_8_DATABASE_ID)
+            .tdbid(DATABASE_3_ID)
             .internalName(TABLE_8_INTERNAL_NAME)
             .description(TABLE_8_DESCRIPTION)
             .isVersioned(TABLE_8_VERSIONED)
@@ -2308,7 +2292,7 @@ public abstract class BaseTest {
 
     public static final TableDto TABLE_8_DTO = TableDto.builder()
             .id(TABLE_8_ID)
-            .tdbid(TABLE_8_DATABASE_ID)
+            .tdbid(DATABASE_3_ID)
             .internalName(TABLE_8_INTERNAL_NAME)
             .description(TABLE_8_DESCRIPTION)
             .isVersioned(TABLE_8_VERSIONED)
@@ -2341,7 +2325,7 @@ public abstract class BaseTest {
 
     public static final TableDto TABLE_8_PRIVILEGED_DTO = TableDto.builder()
             .id(TABLE_8_ID)
-            .tdbid(TABLE_8_DATABASE_ID)
+            .tdbid(DATABASE_3_ID)
             .internalName(TABLE_8_INTERNAL_NAME)
             .description(TABLE_8_DESCRIPTION)
             .isVersioned(TABLE_8_VERSIONED)
@@ -2355,8 +2339,7 @@ public abstract class BaseTest {
             .lastRetrieved(Instant.now())
             .build();
 
-    public static final Long TABLE_9_ID = 9L;
-    public static final Long TABLE_9_DATABASE_ID = DATABASE_4_ID;
+    public static final UUID TABLE_9_ID = UUID.fromString("9314294f-04fc-4354-8b1f-2a8aeb566453");
     public static final String TABLE_9_NAME = "mfcc";
     public static final String TABLE_9_INTERNAL_NAME = "mfcc";
     public static final Boolean TABLE_9_VERSIONED = true;
@@ -2365,13 +2348,13 @@ public abstract class BaseTest {
     public static final Boolean TABLE_9_PROCESSED_CONSTRAINTS = true;
     public static final String TABLE_9_DESCRIPTION = "Hello mfcc";
     public static final String TABLE_9_QUEUE_NAME = TABLE_9_INTERNAL_NAME;
-    public static final String TABLE_9_ROUTING_KEY = "dbrepo\\." + DATABASE_3_ID + "\\." + TABLE_9_ID;
+    public static final String TABLE_9_ROUTING_KEY = "dbrepo." + DATABASE_3_ID + "." + TABLE_9_ID;
     public static final Instant TABLE_9_CREATED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */;
     public static final Instant TABLE_9_LAST_MODIFIED = Instant.ofEpochSecond(1688400185L) /* 2023-02-26 08:29:35 (UTC) */;
 
     public static final Table TABLE_9 = Table.builder()
             .id(TABLE_9_ID)
-            .tdbid(TABLE_9_DATABASE_ID)
+            .tdbid(DATABASE_4_ID)
             .internalName(TABLE_9_INTERNAL_NAME)
             .description(TABLE_9_DESCRIPTION)
             .isVersioned(TABLE_9_VERSIONED)
@@ -2390,7 +2373,7 @@ public abstract class BaseTest {
 
     public static final TableDto TABLE_9_DTO = TableDto.builder()
             .id(TABLE_9_ID)
-            .tdbid(TABLE_9_DATABASE_ID)
+            .tdbid(DATABASE_4_ID)
             .internalName(TABLE_9_INTERNAL_NAME)
             .description(TABLE_9_DESCRIPTION)
             .isVersioned(TABLE_9_VERSIONED)
@@ -2417,7 +2400,7 @@ public abstract class BaseTest {
 
     public static final TableDto TABLE_9_PRIVILEGED_DTO = TableDto.builder()
             .id(TABLE_9_ID)
-            .tdbid(TABLE_9_DATABASE_ID)
+            .tdbid(DATABASE_4_ID)
             .internalName(TABLE_9_INTERNAL_NAME)
             .description(TABLE_9_DESCRIPTION)
             .isVersioned(TABLE_9_VERSIONED)
@@ -2431,7 +2414,7 @@ public abstract class BaseTest {
             .lastRetrieved(Instant.now())
             .build();
 
-    public static final Long COLUMN_9_1_ID = 78L;
+    public static final UUID COLUMN_9_1_ID = UUID.fromString("e03c7578-2d1a-4599-9b11-7174f40efc0a");
     public static final String COLUMN_9_1_NAME = "location";
     public static final String COLUMN_9_1_INTERNAL_NAME = "location";
 
@@ -2442,9 +2425,9 @@ public abstract class BaseTest {
             .columnType(ColumnTypeDto.BIGINT)
             .build();
 
-    public static final Long COLUMN_9_2_ID = 79L;
+    public static final UUID COLUMN_9_2_ID = UUID.fromString("03c07223-17e1-4af5-b1ae-ef9ab434fe2d");
 
-    public static final Long COLUMN_9_3_ID = 80L;
+    public static final UUID COLUMN_9_3_ID = UUID.fromString("ee6590db-923b-4234-beb8-3120da055cf6");
 
     public static final List<TableColumn> TABLE_9_COLUMNS = List.of(TableColumn.builder()
                     .id(COLUMN_9_1_ID)
@@ -2528,7 +2511,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_9)
                     .column(TABLE_9_COLUMNS.get(0))
-                    .id(9L)
+                    .id(COLUMN_9_1_ID)
                     .build())))
             .build();
 
@@ -2539,7 +2522,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_9_BRIEF_DTO)
                     .column(TABLE_9_COLUMNS_BRIEF_0_DTO)
-                    .id(9L)
+                    .id(COLUMN_9_1_ID)
                     .build())))
             .build();
 
@@ -2559,7 +2542,7 @@ public abstract class BaseTest {
             .type(QUEUE_TYPE)
             .build();
 
-    public static final Long ONTOLOGY_1_ID = 1L;
+    public static final UUID ONTOLOGY_1_ID = UUID.fromString("dc195d01-0a45-4583-aa83-fd270b874353");
     public static final String ONTOLOGY_1_PREFIX = "om2";
     public static final String ONTOLOGY_1_NEW_PREFIX = "om-2";
     public static final String ONTOLOGY_1_URI = "http://www.ontology-of-units-of-measure.org/resource/om-2/";
@@ -2611,7 +2594,7 @@ public abstract class BaseTest {
             .sparqlEndpoint(ONTOLOGY_1_SPARQL_ENDPOINT)
             .build();
 
-    public static final Long ONTOLOGY_2_ID = 2L;
+    public static final UUID ONTOLOGY_2_ID = UUID.fromString("41d902a1-f9f8-4d51-ad64-618b72acf5ed");
     public static final String ONTOLOGY_2_PREFIX = "wd";
     public static final String ONTOLOGY_2_URI = "http://www.wikidata.org/";
     public static final String ONTOLOGY_2_SPARQL_ENDPOINT = "https://query.wikidata.org/sparql";
@@ -2630,7 +2613,7 @@ public abstract class BaseTest {
             .sparqlEndpoint(ONTOLOGY_2_SPARQL_ENDPOINT)
             .build();
 
-    public static final Long ONTOLOGY_3_ID = 3L;
+    public static final UUID ONTOLOGY_3_ID = UUID.fromString("5b41390b-d2d2-45c6-8038-1258c4b2725f");
     public static final String ONTOLOGY_3_PREFIX = "rdfs";
     public static final String ONTOLOGY_3_URI = "http://www.w3.org/2000/01/rdf-schema#";
     public static final String ONTOLOGY_3_SPARQL_ENDPOINT = null;
@@ -2649,7 +2632,7 @@ public abstract class BaseTest {
             .sparqlEndpoint(ONTOLOGY_3_SPARQL_ENDPOINT)
             .build();
 
-    public static final Long ONTOLOGY_4_ID = 4L;
+    public static final UUID ONTOLOGY_4_ID = UUID.fromString("d6992475-9b71-4a4a-a6eb-bc1fe6a34443");
     public static final String ONTOLOGY_4_PREFIX = "schema";
     public static final String ONTOLOGY_4_URI = "http://schema.org/";
     public static final String ONTOLOGY_4_SPARQL_ENDPOINT = null;
@@ -2668,7 +2651,7 @@ public abstract class BaseTest {
             .sparqlEndpoint(ONTOLOGY_4_SPARQL_ENDPOINT)
             .build();
 
-    public static final Long ONTOLOGY_5_ID = 5L;
+    public static final UUID ONTOLOGY_5_ID = UUID.fromString("f95d1330-762e-4f5a-875a-3c64da5808a1");
     public static final String ONTOLOGY_5_PREFIX = "db";
     public static final String ONTOLOGY_5_URI = "http://dbpedia.org";
     public static final String ONTOLOGY_5_SPARQL_ENDPOINT = "http://dbpedia.org/sparql";
@@ -2687,7 +2670,7 @@ public abstract class BaseTest {
             .sparqlEndpoint(ONTOLOGY_5_SPARQL_ENDPOINT)
             .build();
 
-    public static final Long COLUMN_8_1_ID = 75L;
+    public static final UUID COLUMN_8_1_ID = UUID.fromString("af362ac6-5dbb-4ede-83ea-5d94b39641c8");
     public static final Integer COLUMN_8_1_ORDINALPOS = 0;
     public static final String COLUMN_8_1_NAME = "ID";
     public static final String COLUMN_8_1_INTERNAL_NAME = "id";
@@ -2696,7 +2679,7 @@ public abstract class BaseTest {
     public static final Boolean COLUMN_8_1_NULL = false;
     public static final Boolean COLUMN_8_1_AUTO_GENERATED = true;
 
-    public static final Long COLUMN_8_2_ID = 76L;
+    public static final UUID COLUMN_8_2_ID = UUID.fromString("7ada597b-0766-4612-9ace-67eeee94e2da");
     public static final Integer COLUMN_8_2_ORDINALPOS = 1;
     public static final String COLUMN_8_2_NAME = "Value";
     public static final String COLUMN_8_2_INTERNAL_NAME = "value";
@@ -2707,7 +2690,7 @@ public abstract class BaseTest {
     public static final Boolean COLUMN_8_2_NULL = false;
     public static final Boolean COLUMN_8_2_AUTO_GENERATED = false;
 
-    public static final Long COLUMN_8_3_ID = 77L;
+    public static final UUID COLUMN_8_3_ID = UUID.fromString("8bcd9ef8-f7b8-4730-acc1-a3d43ba69a56");
     public static final Integer COLUMN_8_3_ORDINALPOS = 2;
     public static final String COLUMN_8_3_NAME = "raw";
     public static final String COLUMN_8_3_INTERNAL_NAME = "raw";
@@ -2826,11 +2809,9 @@ public abstract class BaseTest {
             }})
             .build();
 
-    public static final Long QUERY_1_ID = 1L;
+    public static final UUID QUERY_1_ID = UUID.fromString("60494137-f000-459e-acd3-4fcadbdf14ca");
     public static final String QUERY_1_STATEMENT = "SELECT `id`, `date`, `location`, `mintemp`, `rainfall` FROM `weather_aus` ORDER BY id ASC";
     public static final String QUERY_1_DOI = null;
-    public static final Long QUERY_1_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long QUERY_1_DATABASE_ID = DATABASE_1_ID;
     public static final Long QUERY_1_RESULT_NUMBER = 2L;
     public static final String QUERY_1_QUERY_HASH = "a3b8ac39e38167d14cf3a9c20a69e4b6954d049525390b973a2c23064953a992";
     public static final String QUERY_1_RESULT_HASH = "8358c8ade4849d2094ab5bb29127afdae57e6bb5acb1db7af603813d406c467a";
@@ -2840,7 +2821,7 @@ public abstract class BaseTest {
 
     public static final QueryDto QUERY_1_DTO = QueryDto.builder()
             .id(QUERY_1_ID)
-            .databaseId(QUERY_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .query(QUERY_1_STATEMENT)
             .queryHash(QUERY_1_QUERY_HASH)
             .resultHash(QUERY_1_RESULT_HASH)
@@ -2851,7 +2832,7 @@ public abstract class BaseTest {
             .build();
 
     public static final ViewDto QUERY_1_VIEW_DTO = ViewDto.builder()
-            .vdbid(QUERY_1_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .query(QUERY_1_STATEMENT)
             .queryHash(QUERY_1_QUERY_HASH)
             .owner(USER_1_BRIEF_DTO)
@@ -2879,7 +2860,7 @@ public abstract class BaseTest {
 
     public static final QueryBriefDto QUERY_1_BRIEF_DTO = QueryBriefDto.builder()
             .id(QUERY_1_ID)
-            .databaseId(QUERY_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .query(QUERY_1_STATEMENT)
             .queryHash(QUERY_1_QUERY_HASH)
             .resultHash(QUERY_1_RESULT_HASH)
@@ -2889,7 +2870,7 @@ public abstract class BaseTest {
             .resultNumber(3L)
             .build();
 
-    public static final Long QUERY_2_ID = 2L;
+    public static final UUID QUERY_2_ID = UUID.fromString("4e0ac92a-7cb3-4222-9b85-0498c73e0afd");
     public static final String QUERY_2_STATEMENT = "SELECT `location` FROM `weather_aus`";
     public static final String QUERY_2_QUERY_HASH = "a2d2dd94ebc7653bb5a3b55dd8ed5e91d3d13c225c6855a1eb4eb7ca14c36ced";
     public static final Long QUERY_2_RESULT_NUMBER = 2L;
@@ -2913,11 +2894,9 @@ public abstract class BaseTest {
             .resultNumber(3L)
             .build();
 
-    public static final Long QUERY_3_ID = 3L;
+    public static final UUID QUERY_3_ID = UUID.fromString("a9849020-45a7-40a8-9a19-d4ae2b28dd46");
     public static final String QUERY_3_STATEMENT = "SELECT `location`, `mintemp` FROM `weather_aus` WHERE `mintemp` > 10";
     public static final String QUERY_3_QUERY_HASH = "a3d3dd94ebc7653bb5a3b55dd8ed5e91d3d13c335c6855a1eb4eb7ca14c36ced";
-    public static final Long QUERY_3_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long QUERY_3_DATABASE_ID = DATABASE_1_ID;
     public static final String QUERY_3_RESULT_HASH = "ff3f7cbe1b96d396957f6e39e55b8b1b577fa3d305d4795af99594cfd30cb80d";
     public static final Instant QUERY_3_CREATED = Instant.now().minus(3, MINUTES);
     public static final Instant QUERY_3_EXECUTION = Instant.now().minus(1, MINUTES);
@@ -2927,7 +2906,7 @@ public abstract class BaseTest {
 
     public static final QueryDto QUERY_3_DTO = QueryDto.builder()
             .id(QUERY_3_ID)
-            .databaseId(QUERY_3_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .query(QUERY_3_STATEMENT)
             .queryNormalized(QUERY_3_STATEMENT)
             .resultNumber(QUERY_3_RESULT_NUMBER)
@@ -2939,7 +2918,7 @@ public abstract class BaseTest {
             .resultNumber(2L)
             .build();
 
-    public static final Long QUERY_7_ID = 7L;
+    public static final UUID QUERY_7_ID = UUID.fromString("fe73a325-30a0-444c-b74f-23ce1533e55f");
     public static final String QUERY_7_STATEMENT = "SELECT id, date, a.location, lat, lng FROM weather_aus a JOIN weather_location l on a.location = l.location WHERE date = '2008-12-01'";
     public static final String QUERY_7_QUERY_HASH = "df7da3801dfb5c191ff6711d79ce6455f3c09ec8323ce1ff7208ab85387263f5";
     public static final String QUERY_7_RESULT_HASH = "ff4f7cbe1b96d496957f6e49e55b8b1b577fa4d405d4795af99594cfd40cb80d";
@@ -2964,11 +2943,9 @@ public abstract class BaseTest {
             .resultNumber(2L)
             .build();
 
-    public static final Long QUERY_4_ID = 4L;
+    public static final UUID QUERY_4_ID = UUID.fromString("18a98197-51ff-4011-9f40-914a11675a6d");
     public static final String QUERY_4_STATEMENT = "SELECT `id`, `value` FROM `mfcc`";
     public static final String QUERY_4_QUERY_HASH = "df7da3801dfb5c191ff6711d79ce6455f3c09ec8323ce1ff7208ab85387263f5";
-    public static final Long QUERY_4_CONTAINER_ID = CONTAINER_3_ID;
-    public static final Long QUERY_4_DATABASE_ID = DATABASE_3_ID;
     public static final String QUERY_4_RESULT_HASH = "ff4f7cbe1b96d496957f6e49e55b8b1b577fa4d405d4795af99594cfd40cb80d";
     public static final Instant QUERY_4_CREATED = Instant.now().minus(4, MINUTES);
     public static final Instant QUERY_4_EXECUTION = Instant.now().minus(1, MINUTES);
@@ -3012,7 +2989,7 @@ public abstract class BaseTest {
 
     public static final QueryDto QUERY_4_DTO = QueryDto.builder()
             .id(QUERY_4_ID)
-            .databaseId(QUERY_4_DATABASE_ID)
+            .databaseId(DATABASE_3_ID)
             .query(QUERY_4_STATEMENT)
             .queryNormalized(QUERY_4_STATEMENT)
             .resultNumber(QUERY_4_RESULT_NUMBER)
@@ -3023,11 +3000,9 @@ public abstract class BaseTest {
             .owner(USER_1_BRIEF_DTO)
             .build();
 
-    public static final Long QUERY_5_ID = 5L;
+    public static final UUID QUERY_5_ID = UUID.fromString("1a39f775-e3d5-4865-b4f5-dbbb5693b637");
     public static final String QUERY_5_STATEMENT = "SELECT `id`, `value` FROM `mfcc` WHERE `value` > 0";
     public static final String QUERY_5_QUERY_HASH = "6d6dc48b12cdfd959d39a62887334a6bbd529b93eed4f211f3f671bd9e7d6225";
-    public static final Long QUERY_5_CONTAINER_ID = CONTAINER_3_ID;
-    public static final Long QUERY_5_DATABASE_ID = DATABASE_3_ID;
     public static final String QUERY_5_RESULT_HASH = "ff5f7cbe1b96d596957f6e59e55b8b1b577fa5d505d5795af99595cfd50cb80d";
     public static final Instant QUERY_5_CREATED = Instant.now().minus(5, MINUTES);
     public static final Instant QUERY_5_EXECUTION = Instant.now().minus(1, MINUTES);
@@ -3037,7 +3012,7 @@ public abstract class BaseTest {
 
     public static final QueryDto QUERY_5_DTO = QueryDto.builder()
             .id(QUERY_5_ID)
-            .databaseId(QUERY_5_DATABASE_ID)
+            .databaseId(DATABASE_3_ID)
             .query(QUERY_5_STATEMENT)
             .queryNormalized(QUERY_5_STATEMENT)
             .resultNumber(QUERY_5_RESULT_NUMBER)
@@ -3072,7 +3047,7 @@ public abstract class BaseTest {
             Map.of("id", BigInteger.valueOf(6L), "value", 23.1)
     ));
 
-    public static final Long QUERY_6_ID = 6L;
+    public static final UUID QUERY_6_ID = UUID.fromString("7463412a-20c4-4fc1-8a33-948aea026f49");
     public static final String QUERY_6_STATEMENT = "SELECT `location` FROM `weather_aus` WHERE `id` = 1";
     public static final String QUERY_6_QUERY_HASH = "6d6dc48b12cdfd959d39a62887334a6bbd529b93eed4f211f3f671bd9e7d6225";
     public static final String QUERY_6_RESULT_HASH = "ff5f7cbe1b96d596957f6e59e55b8b1b577fa5d505d5795af99595cfd50cb80d";
@@ -3095,23 +3070,6 @@ public abstract class BaseTest {
             .isPersisted(QUERY_6_PERSISTED)
             .build();
 
-    public static final ColumnBriefDto TABLE_1_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
-            .id(1L)
-            .name("id")
-            .internalName("id")
-            .columnType(ColumnTypeDto.BIGINT)
-            .build();
-
-    public static final Long COLUMN_1_1_ID = 1L;
-
-    public static final Long COLUMN_1_2_ID = 2L;
-
-    public static final Long COLUMN_1_3_ID = 3L;
-
-    public static final Long COLUMN_1_4_ID = 4L;
-
-    public static final Long COLUMN_1_5_ID = 5L;
-
     public static final List<TableColumn> TABLE_1_COLUMNS = List.of(TableColumn.builder()
                     .id(COLUMN_1_1_ID)
                     .ordinalPosition(0)
@@ -3165,6 +3123,13 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build());
 
+    public static final ColumnBriefDto TABLE_1_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
+            .id(COLUMN_1_1_ID)
+            .name("id")
+            .internalName("id")
+            .columnType(ColumnTypeDto.BIGINT)
+            .build();
+
     public static final List<CreateTableColumnDto> TABLE_1_COLUMNS_CREATE_DTO = List.of(CreateTableColumnDto.builder()
                     .name("id")
                     .type(ColumnTypeDto.BIGINT)
@@ -3235,11 +3200,11 @@ public abstract class BaseTest {
             .constraints(TABLE_1_CONSTRAINTS_CREATE_INVALID_DTO)
             .build();
 
-    public static final Long COLUMN_2_1_ID = 6L;
+    public static final UUID COLUMN_2_1_ID = UUID.fromString("795faa78-7ebb-4dd5-9eb1-e54a9192d0b5");
 
-    public static final Long COLUMN_2_2_ID = 7L;
+    public static final UUID COLUMN_2_2_ID = UUID.fromString("f316ced5-7774-4656-aa7f-a874622d99b3");
 
-    public static final Long COLUMN_2_3_ID = 8L;
+    public static final UUID COLUMN_2_3_ID = UUID.fromString("11cb1aa2-8582-45ef-a3bb-7056aa94cdf1");
 
     public static final List<TableColumn> TABLE_2_COLUMNS = List.of(TableColumn.builder()
                     .id(COLUMN_2_1_ID)
@@ -3359,75 +3324,75 @@ public abstract class BaseTest {
                     .columnType(ColumnTypeDto.DOUBLE)
                     .build());
 
-    public static final Long COLUMN_3_1_ID = 9L;
+    public static final UUID COLUMN_3_1_ID = UUID.fromString("49cc2735-ba75-4e12-8ac7-8aec87ed7724");
 
-    public static final Long COLUMN_3_2_ID = 10L;
+    public static final UUID COLUMN_3_2_ID = UUID.fromString("2c240d64-3052-4a74-b696-e7490fdff3ea");
 
-    public static final Long COLUMN_3_3_ID = 11L;
+    public static final UUID COLUMN_3_3_ID = UUID.fromString("6fbb0a56-f23a-4aa4-b158-c614a0a30f86");
 
-    public static final Long COLUMN_3_4_ID = 12L;
+    public static final UUID COLUMN_3_4_ID = UUID.fromString("9b01f925-93ee-4f28-bf31-9902900a7099");
 
-    public static final Long COLUMN_3_5_ID = 13L;
+    public static final UUID COLUMN_3_5_ID = UUID.fromString("9bbd66f1-0d94-401c-b7f7-6e329bb9ee21");
 
-    public static final Long COLUMN_3_6_ID = 14L;
+    public static final UUID COLUMN_3_6_ID = UUID.fromString("19ad93d7-b298-495b-9678-9aac80678ff9");
 
-    public static final Long COLUMN_3_7_ID = 15L;
+    public static final UUID COLUMN_3_7_ID = UUID.fromString("4d27d9f4-645f-4222-b5a8-4a91fa6e4275");
 
-    public static final Long COLUMN_3_8_ID = 16L;
+    public static final UUID COLUMN_3_8_ID = UUID.fromString("b4f8fcf8-5824-45ec-8c58-43f20e6dffc5");
 
-    public static final Long COLUMN_3_9_ID = 17L;
+    public static final UUID COLUMN_3_9_ID = UUID.fromString("87247218-369e-484a-9a8f-d758478d8dfc");
 
-    public static final Long COLUMN_3_10_ID = 18L;
+    public static final UUID COLUMN_3_10_ID = UUID.fromString("6e191b97-189a-4d88-901e-888ca889e280");
 
-    public static final Long COLUMN_3_11_ID = 19L;
+    public static final UUID COLUMN_3_11_ID = UUID.fromString("6ac356ff-9be5-4259-9b62-83b6707be7fe");
 
-    public static final Long COLUMN_3_12_ID = 20L;
+    public static final UUID COLUMN_3_12_ID = UUID.fromString("0665b384-c824-4358-b6c5-f17706d46ea4");
 
-    public static final Long COLUMN_3_13_ID = 21L;
+    public static final UUID COLUMN_3_13_ID = UUID.fromString("22d3676e-d28e-4075-b223-91a7ac767bcf");
 
-    public static final Long COLUMN_3_14_ID = 22L;
+    public static final UUID COLUMN_3_14_ID = UUID.fromString("673326e3-ee2b-4c2f-902f-982e2abce1c2");
 
-    public static final Long COLUMN_3_15_ID = 23L;
+    public static final UUID COLUMN_3_15_ID = UUID.fromString("8dcacf4a-736b-4e67-9618-74998cba8940");
 
-    public static final Long COLUMN_3_16_ID = 24L;
+    public static final UUID COLUMN_3_16_ID = UUID.fromString("2b2f5359-76d3-4763-a53f-d18ca6b793fb");
 
-    public static final Long COLUMN_3_17_ID = 25L;
+    public static final UUID COLUMN_3_17_ID = UUID.fromString("674b6120-06cf-4624-b006-1ed48898bd69");
 
-    public static final Long COLUMN_3_18_ID = 26L;
+    public static final UUID COLUMN_3_18_ID = UUID.fromString("13edd7c9-6c88-44d7-b206-34774e49c5af");
 
-    public static final Long COLUMN_3_19_ID = 27L;
+    public static final UUID COLUMN_3_19_ID = UUID.fromString("6977bb3f-4ae2-43ea-bb82-c7f68454c538");
 
-    public static final Long COLUMN_3_20_ID = 28L;
+    public static final UUID COLUMN_3_20_ID = UUID.fromString("c03d2429-53e1-42eb-a1f5-ce342fa23336");
 
-    public static final Long COLUMN_3_21_ID = 29L;
+    public static final UUID COLUMN_3_21_ID = UUID.fromString("06edd332-750e-4aa1-b61b-e757fb2312c3");
 
-    public static final Long COLUMN_3_22_ID = 30L;
+    public static final UUID COLUMN_3_22_ID = UUID.fromString("b6b8631d-f283-49da-8d5e-4bb24def2a40");
 
-    public static final Long COLUMN_3_23_ID = 31L;
+    public static final UUID COLUMN_3_23_ID = UUID.fromString("0393ee00-31ba-44ab-9e82-1f5034a9f57b");
 
-    public static final Long COLUMN_3_24_ID = 32L;
+    public static final UUID COLUMN_3_24_ID = UUID.fromString("a63784ea-f70d-4bda-ace6-1c6a88edf831");
 
-    public static final Long COLUMN_3_25_ID = 33L;
+    public static final UUID COLUMN_3_25_ID = UUID.fromString("720fe829-802c-420b-8e41-bdbb636db43c");
 
-    public static final Long COLUMN_3_26_ID = 34L;
+    public static final UUID COLUMN_3_26_ID = UUID.fromString("5bce38ef-7d49-43b5-9054-068750684b5f");
 
-    public static final Long COLUMN_3_27_ID = 35L;
+    public static final UUID COLUMN_3_27_ID = UUID.fromString("92097c02-3dd3-40ea-bd03-a9135f45a557");
 
-    public static final Long COLUMN_3_28_ID = 36L;
+    public static final UUID COLUMN_3_28_ID = UUID.fromString("7361a38a-828b-495e-8a57-b36cca17d7db");
 
-    public static final Long COLUMN_3_29_ID = 37L;
+    public static final UUID COLUMN_3_29_ID = UUID.fromString("a06812db-03b7-484c-92a6-45d94eef3bb9");
 
-    public static final Long COLUMN_3_30_ID = 38L;
+    public static final UUID COLUMN_3_30_ID = UUID.fromString("05614d89-9216-47ea-96f0-acffc4674acf");
 
-    public static final Long COLUMN_3_31_ID = 39L;
+    public static final UUID COLUMN_3_31_ID = UUID.fromString("05ada13d-361a-48e7-9a0f-1191499509f1");
 
-    public static final Long COLUMN_3_32_ID = 40L;
+    public static final UUID COLUMN_3_32_ID = UUID.fromString("b3f259f6-700a-4b60-8eac-dceaa0dcda9d");
 
-    public static final Long COLUMN_3_33_ID = 41L;
+    public static final UUID COLUMN_3_33_ID = UUID.fromString("9160af06-e168-4b10-a7f9-520f41ae7955");
 
-    public static final Long COLUMN_3_34_ID = 42L;
+    public static final UUID COLUMN_3_34_ID = UUID.fromString("fde20c99-ed9c-4a60-8c18-f46e8603ebb5");
 
-    public static final Long COLUMN_3_35_ID = 43L;
+    public static final UUID COLUMN_3_35_ID = UUID.fromString("071c7f27-1cdd-4af9-b4d6-f932c27c7287");
 
     public static final ColumnBriefDto TABLE_3_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
             .id(COLUMN_3_1_ID)
@@ -4208,47 +4173,47 @@ public abstract class BaseTest {
                     .sets(new LinkedList<>())
                     .build());
 
-    public static final Long COLUMN_5_1_ID = 46L;
+    public static final UUID COLUMN_5_1_ID = UUID.fromString("4efd4cbb-ca2e-48e2-8f40-37514956aa67");
 
-    public static final Long COLUMN_5_2_ID = 47L;
+    public static final UUID COLUMN_5_2_ID = UUID.fromString("53061685-c1db-4df6-ad4e-8f384a200104");
 
-    public static final Long COLUMN_5_3_ID = 48L;
+    public static final UUID COLUMN_5_3_ID = UUID.fromString("643f9cda-8db1-47a4-bb08-c10e78e54c10");
 
-    public static final Long COLUMN_5_4_ID = 49L;
+    public static final UUID COLUMN_5_4_ID = UUID.fromString("efeacc15-3b31-4a9f-9dba-f07d62dcddd6");
 
-    public static final Long COLUMN_5_5_ID = 50L;
+    public static final UUID COLUMN_5_5_ID = UUID.fromString("0319db31-473a-47bc-bb9d-fa1edf82fcd5");
 
-    public static final Long COLUMN_5_6_ID = 51L;
+    public static final UUID COLUMN_5_6_ID = UUID.fromString("9ba789ca-59cf-4480-b9f6-3b957b1d7f5c");
 
-    public static final Long COLUMN_5_7_ID = 52L;
+    public static final UUID COLUMN_5_7_ID = UUID.fromString("81c42954-fd1a-4fef-adb1-bc4945469e26");
 
-    public static final Long COLUMN_5_8_ID = 53L;
+    public static final UUID COLUMN_5_8_ID = UUID.fromString("49a38905-52a2-4a9b-b7b9-5e1dcf799b2a");
 
-    public static final Long COLUMN_5_9_ID = 54L;
+    public static final UUID COLUMN_5_9_ID = UUID.fromString("1e1a9b6b-5aee-4773-b52d-ea56a5d1e2c8");
 
-    public static final Long COLUMN_5_10_ID = 55L;
+    public static final UUID COLUMN_5_10_ID = UUID.fromString("42ede62a-ae98-4a14-ba54-76b8ba1c580f");
 
-    public static final Long COLUMN_5_11_ID = 56L;
+    public static final UUID COLUMN_5_11_ID = UUID.fromString("0af0f84a-5a58-418a-8bbc-bde29ed0cda0");
 
-    public static final Long COLUMN_5_12_ID = 57L;
+    public static final UUID COLUMN_5_12_ID = UUID.fromString("d9cb30a2-1566-4bd1-899d-060a8ba47722");
 
-    public static final Long COLUMN_5_13_ID = 58L;
+    public static final UUID COLUMN_5_13_ID = UUID.fromString("e69f7f75-3731-4706-8193-0393aa0c08a7");
 
-    public static final Long COLUMN_5_14_ID = 59L;
+    public static final UUID COLUMN_5_14_ID = UUID.fromString("4441630e-7dfa-4046-8bc2-929860f1c66e");
 
-    public static final Long COLUMN_5_15_ID = 60L;
+    public static final UUID COLUMN_5_15_ID = UUID.fromString("f0a12be0-0b26-4686-bf7e-539cdc7e71b4");
 
-    public static final Long COLUMN_5_16_ID = 61L;
+    public static final UUID COLUMN_5_16_ID = UUID.fromString("b60abdcc-5786-40f8-a309-e4467f7d963c");
 
-    public static final Long COLUMN_5_17_ID = 62L;
+    public static final UUID COLUMN_5_17_ID = UUID.fromString("6d5877e2-daef-43d6-a1b6-1aff3ab1a9a2");
 
-    public static final Long COLUMN_5_18_ID = 63L;
+    public static final UUID COLUMN_5_18_ID = UUID.fromString("bb45455f-d449-496e-94f8-eac4d46ba9c0");
 
-    public static final Long COLUMN_5_19_ID = 64L;
+    public static final UUID COLUMN_5_19_ID = UUID.fromString("44c5484b-b57d-48a4-8f24-d2074de98e1a");
 
-    public static final Long COLUMN_5_20_ID = 65L;
+    public static final UUID COLUMN_5_20_ID = UUID.fromString("6475b937-71fc-4331-bc85-8ee71fa68d99");
 
-    public static final Long COLUMN_5_21_ID = 66L;
+    public static final UUID COLUMN_5_21_ID = UUID.fromString("92ff472f-e203-4c8e-b243-81640229ca19");
 
     public static final ColumnBriefDto TABLE_5_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
             .id(COLUMN_5_1_ID)
@@ -4774,8 +4739,20 @@ public abstract class BaseTest {
             .constraints(TABLE_5_CONSTRAINTS_INVALID_CREATE)
             .build();
 
+    public static final UUID COLUMN_6_1_ID = UUID.fromString("27b04a64-2849-4fae-b295-858c3e50361f");
+
+    public static final UUID COLUMN_6_2_ID = UUID.fromString("1ea62e32-5719-4152-94da-45d37eb88b6f");
+
+    public static final UUID COLUMN_6_3_ID = UUID.fromString("f523f9f5-42f7-4695-841e-a5fd30fa6879");
+
+    public static final UUID COLUMN_6_4_ID = UUID.fromString("f57ea880-f917-4127-bcbb-202a34831383");
+
+    public static final UUID COLUMN_6_5_ID = UUID.fromString("38aaeb63-b94b-4d90-8eae-a626dfb1f092");
+
+    public static final UUID COLUMN_6_6_ID = UUID.fromString("f788cf6f-66ed-4f28-8b24-d9d173c4d340");
+
     public static final List<TableColumn> TABLE_6_COLUMNS = List.of(TableColumn.builder()
-                    .id(67L)
+                    .id(COLUMN_6_1_ID)
                     .ordinalPosition(0)
                     .table(TABLE_6)
                     .name("id")
@@ -4784,7 +4761,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             TableColumn.builder()
-                    .id(68L)
+                    .id(COLUMN_6_2_ID)
                     .ordinalPosition(1)
                     .table(TABLE_6)
                     .name("firstname")
@@ -4793,7 +4770,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             TableColumn.builder()
-                    .id(69L)
+                    .id(COLUMN_6_3_ID)
                     .ordinalPosition(2)
                     .table(TABLE_6)
                     .name("lastname")
@@ -4802,7 +4779,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             TableColumn.builder()
-                    .id(70L)
+                    .id(COLUMN_6_4_ID)
                     .ordinalPosition(3)
                     .table(TABLE_6)
                     .name("birth")
@@ -4811,7 +4788,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             TableColumn.builder()
-                    .id(71L)
+                    .id(COLUMN_6_5_ID)
                     .ordinalPosition(4)
                     .table(TABLE_6)
                     .name("reminder")
@@ -4820,7 +4797,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             TableColumn.builder()
-                    .id(72L)
+                    .id(COLUMN_6_6_ID)
                     .ordinalPosition(5)
                     .table(TABLE_6)
                     .name("ref_id")
@@ -4830,14 +4807,14 @@ public abstract class BaseTest {
                     .build());
 
     public static final ColumnBriefDto TABLE_6_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
-            .id(67L)
+            .id(COLUMN_6_1_ID)
             .name("id")
             .internalName("id")
             .columnType(ColumnTypeDto.BIGINT)
             .build();
 
     public static final List<ColumnDto> TABLE_6_COLUMNS_DTO = List.of(ColumnDto.builder()
-                    .id(67L)
+                    .id(COLUMN_6_1_ID)
                     .ordinalPosition(0)
                     .tableId(TABLE_6_ID)
                     .name("id")
@@ -4846,7 +4823,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ColumnDto.builder()
-                    .id(68L)
+                    .id(COLUMN_6_2_ID)
                     .ordinalPosition(1)
                     .tableId(TABLE_6_ID)
                     .name("firstname")
@@ -4855,7 +4832,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ColumnDto.builder()
-                    .id(69L)
+                    .id(COLUMN_6_3_ID)
                     .ordinalPosition(2)
                     .tableId(TABLE_6_ID)
                     .name("lastname")
@@ -4864,7 +4841,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ColumnDto.builder()
-                    .id(70L)
+                    .id(COLUMN_6_4_ID)
                     .ordinalPosition(3)
                     .tableId(TABLE_6_ID)
                     .name("birth")
@@ -4873,7 +4850,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ColumnDto.builder()
-                    .id(71L)
+                    .id(COLUMN_6_5_ID)
                     .ordinalPosition(4)
                     .tableId(TABLE_6_ID)
                     .name("reminder")
@@ -4882,7 +4859,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ColumnDto.builder()
-                    .id(72L)
+                    .id(COLUMN_6_6_ID)
                     .ordinalPosition(5)
                     .tableId(TABLE_6_ID)
                     .name("ref_id")
@@ -4929,9 +4906,9 @@ public abstract class BaseTest {
             .constraints(TABLE_6_CONSTRAINTS_CREATE)
             .build();
 
-    public static final Long COLUMN_7_1_ID = 73L;
+    public static final UUID COLUMN_7_1_ID = UUID.fromString("395b44a4-0e31-41ea-94ad-c4f2d5e912c6");
 
-    public static final Long COLUMN_7_2_ID = 74L;
+    public static final UUID COLUMN_7_2_ID = UUID.fromString("5713333b-872a-44c5-ab94-4d0ab62f5663");
 
     public static final ColumnBriefDto TABLE_7_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder()
             .id(COLUMN_7_1_ID)
@@ -4985,20 +4962,24 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build());
 
-    public static final Long VIEW_1_ID = 1L;
+    public static final UUID VIEW_1_ID = UUID.fromString("7d712cf7-78c7-4a47-90b0-d6b9f7f19b70");
     public static final Boolean VIEW_1_INITIAL_VIEW = false;
     public static final String VIEW_1_NAME = "JUnit";
     public static final String VIEW_1_INTERNAL_NAME = "junit";
-    public static final Long VIEW_1_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long VIEW_1_DATABASE_ID = DATABASE_1_ID;
     public static final Boolean VIEW_1_PUBLIC = false;
     public static final Boolean VIEW_1_SCHEMA_PUBLIC = false;
     public static final String VIEW_1_QUERY = "select `location`, `lat`, `lng` from `weather_location`";
     public static final String VIEW_1_QUERY_HASH = "dc81a6877c7c51a6a6f406e1fc2a255e44a0d49a20548596e0d583c3eb849c23";
 
+    public static final UUID VIEW_COLUMN_1_1_ID = UUID.fromString("ebf2c5ce-4deb-4cc6-b6f6-61f5d3f6fc98");
+
+    public static final UUID VIEW_COLUMN_1_2_ID = UUID.fromString("d6ba3475-cefa-4771-aaa1-9274f16335ee");
+
+    public static final UUID VIEW_COLUMN_1_3_ID = UUID.fromString("4f189a5f-c9ca-4518-9758-1a0730f6276b");
+
     public static final List<ViewColumnDto> VIEW_1_COLUMNS_DTO = List.of(
             ViewColumnDto.builder()
-                    .id(1L)
+                    .id(VIEW_COLUMN_1_1_ID)
                     .ordinalPosition(0)
                     .databaseId(DATABASE_1_ID)
                     .name("location")
@@ -5008,7 +4989,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ViewColumnDto.builder()
-                    .id(2L)
+                    .id(VIEW_COLUMN_1_2_ID)
                     .ordinalPosition(1)
                     .databaseId(DATABASE_1_ID)
                     .name("lat")
@@ -5019,7 +5000,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(3L)
+                    .id(VIEW_COLUMN_1_3_ID)
                     .ordinalPosition(2)
                     .databaseId(DATABASE_1_ID)
                     .name("lng")
@@ -5036,7 +5017,6 @@ public abstract class BaseTest {
             .isInitialView(VIEW_1_INITIAL_VIEW)
             .name(VIEW_1_NAME)
             .internalName(VIEW_1_INTERNAL_NAME)
-            .vdbid(VIEW_1_DATABASE_ID)
             .isPublic(VIEW_1_PUBLIC)
             .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC)
             .query(VIEW_1_QUERY)
@@ -5045,6 +5025,7 @@ public abstract class BaseTest {
             .owner(USER_1)
             .identifiers(new LinkedList<>()) /* IDENTIFIER_3 */
             .columns(null) /* VIEW_1_COLUMNS */
+            .database(null) /* DATABASE_1 */
             .build();
 
     public static final Long VIEW_1_DATA_COUNT = 3L;
@@ -5068,7 +5049,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumn> VIEW_1_COLUMNS = List.of(
             ViewColumn.builder()
-                    .id(1L)
+                    .id(VIEW_COLUMN_1_1_ID)
                     .ordinalPosition(0)
                     .name("location")
                     .internalName("location")
@@ -5078,7 +5059,7 @@ public abstract class BaseTest {
                     .view(VIEW_1)
                     .build(),
             ViewColumn.builder()
-                    .id(2L)
+                    .id(VIEW_COLUMN_1_2_ID)
                     .ordinalPosition(1)
                     .name("lat")
                     .internalName("lat")
@@ -5089,7 +5070,7 @@ public abstract class BaseTest {
                     .view(VIEW_1)
                     .build(),
             ViewColumn.builder()
-                    .id(3L)
+                    .id(VIEW_COLUMN_1_3_ID)
                     .ordinalPosition(2)
                     .name("lng")
                     .internalName("lng")
@@ -5106,7 +5087,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_1_INITIAL_VIEW)
             .name(VIEW_1_NAME)
             .internalName(VIEW_1_INTERNAL_NAME)
-            .vdbid(VIEW_1_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_1_PUBLIC)
             .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC)
             .identifiers(null /* VIEW_1_DTO_IDENTIFIERS */)
@@ -5121,7 +5102,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_1_INITIAL_VIEW)
             .name(VIEW_1_NAME)
             .internalName(VIEW_1_INTERNAL_NAME)
-            .vdbid(VIEW_1_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_1_PUBLIC)
             .owner(USER_1_BRIEF_DTO)
             .query(VIEW_1_QUERY)
@@ -5136,7 +5117,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_1_INITIAL_VIEW)
             .name(VIEW_1_NAME)
             .internalName(VIEW_1_INTERNAL_NAME)
-            .vdbid(VIEW_1_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_1_PUBLIC)
             .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC)
             .ownedBy(USER_1_ID)
@@ -5150,20 +5131,26 @@ public abstract class BaseTest {
             .query(VIEW_1_QUERY)
             .build();
 
-    public static final Long VIEW_2_ID = 2L;
+    public static final UUID VIEW_2_ID = UUID.fromString("1921a0a0-e4b0-4d12-a05f-be920af9b5ce");
     public static final Boolean VIEW_2_INITIAL_VIEW = false;
     public static final String VIEW_2_NAME = "JUnit2";
     public static final String VIEW_2_INTERNAL_NAME = "junit2";
-    public static final Long VIEW_2_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long VIEW_2_DATABASE_ID = DATABASE_1_ID;
     public static final Boolean VIEW_2_PUBLIC = true;
     public static final Boolean VIEW_2_SCHEMA_PUBLIC = true;
     public static final String VIEW_2_QUERY = "select `date`, `location` as loc, `mintemp`, `rainfall` from `weather_aus` where `location` = 'Albury'";
     public static final String VIEW_2_QUERY_HASH = "987fc946772ffb6d85060262dcb5df419692a1f6772ea995e3dedb53c191e984";
 
+    public static final UUID VIEW_COLUMN_2_1_ID = UUID.fromString("8fb30bce-04a8-4e9a-9c6b-0776eda3aab8");
+
+    public static final UUID VIEW_COLUMN_2_2_ID = UUID.fromString("d43f9940-ae27-4d81-b17b-ccbaf578186c");
+
+    public static final UUID VIEW_COLUMN_2_3_ID = UUID.fromString("b47733bb-aeea-414d-811e-405c64463730");
+
+    public static final UUID VIEW_COLUMN_2_4_ID = UUID.fromString("2b467e3a-acef-4944-be19-b4b0680874c2");
+
     public static final List<ViewColumnDto> VIEW_2_COLUMNS_DTO = List.of(
             ViewColumnDto.builder()
-                    .id(4L)
+                    .id(VIEW_COLUMN_2_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(0)
                     .name("Date")
@@ -5172,7 +5159,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(5L)
+                    .id(VIEW_COLUMN_2_2_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(1)
                     .name("loc")
@@ -5182,7 +5169,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(6L)
+                    .id(VIEW_COLUMN_2_3_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(2)
                     .name("Rainfall")
@@ -5193,7 +5180,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(7L)
+                    .id(VIEW_COLUMN_2_4_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(3)
                     .name("MinTemp")
@@ -5210,7 +5197,6 @@ public abstract class BaseTest {
             .isInitialView(VIEW_2_INITIAL_VIEW)
             .name(VIEW_2_NAME)
             .internalName(VIEW_2_INTERNAL_NAME)
-            .vdbid(VIEW_2_DATABASE_ID)
             .isPublic(VIEW_2_PUBLIC)
             .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC)
             .columns(null)  /* VIEW_2_COLUMNS */
@@ -5218,11 +5204,12 @@ public abstract class BaseTest {
             .queryHash(VIEW_2_QUERY_HASH)
             .ownedBy(USER_1_ID)
             .owner(USER_1)
+            .database(null) /* DATABASE_1 */
             .build();
 
     public static final List<ViewColumn> VIEW_2_COLUMNS = List.of(
             ViewColumn.builder()
-                    .id(4L)
+                    .id(VIEW_COLUMN_2_1_ID)
                     .ordinalPosition(0)
                     .name("Date")
                     .internalName("date")
@@ -5231,7 +5218,7 @@ public abstract class BaseTest {
                     .view(VIEW_2)
                     .build(),
             ViewColumn.builder()
-                    .id(5L)
+                    .id(VIEW_COLUMN_2_2_ID)
                     .ordinalPosition(1)
                     .name("loc")
                     .internalName("loc")
@@ -5241,7 +5228,7 @@ public abstract class BaseTest {
                     .view(VIEW_2)
                     .build(),
             ViewColumn.builder()
-                    .id(6L)
+                    .id(VIEW_COLUMN_2_3_ID)
                     .ordinalPosition(2)
                     .name("Rainfall")
                     .internalName("rainfall")
@@ -5252,7 +5239,7 @@ public abstract class BaseTest {
                     .view(VIEW_2)
                     .build(),
             ViewColumn.builder()
-                    .id(7L)
+                    .id(VIEW_COLUMN_2_4_ID)
                     .ordinalPosition(3)
                     .name("MinTemp")
                     .internalName("mintemp")
@@ -5266,10 +5253,11 @@ public abstract class BaseTest {
 
     public static final ViewDto VIEW_2_DTO = ViewDto.builder()
             .id(VIEW_2_ID)
+            .vdbid(DATABASE_1_ID)
             .isInitialView(VIEW_2_INITIAL_VIEW)
             .name(VIEW_2_NAME)
             .internalName(VIEW_2_INTERNAL_NAME)
-            .vdbid(VIEW_2_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_2_PUBLIC)
             .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC)
             .columns(VIEW_2_COLUMNS_DTO)
@@ -5283,7 +5271,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_2_INITIAL_VIEW)
             .name(VIEW_2_NAME)
             .internalName(VIEW_2_INTERNAL_NAME)
-            .vdbid(VIEW_2_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_2_PUBLIC)
             .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC)
             .owner(USER_2_BRIEF_DTO)
@@ -5299,7 +5287,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_2_INITIAL_VIEW)
             .name(VIEW_2_NAME)
             .internalName(VIEW_2_INTERNAL_NAME)
-            .vdbid(VIEW_2_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_2_PUBLIC)
             .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC)
             .query(VIEW_2_QUERY)
@@ -5307,12 +5295,10 @@ public abstract class BaseTest {
             .ownedBy(USER_1_ID)
             .build();
 
-    public static final Long VIEW_3_ID = 3L;
+    public static final UUID VIEW_3_ID = UUID.fromString("88940939-d456-4aae-88a6-f2b6b343c614");
     public static final Boolean VIEW_3_INITIAL_VIEW = false;
     public static final String VIEW_3_NAME = "JUnit3";
     public static final String VIEW_3_INTERNAL_NAME = "junit3";
-    public static final Long VIEW_3_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long VIEW_3_DATABASE_ID = DATABASE_1_ID;
     public static final Boolean VIEW_3_PUBLIC = true;
     public static final Boolean VIEW_3_SCHEMA_PUBLIC = false;
     public static final String VIEW_3_QUERY = "select w.`mintemp`, w.`rainfall`, w.`location`, m.`date` from `weather_aus` w join `junit2` m on m.`location` = w.`location` and m.`date` = w.`date`";
@@ -5320,9 +5306,17 @@ public abstract class BaseTest {
 
     public static final Long VIEW_3_DATA_COUNT = 3L;
 
+    public static final UUID VIEW_COLUMN_3_1_ID = UUID.fromString("129839cb-dbd7-492d-8fd0-ee44a8f51c4d");
+
+    public static final UUID VIEW_COLUMN_3_2_ID = UUID.fromString("e229d80a-c25c-4fbe-8f31-bbb2e1dff3d5");
+
+    public static final UUID VIEW_COLUMN_3_3_ID = UUID.fromString("12083a5d-fdd3-41db-9f92-d1298558e477");
+
+    public static final UUID VIEW_COLUMN_3_4_ID = UUID.fromString("668f8a87-1fa6-4be7-9761-1844aa8315a4");
+
     public static final List<ViewColumnDto> VIEW_3_COLUMNS_DTO = List.of(
             ViewColumnDto.builder()
-                    .id(8L)
+                    .id(VIEW_COLUMN_3_1_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(0)
                     .name("MinTemp")
@@ -5333,7 +5327,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(9L)
+                    .id(VIEW_COLUMN_3_2_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(1)
                     .name("Rainfall")
@@ -5344,7 +5338,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(10L)
+                    .id(VIEW_COLUMN_3_3_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(2)
                     .name("Location")
@@ -5354,7 +5348,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(11L)
+                    .id(VIEW_COLUMN_3_4_ID)
                     .databaseId(DATABASE_1_ID)
                     .ordinalPosition(3)
                     .name("Date")
@@ -5369,7 +5363,6 @@ public abstract class BaseTest {
             .isInitialView(VIEW_3_INITIAL_VIEW)
             .name(VIEW_3_NAME)
             .internalName(VIEW_3_INTERNAL_NAME)
-            .vdbid(VIEW_3_DATABASE_ID)
             .isPublic(VIEW_3_PUBLIC)
             .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC)
             .columns(null)  /* VIEW_3_COLUMNS */
@@ -5377,6 +5370,7 @@ public abstract class BaseTest {
             .queryHash(VIEW_3_QUERY_HASH)
             .ownedBy(USER_1_ID)
             .owner(USER_1)
+            .database(null) /* DATABASE_1 */
             .build();
 
     public static final ViewDto VIEW_3_PRIVILEGED_DTO = ViewDto.builder()
@@ -5384,7 +5378,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_3_INITIAL_VIEW)
             .name(VIEW_3_NAME)
             .internalName(VIEW_3_INTERNAL_NAME)
-            .vdbid(VIEW_3_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_3_PUBLIC)
             .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC)
             .owner(USER_1_BRIEF_DTO)
@@ -5397,7 +5391,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumn> VIEW_3_COLUMNS = List.of(
             ViewColumn.builder()
-                    .id(8L)
+                    .id(VIEW_COLUMN_3_1_ID)
                     .ordinalPosition(0)
                     .name("MinTemp")
                     .internalName("mintemp")
@@ -5408,7 +5402,7 @@ public abstract class BaseTest {
                     .view(VIEW_3)
                     .build(),
             ViewColumn.builder()
-                    .id(9L)
+                    .id(VIEW_COLUMN_3_2_ID)
                     .ordinalPosition(1)
                     .name("Rainfall")
                     .internalName("rainfall")
@@ -5419,7 +5413,7 @@ public abstract class BaseTest {
                     .view(VIEW_3)
                     .build(),
             ViewColumn.builder()
-                    .id(10L)
+                    .id(VIEW_COLUMN_3_3_ID)
                     .ordinalPosition(2)
                     .name("Location")
                     .internalName("location")
@@ -5429,7 +5423,7 @@ public abstract class BaseTest {
                     .view(VIEW_3)
                     .build(),
             ViewColumn.builder()
-                    .id(11L)
+                    .id(VIEW_COLUMN_3_4_ID)
                     .ordinalPosition(3)
                     .name("Date")
                     .internalName("date")
@@ -5441,10 +5435,11 @@ public abstract class BaseTest {
 
     public static final ViewDto VIEW_3_DTO = ViewDto.builder()
             .id(VIEW_3_ID)
+            .vdbid(DATABASE_1_ID)
             .isInitialView(VIEW_3_INITIAL_VIEW)
             .name(VIEW_3_NAME)
             .internalName(VIEW_3_INTERNAL_NAME)
-            .vdbid(VIEW_3_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_3_PUBLIC)
             .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC)
             .columns(VIEW_3_COLUMNS_DTO)
@@ -5458,7 +5453,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_3_INITIAL_VIEW)
             .name(VIEW_3_NAME)
             .internalName(VIEW_3_INTERNAL_NAME)
-            .vdbid(VIEW_3_DATABASE_ID)
+            .vdbid(DATABASE_1_ID)
             .isPublic(VIEW_3_PUBLIC)
             .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC)
             .query(VIEW_3_QUERY)
@@ -5466,13 +5461,10 @@ public abstract class BaseTest {
             .ownedBy(USER_1_ID)
             .build();
 
-    public static final Long VIEW_4_ID = 4L;
+    public static final UUID VIEW_4_ID = UUID.fromString("13b36fa0-a65a-4ccf-80b1-5b3a2444a41a");
     public static final Boolean VIEW_4_INITIAL_VIEW = false;
     public static final String VIEW_4_NAME = "Mock View";
     public static final String VIEW_4_INTERNAL_NAME = "mock_view";
-    public static final Long VIEW_4_CONTAINER_ID = CONTAINER_2_ID;
-    public static final Long VIEW_4_DATABASE_ID = DATABASE_2_ID;
-    public static final Long VIEW_4_TABLE_ID = TABLE_5_ID;
     public static final Table VIEW_4_TABLE = TABLE_5;
     public static final Boolean VIEW_4_PUBLIC = true;
     public static final Boolean VIEW_4_SCHEMA_PUBLIC = false;
@@ -5481,7 +5473,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumnDto> VIEW_4_COLUMNS_DTO = List.of(
             ViewColumnDto.builder()
-                    .id(12L)
+                    .id(COLUMN_5_1_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(0)
                     .name("Animal Name")
@@ -5490,7 +5482,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(13L)
+                    .id(COLUMN_5_2_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(1)
                     .name("Hair")
@@ -5499,7 +5491,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(14L)
+                    .id(COLUMN_5_3_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(2)
                     .name("Feathers")
@@ -5508,7 +5500,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(15L)
+                    .id(COLUMN_5_4_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(3)
                     .name("Eggs")
@@ -5517,7 +5509,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(16L)
+                    .id(COLUMN_5_5_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(4)
                     .name("Milk")
@@ -5526,7 +5518,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(17L)
+                    .id(COLUMN_5_6_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(5)
                     .name("Airborne")
@@ -5535,7 +5527,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(18L)
+                    .id(COLUMN_5_7_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(6)
                     .name("Aquantic")
@@ -5544,7 +5536,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(19L)
+                    .id(COLUMN_5_8_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(7)
                     .name("Predator")
@@ -5553,7 +5545,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(20L)
+                    .id(COLUMN_5_9_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(8)
                     .name("Backbone")
@@ -5562,7 +5554,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(21L)
+                    .id(COLUMN_5_10_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(9)
                     .name("Breathes")
@@ -5571,7 +5563,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(22L)
+                    .id(COLUMN_5_11_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(10)
                     .name("Venomous")
@@ -5580,7 +5572,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(23L)
+                    .id(COLUMN_5_12_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(11)
                     .name("Fin")
@@ -5589,7 +5581,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(24L)
+                    .id(COLUMN_5_13_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(12)
                     .name("Legs")
@@ -5598,7 +5590,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(25L)
+                    .id(COLUMN_5_14_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(13)
                     .name("Tail")
@@ -5607,7 +5599,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(26L)
+                    .id(COLUMN_5_15_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(14)
                     .name("Domestic")
@@ -5616,7 +5608,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(27L)
+                    .id(COLUMN_5_16_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(15)
                     .name("Catsize")
@@ -5625,7 +5617,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(28L)
+                    .id(COLUMN_5_17_ID)
                     .databaseId(DATABASE_2_ID)
                     .ordinalPosition(16)
                     .name("Class Type")
@@ -5639,7 +5631,6 @@ public abstract class BaseTest {
             .isInitialView(VIEW_4_INITIAL_VIEW)
             .name(VIEW_4_NAME)
             .internalName(VIEW_4_INTERNAL_NAME)
-            .vdbid(VIEW_4_DATABASE_ID)
             .isPublic(VIEW_4_PUBLIC)
             .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC)
             .query(VIEW_4_QUERY)
@@ -5651,10 +5642,11 @@ public abstract class BaseTest {
 
     public static final ViewDto VIEW_4_DTO = ViewDto.builder()
             .id(VIEW_4_ID)
+            .vdbid(DATABASE_2_ID)
             .isInitialView(VIEW_4_INITIAL_VIEW)
             .name(VIEW_4_NAME)
             .internalName(VIEW_4_INTERNAL_NAME)
-            .vdbid(VIEW_4_DATABASE_ID)
+            .vdbid(DATABASE_2_ID)
             .isPublic(VIEW_4_PUBLIC)
             .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC)
             .query(VIEW_4_QUERY)
@@ -5668,7 +5660,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_4_INITIAL_VIEW)
             .name(VIEW_4_NAME)
             .internalName(VIEW_4_INTERNAL_NAME)
-            .vdbid(VIEW_4_DATABASE_ID)
+            .vdbid(DATABASE_2_ID)
             .isPublic(VIEW_4_PUBLIC)
             .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC)
             .query(VIEW_4_QUERY)
@@ -5678,7 +5670,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumn> VIEW_4_COLUMNS = List.of(
             ViewColumn.builder()
-                    .id(12L)
+                    .id(COLUMN_5_1_ID)
                     .ordinalPosition(0)
                     .name("Animal Name")
                     .internalName("animal_name")
@@ -5687,7 +5679,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(13L)
+                    .id(COLUMN_5_2_ID)
                     .ordinalPosition(1)
                     .name("Hair")
                     .internalName("hair")
@@ -5696,7 +5688,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(14L)
+                    .id(COLUMN_5_3_ID)
                     .ordinalPosition(2)
                     .name("Feathers")
                     .internalName("feathers")
@@ -5705,7 +5697,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(15L)
+                    .id(COLUMN_5_4_ID)
                     .ordinalPosition(3)
                     .name("Eggs")
                     .internalName("eggs")
@@ -5714,7 +5706,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(16L)
+                    .id(COLUMN_5_5_ID)
                     .ordinalPosition(4)
                     .name("Milk")
                     .internalName("milk")
@@ -5723,7 +5715,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(17L)
+                    .id(COLUMN_5_6_ID)
                     .ordinalPosition(5)
                     .name("Airborne")
                     .internalName("airborne")
@@ -5732,7 +5724,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(18L)
+                    .id(COLUMN_5_7_ID)
                     .ordinalPosition(6)
                     .name("Aquantic")
                     .internalName("aquantic")
@@ -5741,7 +5733,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(19L)
+                    .id(COLUMN_5_8_ID)
                     .ordinalPosition(7)
                     .name("Predator")
                     .internalName("predator")
@@ -5750,7 +5742,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(20L)
+                    .id(COLUMN_5_9_ID)
                     .ordinalPosition(8)
                     .name("Backbone")
                     .internalName("backbone")
@@ -5759,7 +5751,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(21L)
+                    .id(COLUMN_5_10_ID)
                     .ordinalPosition(9)
                     .name("Breathes")
                     .internalName("breathes")
@@ -5768,7 +5760,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(22L)
+                    .id(COLUMN_5_11_ID)
                     .ordinalPosition(10)
                     .name("Venomous")
                     .internalName("venomous")
@@ -5777,7 +5769,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(23L)
+                    .id(COLUMN_5_12_ID)
                     .ordinalPosition(11)
                     .name("Fin")
                     .internalName("fin")
@@ -5786,7 +5778,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(24L)
+                    .id(COLUMN_5_13_ID)
                     .ordinalPosition(12)
                     .name("Legs")
                     .internalName("legs")
@@ -5795,7 +5787,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(25L)
+                    .id(COLUMN_5_14_ID)
                     .ordinalPosition(13)
                     .name("Tail")
                     .internalName("tail")
@@ -5804,7 +5796,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(26L)
+                    .id(COLUMN_5_15_ID)
                     .ordinalPosition(14)
                     .name("Domestic")
                     .internalName("domestic")
@@ -5813,7 +5805,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(27L)
+                    .id(COLUMN_5_16_ID)
                     .ordinalPosition(15)
                     .name("Catsize")
                     .internalName("catsize")
@@ -5822,7 +5814,7 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build(),
             ViewColumn.builder()
-                    .id(28L)
+                    .id(COLUMN_5_17_ID)
                     .ordinalPosition(16)
                     .name("Class Type")
                     .internalName("class_type")
@@ -5831,12 +5823,10 @@ public abstract class BaseTest {
                     .view(VIEW_4)
                     .build());
 
-    public static final Long VIEW_5_ID = 5L;
+    public static final UUID VIEW_5_ID = UUID.fromString("bc6b8507-51f1-4d05-bb0c-1f619a991dec");
     public static final Boolean VIEW_5_INITIAL_VIEW = false;
     public static final String VIEW_5_NAME = "Mock View";
     public static final String VIEW_5_INTERNAL_NAME = "mock_view";
-    public static final Long VIEW_5_CONTAINER_ID = CONTAINER_2_ID;
-    public static final Long VIEW_5_DATABASE_ID = DATABASE_3_ID;
     public static final Boolean VIEW_5_PUBLIC = true;
     public static final Boolean VIEW_5_SCHEMA_PUBLIC = true;
     public static final String VIEW_5_QUERY = "SELECT `location`, `lat`, `lng` FROM `weather_location` WHERE `location` = 'Albury'";
@@ -5847,7 +5837,6 @@ public abstract class BaseTest {
             .isInitialView(VIEW_5_INITIAL_VIEW)
             .name(VIEW_5_NAME)
             .internalName(VIEW_5_INTERNAL_NAME)
-            .vdbid(VIEW_5_DATABASE_ID)
             .isPublic(VIEW_5_PUBLIC)
             .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC)
             .query(VIEW_5_QUERY)
@@ -5859,10 +5848,11 @@ public abstract class BaseTest {
 
     public static final ViewDto VIEW_5_DTO = ViewDto.builder()
             .id(VIEW_5_ID)
+            .vdbid(DATABASE_3_ID)
             .isInitialView(VIEW_5_INITIAL_VIEW)
             .name(VIEW_5_NAME)
             .internalName(VIEW_5_INTERNAL_NAME)
-            .vdbid(VIEW_5_DATABASE_ID)
+            .vdbid(DATABASE_3_ID)
             .isPublic(VIEW_5_PUBLIC)
             .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC)
             .query(VIEW_5_QUERY)
@@ -5876,7 +5866,7 @@ public abstract class BaseTest {
             .isInitialView(VIEW_5_INITIAL_VIEW)
             .name(VIEW_5_NAME)
             .internalName(VIEW_5_INTERNAL_NAME)
-            .vdbid(VIEW_5_DATABASE_ID)
+            .vdbid(DATABASE_3_ID)
             .isPublic(VIEW_5_PUBLIC)
             .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC)
             .query(VIEW_5_QUERY)
@@ -5885,7 +5875,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumn> VIEW_5_COLUMNS = List.of(
             ViewColumn.builder()
-                    .id(29L)
+                    .id(COLUMN_2_1_ID)
                     .ordinalPosition(0)
                     .name("location")
                     .internalName("location")
@@ -5895,7 +5885,7 @@ public abstract class BaseTest {
                     .view(VIEW_5)
                     .build(),
             ViewColumn.builder()
-                    .id(30L)
+                    .id(COLUMN_2_2_ID)
                     .ordinalPosition(1)
                     .name("lat")
                     .internalName("lat")
@@ -5906,7 +5896,7 @@ public abstract class BaseTest {
                     .view(VIEW_5)
                     .build(),
             ViewColumn.builder()
-                    .id(31L)
+                    .id(COLUMN_2_3_ID)
                     .ordinalPosition(2)
                     .name("lng")
                     .internalName("lng")
@@ -5919,7 +5909,7 @@ public abstract class BaseTest {
 
     public static final List<ViewColumnDto> VIEW_5_COLUMNS_DTO = List.of(
             ViewColumnDto.builder()
-                    .id(29L)
+                    .id(COLUMN_2_1_ID)
                     .databaseId(DATABASE_3_ID)
                     .ordinalPosition(0)
                     .name("location")
@@ -5929,7 +5919,7 @@ public abstract class BaseTest {
                     .isNullAllowed(false)
                     .build(),
             ViewColumnDto.builder()
-                    .id(30L)
+                    .id(COLUMN_2_2_ID)
                     .databaseId(DATABASE_3_ID)
                     .ordinalPosition(1)
                     .name("lat")
@@ -5940,7 +5930,7 @@ public abstract class BaseTest {
                     .isNullAllowed(true)
                     .build(),
             ViewColumnDto.builder()
-                    .id(31L)
+                    .id(COLUMN_2_3_ID)
                     .databaseId(DATABASE_3_ID)
                     .ordinalPosition(2)
                     .name("lng")
@@ -5976,8 +5966,7 @@ public abstract class BaseTest {
             .uri(LICENSE_1_URI)
             .build();
 
-    public static final Long CREATOR_1_ID = 1L;
-    public static final Long CREATOR_1_QUERY_ID = 1L;
+    public static final UUID CREATOR_1_ID = UUID.fromString("a0417f34-80ff-419f-821d-ce179021484a");
     public static final String CREATOR_1_ORCID = "00000-00000-00000";
     public static final String CREATOR_1_AFFIL = "TU Graz";
     public static final String CREATOR_1_AFFIL_ROR = "https://ror.org/04wn28048";
@@ -6020,7 +6009,7 @@ public abstract class BaseTest {
                     .build())
             .build();
 
-    public static final Long CREATOR_2_ID = 2L;
+    public static final UUID CREATOR_2_ID = UUID.fromString("56b70dae-17a7-4f76-9c1e-a493762ba760");
     public static final Long CREATOR_2_QUERY_ID = 1L;
     public static final String CREATOR_2_ORCID = "00000-00000-00000";
     public static final String CREATOR_2_AFFIL = "TU Wien";
@@ -6030,7 +6019,7 @@ public abstract class BaseTest {
     public static final Instant CREATOR_2_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant CREATOR_2_MODIFIED = Instant.ofEpochSecond(1541588352L);
 
-    public static final Long CREATOR_3_ID = 3L;
+    public static final UUID CREATOR_3_ID = UUID.fromString("a2dfea46-7d88-4069-9b93-2417e1fb578b");
     public static final Long CREATOR_3_QUERY_ID = 1L;
     public static final String CREATOR_3_ORCID = "00000-00000-00000";
     public static final String CREATOR_3_AFFIL = "TU Graz";
@@ -6044,7 +6033,7 @@ public abstract class BaseTest {
     public static final Instant CREATOR_3_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant CREATOR_3_MODIFIED = Instant.ofEpochSecond(1541588352L);
 
-    public static final Long CREATOR_4_ID = 4L;
+    public static final UUID CREATOR_4_ID = UUID.fromString("473489fa-ad02-4e48-856f-5a3f83ff541d");
     public static final Long CREATOR_4_QUERY_ID = 1L;
     public static final String CREATOR_4_ORCID = "00000-00000-00000";
     public static final String CREATOR_4_AFFIL = "TU Wien";
@@ -6058,10 +6047,7 @@ public abstract class BaseTest {
     public static final Instant CREATOR_4_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant CREATOR_4_MODIFIED = Instant.ofEpochSecond(1541588352L);
 
-    public static final Long IDENTIFIER_1_ID = 1L;
-    public static final Long IDENTIFIER_1_QUERY_ID = null;
-    public static final Long IDENTIFIER_1_CONTAINER_ID = CONTAINER_1_ID;
-    public static final Long IDENTIFIER_1_DATABASE_ID = DATABASE_1_ID;
+    public static final UUID IDENTIFIER_1_ID = UUID.fromString("679a83f2-ef23-4b4b-98f7-ad77b9d68733");
     public static final String IDENTIFIER_1_DOI = "10.12345/183";
     public static final Instant IDENTIFIER_1_CREATED = Instant.ofEpochSecond(1641588352L) /* 2022-01-07 20:45:52 */;
     public static final Instant IDENTIFIER_1_MODIFIED = Instant.ofEpochSecond(1541588352L) /* 2022-01-07 20:45:52 */;
@@ -6069,19 +6055,13 @@ public abstract class BaseTest {
     public static final Integer IDENTIFIER_1_PUBLICATION_MONTH = 5;
     public static final Integer IDENTIFIER_1_PUBLICATION_YEAR = 2022;
     public static final Integer IDENTIFIER_1_PUBLICATION_DAY = null;
-    public static final String IDENTIFIER_1_QUERY_HASH = QUERY_1_QUERY_HASH;
-    public static final String IDENTIFIER_1_RESULT_HASH = QUERY_1_RESULT_HASH;
-    public static final String IDENTIFIER_1_QUERY = QUERY_1_STATEMENT;
-    public static final String IDENTIFIER_1_NORMALIZED = QUERY_1_STATEMENT;
-    public static final Long IDENTIFIER_1_RESULT_NUMBER = QUERY_1_RESULT_NUMBER;
     public static final String IDENTIFIER_1_PUBLISHER = "Austrian Government";
     public static final IdentifierType IDENTIFIER_1_TYPE = IdentifierType.DATABASE;
     public static final IdentifierTypeDto IDENTIFIER_1_TYPE_DTO = IdentifierTypeDto.DATABASE;
     public static final IdentifierStatusType IDENTIFIER_1_STATUS_TYPE = IdentifierStatusType.PUBLISHED;
     public static final IdentifierStatusTypeDto IDENTIFIER_1_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED;
 
-    public static final Long IDENTIFIER_1_TITLE_1_ID = 1L;
-    public static final Long IDENTIFIER_1_TITLE_1_IDENTIFIER_ID = IDENTIFIER_1_ID;
+    public static final UUID IDENTIFIER_1_TITLE_1_ID = UUID.fromString("3df6b286-9bd2-4ae3-b8f4-29c217544bef");
     public static final String IDENTIFIER_1_TITLE_1_TITLE = "Austrian weather data";
     public static final String IDENTIFIER_1_TITLE_1_TITLE_MODIFY = "Austrian weather some data";
     public static final TitleType IDENTIFIER_1_TITLE_1_TYPE = null;
@@ -6122,8 +6102,7 @@ public abstract class BaseTest {
             .language(IDENTIFIER_1_TITLE_1_LANG_DTO)
             .build();
 
-    public static final Long IDENTIFIER_1_TITLE_2_ID = 2L;
-    public static final Long IDENTIFIER_1_TITLE_2_IDENTIFIER_ID = IDENTIFIER_1_ID;
+    public static final UUID IDENTIFIER_1_TITLE_2_ID = UUID.fromString("903a7e5b-8014-4b8a-b8fd-44f477880905");
     public static final String IDENTIFIER_1_TITLE_2_TITLE = "Österreichische Wetterdaten";
     public static final String IDENTIFIER_1_TITLE_2_TITLE_MODIFY = "Österreichische Wetterdaten übersetzt";
     public static final TitleType IDENTIFIER_1_TITLE_2_TYPE = TitleType.TRANSLATED_TITLE;
@@ -6164,8 +6143,7 @@ public abstract class BaseTest {
             .language(IDENTIFIER_1_TITLE_2_LANG_DTO)
             .build();
 
-    public static final Long IDENTIFIER_1_DESCRIPTION_1_ID = 1L;
-    public static final Long IDENTIFIER_1_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_1_ID;
+    public static final UUID IDENTIFIER_1_DESCRIPTION_1_ID = UUID.fromString("1c438756-93f0-4797-983c-175a17e18c2c");
     public static final String IDENTIFIER_1_DESCRIPTION_1_DESCRIPTION = "Selecting all from the weather Austrian table";
     public static final String IDENTIFIER_1_DESCRIPTION_1_DESCRIPTION_MODIFY = "Selecting some from the weather Austrian table";
     public static final DescriptionType IDENTIFIER_1_DESCRIPTION_1_TYPE = null;
@@ -6201,7 +6179,7 @@ public abstract class BaseTest {
             .language(IDENTIFIER_1_DESCRIPTION_1_LANG_DTO)
             .build();
 
-    public static final Long IDENTIFIER_1_CREATOR_1_ID = 1L;
+    public static final UUID IDENTIFIER_1_CREATOR_1_ID = UUID.fromString("667cd1d6-4f94-4808-b5cb-12e5ec0788d8");
     public static final String IDENTIFIER_1_CREATOR_1_FIRSTNAME = CREATOR_1_FIRSTNAME;
     public static final String IDENTIFIER_1_CREATOR_1_LASTNAME = CREATOR_1_LASTNAME;
     public static final String IDENTIFIER_1_CREATOR_1_NAME = CREATOR_1_NAME;
@@ -6255,7 +6233,7 @@ public abstract class BaseTest {
             .affiliationIdentifierScheme(IDENTIFIER_1_CREATOR_1_AFFILIATION_IDENTIFIER_SCHEME_DTO)
             .build();
 
-    public static final Long FUNDER_1_ID = 1L;
+    public static final UUID FUNDER_1_ID = UUID.fromString("8deb273d-6dd6-407d-970a-01534035ac01");
     public static final String FUNDER_1_NAME = "European Commission";
     public static final String FUNDER_1_IDENTIFIER = "https://doi.org/10.13039/501100000780";
     public static final String FUNDER_1_IDENTIFIER_ID_ONLY = "10.13039/501100000780";
@@ -6297,7 +6275,7 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_1 = Identifier.builder()
             .id(IDENTIFIER_1_ID)
-            .queryId(IDENTIFIER_1_QUERY_ID)
+            .queryId(QUERY_1_ID)
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1, IDENTIFIER_1_TITLE_2)))
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1)))
             .doi(IDENTIFIER_1_DOI)
@@ -6307,11 +6285,11 @@ public abstract class BaseTest {
             .execution(IDENTIFIER_1_EXECUTION)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
             .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH)
-            .queryHash(IDENTIFIER_1_QUERY_HASH)
-            .resultHash(IDENTIFIER_1_RESULT_HASH)
-            .query(IDENTIFIER_1_QUERY)
-            .queryNormalized(IDENTIFIER_1_NORMALIZED)
-            .resultNumber(IDENTIFIER_1_RESULT_NUMBER)
+            .queryHash(QUERY_1_QUERY_HASH)
+            .resultHash(QUERY_1_RESULT_HASH)
+            .query(QUERY_1_STATEMENT)
+            .queryNormalized(QUERY_1_STATEMENT)
+            .resultNumber(QUERY_1_RESULT_NUMBER)
             .publisher(IDENTIFIER_1_PUBLISHER)
             .type(IDENTIFIER_1_TYPE)
             .owner(USER_1)
@@ -6324,7 +6302,6 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_1_WITH_DOI = Identifier.builder()
             .id(IDENTIFIER_1_ID)
-            .queryId(IDENTIFIER_1_QUERY_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1, IDENTIFIER_1_TITLE_2)))
             .doi(IDENTIFIER_1_DOI)
@@ -6334,11 +6311,11 @@ public abstract class BaseTest {
             .execution(IDENTIFIER_1_EXECUTION)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
             .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH)
-            .queryHash(IDENTIFIER_1_QUERY_HASH)
-            .resultHash(IDENTIFIER_1_RESULT_HASH)
-            .query(IDENTIFIER_1_QUERY)
-            .queryNormalized(IDENTIFIER_1_NORMALIZED)
-            .resultNumber(IDENTIFIER_1_RESULT_NUMBER)
+            .queryHash(QUERY_1_QUERY_HASH)
+            .resultHash(QUERY_1_RESULT_HASH)
+            .query(QUERY_1_STATEMENT)
+            .queryNormalized(QUERY_1_STATEMENT)
+            .resultNumber(QUERY_1_RESULT_NUMBER)
             .publisher(IDENTIFIER_1_PUBLISHER)
             .type(IDENTIFIER_1_TYPE)
             .owner(USER_1)
@@ -6351,18 +6328,18 @@ public abstract class BaseTest {
     public static final IdentifierDto IDENTIFIER_1_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_1_ID)
             .databaseId(DATABASE_1_ID)
-            .queryId(IDENTIFIER_1_QUERY_ID)
+            .queryId(QUERY_1_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO)))
             .doi(IDENTIFIER_1_DOI)
             .execution(IDENTIFIER_1_EXECUTION)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
             .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH)
-            .queryHash(IDENTIFIER_1_QUERY_HASH)
-            .resultHash(IDENTIFIER_1_RESULT_HASH)
-            .query(IDENTIFIER_1_QUERY)
-            .queryNormalized(IDENTIFIER_1_NORMALIZED)
-            .resultNumber(IDENTIFIER_1_RESULT_NUMBER)
+            .queryHash(QUERY_1_QUERY_HASH)
+            .resultHash(QUERY_1_RESULT_HASH)
+            .query(QUERY_1_STATEMENT)
+            .queryNormalized(QUERY_1_STATEMENT)
+            .resultNumber(QUERY_1_RESULT_NUMBER)
             .publisher(IDENTIFIER_1_PUBLISHER)
             .type(IDENTIFIER_1_TYPE_DTO)
             .owner(USER_1_BRIEF_DTO)
@@ -6375,7 +6352,6 @@ public abstract class BaseTest {
     public static final IdentifierBriefDto IDENTIFIER_1_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_1_ID)
             .databaseId(DATABASE_1_ID)
-            .queryId(IDENTIFIER_1_QUERY_ID)
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO)))
             .doi(IDENTIFIER_1_DOI)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
@@ -6385,7 +6361,7 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_1_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .type(IDENTIFIER_1_TYPE_DTO)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_1_PUBLISHER)
@@ -6402,7 +6378,7 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_1_CREATE_WITH_DOI_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .type(IDENTIFIER_1_TYPE_DTO)
             .doi(IDENTIFIER_1_DOI)
             .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR)
@@ -6420,7 +6396,7 @@ public abstract class BaseTest {
 
     public static final IdentifierSaveDto IDENTIFIER_1_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_1_ID)
-            .databaseId(IDENTIFIER_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO, IDENTIFIER_1_TITLE_2_CREATE_DTO)))
             .relatedIdentifiers(new LinkedList<>())
@@ -6435,7 +6411,7 @@ public abstract class BaseTest {
 
     public static final IdentifierSaveDto IDENTIFIER_1_SAVE_MODIFY_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_1_ID)
-            .databaseId(IDENTIFIER_1_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .descriptions(new LinkedList<>(List.of())) // <<<
             .titles(new LinkedList<>(List.of(IDENTIFIER_1_TITLE_1_CREATE_DTO))) // <<<
             .relatedIdentifiers(new LinkedList<>())
@@ -6448,10 +6424,7 @@ public abstract class BaseTest {
             .licenses(new LinkedList<>(List.of())) // <<<
             .build();
 
-    public static final Long IDENTIFIER_5_ID = 5L;
-    public static final Long IDENTIFIER_5_QUERY_ID = QUERY_2_ID;
-    public static final Long IDENTIFIER_5_CONTAINER_ID = CONTAINER_2_ID;
-    public static final Long IDENTIFIER_5_DATABASE_ID = DATABASE_2_ID;
+    public static final UUID IDENTIFIER_5_ID = UUID.fromString("e05bb4c9-ed26-48c9-bd91-5c48a93a04bd");
     public static final String IDENTIFIER_5_DOI = "10.12345/13/50BBFCFE08A12";
     public static final Instant IDENTIFIER_5_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant IDENTIFIER_5_MODIFIED = Instant.ofEpochSecond(1541588352L);
@@ -6471,8 +6444,7 @@ public abstract class BaseTest {
     public static final IdentifierStatusTypeDto IDENTIFIER_5_STATUS_TYPE_DTO = IdentifierStatusTypeDto.DRAFT;
     public static final UUID IDENTIFIER_5_CREATED_BY = USER_2_ID;
 
-    public static final Long IDENTIFIER_5_TITLE_1_ID = 3L;
-    public static final Long IDENTIFIER_5_TITLE_1_IDENTIFIER_ID = IDENTIFIER_5_ID;
+    public static final UUID IDENTIFIER_5_TITLE_1_ID = UUID.fromString("1a0ae9c2-61c6-44f8-b886-26a4f4dabc52");
     public static final String IDENTIFIER_5_TITLE_1_TITLE = "Australische Wetterdaten";
     public static final LanguageType IDENTIFIER_5_TITLE_1_LANG = LanguageType.DE;
     public static final LanguageTypeDto IDENTIFIER_5_TITLE_1_LANG_DTO = LanguageTypeDto.DE;
@@ -6499,8 +6471,7 @@ public abstract class BaseTest {
             .titleType(IDENTIFIER_5_TITLE_1_TYPE_DTO)
             .build();
 
-    public static final Long IDENTIFIER_5_DESCRIPTION_1_ID = 2L;
-    public static final Long IDENTIFIER_5_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_5_ID;
+    public static final UUID IDENTIFIER_5_DESCRIPTION_1_ID = UUID.fromString("ab49bdca-f373-4823-9947-2a0cbfa88350");
     public static final String IDENTIFIER_5_DESCRIPTION_1_DESCRIPTION = "Alle Wetterdaten in Australien";
     public static final LanguageType IDENTIFIER_5_DESCRIPTION_1_LANG = LanguageType.DE;
     public static final LanguageTypeDto IDENTIFIER_5_DESCRIPTION_1_LANG_DTO = LanguageTypeDto.DE;
@@ -6528,7 +6499,7 @@ public abstract class BaseTest {
             .descriptionType(IDENTIFIER_5_DESCRIPTION_1_TYPE_DTO)
             .build();
 
-    public static final Long IDENTIFIER_5_CREATOR_1_ID = 2L;
+    public static final UUID IDENTIFIER_5_CREATOR_1_ID = UUID.fromString("6844b684-93e4-47d2-a615-5939127fdafe");
 
     public static final Creator IDENTIFIER_5_CREATOR_1 = Creator.builder()
             .id(IDENTIFIER_5_CREATOR_1_ID)
@@ -6574,7 +6545,7 @@ public abstract class BaseTest {
             .affiliation(CREATOR_1_AFFIL)
             .build();
 
-    public static final Long IDENTIFIER_5_CREATOR_2_ID = 3L;
+    public static final UUID IDENTIFIER_5_CREATOR_2_ID = UUID.fromString("14943ad6-a935-49f5-b07e-f9eb789b8604");
 
     public static final Creator IDENTIFIER_5_CREATOR_2 = Creator.builder()
             .id(IDENTIFIER_5_CREATOR_2_ID)
@@ -6616,7 +6587,8 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_5 = Identifier.builder()
             .id(IDENTIFIER_5_ID)
-            .queryId(IDENTIFIER_5_QUERY_ID)
+            .queryId(QUERY_2_ID)
+            .database(null) /* DATABASE_2 */
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1)))
             .doi(IDENTIFIER_5_DOI)
@@ -6642,7 +6614,7 @@ public abstract class BaseTest {
     public static final IdentifierDto IDENTIFIER_5_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_5_ID)
             .databaseId(DATABASE_2_ID)
-            .queryId(IDENTIFIER_5_QUERY_ID)
+            .queryId(QUERY_2_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_DTO)))
             .doi(IDENTIFIER_5_DOI)
@@ -6665,7 +6637,7 @@ public abstract class BaseTest {
     public static final IdentifierBriefDto IDENTIFIER_5_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_5_ID)
             .databaseId(DATABASE_2_ID)
-            .queryId(IDENTIFIER_5_QUERY_ID)
+            .queryId(QUERY_2_ID)
             .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_DTO)))
             .doi(IDENTIFIER_5_DOI)
             .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR)
@@ -6673,8 +6645,7 @@ public abstract class BaseTest {
             .type(IDENTIFIER_5_TYPE_DTO)
             .build();
 
-    public static final Long RELATED_IDENTIFIER_5_ID = 1L;
-    public static final Long RELATED_IDENTIFIER_5_IDENTIFIER_ID = 2L;
+    public static final UUID RELATED_IDENTIFIER_5_ID = UUID.fromString("26545877-574d-44fa-819d-d9d9a9750b38");
     public static final String RELATED_IDENTIFIER_5_VALUE = "10.5281/zenodo.6637333";
     public static final RelatedType RELATED_IDENTIFIER_5_TYPE = RelatedType.DOI;
     public static final RelatedTypeDto RELATED_IDENTIFIER_5_TYPE_DTO = RelatedTypeDto.DOI;
@@ -6696,15 +6667,15 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_5_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_5_DATABASE_ID)
+            .databaseId(DATABASE_2_ID)
             .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_5_PUBLISHER)
             .build();
 
     public static final IdentifierSaveDto IDENTIFIER_5_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_5_ID)
-            .queryId(IDENTIFIER_5_QUERY_ID)
-            .databaseId(IDENTIFIER_5_DATABASE_ID)
+            .queryId(QUERY_2_ID)
+            .databaseId(DATABASE_2_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_5_DESCRIPTION_1_CREATE_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_5_TITLE_1_CREATE_DTO)))
             .relatedIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_RELATED_IDENTIFIER_5_CREATE_DTO)))
@@ -6717,10 +6688,7 @@ public abstract class BaseTest {
             .type(IDENTIFIER_5_TYPE_DTO)
             .build();
 
-    public static final Long IDENTIFIER_6_ID = 6L;
-    public static final Long IDENTIFIER_6_QUERY_ID = QUERY_3_ID;
-    public static final Long IDENTIFIER_6_CONTAINER_ID = CONTAINER_3_ID;
-    public static final Long IDENTIFIER_6_DATABASE_ID = DATABASE_3_ID;
+    public static final UUID IDENTIFIER_6_ID = UUID.fromString("a244204d-9671-42a0-be07-9b14402238fd");
     public static final String IDENTIFIER_6_DOI = null;
     public static final Instant IDENTIFIER_6_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant IDENTIFIER_6_MODIFIED = Instant.ofEpochSecond(1541588352L);
@@ -6739,8 +6707,7 @@ public abstract class BaseTest {
     public static final IdentifierStatusType IDENTIFIER_6_STATUS_TYPE = IdentifierStatusType.PUBLISHED;
     public static final IdentifierStatusTypeDto IDENTIFIER_6_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED;
 
-    public static final Long IDENTIFIER_6_TITLE_1_ID = 4L;
-    public static final Long IDENTIFIER_6_TITLE_1_IDENTIFIER_ID = IDENTIFIER_6_ID;
+    public static final UUID IDENTIFIER_6_TITLE_1_ID = UUID.fromString("0449011c-1490-4c8e-b46c-c1f862126aea");
     public static final String IDENTIFIER_6_TITLE_1_TITLE = "Norwegian weather data";
     public static final String IDENTIFIER_6_TITLE_1_TITLE_MODIFY = "Norwegian weather some data";
     public static final LanguageType IDENTIFIER_6_TITLE_1_LANG = LanguageType.EN;
@@ -6769,8 +6736,7 @@ public abstract class BaseTest {
             .language(IDENTIFIER_6_TITLE_1_LANG_DTO)
             .build();
 
-    public static final Long IDENTIFIER_6_DESCRIPTION_1_ID = 3L;
-    public static final Long IDENTIFIER_6_DESCRIPTION_1_IDENTIFIER_ID = IDENTIFIER_6_ID;
+    public static final UUID IDENTIFIER_6_DESCRIPTION_1_ID = UUID.fromString("aac03bbd-27e6-419d-8118-f996d594f00f");
     public static final String IDENTIFIER_6_DESCRIPTION_1_DESCRIPTION = "Selecting all from the weather Norwegian table";
     public static final String IDENTIFIER_6_DESCRIPTION_1_DESCRIPTION_MODIFY = "Selecting some from the weather Norwegian table";
     public static final LanguageType IDENTIFIER_6_DESCRIPTION_1_LANG = LanguageType.EN;
@@ -6800,7 +6766,7 @@ public abstract class BaseTest {
             .language(IDENTIFIER_6_DESCRIPTION_1_LANG_DTO)
             .build();
 
-    private final static Long IDENTIFIER_6_CREATOR_1_ID = 4L;
+    private final static UUID IDENTIFIER_6_CREATOR_1_ID = UUID.fromString("f8a52dca-8aec-46c1-b0e1-603dbe6a1a65");
 
     public static final Creator IDENTIFIER_6_CREATOR_1 = Creator.builder()
             .id(IDENTIFIER_6_CREATOR_1_ID)
@@ -6850,7 +6816,7 @@ public abstract class BaseTest {
             .affiliationIdentifierScheme(CREATOR_1_AFFIL_TYPE_DTO)
             .build();
 
-    private final static Long IDENTIFIER_6_CREATOR_2_ID = 5L;
+    private final static UUID IDENTIFIER_6_CREATOR_2_ID = UUID.fromString("eeae78cb-75a1-42e2-b608-7082e5fbecc6");
 
     public static final Creator IDENTIFIER_6_CREATOR_2 = Creator.builder()
             .id(IDENTIFIER_6_CREATOR_2_ID)
@@ -6872,7 +6838,7 @@ public abstract class BaseTest {
             .affiliation(CREATOR_2_AFFIL)
             .build();
 
-    private final static Long IDENTIFIER_6_CREATOR_3_ID = 6L;
+    private final static UUID IDENTIFIER_6_CREATOR_3_ID = UUID.fromString("700058f1-6314-4cd1-9c0c-62e75c8f422b");
 
     public static final Creator IDENTIFIER_6_CREATOR_3 = Creator.builder()
             .id(IDENTIFIER_6_CREATOR_3_ID)
@@ -6902,7 +6868,7 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_6 = Identifier.builder()
             .id(IDENTIFIER_6_ID)
-            .queryId(IDENTIFIER_6_QUERY_ID)
+            .queryId(QUERY_3_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1)))
             .doi(IDENTIFIER_6_DOI)
@@ -6929,7 +6895,7 @@ public abstract class BaseTest {
     public static final IdentifierDto IDENTIFIER_6_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_6_ID)
             .databaseId(DATABASE_3_ID)
-            .queryId(IDENTIFIER_6_QUERY_ID)
+            .queryId(QUERY_3_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_DTO)))
             .doi(IDENTIFIER_6_DOI)
@@ -6954,7 +6920,7 @@ public abstract class BaseTest {
     public static final IdentifierBriefDto IDENTIFIER_6_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_6_ID)
             .databaseId(DATABASE_3_ID)
-            .queryId(IDENTIFIER_6_QUERY_ID)
+            .queryId(QUERY_3_ID)
             .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_DTO)))
             .doi(IDENTIFIER_6_DOI)
             .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR)
@@ -6964,15 +6930,15 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_6_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_6_DATABASE_ID)
+            .databaseId(DATABASE_3_ID)
             .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_6_PUBLISHER)
             .build();
 
     public static final IdentifierSaveDto IDENTIFIER_6_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_6_ID)
-            .databaseId(IDENTIFIER_6_DATABASE_ID)
-            .queryId(IDENTIFIER_6_QUERY_ID)
+            .databaseId(DATABASE_3_ID)
+            .queryId(QUERY_3_ID)
             .descriptions(new LinkedList<>(List.of(IDENTIFIER_6_DESCRIPTION_1_CREATE_DTO)))
             .titles(new LinkedList<>(List.of(IDENTIFIER_6_TITLE_1_CREATE_DTO)))
             .relatedIdentifiers(new LinkedList<>())
@@ -6984,8 +6950,7 @@ public abstract class BaseTest {
             .licenses(new LinkedList<>(List.of(LICENSE_1_DTO)))
             .build();
 
-    public static final Long IDENTIFIER_7_ID = 7L;
-    public static final Long IDENTIFIER_7_DATABASE_ID = DATABASE_4_ID;
+    public static final UUID IDENTIFIER_7_ID = UUID.fromString("b216ae00-a31d-4ecb-95fb-37eb4da3946f");
     public static final String IDENTIFIER_7_DOI = null;
     public static final Instant IDENTIFIER_7_CREATED = Instant.ofEpochSecond(1641588352L);
     public static final Instant IDENTIFIER_7_MODIFIED = Instant.ofEpochSecond(1541588352L);
@@ -7009,7 +6974,7 @@ public abstract class BaseTest {
                     .build())
             .build();
 
-    private final static Long IDENTIFIER_7_CREATOR_1_ID = 6L;
+    private final static UUID IDENTIFIER_7_CREATOR_1_ID = UUID.fromString("b899c367-06c7-4f47-8aea-5f15061ee3ee");
 
     public static final Creator IDENTIFIER_7_CREATOR_1 = Creator.builder()
             .id(IDENTIFIER_7_CREATOR_1_ID)
@@ -7069,14 +7034,14 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_7_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_7_DATABASE_ID)
+            .databaseId(DATABASE_4_ID)
             .publicationYear(IDENTIFIER_7_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_7_PUBLISHER)
             .build();
 
     public static final IdentifierSaveDto IDENTIFIER_7_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_7_ID)
-            .databaseId(IDENTIFIER_7_DATABASE_ID)
+            .databaseId(DATABASE_4_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .relatedIdentifiers(new LinkedList<>())
@@ -7089,8 +7054,7 @@ public abstract class BaseTest {
             .type(IDENTIFIER_7_TYPE_DTO)
             .build();
 
-    public static final Long IDENTIFIER_2_ID = 2L;
-    public static final Long IDENTIFIER_2_DATABASE_ID = DATABASE_1_ID;
+    public static final UUID IDENTIFIER_2_ID = UUID.fromString("fdb95f60-48e7-4e74-8122-d3c8d079c889");
     public static final String IDENTIFIER_2_DOI = null;
     public static final Instant IDENTIFIER_2_CREATED = Instant.ofEpochSecond(1651588352L);
     public static final Instant IDENTIFIER_2_MODIFIED = Instant.ofEpochSecond(1551588352L);
@@ -7101,7 +7065,6 @@ public abstract class BaseTest {
     public static final String IDENTIFIER_2_QUERY_HASH = QUERY_1_QUERY_HASH;
     public static final String IDENTIFIER_2_RESULT_HASH = QUERY_1_RESULT_HASH;
     public static final String IDENTIFIER_2_QUERY = QUERY_1_STATEMENT;
-    public static final Long IDENTIFIER_2_QUERY_ID = QUERY_1_ID;
     public static final String IDENTIFIER_2_NORMALIZED = QUERY_1_STATEMENT;
     public static final Long IDENTIFIER_2_RESULT_NUMBER = QUERY_1_RESULT_NUMBER;
     public static final String IDENTIFIER_2_PUBLISHER = "Swedish Government";
@@ -7112,8 +7075,8 @@ public abstract class BaseTest {
     public static final UUID IDENTIFIER_2_CREATED_BY = USER_1_ID;
 
     public static final CreateIdentifierDto IDENTIFIER_2_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_2_DATABASE_ID)
-            .queryId(IDENTIFIER_2_QUERY_ID)
+            .databaseId(DATABASE_1_ID)
+            .queryId(QUERY_1_ID)
             .type(IDENTIFIER_2_TYPE_DTO)
             .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_2_PUBLISHER)
@@ -7121,7 +7084,7 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_2 = Identifier.builder()
             .id(IDENTIFIER_2_ID)
-            .queryId(IDENTIFIER_2_QUERY_ID)
+            .queryId(QUERY_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_2_DOI)
@@ -7148,8 +7111,8 @@ public abstract class BaseTest {
 
     public static final IdentifierDto IDENTIFIER_2_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_2_ID)
-            .queryId(IDENTIFIER_2_QUERY_ID)
-            .databaseId(IDENTIFIER_2_DATABASE_ID)
+            .queryId(QUERY_1_ID)
+            .databaseId(DATABASE_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_2_DOI)
@@ -7172,8 +7135,8 @@ public abstract class BaseTest {
 
     public static final IdentifierBriefDto IDENTIFIER_2_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_2_ID)
-            .queryId(IDENTIFIER_2_QUERY_ID)
-            .databaseId(IDENTIFIER_2_DATABASE_ID)
+            .queryId(QUERY_1_ID)
+            .databaseId(DATABASE_1_ID)
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_2_DOI)
             .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR)
@@ -7184,8 +7147,8 @@ public abstract class BaseTest {
 
     public static final IdentifierSaveDto IDENTIFIER_2_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_2_ID)
-            .databaseId(IDENTIFIER_2_DATABASE_ID)
-            .queryId(IDENTIFIER_2_QUERY_ID)
+            .databaseId(DATABASE_1_ID)
+            .queryId(QUERY_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .relatedIdentifiers(new LinkedList<>())
@@ -7198,9 +7161,7 @@ public abstract class BaseTest {
             .queryId(QUERY_1_ID)
             .build();
 
-    public static final Long IDENTIFIER_3_ID = 3L;
-    public static final Long IDENTIFIER_3_DATABASE_ID = DATABASE_1_ID;
-    public static final Long IDENTIFIER_3_VIEW_ID = VIEW_1_ID;
+    public static final UUID IDENTIFIER_3_ID = UUID.fromString("e2d831c2-3694-4fdc-8c48-7a7e94b73c43");
     public static final String IDENTIFIER_3_DOI = null;
     public static final Instant IDENTIFIER_3_CREATED = Instant.ofEpochSecond(1651588352L);
     public static final Instant IDENTIFIER_3_MODIFIED = Instant.ofEpochSecond(1551588352L);
@@ -7222,7 +7183,7 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_3 = Identifier.builder()
             .id(IDENTIFIER_3_ID)
-            .viewId(IDENTIFIER_3_VIEW_ID)
+            .viewId(VIEW_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_3_DOI)
@@ -7249,8 +7210,8 @@ public abstract class BaseTest {
 
     public static final IdentifierDto IDENTIFIER_3_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_3_ID)
-            .databaseId(IDENTIFIER_3_DATABASE_ID)
-            .viewId(IDENTIFIER_3_VIEW_ID)
+            .databaseId(DATABASE_1_ID)
+            .viewId(VIEW_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_3_DOI)
@@ -7273,8 +7234,8 @@ public abstract class BaseTest {
 
     public static final IdentifierBriefDto IDENTIFIER_3_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_3_ID)
-            .databaseId(IDENTIFIER_3_DATABASE_ID)
-            .viewId(IDENTIFIER_3_VIEW_ID)
+            .databaseId(DATABASE_1_ID)
+            .viewId(VIEW_1_ID)
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_3_DOI)
             .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR)
@@ -7284,8 +7245,8 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_3_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_3_DATABASE_ID)
-            .viewId(IDENTIFIER_3_VIEW_ID)
+            .databaseId(DATABASE_1_ID)
+            .viewId(VIEW_1_ID)
             .type(IDENTIFIER_3_TYPE_DTO)
             .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_3_PUBLISHER)
@@ -7293,8 +7254,8 @@ public abstract class BaseTest {
 
     public static final IdentifierSaveDto IDENTIFIER_3_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_3_ID)
-            .databaseId(IDENTIFIER_3_DATABASE_ID)
-            .viewId(IDENTIFIER_3_VIEW_ID)
+            .databaseId(DATABASE_1_ID)
+            .viewId(VIEW_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .relatedIdentifiers(new LinkedList<>())
@@ -7306,9 +7267,7 @@ public abstract class BaseTest {
             .licenses(new LinkedList<>(List.of(LICENSE_1_DTO)))
             .build();
 
-    public static final Long IDENTIFIER_4_ID = 4L;
-    public static final Long IDENTIFIER_4_DATABASE_ID = DATABASE_1_ID;
-    public static final Long IDENTIFIER_4_TABLE_ID = TABLE_1_ID;
+    public static final UUID IDENTIFIER_4_ID = UUID.fromString("3bd69bb8-f7e3-48e4-9717-823787e7ba23");
     public static final String IDENTIFIER_4_DOI = null;
     public static final Instant IDENTIFIER_4_CREATED = Instant.ofEpochSecond(1751588352L);
     public static final Instant IDENTIFIER_4_MODIFIED = Instant.ofEpochSecond(1551588352L);
@@ -7327,7 +7286,7 @@ public abstract class BaseTest {
 
     public static final Identifier IDENTIFIER_4 = Identifier.builder()
             .id(IDENTIFIER_4_ID)
-            .tableId(IDENTIFIER_4_TABLE_ID)
+            .tableId(TABLE_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_4_DOI)
@@ -7351,8 +7310,8 @@ public abstract class BaseTest {
 
     public static final IdentifierDto IDENTIFIER_4_DTO = IdentifierDto.builder()
             .id(IDENTIFIER_4_ID)
-            .databaseId(IDENTIFIER_4_DATABASE_ID)
-            .tableId(IDENTIFIER_4_TABLE_ID)
+            .databaseId(DATABASE_1_ID)
+            .tableId(TABLE_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_4_DOI)
@@ -7372,8 +7331,8 @@ public abstract class BaseTest {
 
     public static final IdentifierBriefDto IDENTIFIER_4_BRIEF_DTO = IdentifierBriefDto.builder()
             .id(IDENTIFIER_4_ID)
-            .databaseId(IDENTIFIER_4_DATABASE_ID)
-            .tableId(IDENTIFIER_4_TABLE_ID)
+            .databaseId(DATABASE_1_ID)
+            .tableId(TABLE_1_ID)
             .titles(new LinkedList<>())
             .doi(IDENTIFIER_4_DOI)
             .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR)
@@ -7383,15 +7342,15 @@ public abstract class BaseTest {
             .build();
 
     public static final CreateIdentifierDto IDENTIFIER_4_CREATE_DTO = CreateIdentifierDto.builder()
-            .databaseId(IDENTIFIER_4_DATABASE_ID)
+            .databaseId(DATABASE_1_ID)
             .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR)
             .publisher(IDENTIFIER_4_PUBLISHER)
             .build();
 
     public static final IdentifierSaveDto IDENTIFIER_4_SAVE_DTO = IdentifierSaveDto.builder()
             .id(IDENTIFIER_4_ID)
-            .databaseId(IDENTIFIER_4_DATABASE_ID)
-            .tableId(IDENTIFIER_4_TABLE_ID)
+            .databaseId(DATABASE_1_ID)
+            .tableId(TABLE_1_ID)
             .descriptions(new LinkedList<>())
             .titles(new LinkedList<>())
             .relatedIdentifiers(new LinkedList<>())
@@ -7425,7 +7384,7 @@ public abstract class BaseTest {
             .configure(".*")
             .build();
 
-    public static final Long BANNER_MESSAGE_1_ID = 1L;
+    public static final UUID BANNER_MESSAGE_1_ID = UUID.fromString("81cf09b7-0d86-44ad-be8e-a407e7d114e1");
     public static final String BANNER_MESSAGE_1_MESSAGE = "Next maintenance in 7 days!";
     public static final BannerMessageType BANNER_MESSAGE_1_TYPE = BannerMessageType.INFO;
     public static final BannerMessageTypeDto BANNER_MESSAGE_1_TYPE_DTO = BannerMessageTypeDto.INFO;
@@ -7462,7 +7421,7 @@ public abstract class BaseTest {
             .displayEnd(BANNER_MESSAGE_1_END)
             .build();
 
-    public static final Long BANNER_MESSAGE_2_ID = 2L;
+    public static final UUID BANNER_MESSAGE_2_ID = UUID.fromString("1e7e2c03-e2c6-46b8-9fdc-6668ef055d99");
     public static final String BANNER_MESSAGE_2_MESSAGE = "No operation on Christmas 2022!";
     public static final BannerMessageType BANNER_MESSAGE_2_TYPE = BannerMessageType.ERROR;
     public static final BannerMessageTypeDto BANNER_MESSAGE_2_TYPE_DTO = BannerMessageTypeDto.ERROR;
@@ -8086,7 +8045,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_1)
                     .column(TABLE_1_COLUMNS.get(0))
-                    .id(1L)
+                    .id(COLUMN_1_1_ID)
                     .build())))
             .build();
 
@@ -8095,7 +8054,7 @@ public abstract class BaseTest {
             .foreignKeys(new LinkedList<>())
             .uniques(new LinkedList<>())
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
-                    .id(1L)
+                    .id(UUID.fromString("b3f40a88-4f21-4de0-a595-3d15e63943aa"))
                     .table(TABLE_1_BRIEF_DTO)
                     .column(TABLE_1_COLUMNS_BRIEF_0_DTO)
                     .build())))
@@ -8104,11 +8063,11 @@ public abstract class BaseTest {
     public static final Constraints TABLE_2_CONSTRAINTS = Constraints.builder()
             .checks(new LinkedHashSet<>(List.of("`mintemp` > 0")))
             .foreignKeys(new LinkedList<>(List.of(ForeignKey.builder()
-                    .id(1L)
+                    .id(UUID.fromString("d79f0fb1-05d6-4f3e-a5e2-8559982b8516"))
                     .name("fk_location")
                     .onDelete(ReferenceType.NO_ACTION)
                     .references(new LinkedList<>(List.of(ForeignKeyReference.builder()
-                            .id(1L)
+                            .id(UUID.fromString("a4da8f2f-2999-4621-8066-801a2fb73c8d"))
                             .column(TABLE_2_COLUMNS.get(2))
                             .referencedColumn(TABLE_1_COLUMNS.get(0))
                             .foreignKey(null) // set later
@@ -8118,7 +8077,7 @@ public abstract class BaseTest {
                     .onUpdate(ReferenceType.NO_ACTION)
                     .build())))
             .uniques(new LinkedList<>(List.of(Unique.builder()
-                    .id(1L)
+                    .id(UUID.fromString("408e398f-d157-49a1-8b45-87a070f3b4de"))
                     .table(TABLE_2)
                     .name("uk_1")
                     .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS.get(1))))
@@ -8126,18 +8085,18 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_2)
                     .column(TABLE_2_COLUMNS.get(0))
-                    .id(2L)
+                    .id(COLUMN_2_1_ID)
                     .build())))
             .build();
 
     public static final ConstraintsDto TABLE_2_CONSTRAINTS_DTO = ConstraintsDto.builder()
             .checks(new LinkedHashSet<>(List.of("`mintemp` > 0")))
             .foreignKeys(new LinkedList<>(List.of(ForeignKeyDto.builder()
-                    .id(1L)
+                    .id(UUID.fromString("ca833111-1e9a-48a3-bb16-ad6f90196f96"))
                     .name("fk_location")
                     .onDelete(ReferenceTypeDto.NO_ACTION)
                     .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder()
-                            .id(1L)
+                            .id(UUID.fromString("8552f282-0403-424d-b2ba-4ed0f760197c"))
                             .column(TABLE_2_COLUMNS_BRIEF_2_DTO)
                             .referencedColumn(TABLE_1_COLUMNS_BRIEF_0_DTO)
                             .foreignKey(null) // set later
@@ -8147,7 +8106,7 @@ public abstract class BaseTest {
                     .onUpdate(ReferenceTypeDto.NO_ACTION)
                     .build())))
             .uniques(new LinkedList<>(List.of(UniqueDto.builder()
-                    .id(1L)
+                    .id(UUID.fromString("b9aba807-dd9c-43a3-9614-2493cb4b26bd"))
                     .table(TABLE_2_BRIEF_DTO)
                     .name("uk_1")
                     .columns(new LinkedList<>(List.of(TABLE_2_COLUMNS_BRIEF_DTO.get(1))))
@@ -8155,7 +8114,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_2_BRIEF_DTO)
                     .column(TABLE_2_COLUMNS_BRIEF_0_DTO)
-                    .id(2L)
+                    .id(COLUMN_2_1_ID)
                     .build())))
             .build();
 
@@ -8166,7 +8125,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_3)
                     .column(TABLE_3_COLUMNS.get(0))
-                    .id(3L)
+                    .id(COLUMN_3_1_ID)
                     .build())))
             .build();
 
@@ -8177,7 +8136,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_3_BRIEF_DTO)
                     .column(TABLE_3_COLUMNS_BRIEF_0_DTO)
-                    .id(3L)
+                    .id(COLUMN_3_1_ID)
                     .build())))
             .build();
 
@@ -8188,7 +8147,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_4)
                     .column(TABLE_4_COLUMNS.get(0))
-                    .id(4L)
+                    .id(COLUMN_4_1_ID)
                     .build())))
             .build();
 
@@ -8199,7 +8158,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_4_BRIEF_DTO)
                     .column(TABLE_4_COLUMNS_BRIEF_0_DTO)
-                    .id(4L)
+                    .id(COLUMN_4_1_ID)
                     .build())))
             .build();
 
@@ -8210,7 +8169,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_5)
                     .column(TABLE_5_COLUMNS.get(0))
-                    .id(5L)
+                    .id(COLUMN_5_1_ID)
                     .build())))
             .build();
 
@@ -8221,7 +8180,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_5_BRIEF_DTO)
                     .column(TABLE_5_COLUMNS_BRIEF_0_DTO)
-                    .id(5L)
+                    .id(COLUMN_5_1_ID)
                     .build())))
             .build();
 
@@ -8232,7 +8191,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_6)
                     .column(TABLE_6_COLUMNS.get(0))
-                    .id(6L)
+                    .id(COLUMN_6_1_ID)
                     .build())))
             .build();
 
@@ -8243,18 +8202,18 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_6_BRIEF_DTO)
                     .column(TABLE_6_COLUMNS_BRIEF_0_DTO)
-                    .id(6L)
+                    .id(COLUMN_6_1_ID)
                     .build())))
             .build();
 
     public static final Constraints TABLE_7_CONSTRAINTS = Constraints.builder()
             .checks(new LinkedHashSet<>())
             .foreignKeys(new LinkedList<>(List.of(ForeignKey.builder()
-                            .id(8L)
+                            .id(UUID.fromString("421c3dd8-ae09-4c72-a6ca-09de009e755f"))
                             .name("fk_name_id")
                             .onDelete(ReferenceType.NO_ACTION)
                             .references(new LinkedList<>(List.of(ForeignKeyReference.builder()
-                                    .id(2L)
+                                    .id(UUID.fromString("7c0e4a3c-88b8-4276-8924-403fd122fbf1"))
                                     .column(TABLE_6_COLUMNS.get(0))
                                     .referencedColumn(TABLE_7_COLUMNS.get(0))
                                     .foreignKey(null) // set later
@@ -8264,11 +8223,11 @@ public abstract class BaseTest {
                             .onUpdate(ReferenceType.NO_ACTION)
                             .build(),
                     ForeignKey.builder()
-                            .id(9L)
+                            .id(UUID.fromString("fce75207-6009-49ff-a646-d3e18aed787a"))
                             .name("fk_zoo_id")
                             .onDelete(ReferenceType.NO_ACTION)
                             .references(new LinkedList<>(List.of(ForeignKeyReference.builder()
-                                    .id(3L)
+                                    .id(UUID.fromString("e6cb1daa-a210-41c4-bb79-2c98ef25a02c"))
                                     .column(TABLE_5_COLUMNS.get(0))
                                     .referencedColumn(TABLE_7_COLUMNS.get(1))
                                     .foreignKey(null) // set later
@@ -8281,16 +8240,16 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_7)
                     .column(TABLE_7_COLUMNS.get(0))
-                    .id(7L)
+                    .id(COLUMN_7_1_ID)
                     .build())))
             .build();
 
     public static final ForeignKeyDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_0_DTO = ForeignKeyDto.builder()
-            .id(2L)
+            .id(UUID.fromString("561b4933-54e5-4dad-a536-39836da87fe3"))
             .name("fk_name_id")
             .onDelete(ReferenceTypeDto.NO_ACTION)
             .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder()
-                    .id(2L)
+                    .id(UUID.fromString("0f4b00c0-f2a8-4929-8619-bdc941b5dc8c"))
                     .column(TABLE_6_COLUMNS_BRIEF_0_DTO)
                     .referencedColumn(TABLE_7_COLUMNS_BRIEF_0_DTO)
                     .foreignKey(null) // set later
@@ -8301,15 +8260,15 @@ public abstract class BaseTest {
             .build();
 
     public static final ForeignKeyBriefDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_BRIEF_0_DTO = ForeignKeyBriefDto.builder()
-            .id(2L)
+            .id(UUID.fromString("a92f09c5-9bce-4f77-8f7b-a9afc1d30ec2"))
             .build();
 
     public static final ForeignKeyDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_1_DTO = ForeignKeyDto.builder()
-            .id(3L)
+            .id(UUID.fromString("f2e82566-ddc3-4b76-8d27-adc3c51780a9"))
             .name("fk_zoo_id")
             .onDelete(ReferenceTypeDto.NO_ACTION)
             .references(new LinkedList<>(List.of(ForeignKeyReferenceDto.builder()
-                    .id(3L)
+                    .id(UUID.fromString("7a393166-25d2-4b8c-a5e7-7d1b3b33b823"))
                     .column(TABLE_5_COLUMNS_BRIEF_0_DTO)
                     .referencedColumn(TABLE_7_COLUMNS_BRIEF_1_DTO)
                     .foreignKey(null) // set later
@@ -8320,7 +8279,7 @@ public abstract class BaseTest {
             .build();
 
     public static final ForeignKeyBriefDto TABLE_7_CONSTRAINTS_FOREIGN_KEY_BRIEF_1_DTO = ForeignKeyBriefDto.builder()
-            .id(3L)
+            .id(UUID.fromString("6ce1f707-0bdf-4930-be77-157801d2735a"))
             .build();
 
     public static final ConstraintsDto TABLE_7_CONSTRAINTS_DTO = ConstraintsDto.builder()
@@ -8331,7 +8290,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_7_BRIEF_DTO)
                     .column(TABLE_7_COLUMNS_BRIEF_0_DTO)
-                    .id(7L)
+                    .id(UUID.fromString("9969e13f-2a2f-45c7-bccf-a7df0ac813a8"))
                     .build())))
             .build();
 
@@ -8342,7 +8301,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedList<>(List.of(PrimaryKey.builder()
                     .table(TABLE_8)
                     .column(TABLE_8_COLUMNS.get(0))
-                    .id(8L)
+                    .id(UUID.fromString("cd23b601-966c-4aa7-9722-6bcb009200cc"))
                     .build())))
             .build();
 
@@ -8353,7 +8312,7 @@ public abstract class BaseTest {
             .primaryKey(new LinkedHashSet<>(Set.of(PrimaryKeyDto.builder()
                     .table(TABLE_8_BRIEF_DTO)
                     .column(TABLE_8_COLUMNS_BRIEF_0_DTO)
-                    .id(8L)
+                    .id(UUID.fromString("c61196d1-a902-405c-a825-0781c0c94df1"))
                     .build())))
             .build();
 
@@ -8362,25 +8321,4 @@ public abstract class BaseTest {
             .resource(new InputStreamResource(InputStream.nullInputStream()))
             .build();
 
-    public static void saveObservedMetrics(Map<String, String> observedMetrics) throws IOException {
-        final int keySize = observedMetrics.keySet().stream().max(Comparator.comparingInt(String::length)).get().length();
-        final int valueSize = observedMetrics.values().stream().max(Comparator.comparingInt(String::length)).get().length();
-        final StringBuilder content = new StringBuilder("| ")
-                .append(StringUtils.rightPad("**Metric**", Integer.max(keySize + 2, 16)))
-                .append(" | ")
-                .append(StringUtils.rightPad("**Description**", Integer.max(valueSize, 19)))
-                .append(" |\n")
-                .append("|-")
-                .append(StringUtils.leftPad("", Integer.max(keySize + 2, 16), "-"))
-                .append("-|-")
-                .append(StringUtils.leftPad("", Integer.max(valueSize, 19), "-"))
-                .append("-|\n");
-        observedMetrics.forEach((key, value) -> content.append("| ")
-                .append(StringUtils.rightPad("`" + key + "`", Integer.max(keySize + 2, 16)))
-                .append(" | ")
-                .append(StringUtils.rightPad(value, Integer.max(valueSize, 19)))
-                .append(" |\n"));
-        FileUtils.writeStringToFile(new File("../metrics.md"), content.toString(), Charset.defaultCharset());
-    }
-
 }
diff --git a/dbrepo-search-service/.coveragerc b/dbrepo-search-service/.coveragerc
index 4683a93d3748d16ab20a61f318e3016d3f4a8e09..a387be84259ecf1c8b1387a407e3cfc528960a30 100644
--- a/dbrepo-search-service/.coveragerc
+++ b/dbrepo-search-service/.coveragerc
@@ -1,5 +1,9 @@
 [report]
 omit =
-    */test/*
-    */omlib/*
-    */init/*
\ No newline at end of file
+    # omit tests
+    ./tests/*
+    # omit ext lib
+    ./omlib/*
+
+[html]
+directory = htmlcov
diff --git a/dbrepo-search-service/Pipfile b/dbrepo-search-service/Pipfile
index 536a5f3a9172dfa50a38671ff50a7d06b9e4a8b2..6284708cc1d7f99f10843ad47c05b35a25916bf4 100644
--- a/dbrepo-search-service/Pipfile
+++ b/dbrepo-search-service/Pipfile
@@ -18,7 +18,7 @@ jwt = "~=1.3"
 testcontainers-opensearch = "*"
 pytest = "*"
 rdflib = "*"
-dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"}
+dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"}
 gunicorn = "*"
 
 [dev-packages]
diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock
index ee4559cd98d5de000c481dde00e5176390b61fc9..4dd148a5e49ea67bed885631abe6a387c133682b 100644
--- a/dbrepo-search-service/Pipfile.lock
+++ b/dbrepo-search-service/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "2f5a0ee9d98b5e49a8d4957fb07a5231178b3fe8cc2016850c9b42c67780004d"
+            "sha256": "30aa6fefdbdbb9f57d58ebc8660eee64445a831cea44c6ca1fa605f2a2e1adc3"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -369,9 +369,9 @@
         },
         "dbrepo": {
             "hashes": [
-                "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00"
+                "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9"
             ],
-            "path": "./lib/dbrepo-1.6.5.tar.gz"
+            "path": "./lib/dbrepo-1.7.0.tar.gz"
         },
         "docker": {
             "hashes": [
@@ -748,11 +748,11 @@
         },
         "mistune": {
             "hashes": [
-                "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a",
-                "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c"
+                "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319",
+                "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==3.1.1"
+            "version": "==3.1.2"
         },
         "multidict": {
             "hashes": [
diff --git a/dbrepo-search-service/app.py b/dbrepo-search-service/app.py
index 13a9be870405ad27463cb5e21681f76dd82947aa..8e265465326bea0a61a9772c93b22143243921a3 100644
--- a/dbrepo-search-service/app.py
+++ b/dbrepo-search-service/app.py
@@ -5,6 +5,8 @@ from json import dumps
 from typing import List, Any
 
 import requests
+from clients.keycloak_client import User, KeycloakClient
+from clients.opensearch_client import OpenSearchClient, flatten
 from dbrepo.api.dto import Database, ApiError
 from flasgger import LazyJSONEncoder, Swagger, swag_from
 from flask import Flask, request, Response
@@ -16,9 +18,6 @@ from prometheus_flask_exporter import PrometheusMetrics
 from pydantic import ValidationError
 from pydantic.deprecated.json import pydantic_encoder
 
-from clients.keycloak_client import User, KeycloakClient
-from clients.opensearch_client import OpenSearchClient, flatten
-
 logging.addLevelName(level=logging.NOTSET, levelName='TRACE')
 logging.basicConfig(level=logging.DEBUG)
 
@@ -412,11 +411,11 @@ def post_general_search(field_type):
     return Response(dumps(response, default=pydantic_encoder)), 200, {'Content-Type': 'application/json'}
 
 
-@app.route("/api/search/database/<int:database_id>", methods=["PUT"], endpoint="search_put_database")
+@app.route("/api/search/database/<string:database_id>", methods=["PUT"], endpoint="search_put_database")
 @metrics.gauge(name='dbrepo_search_update_database',
                description='Time needed to update a database in the search database')
 @auth.login_required(role=['update-search-index'])
-def update_database(database_id: int):
+def update_database(database_id: str):
     logging.debug(f"updating database with id: {database_id}")
     try:
         payload: Database = Database.model_validate(request.json)
@@ -429,11 +428,11 @@ def update_database(database_id: int):
     return database.model_dump(), 202
 
 
-@app.route("/api/search/database/<int:database_id>", methods=["DELETE"], endpoint="database_delete_database")
+@app.route("/api/search/database/<string:database_id>", methods=["DELETE"], endpoint="database_delete_database")
 @metrics.gauge(name='dbrepo_search_delete_database',
                description='Time needed to delete a database in the search database')
 @auth.login_required(role=['admin'])
-def delete_database(database_id: int):
+def delete_database(database_id: str):
     try:
         OpenSearchClient().delete_database(database_id)
         return Response(dumps({})), 202
diff --git a/dbrepo-search-service/init/.coveragerc b/dbrepo-search-service/init/.coveragerc
index b5a0e606be380a3149f066712428e43c82af2bd8..a387be84259ecf1c8b1387a407e3cfc528960a30 100644
--- a/dbrepo-search-service/init/.coveragerc
+++ b/dbrepo-search-service/init/.coveragerc
@@ -1,5 +1,9 @@
 [report]
-
 omit =
     # omit tests
-    ./test/*
\ No newline at end of file
+    ./tests/*
+    # omit ext lib
+    ./omlib/*
+
+[html]
+directory = htmlcov
diff --git a/dbrepo-search-service/init/Pipfile b/dbrepo-search-service/init/Pipfile
index b9a274061348045bc48b80501425bcef8c907721..fb1215f57667a4a54c344b54b047ebb4b00e8ad9 100644
--- a/dbrepo-search-service/init/Pipfile
+++ b/dbrepo-search-service/init/Pipfile
@@ -9,7 +9,7 @@ opensearch-py = "~=2.2"
 python-dotenv = "~=1.0"
 testcontainers-opensearch = "*"
 pytest = "*"
-dbrepo = {path = "./lib/dbrepo-1.6.5.tar.gz"}
+dbrepo = {path = "./lib/dbrepo-1.7.0.tar.gz"}
 rdflib = "*"
 
 [dev-packages]
diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock
index 5fa254a95c9d93d6bece70f256d29c91983bd25e..11510c1f53745a2c4bd2e01476fdef323f4423b8 100644
--- a/dbrepo-search-service/init/Pipfile.lock
+++ b/dbrepo-search-service/init/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "ff7c99ed5a6bbe231e029a957724c779f019be7456f43ef9cc08df576991d7c3"
+            "sha256": "f2b08da6e7efe0ce8db0dd5a4a7d2ba9b2992b391f191cf60db744d0e353f614"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -259,9 +259,9 @@
         },
         "dbrepo": {
             "hashes": [
-                "sha256:e2312f0d3cff34934578a16b01d646d8309e3a3d1bb4cbda9f984acf97824e00"
+                "sha256:779e7ee84ae91131e16100fee7143013b4c231dcd3990d418d024ff76af271e9"
             ],
-            "path": "./lib/dbrepo-1.6.5.tar.gz"
+            "path": "./lib/dbrepo-1.7.0.tar.gz"
         },
         "docker": {
             "hashes": [
diff --git a/dbrepo-search-service/init/clients/opensearch_client.py b/dbrepo-search-service/init/clients/opensearch_client.py
index 35c26f03f5f684adc2652c199db7f99afd6cfc13..deca261ce273563bb84aa19e7525440f4d64bdeb 100644
--- a/dbrepo-search-service/init/clients/opensearch_client.py
+++ b/dbrepo-search-service/init/clients/opensearch_client.py
@@ -51,7 +51,7 @@ class OpenSearchClient:
                                        http_auth=(self.username, self.password))
         return self.instance
 
-    def update_database(self, database_id: int, data: Database) -> Database:
+    def update_database(self, database_id: str, data: Database) -> Database:
         """
         Updates the database data with given id.
 
@@ -66,7 +66,7 @@ class OpenSearchClient:
         response: dict = self._instance().get(index="database", id=database_id)
         return Database.model_validate(response["_source"])
 
-    def delete_database(self, database_id: int) -> None:
+    def delete_database(self, database_id: str) -> None:
         """
         Deletes the database data with given id.
 
diff --git a/dbrepo-search-service/init/database.json b/dbrepo-search-service/init/database.json
index 59cbd78438a5fff391d1237c70a0384d7b397a83..175a50dd9b829d0ce855a5c9eceae694937009cc 100644
--- a/dbrepo-search-service/init/database.json
+++ b/dbrepo-search-service/init/database.json
@@ -131,7 +131,13 @@
             }
           },
           "id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "image": {
             "properties": {
@@ -154,9 +160,6 @@
                 }
               },
               "id": {
-                "type": "long"
-              },
-              "jdbc_method": {
                 "type": "text",
                 "fields": {
                   "keyword": {
@@ -215,18 +218,6 @@
           "port": {
             "type": "long"
           },
-          "sidecar_host": {
-            "type": "text",
-            "fields": {
-              "keyword": {
-                "type": "keyword",
-                "ignore_above": 256
-              }
-            }
-          },
-          "sidecar_port": {
-            "type": "long"
-          },
           "ui_host": {
             "type": "text",
             "fields": {
@@ -303,7 +294,13 @@
         }
       },
       "id": {
-        "type": "long"
+        "type": "text",
+        "fields": {
+          "keyword": {
+            "type": "keyword",
+            "ignore_above": 256
+          }
+        }
       },
       "identifiers": {
         "properties": {
@@ -371,7 +368,13 @@
                 }
               },
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "name_identifier": {
                 "type": "text",
@@ -412,7 +415,13 @@
             }
           },
           "database_id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "descriptions": {
             "properties": {
@@ -426,12 +435,24 @@
                 }
               },
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               }
             }
           },
           "id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "licenses": {
             "properties": {
@@ -512,7 +533,13 @@
           "titles": {
             "properties": {
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "title": {
                 "type": "text",
@@ -535,7 +562,13 @@
             }
           },
           "view_id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           }
         }
       },
@@ -592,10 +625,22 @@
                 "type": "long"
               },
               "database_id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "internal_name": {
                 "type": "text",
@@ -634,7 +679,13 @@
                 "type": "float"
               },
               "table_id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               }
             }
           },
@@ -645,26 +696,62 @@
                   "column": {
                     "properties": {
                       "database_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "table_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       }
                     }
                   },
                   "id": {
-                    "type": "long"
+                    "type": "text",
+                    "fields": {
+                      "keyword": {
+                        "type": "keyword",
+                        "ignore_above": 256
+                      }
+                    }
                   },
                   "table": {
                     "properties": {
                       "database_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       }
                     }
                   }
@@ -675,26 +762,62 @@
                   "columns": {
                     "properties": {
                       "database_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "table_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       }
                     }
                   },
                   "id": {
-                    "type": "long"
+                    "type": "text",
+                    "fields": {
+                      "keyword": {
+                        "type": "keyword",
+                        "ignore_above": 256
+                      }
+                    }
                   },
                   "table": {
                     "properties": {
                       "database_id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       },
                       "id": {
-                        "type": "long"
+                        "type": "text",
+                        "fields": {
+                          "keyword": {
+                            "type": "keyword",
+                            "ignore_above": 256
+                          }
+                        }
                       }
                     }
                   }
@@ -758,7 +881,13 @@
             "type": "long"
           },
           "database_id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "description": {
             "type": "text",
@@ -770,7 +899,13 @@
             }
           },
           "id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "internal_name": {
             "type": "text",
@@ -839,10 +974,22 @@
                 }
               },
               "database_id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "internal_name": {
                 "type": "text",
@@ -926,10 +1073,22 @@
             }
           },
           "database_id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "id": {
-            "type": "long"
+            "type": "text",
+            "fields": {
+              "keyword": {
+                "type": "keyword",
+                "ignore_above": 256
+              }
+            }
           },
           "identifiers": {
             "properties": {
@@ -997,7 +1156,13 @@
                     }
                   },
                   "id": {
-                    "type": "long"
+                    "type": "text",
+                    "fields": {
+                      "keyword": {
+                        "type": "keyword",
+                        "ignore_above": 256
+                      }
+                    }
                   },
                   "name_identifier": {
                     "type": "text",
@@ -1038,7 +1203,13 @@
                 }
               },
               "database_id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "descriptions": {
                 "properties": {
@@ -1052,12 +1223,24 @@
                     }
                   },
                   "id": {
-                    "type": "long"
+                    "type": "text",
+                    "fields": {
+                      "keyword": {
+                        "type": "keyword",
+                        "ignore_above": 256
+                      }
+                    }
                   }
                 }
               },
               "id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               },
               "licenses": {
                 "properties": {
@@ -1138,7 +1321,13 @@
               "titles": {
                 "properties": {
                   "id": {
-                    "type": "long"
+                    "type": "text",
+                    "fields": {
+                      "keyword": {
+                        "type": "keyword",
+                        "ignore_above": 256
+                      }
+                    }
                   },
                   "title": {
                     "type": "text",
@@ -1161,7 +1350,13 @@
                 }
               },
               "view_id": {
-                "type": "long"
+                "type": "text",
+                "fields": {
+                  "keyword": {
+                    "type": "keyword",
+                    "ignore_above": 256
+                  }
+                }
               }
             }
           },
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl
deleted file mode 100644
index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz
deleted file mode 100644
index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5.tar.gz and /dev/null differ
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl
deleted file mode 100644
index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz
deleted file mode 100644
index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/init/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7
Binary files /dev/null and b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl differ
diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323
Binary files /dev/null and b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz differ
diff --git a/dbrepo-search-service/init/tests/test_opensearch_client.py b/dbrepo-search-service/init/tests/test_opensearch_client.py
index 70328df6387dd9d6743804bb3c240637a35d6f40..fe65fd060a363d5ecebf98fa006db78b6f30c555 100644
--- a/dbrepo-search-service/init/tests/test_opensearch_client.py
+++ b/dbrepo-search-service/init/tests/test_opensearch_client.py
@@ -1,14 +1,14 @@
+import os
 import unittest
 
 import opensearchpy
-import os
 from dbrepo.api.dto import Database, Table, Column, ColumnType, Constraints, PrimaryKey, \
     ConceptBrief, UnitBrief, UserBrief, ContainerBrief, ImageBrief, TableBrief, ColumnBrief
 from opensearchpy import NotFoundError
 
 from clients.opensearch_client import OpenSearchClient
 
-req = Database(id=1,
+req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
                name="Test",
                internal_name="test_tuw1",
                owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
@@ -16,16 +16,15 @@ req = Database(id=1,
                exchange_name="dbrepo",
                is_public=True,
                is_schema_public=True,
-               container=ContainerBrief(id=1,
+               container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5",
                                         name="MariaDB",
                                         internal_name="mariadb",
-                                        host="data-db",
-                                        image=ImageBrief(id=1,
+                                        image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549",
                                                          name="mariadb",
                                                          version="11.1.3",
                                                          jdbc_method="mariadb")),
-               tables=[Table(id=1,
-                             database_id=1,
+               tables=[Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
+                             database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
                              name="Data",
                              internal_name="data",
                              owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
@@ -35,9 +34,9 @@ req = Database(id=1,
                              routing_key="dbrepo.1.1",
                              is_public=True,
                              is_schema_public=True,
-                             columns=[Column(id=1,
-                                             database_id=1,
-                                             table_id=1,
+                             columns=[Column(id="7bef7e68-88f1-438e-9b94-0a77afd21471",
+                                             database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
+                                             table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
                                              name="ID",
                                              ord=0,
                                              internal_name="id",
@@ -45,8 +44,9 @@ req = Database(id=1,
                                              is_null_allowed=False,
                                              size=20,
                                              d=0,
-                                             concept=ConceptBrief(id=1, uri="http://www.wikidata.org/entity/Q2221906"),
-                                             unit=UnitBrief(id=1,
+                                             concept=ConceptBrief(id="fb32ecf6-1f68-49b4-85ee-04e76263cbef",
+                                                                  uri="http://www.wikidata.org/entity/Q2221906"),
+                                             unit=UnitBrief(id="a67d735e-32ef-4917-b412-fe099c6757a1",
                                                             uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"),
                                              val_min=0,
                                              val_max=10)]
@@ -56,7 +56,7 @@ req = Database(id=1,
 class OpenSearchClientTest(unittest.TestCase):
 
     def test_update_database_succeeds(self):
-        req.tables = [Table(id=1,
+        req.tables = [Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
                             name="Test Table",
                             internal_name="test_table",
                             queue_name="dbrepo",
@@ -64,27 +64,31 @@ class OpenSearchClientTest(unittest.TestCase):
                             is_public=True,
                             is_schema_public=True,
                             database_id=req.id,
-                            constraints=Constraints(uniques=[], foreign_keys=[], checks=[],
-                                                    primary_key=[PrimaryKey(id=1,
-                                                                            table=TableBrief(id=1,
-                                                                                             database_id=req.id,
-                                                                                             name="Test Table",
-                                                                                             internal_name="test_table",
-                                                                                             is_public=True,
-                                                                                             is_schema_public=True,
-                                                                                             is_versioned=True,
-                                                                                             owned_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502"),
-                                                                            column=ColumnBrief(id=1,
-                                                                                               name="ID",
-                                                                                               database_id=req.id,
-                                                                                               table_id=1,
-                                                                                               internal_name="id",
-                                                                                               type=ColumnType.BIGINT))]),
+                            constraints=Constraints(uniques=[],
+                                                    foreign_keys=[],
+                                                    checks=[],
+                                                    primary_key=[PrimaryKey(id="f0d4dfdf-d987-4c73-aa40-1038db79bb31",
+                                                                            table=TableBrief(
+                                                                                id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
+                                                                                database_id=req.id,
+                                                                                name="Test Table",
+                                                                                internal_name="test_table",
+                                                                                is_public=True,
+                                                                                is_schema_public=True,
+                                                                                is_versioned=True,
+                                                                                owned_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502"),
+                                                                            column=ColumnBrief(
+                                                                                id="90d81c6a-e69a-4413-97b8-fd2266a6e641",
+                                                                                name="ID",
+                                                                                database_id=req.id,
+                                                                                table_id="90d81c6a-e69a-4413-97b8-fd2266a6e641",
+                                                                                internal_name="id",
+                                                                                type=ColumnType.BIGINT))]),
                             is_versioned=True,
                             owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
-                            columns=[Column(id=1,
+                            columns=[Column(id="c63bde4a-61e4-42f1-ab64-350579c0691f",
                                             database_id=req.id,
-                                            table_id=1,
+                                            table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
                                             ord=0,
                                             name="ID",
                                             internal_name="id",
@@ -95,7 +99,7 @@ class OpenSearchClientTest(unittest.TestCase):
 
         # test
         database = OpenSearchClient().update_database(database_id=req.id, data=req)
-        self.assertEqual(1, database.id)
+        self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.id)
         self.assertEqual("Test", database.name)
         self.assertEqual("test_tuw1", database.internal_name)
         self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id)
@@ -104,34 +108,34 @@ class OpenSearchClientTest(unittest.TestCase):
         self.assertEqual("foo", database.contact.username)
         self.assertEqual("dbrepo", database.exchange_name)
         self.assertEqual(True, database.is_public)
-        self.assertEqual(1, database.container.id)
+        self.assertEqual("7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", database.container.id)
         # ...
-        self.assertEqual(1, database.container.image.id)
+        self.assertEqual("f97791b4-baf4-4b18-8f7d-3084818e6549", database.container.image.id)
         # ...
         self.assertEqual(1, len(database.tables))
-        self.assertEqual(1, database.tables[0].id)
+        self.assertEqual("f94a6164-cad4-4873-a9fd-3fe5313b2e95", database.tables[0].id)
         self.assertEqual("Test Table", database.tables[0].name)
         self.assertEqual("test_table", database.tables[0].internal_name)
         self.assertEqual("dbrepo", database.tables[0].queue_name)
         self.assertEqual("dbrepo.test_tuw1.test_table", database.tables[0].routing_key)
         self.assertEqual(True, database.tables[0].is_public)
-        self.assertEqual(1, database.tables[0].database_id)
+        self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.tables[0].database_id)
         self.assertEqual(True, database.tables[0].is_versioned)
         self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id)
         self.assertEqual("foo", database.tables[0].owner.username)
         self.assertEqual(1, len(database.tables[0].columns))
-        self.assertEqual(1, database.tables[0].columns[0].id)
+        self.assertEqual("c63bde4a-61e4-42f1-ab64-350579c0691f", database.tables[0].columns[0].id)
         self.assertEqual("ID", database.tables[0].columns[0].name)
         self.assertEqual("id", database.tables[0].columns[0].internal_name)
         self.assertEqual(ColumnType.BIGINT, database.tables[0].columns[0].type)
-        self.assertEqual(1, database.tables[0].columns[0].database_id)
-        self.assertEqual(1, database.tables[0].columns[0].table_id)
+        self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.tables[0].columns[0].database_id)
+        self.assertEqual("f94a6164-cad4-4873-a9fd-3fe5313b2e95", database.tables[0].columns[0].table_id)
         self.assertEqual(False, database.tables[0].columns[0].is_null_allowed)
 
     def test_update_database_create_succeeds(self):
         # test
         database = OpenSearchClient().update_database(database_id=req.id, data=req)
-        self.assertEqual(1, database.id)
+        self.assertEqual("209acf92-5c9b-4633-ad99-113c86f6e948", database.id)
         self.assertEqual("Test", database.name)
         self.assertEqual("test_tuw1", database.internal_name)
         self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id)
@@ -140,9 +144,9 @@ class OpenSearchClientTest(unittest.TestCase):
         self.assertEqual("foo", database.contact.username)
         self.assertEqual("dbrepo", database.exchange_name)
         self.assertEqual(True, database.is_public)
-        self.assertEqual(1, database.container.id)
+        self.assertEqual("7efe8b27-6cdc-4387-80e3-92ee28f4a7c5", database.container.id)
         # ...
-        self.assertEqual(1, database.container.image.id)
+        self.assertEqual("f97791b4-baf4-4b18-8f7d-3084818e6549", database.container.image.id)
         # ...
         self.assertEqual(1, len(database.tables))
 
diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl
deleted file mode 100644
index 2a5cda78c55f725af708e7ff1d7f4b281586613d..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz
deleted file mode 100644
index 5117abc68daa9a4e776392855c6022c8d20d5d31..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5.tar.gz and /dev/null differ
diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl
deleted file mode 100644
index b4ceb85027aa4164b602f876080c0f8979534b0e..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5rc0-py3-none-any.whl and /dev/null differ
diff --git a/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz
deleted file mode 100644
index e8de842c2945231eb547737851eb6269ee5ba84e..0000000000000000000000000000000000000000
Binary files a/dbrepo-search-service/lib/dbrepo-1.6.5rc0.tar.gz and /dev/null differ
diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..f75ec9ba7a7a4ad6c2897e38abdae20c815f56c7
Binary files /dev/null and b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl differ
diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..be1dcfe68165001dbeacd670709955723a01e323
Binary files /dev/null and b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz differ
diff --git a/dbrepo-search-service/tests/test_app.py b/dbrepo-search-service/tests/test_app.py
index 2b765b77544239bc0f6f3352ced6b07625ab291b..f05171299ef5fe202ee71ce5b5b347364a4eeed8 100644
--- a/dbrepo-search-service/tests/test_app.py
+++ b/dbrepo-search-service/tests/test_app.py
@@ -8,7 +8,7 @@ from dbrepo.api.dto import Database, Table, Constraints, Column, ColumnType, Con
 
 from app import app
 
-req = Database(id=1,
+req = Database(id="209acf92-5c9b-4633-ad99-113c86f6e948",
                name="Test",
                internal_name="test_tuw1",
                owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
@@ -16,15 +16,17 @@ req = Database(id=1,
                exchange_name="dbrepo",
                is_public=True,
                is_schema_public=True,
-               container=ContainerBrief(id=1,
+               container=ContainerBrief(id="7efe8b27-6cdc-4387-80e3-92ee28f4a7c5",
                                         name="MariaDB",
                                         internal_name="mariadb",
-                                        host="data-db",
-                                        image=ImageBrief(id=1,
+                                        image=ImageBrief(id="f97791b4-baf4-4b18-8f7d-3084818e6549",
                                                          name="mariadb",
                                                          version="11.1.3",
                                                          jdbc_method="mariadb")),
-               tables=[Table(id=1, database_id=1, name="Data", internal_name="data",
+               tables=[Table(id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
+                             database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
+                             name="Data",
+                             internal_name="data",
                              owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"),
                              constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[]),
                              is_versioned=False,
@@ -32,20 +34,19 @@ req = Database(id=1,
                              routing_key="dbrepo.1.1",
                              is_public=True,
                              is_schema_public=True,
-                             columns=[Column(id=1,
-                                             database_id=1,
-                                             table_id=1,
-                                             ord=0,
+                             columns=[Column(id="7bef7e68-88f1-438e-9b94-0a77afd21471",
+                                             database_id="209acf92-5c9b-4633-ad99-113c86f6e948",
+                                             table_id="f94a6164-cad4-4873-a9fd-3fe5313b2e95",
                                              name="ID",
+                                             ord=0,
                                              internal_name="id",
                                              type=ColumnType.BIGINT,
-                                             is_public=True,
                                              is_null_allowed=False,
                                              size=20,
                                              d=0,
-                                             concept=ConceptBrief(id=1,
+                                             concept=ConceptBrief(id="fb32ecf6-1f68-49b4-85ee-04e76263cbef",
                                                                   uri="http://www.wikidata.org/entity/Q2221906"),
-                                             unit=UnitBrief(id=1,
+                                             unit=UnitBrief(id="a67d735e-32ef-4917-b412-fe099c6757a1",
                                                             uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"),
                                              val_min=0,
                                              val_max=10)]
diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue
index 07fd9d34ea218a91bb6ffb634d210bd5493ad830..177e640aa966f74060a8645297194c6d48d7dd7a 100644
--- a/dbrepo-ui/components/database/DatabaseCreate.vue
+++ b/dbrepo-ui/components/database/DatabaseCreate.vue
@@ -46,7 +46,7 @@
                 return-object
                 required>
                 <template
-                  v-if="engine"
+                  v-if="engine && engine.quota"
                   v-slot:details>
                   {{ $t('pages.database.subpages.create.utilization.label') }} {{ engine.count }}/{{ engine.quota }}
                 </template>
@@ -139,7 +139,7 @@ export default {
       this.loadingContainers = true
       containerService.findAll()
         .then((containers) => {
-          const freeContainers = containers.filter(c => c.count < c.quota)
+          const freeContainers = containers.filter(c => c.quota === null || c.count < c.quota)
           const defaultContainers = freeContainers.filter(c => c.image.default)
           defaultContainers.sort(this.compareContainerUtilization)
           this.engines = defaultContainers
diff --git a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue
index 4940e75d66b28254449ce3ddf834dfa9fce83c7f..d391ac153a290256db7f287d75d71c346379ce68 100644
--- a/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue
+++ b/dbrepo-ui/components/dialogs/EditMaintenanceMessage.vue
@@ -89,7 +89,7 @@ import { useCacheStore } from '@/stores/cache.js'
 export default {
   props: {
     id: {
-      type: Number,
+      type: String,
       default () {
         return null
       }
diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue
index e68a4fa55d245cbcb6ad052a8952ad96a9de5e53..5c028cbcb68c6390234127e568096bf3ab1d70b6 100644
--- a/dbrepo-ui/components/dialogs/Semantics.vue
+++ b/dbrepo-ui/components/dialogs/Semantics.vue
@@ -55,6 +55,7 @@
           v-if="recommendations.length === 0">
           <v-col>
             <v-btn
+              v-if="finishedRecommendations"
               color="secondary"
               variant="flat"
               size="small"
@@ -147,8 +148,8 @@ export default {
       default: () => null
     },
     tableId: {
-      type: Number,
-      default: () => -1
+      type: String,
+      default: () => null
     },
     mode: {
       type: String,
@@ -165,6 +166,7 @@ export default {
       uri: null,
       valid: false,
       loading: false,
+      finishedRecommendations: false,
       loadingOntologies: false,
       loadingSemantics: false,
       cacheStore: useCacheStore()
@@ -172,7 +174,7 @@ export default {
   },
   computed: {
     title () {
-      return this.$t('pages.table.subpages.semantics.title') + ' ' +  this.column.internal_name
+      return this.$t('pages.table.subpages.semantics.title', { type: this.mode }) + ' ' +  this.column.internal_name
     },
     ontologies () {
       return this.cacheStore.getOntologies.filter(o => o.sparql || o.rdf)
@@ -243,6 +245,13 @@ export default {
             action: 'assign'
           })
         })
+        .catch(({code, message}) => {
+          const toast = useToastInstance()
+          if (typeof code !== 'string') {
+            return
+          }
+          toast.error(message)
+        })
         .finally(() => {
           this.recommendation = null
           this.$refs.form.reset()
@@ -255,10 +264,14 @@ export default {
       tableService.suggest(this.database.id, this.tableId, this.column.id)
         .then((recommendations) => {
           this.recommendations = recommendations
+          this.finishedRecommendations = true
         })
-        .catch((error) => {
+        .catch(({code, message}) => {
           const toast = useToastInstance()
-          toast.error(this.$t('error.semantics.timeout'))
+          if (typeof code !== 'string') {
+            return
+          }
+          toast.error(message)
         })
         .finally(() => {
           this.loadingSemantics = false
diff --git a/dbrepo-ui/components/dialogs/ViewVisibility.vue b/dbrepo-ui/components/dialogs/ViewVisibility.vue
index 6a37bf415348ac9b2fe1c705bd40e762596db26c..7ccdb12df6658de6e6216d632b7fc15619a4a2c6 100644
--- a/dbrepo-ui/components/dialogs/ViewVisibility.vue
+++ b/dbrepo-ui/components/dialogs/ViewVisibility.vue
@@ -11,7 +11,7 @@
           <v-row
             dense>
             <v-col
-              md="6">
+              lg="6">
               <v-select
                 v-model="modify.is_public"
                 :items="dataOptions"
@@ -25,7 +25,7 @@
                 :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" />
             </v-col>
             <v-col
-              md="6">
+              lg="6">
               <v-select
                 v-model="modify.is_schema_public"
                 :items="schemaOptions"
diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue
index 9ee434c943da8c011e0bfece1c88c06b525845a9..a52cd87159b23f4cad7d64ae5dd4fe177a489b65 100644
--- a/dbrepo-ui/components/identifier/Citation.vue
+++ b/dbrepo-ui/components/identifier/Citation.vue
@@ -3,12 +3,12 @@
     no-gutters>
     <v-col
       v-if="!loading"
-      md="10">
+      lg="10">
       {{ citation }}
     </v-col>
     <v-col
       v-if="!$vuetify.display.mdAndDown"
-      md="2"
+      lg="2"
       class="cite-style">
       <v-select
         v-model="style"
diff --git a/dbrepo-ui/components/identifier/DownloadButton.vue b/dbrepo-ui/components/identifier/DownloadButton.vue
index 85b58dc818b49d2dfb43fe15bd229084122990dd..3f9fdd10d90ae2663fcbced834b82d2a0d471bd6 100644
--- a/dbrepo-ui/components/identifier/DownloadButton.vue
+++ b/dbrepo-ui/components/identifier/DownloadButton.vue
@@ -11,7 +11,7 @@
 export default {
   props: {
     pid: {
-      type: Number,
+      type: String,
       default () {
         return null
       }
diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue
index f37c5c6d7d9893562d94393fe6aa19ab3b448d79..89b1ca9d8ac35e21f4de9aa82a418f73bc96375d 100644
--- a/dbrepo-ui/components/identifier/Persist.vue
+++ b/dbrepo-ui/components/identifier/Persist.vue
@@ -867,10 +867,10 @@ export default {
       error: false, // XXX: `error` is never changed
       licenses: [],
       identifier: {
-        database_id: parseInt(this.$route.params.database_id),
-        query_id: parseInt(this.$route.params.subset_id),
-        view_id: parseInt(this.$route.params.view_id),
-        table_id: parseInt(this.$route.params.table_id),
+        database_id: this.$route.params.database_id,
+        query_id: this.$route.params.subset_id,
+        view_id: this.$route.params.view_id,
+        table_id: this.$route.params.table_id,
         titles: [],
         descriptions: [],
         publisher: this.$config.public.pid.default.publisher,
diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue
index f670700f2f23aa2a08a6ecf8004fecfb899c6c00..e66f72e362a845c4aff83c67eada608a46d52023 100644
--- a/dbrepo-ui/components/subset/Builder.vue
+++ b/dbrepo-ui/components/subset/Builder.vue
@@ -42,7 +42,8 @@
             v-if="isView"
             class="mt-1"
             dense>
-            <v-col lg="8">
+            <v-col
+              lg="8">
               <v-text-field
                 v-model="view.name"
                 :disabled="isExecuted"
@@ -63,7 +64,7 @@
             v-if="isView"
             dense>
             <v-col
-              md="4">
+              lg="4">
               <v-select
                 v-model="view.is_public"
                 :items="dataOptions"
@@ -78,7 +79,7 @@
                 :hint="$t('pages.database.resource.data.hint')" />
             </v-col>
             <v-col
-              md="4">
+              lg="4">
               <v-select
                 v-model="view.is_schema_public"
                 :items="schemaOptions"
@@ -99,7 +100,8 @@
             <v-window-item
               value="0">
               <v-row dense>
-                <v-col lg="4">
+                <v-col
+                  lg="4">
                   <v-select
                     v-model="table"
                     :disabled="isExecuted"
@@ -113,7 +115,8 @@
                     :hint="$t('pages.view.subpages.create.table.hint')"
                     :rules="[v => !!v || $t('validation.required')]" />
                 </v-col>
-                <v-col lg="4">
+                <v-col
+                  lg="4">
                   <v-select
                     v-model="select"
                     item-title="internal_name"
@@ -147,8 +150,10 @@
                   </v-select>
                 </v-col>
               </v-row>
-              <v-row v-if="select.length > 0">
-                <v-col lg="8">
+              <v-row
+                v-if="select.length > 0">
+                <v-col
+                  lg="8">
                   <v-btn
                     v-if="clauses.length === 0"
                     size="small"
@@ -160,7 +165,8 @@
                 </v-col>
               </v-row>
               <div class="mb-5">
-                <v-row v-if="clauses.length > 0">
+                <v-row
+                  v-if="clauses.length > 0">
                   <v-col
                     lg="8"
                     class="text-center">
@@ -170,7 +176,8 @@
                 <div v-for="(clause, idx) in clauses" :key="idx">
                   <v-row
                     v-if="clause.type === 'where'">
-                    <v-col lg="3">
+                    <v-col
+                      lg="3">
                       <v-select
                         v-model="clause.params[0]"
                         :disabled="clausesDisabled"
@@ -182,7 +189,8 @@
                         :hint="$t('pages.subset.subpages.create.filter.column.hint')"
                         :items="select" />
                     </v-col>
-                    <v-col lg="2">
+                    <v-col
+                      lg="2">
                       <v-select
                         v-model="clause.params[1]"
                         :disabled="clausesDisabled"
@@ -211,7 +219,8 @@
                         </template>
                       </v-select>
                     </v-col>
-                    <v-col lg="3">
+                    <v-col
+                      lg="3">
                       <v-text-field
                         v-model="clause.params[2]"
                         :disabled="clausesDisabled"
@@ -219,7 +228,8 @@
                         :label="$t('pages.subset.subpages.create.filter.value.label')"
                         :hint="$t('pages.subset.subpages.create.filter.value.hint')" />
                     </v-col>
-                    <v-col lg="1">
+                    <v-col
+                      lg="1">
                       <v-btn
                         :disabled="clausesDisabled"
                         class="mt-4"
@@ -469,6 +479,7 @@ export default {
   },
   mounted () {
     this.selectTable()
+    this.initViewVisibility()
   },
   methods: {
     fetchTableColumns (tableId) {
@@ -488,6 +499,13 @@ export default {
           toast.error(this.$t(code))
         })
     },
+    initViewVisibility () {
+      if (!this.database) {
+        return
+      }
+      this.view.is_public = this.database.is_public
+      this.view.is_schema_public = this.database.is_schema_public
+    },
     validViewName (name) {
       if (!name) {
         return false
@@ -499,7 +517,7 @@ export default {
       if (this.$route.query.tid === undefined) {
         return
       }
-      const tid = parseInt(this.$route.query.tid)
+      const tid = this.$route.query.tid
       const selection = this.tables.filter(t => t.id === tid)
       if (selection.length > 0) {
         this.table = selection[0]
@@ -509,9 +527,9 @@ export default {
         console.warn('Failed to find table with id', tid)
       }
     },
-    async execute () {
+    execute () {
       if (this.isView) {
-        await this.createView()
+        this.createView()
         return
       }
       if (this.timestamp === '') {
diff --git a/dbrepo-ui/components/subset/Results.vue b/dbrepo-ui/components/subset/Results.vue
index 661c7d1a3d6e7502cf349a63cc695cf7d593f427..a4a2565d7004a92fa9b3b6c0eab2907c8a220306 100644
--- a/dbrepo-ui/components/subset/Results.vue
+++ b/dbrepo-ui/components/subset/Results.vue
@@ -80,7 +80,7 @@ export default {
     }
   },
   methods: {
-    reExecute (id) {
+    reExecute (id, timestamp) {
       if (id === null) {
         return
       }
@@ -110,7 +110,7 @@ export default {
           })
       } else if (this.type === 'table') {
         const tableService = useTableService()
-        tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, this.timestamp)
+        tableService.getData(this.$route.params.database_id, id, (this.options.page - 1), this.options.itemsPerPage, timestamp ? timestamp : this.timestamp)
           .then((result) => {
             this.mapResults(result)
             this.id = id
@@ -156,7 +156,7 @@ export default {
           })
       }
     },
-    reExecuteCount (id) {
+    reExecuteCount (id, timestamp) {
       if (id === null) {
         return
       }
@@ -181,7 +181,7 @@ export default {
           })
       } else if (this.type === 'table') {
         const tableService = useTableService()
-        tableService.getCount(this.$route.params.database_id, id, this.timestamp)
+        tableService.getCount(this.$route.params.database_id, id, timestamp ? timestamp : this.timestamp)
           .then((count) => {
             this.total = count
             this.loadingCount = false
diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue
index e6026090978a3745af50b7e9a3e7a559ae5363a5..2e6dae63025d72ad8890ad70ef69daca040cc333 100644
--- a/dbrepo-ui/components/subset/SubsetToolbar.vue
+++ b/dbrepo-ui/components/subset/SubsetToolbar.vue
@@ -110,7 +110,7 @@ export default {
     identifier () {
       /* mount pid */
       if (this.pid) {
-        const filter = this.identifiers.filter(i => i.id === Number(this.pid))
+        const filter = this.identifiers.filter(i => i.id === this.pid)
         if (filter.length > 0) {
           return filter[0]
         }
diff --git a/dbrepo-ui/components/table/TableHistory.vue b/dbrepo-ui/components/table/TableHistory.vue
index ccc270c46c22de4933c76a448a9e7db95a2f6a10..c0e2bd7c7aa133fbf4afa64a5d46195f93a8e4fa 100644
--- a/dbrepo-ui/components/table/TableHistory.vue
+++ b/dbrepo-ui/components/table/TableHistory.vue
@@ -167,8 +167,8 @@ export default {
             // labels: history ? history.map(d => format(new UTCDate(d.timestamp), 'yyyy-MM-dd HH:mm:ss.SSS')) : [],
             labels: history ? history.map(d => format(new UTCDate(d.timestamp), 'yyyy-MM-dd HH:mm:ss')) : [],
             datasets: [
-              { backgroundColor: this.$vuetify.theme.current.colors.success, data: this.filterHistoryEventType(history, 'INSERT') },
-              { backgroundColor: this.$vuetify.theme.current.colors.error, data: this.filterHistoryEventType(history, 'DELETE') }
+              { backgroundColor: this.$vuetify.theme.current.colors.success, data: this.filterHistoryEventType(history, 'insert') },
+              { backgroundColor: this.$vuetify.theme.current.colors.error, data: this.filterHistoryEventType(history, 'delete') }
             ]
           }
         })
diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue
index a4eb63733bb534e83166f76fbf006cf354828291..319fe3b37c798ccfcf471ba82951504030f3dd14 100644
--- a/dbrepo-ui/components/table/TableImport.vue
+++ b/dbrepo-ui/components/table/TableImport.vue
@@ -14,8 +14,10 @@
         :disabled="disabled"
         @submit.prevent="submit">
         <v-container>
-          <v-row dense>
-            <v-col md="8">
+          <v-row
+            dense>
+            <v-col
+              lg="8">
               <v-select
                 v-model="tableImport.separator"
                 :items="separators"
@@ -30,8 +32,10 @@
                 :label="$t('pages.table.subpages.import.separator.label')"/>
             </v-col>
           </v-row>
-          <v-row dense>
-            <v-col md="8">
+          <v-row
+            dense>
+            <v-col
+              lg="8">
               <v-select
                 v-model="tableImport.header"
                 :items="headers"
@@ -45,8 +49,10 @@
                 :label="$t('pages.table.subpages.import.skip.label')" />
             </v-col>
           </v-row>
-          <v-row dense>
-            <v-col md="8">
+          <v-row
+            dense>
+            <v-col
+              lg="8">
               <v-select
                 v-model="tableImport.quote"
                 :items="quotes"
@@ -59,8 +65,10 @@
                 :label="$t('pages.table.subpages.import.quote.label')"/>
             </v-col>
           </v-row>
-          <v-row dense>
-            <v-col md="8">
+          <v-row
+            dense>
+            <v-col
+              lg="8">
               <v-select
                 v-model="tableImport.line_termination"
                 :items="lineTerminationItems"
@@ -117,7 +125,7 @@
               v-if="step > 1 && suggestedAnalyseSeparator && providedSeparator !== analysedSeparator"
               dense>
               <v-col
-                md="8">
+                lg="8">
                 <v-alert
                   border="start"
                   color="warning">
@@ -137,7 +145,7 @@
               v-if="step > 1 && suggestedAnalyseLineTerminator && providedTerminator !== analysedTerminator"
               dense>
               <v-col
-                md="8">
+                lg="8">
                 <v-alert
                   border="start"
                   color="warning">
@@ -153,7 +161,7 @@
               v-if="!hasCompatibleSchema"
               dense>
               <v-col
-                md="8">
+                lg="8">
                 <v-alert
                   border="start"
                   color="warning"
@@ -236,7 +244,7 @@
         <v-row
           dense>
           <v-col
-            md="8">
+            lg="8">
             <v-alert
               border="start"
               color="success">
diff --git a/dbrepo-ui/components/table/TableSchema.vue b/dbrepo-ui/components/table/TableSchema.vue
index baf04272b40573eb7c9fd8ab96a0f8b2947c82e5..811efae792d9bb2dd82b542d23ee1949558ac034 100644
--- a/dbrepo-ui/components/table/TableSchema.vue
+++ b/dbrepo-ui/components/table/TableSchema.vue
@@ -6,7 +6,8 @@
       :disabled="disabled">
       <v-row
         v-if="showPrimaryKeyWarning">
-        <v-col md="8">
+        <v-col
+          lg="8">
           <v-alert
             border="start"
             color="warning">
@@ -268,7 +269,7 @@ export default {
       }
       this.loadingColumnTypes = true
       const imageService = useImageService()
-      imageService.findById(this.database.container.id)
+      imageService.findById(this.database.container.image.id)
         .then((image) => {
           const types = image.data_types
           if (this.columns.filter(c => c.type === 'serial').length > 0) {
diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue
index d9e0bfb6bf6740c19aac53f6b3ac8cc374be7011..9f44c8d4804d8b9ca8b81bdbab5e95b7ae5ce5c5 100644
--- a/dbrepo-ui/components/view/ViewToolbar.vue
+++ b/dbrepo-ui/components/view/ViewToolbar.vue
@@ -145,12 +145,12 @@ export default {
       if (!this.view) {
         return []
       }
-      return this.view.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id))
+      return this.view.identifiers.filter(s => s.view_id === this.$route.params.view_id)
     },
     identifier () {
       /* mount pid */
       if (this.pid) {
-        const filter = this.identifiers.filter(i => i.id === Number(this.pid))
+        const filter = this.identifiers.filter(i => i.id === this.pid)
         if (filter.length > 0) {
           const identifier = filter[0]
           console.debug('identifier set according to route pid', identifier)
diff --git a/dbrepo-ui/composables/access-service.ts b/dbrepo-ui/composables/access-service.ts
index 056efec1171933d7dcf0921c7eff34717d574333..169d5126b73de093e2f0f8824a397cab3ee09019 100644
--- a/dbrepo-ui/composables/access-service.ts
+++ b/dbrepo-ui/composables/access-service.ts
@@ -1,7 +1,7 @@
 import {axiosErrorToApiError} from '@/utils'
 
 export const useAccessService = (): any => {
-  async function findOne(databaseId: number, userId: string): Promise<DatabaseAccessDto> {
+  async function findOne(databaseId: string, userId: string): Promise<DatabaseAccessDto> {
     const axios = useAxiosInstance()
     console.debug('find access of database with id', databaseId)
     return new Promise<DatabaseAccessDto>((resolve, reject) => {
@@ -17,7 +17,7 @@ export const useAccessService = (): any => {
     })
   }
 
-  async function create(databaseId: number, userId: number, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> {
+  async function create(databaseId: string, userId: string, payload: DatabaseGiveAccessDto): Promise<DatabaseAccessDto> {
     const axios = useAxiosInstance()
     console.debug('create access for user with id', userId, 'of database with id', databaseId)
     return new Promise<DatabaseAccessDto>((resolve, reject) => {
@@ -33,7 +33,7 @@ export const useAccessService = (): any => {
     })
   }
 
-  async function update(databaseId: number, userId: number, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> {
+  async function update(databaseId: string, userId: string, payload: DatabaseModifyAccessDto): Promise<DatabaseAccessDto> {
     const axios = useAxiosInstance()
     console.debug('update access for user with id', userId, 'of database with id', databaseId)
     return new Promise<DatabaseAccessDto>((resolve, reject) => {
@@ -49,7 +49,7 @@ export const useAccessService = (): any => {
     })
   }
 
-  async function remove(databaseId: number, userId: number): Promise<DatabaseAccessDto> {
+  async function remove(databaseId: string, userId: string): Promise<DatabaseAccessDto> {
     const axios = useAxiosInstance()
     console.debug('remove access for user with id', userId, 'of database with id', databaseId)
     return new Promise<DatabaseAccessDto>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/container-service.ts b/dbrepo-ui/composables/container-service.ts
index f1280517566165b8f190b9bd05eea3b1d4ac98f1..e21622eab14d884840ff872ca4dd1ecab50aa30e 100644
--- a/dbrepo-ui/composables/container-service.ts
+++ b/dbrepo-ui/composables/container-service.ts
@@ -17,7 +17,7 @@ export const useContainerService = (): any => {
     })
   }
 
-  async function findOne(containerId: number): Promise<ContainerDto> {
+  async function findOne(containerId: string): Promise<ContainerDto> {
     const axios = useAxiosInstance();
     console.debug('find containers');
     return new Promise<ContainerDto>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/database-service.ts b/dbrepo-ui/composables/database-service.ts
index f318e073054d6a4283b654bbae985b4f903aec00..0609373923d3fd75d06cfb341cc350d99ad50b3f 100644
--- a/dbrepo-ui/composables/database-service.ts
+++ b/dbrepo-ui/composables/database-service.ts
@@ -17,7 +17,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function refreshTablesMetadata(databaseId: number): Promise<DatabaseDto> {
+  async function refreshTablesMetadata(databaseId: string): Promise<DatabaseDto> {
     const axios = useAxiosInstance();
     console.debug('refresh database tables metadata');
     return new Promise<DatabaseDto>((resolve, reject) => {
@@ -33,7 +33,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function refreshViewsMetadata(databaseId: number): Promise<DatabaseDto> {
+  async function refreshViewsMetadata(databaseId: string): Promise<DatabaseDto> {
     const axios = useAxiosInstance();
     console.debug('refresh database views metadata');
     return new Promise<DatabaseDto>((resolve, reject) => {
@@ -66,7 +66,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function findOne(id: number, rawError: boolean = false): Promise<DatabaseDto | null> {
+  async function findOne(id: string, rawError: boolean = false): Promise<DatabaseDto | null> {
     const axios = useAxiosInstance();
     console.debug('find database with id', id);
     return new Promise((resolve, reject) => {
@@ -85,7 +85,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function findPreviewImage(id: number): Promise<string> {
+  async function findPreviewImage(id: string): Promise<string> {
     const axios = useAxiosInstance();
     console.debug('find database preview image with id', id);
     return new Promise((resolve, reject) => {
@@ -101,7 +101,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function updateVisibility(id: number, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> {
+  async function updateVisibility(id: string, payload: DatabaseModifyVisibilityDto): Promise<DatabaseDto | null> {
     const axios = useAxiosInstance()
     console.debug('update database visibility for database with id', id);
     return new Promise((resolve, reject) => {
@@ -117,7 +117,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function updateImage(id: number, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> {
+  async function updateImage(id: string, payload: DatabaseModifyImageDto): Promise<DatabaseDto | null> {
     const axios = useAxiosInstance()
     console.debug('update database image for database with id', id);
     return new Promise((resolve, reject) => {
@@ -133,7 +133,7 @@ export const useDatabaseService = (): any => {
     });
   }
 
-  async function updateOwner(id: number, payload: DatabaseTransferDto): Promise<DatabaseDto | null> {
+  async function updateOwner(id: string, payload: DatabaseTransferDto): Promise<DatabaseDto | null> {
     const axios = useAxiosInstance()
     console.debug('update database owner for database with id', id);
     return new Promise((resolve, reject) => {
diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts
index 6875a7cb7b2c168ecfb7357cc314219792930bf8..585356994be12526b4e7c83519a3f36db00b388a 100644
--- a/dbrepo-ui/composables/identifier-service.ts
+++ b/dbrepo-ui/composables/identifier-service.ts
@@ -2,7 +2,7 @@ import type {AxiosError, AxiosRequestConfig} from 'axios'
 import {axiosErrorToApiError} from '@/utils'
 
 export const useIdentifierService = (): any => {
-  async function findOne(id: number, accept: string): Promise<IdentifierDto> {
+  async function findOne(id: string, accept: string): Promise<IdentifierDto> {
     const axios = useAxiosInstance()
     console.debug('find identifier with id', id)
     const config: AxiosRequestConfig = {
@@ -55,7 +55,7 @@ export const useIdentifierService = (): any => {
     })
   }
 
-  async function remove(id: number): Promise<void> {
+  async function remove(id: string): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete identifier', id)
     return new Promise<void>((resolve, reject) => {
@@ -71,7 +71,7 @@ export const useIdentifierService = (): any => {
     })
   }
 
-  async function publish(id: number): Promise<IdentifierDto> {
+  async function publish(id: string): Promise<IdentifierDto> {
     const axios = useAxiosInstance()
     console.debug('publish identifier', id)
     return new Promise<IdentifierDto>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/image-service.ts b/dbrepo-ui/composables/image-service.ts
index 9af0304a1620bfda6aa801da61a7de9cb3cb647d..bcddbc5d7d04009850543d2b21dc843afe406cd8 100644
--- a/dbrepo-ui/composables/image-service.ts
+++ b/dbrepo-ui/composables/image-service.ts
@@ -1,7 +1,7 @@
 import {axiosErrorToApiError} from '@/utils'
 
 export const useImageService = (): any => {
-  async function findById(id: number): Promise<ImageDto> {
+  async function findById(id: string): Promise<ImageDto> {
     const axios = useAxiosInstance();
     console.debug('find image by id', id);
     return new Promise<ImageDto>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/message-service.ts b/dbrepo-ui/composables/message-service.ts
index a170b3ba034e743c43ffea58e4731532ffcebb30..648cb6d388c5a1bfd2192dbedfe7fab14f55cd47 100644
--- a/dbrepo-ui/composables/message-service.ts
+++ b/dbrepo-ui/composables/message-service.ts
@@ -17,7 +17,7 @@ export const useMessageService = (): any => {
     })
   }
 
-  async function findOne(id: number): Promise<BannerMessageDto> {
+  async function findOne(id: string): Promise<BannerMessageDto> {
     const axios = useAxiosInstance()
     console.debug('find message with id', id)
     return new Promise<BannerMessageDto>((resolve, reject) => {
@@ -49,7 +49,7 @@ export const useMessageService = (): any => {
     })
   }
 
-  async function update(id: number, data: BannerMessageUpdateDto): Promise<BannerMessageDto> {
+  async function update(id: string, data: BannerMessageUpdateDto): Promise<BannerMessageDto> {
     const axios = useAxiosInstance()
     console.debug('update message with id', id)
     return new Promise<BannerMessageDto>((resolve, reject) => {
@@ -65,7 +65,7 @@ export const useMessageService = (): any => {
     })
   }
 
-  async function remove(id: number): Promise<void> {
+  async function remove(id: string): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete message with id', id)
     return new Promise<void>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/ontology-service.ts b/dbrepo-ui/composables/ontology-service.ts
index da207d6c56d29722b33b67ee802fca55aa1ba6c0..67c6beaf256c7196e6bf6469f849d550c02c9fb4 100644
--- a/dbrepo-ui/composables/ontology-service.ts
+++ b/dbrepo-ui/composables/ontology-service.ts
@@ -17,7 +17,7 @@ export const useOntologyService = (): any => {
     })
   }
 
-  async function findOne(id: number): Promise<OntologyDto> {
+  async function findOne(id: string): Promise<OntologyDto> {
     const axios = useAxiosInstance()
     console.debug('find ontology for id', id)
     return new Promise<OntologyDto>((resolve, reject) => {
@@ -49,7 +49,7 @@ export const useOntologyService = (): any => {
     })
   }
 
-  async function update(id: number, data: OntologyModifyDto): Promise<OntologyDto> {
+  async function update(id: string, data: OntologyModifyDto): Promise<OntologyDto> {
     const axios = useAxiosInstance()
     console.debug('update ontology with id', id)
     return new Promise<OntologyDto>((resolve, reject) => {
@@ -65,7 +65,7 @@ export const useOntologyService = (): any => {
     })
   }
 
-  async function remove(id: number): Promise<void> {
+  async function remove(id: string): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete ontology with id', id)
     return new Promise<void>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/query-service.ts b/dbrepo-ui/composables/query-service.ts
index e314993ecd233c486198f7995dff4da5389eb06f..c0d5c0db7c6bab8c949ec581a023a138f7c065ac 100644
--- a/dbrepo-ui/composables/query-service.ts
+++ b/dbrepo-ui/composables/query-service.ts
@@ -3,7 +3,7 @@ import type {AxiosRequestConfig} from 'axios'
 import {axiosErrorToApiError} from '@/utils'
 
 export const useQueryService = (): any => {
-  async function findAll(databaseId: number, persisted: boolean): Promise<QueryDto[]> {
+  async function findAll(databaseId: string, persisted: boolean): Promise<QueryDto[]> {
     const axios = useAxiosInstance()
     console.debug('find queries')
     return new Promise<QueryDto[]>((resolve, reject) => {
@@ -23,7 +23,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function findOne(databaseId: number, queryId: number): Promise<QueryDto> {
+  async function findOne(databaseId: string, queryId: string): Promise<QueryDto> {
     const axios = useAxiosInstance()
     console.debug('find query with id', queryId, 'in database with id', databaseId)
     return new Promise<QueryDto>((resolve, reject) => {
@@ -39,7 +39,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function update(databaseId: number, queryId: number, data: QueryPersistDto): Promise<QueryDto> {
+  async function update(databaseId: string, queryId: string, data: QueryPersistDto): Promise<QueryDto> {
     const axios = useAxiosInstance()
     console.debug('update query with id', queryId, 'in database with id', databaseId)
     return new Promise<QueryDto>((resolve, reject) => {
@@ -55,7 +55,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function exportCsv(databaseId: number, queryId: number): Promise<any> {
+  async function exportCsv(databaseId: string, queryId: string): Promise<any> {
     const axios = useAxiosInstance()
     const config: AxiosRequestConfig = {
       responseType: 'blob',
@@ -77,7 +77,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function execute(databaseId: number, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> {
+  async function execute(databaseId: string, data: ExecuteStatementDto, timestamp: Date | null, page: number, size: number): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     console.debug('execute query in database with id', databaseId)
     return new Promise<QueryResultDto>((resolve, reject) => {
@@ -85,7 +85,7 @@ export const useQueryService = (): any => {
         .then((response) => {
           console.info('Executed query with id', response.data.id, ' in database with id', databaseId)
           const result: QueryResultDto = {
-            id: 1,
+            id: response.headers['x-id'],
             headers: [],
             result: response.data
           }
@@ -98,7 +98,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function reExecuteData(databaseId: number, queryId: number, page: number, size: number): Promise<QueryResultDto> {
+  async function reExecuteData(databaseId: string, queryId: string, page: number, size: number): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     console.debug('re-execute query in database with id', databaseId)
     return new Promise<QueryResultDto>((resolve, reject) => {
@@ -106,7 +106,7 @@ export const useQueryService = (): any => {
         .then((response) => {
           console.info('Re-executed query in database with id', databaseId)
           const result: QueryResultDto = {
-            id: Number(response.headers['x-id']),
+            id: response.headers['x-id'],
             headers: response.headers['x-headers'] ? response.headers['x-headers'].split(',') : [],
             result: response.data
           }
@@ -119,7 +119,7 @@ export const useQueryService = (): any => {
     })
   }
 
-  async function reExecuteCount(databaseId: number, queryId: number): Promise<number> {
+  async function reExecuteCount(databaseId: string, queryId: string): Promise<number> {
     const axios = useAxiosInstance()
     console.debug('re-execute query in database with id', databaseId)
     return new Promise<number>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts
index 5f290745245b46a8ce395a489f62aa9171800d5a..45ee0a7b934cb92c2d275b3cb1a23738d4fc0809 100644
--- a/dbrepo-ui/composables/table-service.ts
+++ b/dbrepo-ui/composables/table-service.ts
@@ -3,7 +3,7 @@ import {axiosErrorToApiError} from '@/utils'
 
 export const useTableService = (): any => {
 
-  function findAll(databaseId: number): Promise<TableBriefDto> {
+  function findAll(databaseId: string): Promise<TableBriefDto> {
     const axios = useAxiosInstance()
     console.debug('find tables')
     return new Promise<TableBriefDto>((resolve, reject) => {
@@ -19,7 +19,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function findOne(databaseId: number, tableId: number): Promise<TableDto> {
+  async function findOne(databaseId: string, tableId: string): Promise<TableDto> {
     const axios = useAxiosInstance()
     console.debug('find table with id', tableId, 'in database with id', databaseId);
     return new Promise<TableDto>((resolve, reject) => {
@@ -35,7 +35,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function updateSemantics(databaseId: number, tableId: number, columnId: number, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> {
+  async function updateSemantics(databaseId: string, tableId: string, columnId: string, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> {
     const axios = useAxiosInstance()
     console.debug('update column with id', columnId, 'table with id', tableId, 'in database with id', databaseId);
     return new Promise<ColumnDto>((resolve, reject) => {
@@ -51,7 +51,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function update(databaseId: number, tableId: number, data: TableUpdateDto): Promise<TableDto> {
+  async function update(databaseId: string, tableId: string, data: TableUpdateDto): Promise<TableDto> {
     const axios = useAxiosInstance()
     console.debug('update table with id', tableId, 'in database with id', databaseId);
     return new Promise<TableDto>((resolve, reject) => {
@@ -67,7 +67,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function importCsv(databaseId: number, tableId: number, data: ImportCsv): Promise<ImportDto> {
+  async function importCsv(databaseId: string, tableId: string, data: ImportCsv): Promise<ImportDto> {
     const axios = useAxiosInstance()
     console.debug('import csv to table with id', tableId, 'in database with id', databaseId);
     return new Promise<ImportDto>((resolve, reject) => {
@@ -83,7 +83,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function getData(databaseId: number, tableId: number, page: number, size: number, timestamp: Date): Promise<QueryResultDto> {
+  async function getData(databaseId: string, tableId: string, page: number, size: number, timestamp: Date): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     console.debug('get data for table with id', tableId, 'in database with id', databaseId);
     return new Promise<QueryResultDto>((resolve, reject) => {
@@ -104,7 +104,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function getCount(databaseId: number, tableId: number, timestamp: Date): Promise<number> {
+  async function getCount(databaseId: string, tableId: string, timestamp: Date): Promise<number> {
     const axios = useAxiosInstance()
     console.debug('get data count for table with id', tableId, 'in database with id', databaseId);
     return new Promise<number>((resolve, reject) => {
@@ -121,7 +121,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function exportData(databaseId: number, tableId: number, timestamp: Date): Promise<QueryResultDto> {
+  async function exportData(databaseId: string, tableId: string, timestamp: Date): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     const config: AxiosRequestConfig = {
       params: (timestamp && {timestamp}),
@@ -144,7 +144,7 @@ export const useTableService = (): any => {
     })
   }
 
-  async function create(databaseId: number, data: TableCreateDto): Promise<TableDto> {
+  async function create(databaseId: string, data: TableCreateDto): Promise<TableDto> {
     const axios = useAxiosInstance()
     console.debug('create table in database with id', databaseId, data)
     return new Promise<TableDto>((resolve, reject) => {
@@ -160,7 +160,7 @@ export const useTableService = (): any => {
     });
   }
 
-  async function remove(databaseId: number, tableId: number): Promise<void> {
+  async function remove(databaseId: string, tableId: string): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete table with id', tableId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
@@ -176,7 +176,7 @@ export const useTableService = (): any => {
     });
   }
 
-  async function removeTuple(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> {
+  async function removeTuple(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
@@ -192,7 +192,7 @@ export const useTableService = (): any => {
     });
   }
 
-  async function history(databaseId: number, tableId: number): Promise<TableHistoryDto[]> {
+  async function history(databaseId: string, tableId: string): Promise<TableHistoryDto[]> {
     const axios = useAxiosInstance()
     console.debug('Load history of table with id', tableId, 'in database with id', databaseId)
     return new Promise<TableHistoryDto[]>((resolve, reject) => {
@@ -208,7 +208,7 @@ export const useTableService = (): any => {
     });
   }
 
-  async function suggest(databaseId: number, tableId: number, columnId: number): Promise<TableColumnEntityDto[]> {
+  async function suggest(databaseId: string, tableId: string, columnId: string): Promise<TableColumnEntityDto[]> {
     const axios = useAxiosInstance()
     console.debug('suggest semantic entities for table column with id', columnId, 'of table with id', tableId, 'of database with id', databaseId)
     return new Promise<TableColumnEntityDto[]>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/tuple-service.ts b/dbrepo-ui/composables/tuple-service.ts
index e54cbe6a0dc71407dc5339de79eace1eee762560..aa8407a2581a9b263cdd052fd30a5eb44f131446 100644
--- a/dbrepo-ui/composables/tuple-service.ts
+++ b/dbrepo-ui/composables/tuple-service.ts
@@ -1,7 +1,7 @@
 import {axiosErrorToApiError} from '@/utils'
 
 export const useTupleService = (): any => {
-  async function create(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> {
+  async function create(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('create tuple(s) in table with id', tableId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
@@ -17,7 +17,7 @@ export const useTupleService = (): any => {
     })
   }
 
-  async function update(databaseId: number, tableId: number, data: TableCsvDto): Promise<void> {
+  async function update(databaseId: string, tableId: string, data: TableCsvDto): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('update tuple(s) in table with id', tableId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
@@ -33,7 +33,7 @@ export const useTupleService = (): any => {
     })
   }
 
-  async function remove(databaseId: number, tableId: number, data: TableCsvDeleteDto): Promise<void> {
+  async function remove(databaseId: string, tableId: string, data: TableCsvDeleteDto): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete tuple(s) in table with id', tableId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts
index 417f5a645e978cc8f93e7fc524df22756c5b093e..9029a553ac782248d33707380f2ed72efcfc8032 100644
--- a/dbrepo-ui/composables/view-service.ts
+++ b/dbrepo-ui/composables/view-service.ts
@@ -2,7 +2,7 @@ import {axiosErrorToApiError} from '@/utils'
 import type {AxiosRequestConfig} from "axios";
 
 export const useViewService = (): any => {
-  async function remove(databaseId: number, viewId: number): Promise<void> {
+  async function remove(databaseId: string, viewId: string): Promise<void> {
     const axios = useAxiosInstance()
     console.debug('delete view with id', viewId, 'in database with id', databaseId)
     return new Promise<void>((resolve, reject) => {
@@ -18,7 +18,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function findOne(databaseId: number, viewId: number): Promise<ViewDto> {
+  async function findOne(databaseId: string, viewId: string): Promise<ViewDto> {
     const axios = useAxiosInstance()
     console.debug('get view with id', viewId, 'in database with id', databaseId)
     return new Promise<ViewDto>((resolve, reject) => {
@@ -34,7 +34,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function create(databaseId: number, payload: ViewCreateDto): Promise<ViewDto> {
+  async function create(databaseId: string, payload: ViewCreateDto): Promise<ViewDto> {
     const axios = useAxiosInstance()
     console.debug('create view in database with id', databaseId)
     return new Promise<ViewDto>((resolve, reject) => {
@@ -50,7 +50,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function update(databaseId: number, viewId: number, payload: ViewUpdateDto): Promise<ViewDto> {
+  async function update(databaseId: string, viewId: string, payload: ViewUpdateDto): Promise<ViewDto> {
     const axios = useAxiosInstance()
     console.debug('update view with id', viewId)
     return new Promise<ViewDto>((resolve, reject) => {
@@ -66,7 +66,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function reExecuteData(databaseId: number, viewId: number, page: number | null, size: number | null): Promise<QueryResultDto> {
+  async function reExecuteData(databaseId: string, viewId: string, page: number | null, size: number | null): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     console.debug('re-execute view with id', viewId, 'in database with id', databaseId)
     return new Promise<QueryResultDto>((resolve, reject) => {
@@ -87,7 +87,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function reExecuteCount(databaseId: number, viewId: number): Promise<number> {
+  async function reExecuteCount(databaseId: string, viewId: string): Promise<number> {
     const axios = useAxiosInstance()
     console.debug('re-execute view with id', viewId, 'in database with id', databaseId)
     return new Promise<number>((resolve, reject) => {
@@ -104,7 +104,7 @@ export const useViewService = (): any => {
     })
   }
 
-  async function exportData(databaseId: number, viewId: number): Promise<QueryResultDto> {
+  async function exportData(databaseId: string, viewId: string): Promise<QueryResultDto> {
     const axios = useAxiosInstance()
     const config: AxiosRequestConfig = {
       responseType: 'blob',
diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts
index 605a7c0db9984525632570c70e76dd542845f225..2f20f174299cc789abe52c94f39d121dd8faa30d 100644
--- a/dbrepo-ui/dto/index.ts
+++ b/dbrepo-ui/dto/index.ts
@@ -1,5 +1,5 @@
 interface DatabaseDto {
-  id: number;
+  id: string;
   name: string;
   creator: UserDto;
   owner: UserDto;
@@ -22,7 +22,7 @@ interface DatabaseDto {
 
 interface DatabaseCreateDto {
   name: string;
-  container_id: number;
+  container_id: string;
   is_public: boolean;
 }
 
@@ -69,7 +69,7 @@ interface ContainerBriefDto {
 }
 
 interface ImageDto {
-  id: number;
+  id: string;
   registry: string;
   name: string;
   version: string;
@@ -82,15 +82,15 @@ interface ImageDto {
 }
 
 interface OperatorDto {
-  id: number;
-  image_id: number;
+  id: string;
+  image_id: string;
   display_name: string;
   documentation: string;
   value: string;
 }
 
 interface TableBriefDto {
-  id: number;
+  id: string;
   name: string;
   description: string;
   internal_name: string;
@@ -107,18 +107,18 @@ interface TableUpdateDto {
 }
 
 interface ColumnBriefDto {
-  id: number;
+  id: string;
   name: string;
   alias: string;
-  database_id: number;
-  table_id: number;
+  database_id: string;
+  table_id: string;
   internal_name: string;
   column_type: string;
 }
 
 interface TableDto {
-  id: number;
-  database_id: number;
+  id: string;
+  database_id: string;
   name: string;
   identifiers: IdentifierDto[];
   creator: UserDto;
@@ -170,18 +170,18 @@ interface DataTypesDto {
 }
 
 interface UniqueDto {
-  uid: number;
+  uid: string;
   table: TableBriefDto;
   columns: ColumnDto[];
 }
 
 interface IdentifierCreateDto {
-  database_id: number;
+  database_id: string;
   doi: string | null;
 }
 
 interface IdentifierSaveDto {
-  id: number;
+  id: string;
   type: string;
   doi: string | null;
   titles: IdentifierSaveTitleDto[] | [];
@@ -191,10 +191,10 @@ interface IdentifierSaveDto {
   publisher: string | null;
   language: string | null;
   creators: CreatorSaveDto[] | [];
-  database_id: number | null;
-  query_id: number | null;
-  view_id: number | null;
-  table_id: number | null;
+  database_id: string | null;
+  query_id: string | null;
+  view_id: string | null;
+  table_id: string | null;
   publication_day: number | null;
   publication_month: number | null;
   publication_year: number | null;
@@ -223,11 +223,11 @@ interface IdentifierFunderSaveDto {
 }
 
 interface IdentifierDto {
-  id: number;
-  database_id: number | null;
-  query_id: number | null;
-  table_id: number | null;
-  view_id: number | null;
+  id: string;
+  database_id: string;
+  query_id: string | null;
+  table_id: string | null;
+  view_id: string | null;
   type: IdentifierTypeDto;
   titles: IdentifierTitleDto[] | [];
   descriptions: IdentifierDescriptionDto[] | [];
@@ -263,11 +263,11 @@ enum IdentifierStatusTypeDto {
 }
 
 interface IdentifierBriefDto {
-  id: number;
-  database_id: number | null;
-  query_id: number | null;
-  table_id: number | null;
-  view_id: number | null;
+  id: string;
+  database_id: string | null;
+  query_id: string | null;
+  table_id: string | null;
+  view_id: string | null;
   type: IdentifierTypeDto;
   creators: CreatorBriefDto[] | [];
   titles: IdentifierTitleDto[] | [];
@@ -280,21 +280,21 @@ interface IdentifierBriefDto {
 }
 
 interface IdentifierTitleDto {
-  id: number;
+  id: string;
   title: string;
   language: string;
   type: string;
 }
 
 interface IdentifierDescriptionDto {
-  id: number;
+  id: string;
   description: string;
   language: string;
   type: string;
 }
 
 interface IdentifierFunderDto {
-  id: number;
+  id: string;
   funder_name: string;
   funder_identifier: string;
   funder_identifier_type: string;
@@ -309,7 +309,7 @@ enum NameTypeDto {
 }
 
 interface CreatorDto {
-  id: number;
+  id: string;
   firstname: string;
   lastname: string;
   affiliation: string;
@@ -324,7 +324,7 @@ interface CreatorDto {
 }
 
 interface CreatorBriefDto {
-  id: number;
+  id: string;
   affiliation: string;
   creator_name: string;
   name_type: NameTypeDto | null;
@@ -335,7 +335,7 @@ interface CreatorBriefDto {
 }
 
 interface RelatedIdentifierDto {
-  id: number;
+  id: string;
   value: string;
   type: string;
   relation: string;
@@ -362,7 +362,7 @@ interface RelatedIdentifierSaveDto {
 }
 
 interface ColumnDto {
-  id: number;
+  id: string;
   name: string;
   alias: string;
   size: number;
@@ -379,8 +379,8 @@ interface ColumnDto {
   unit: UnitDto;
   enums: string[];
   sets: string[];
-  database_id: number;
-  table_id: number;
+  database_id: string;
+  table_id: string;
   internal_name: string;
   is_primary_key: boolean;
   index_length: number;
@@ -391,7 +391,7 @@ interface ColumnDto {
 }
 
 interface ConceptDto {
-  id: number;
+  id: string;
   uri: string;
   name: string;
   description: string;
@@ -400,7 +400,7 @@ interface ConceptDto {
 }
 
 interface UnitDto {
-  id: number;
+  id: string;
   uri: string;
   name: string;
   description: string;
@@ -446,14 +446,14 @@ interface ViewUpdateDto {
 }
 
 interface QueryDto {
-  id: number;
+  id: string;
   creator: UserDto;
   execution: Date;
   query: string;
   type: string | null;
   identifiers: IdentifierDto[];
   created: Date;
-  database_id: number;
+  database_id: string;
   query_normalized: string | null;
   query_hash: string;
   is_persisted: boolean;
@@ -515,8 +515,8 @@ interface KeycloakErrorDto {
 }
 
 interface ViewBriefDto {
-  id: number;
-  database_id: number;
+  id: string;
+  database_id: string;
   name: string;
   identifier: any[];
   query: string;
@@ -530,8 +530,8 @@ interface ViewBriefDto {
 }
 
 interface ViewDto {
-  id: number;
-  database_id: number;
+  id: string;
+  database_id: string;
   name: string;
   identifiers: IdentifierDto[];
   query: string;
@@ -545,14 +545,14 @@ interface ViewDto {
 }
 
 interface ImageBriefDto {
-  id: number;
+  id: string;
   name: string;
   version: string;
   jdbc_method: string;
 }
 
 interface ImageDto {
-  id: number;
+  id: string;
   registry: string;
   name: string;
   version: string;
@@ -600,7 +600,7 @@ interface ImportCsv {
 }
 
 interface QueryResultDto {
-  id: number | null;
+  id: string | null;
   result: any;
   headers: string[];
 }
@@ -660,7 +660,7 @@ interface ForeignKeyCreateDto {
 }
 
 interface OntologyDto {
-  id: number;
+  id: string;
   uri: string;
   prefix: string;
   sparql: boolean;
@@ -686,7 +686,7 @@ interface OntologyCreateDto {
 }
 
 interface UnitDto {
-  id: number;
+  id: string;
   uri: string;
   name: string;
   description: string;
@@ -695,7 +695,7 @@ interface UnitDto {
 }
 
 interface ConceptDto {
-  id: number;
+  id: string;
   uri: string;
   name: string;
   description: string;
@@ -704,9 +704,9 @@ interface ConceptDto {
 }
 
 interface TableColumnEntityDto {
-  database_id: number;
-  table_id: number;
-  column_id: number;
+  database_id: string;
+  table_id: string;
+  column_id: string;
   uri: string;
   label: string;
   description: string;
@@ -739,7 +739,7 @@ interface BannerMessageUpdateDto {
 }
 
 interface BannerMessageDto {
-  id: number;
+  id: string;
   type: string;
   message: string;
   link: string;
diff --git a/dbrepo-ui/dto/jwt.ts b/dbrepo-ui/dto/jwt.ts
deleted file mode 100644
index a47085114e3c80c229e80b43fb27adc94fd9d3d3..0000000000000000000000000000000000000000
--- a/dbrepo-ui/dto/jwt.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-interface Token {
-  exp: number;
-  iat: number;
-  jti: string;
-  iss: string;
-  aud: string;
-  sub: string;
-  typ: string;
-  azp: string;
-  session_state: string;
-  realm_access: RealmAccess;
-  scope: string;
-  sid: string;
-  uid: string;
-  preferred_username: string;
-}
-
-interface RealmAccess {
-  roles: string[];
-}
diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue
index 85be5cd6b0bee36a78e451a33abace288bef7219..7267242288c5eadaf184fdb1afe4e485a03f78dc 100644
--- a/dbrepo-ui/layouts/default.vue
+++ b/dbrepo-ui/layouts/default.vue
@@ -313,14 +313,14 @@ export default {
           return
         }
         if (this.identifier) {
-          if (newObj.query_id && this.identifier.query_id !== Number(newObj.query_id)) {
+          if (newObj.query_id && this.identifier.query_id !== newObj.query_id) {
             this.cacheStore.setIdentifier(null)
-          } else if (newObj.table_id && this.identifier.table_id !== Number(newObj.table_id)) {
+          } else if (newObj.table_id && this.identifier.table_id !== newObj.table_id) {
             this.cacheStore.setIdentifier(null)
-          } else if (newObj.view_id && this.identifier.view_id !== Number(newObj.view_id)) {
+          } else if (newObj.view_id && this.identifier.view_id !== newObj.view_id) {
             this.cacheStore.setIdentifier(null)
           }
-          if (this.$route.query.pid && this.identifier.id !== Number(this.$route.query.pid)) {
+          if (this.$route.query.pid && this.identifier.id !== this.$route.query.pid) {
             this.cacheStore.setIdentifier(null)
           }
         }
diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json
index d17da2341db70b270a9cf780773ea7900afa4c03..a42a56411b825f5eb011b311ce995e9f291c7725 100644
--- a/dbrepo-ui/locales/en-US.json
+++ b/dbrepo-ui/locales/en-US.json
@@ -541,7 +541,7 @@
           }
         },
         "semantics": {
-          "title": "Assign semantic instance for table column",
+          "title": "Assign semantic {type} for table column",
           "subtitle": "Semantic instances help machines to get the proper context of your dataset",
           "recommended": "Recommended semantic instances",
           "bullet": "●",
@@ -1305,8 +1305,9 @@
       "revoked": "Revoked {access} access successfully"
     },
     "data": {
-      "add": "Successfully added data entry",
-      "update": "Successfully updated data entry"
+      "add": "Successfully added data tuple",
+      "update": "Successfully updated data tuple",
+      "deleted": "Successfully deleted {total} data tuple(s)"
     },
     "table": {
       "created": "Created table {table} successfully",
diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue
index 025cc9c4c438523c876c346f6ccb219933a5362c..9f2d42655304118c5b585d8618f157fbc86d9627 100644
--- a/dbrepo-ui/pages/database/[database_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/info.vue
@@ -177,7 +177,7 @@ if (data.value && data.value.length > 0) {
   useServerHead(identifierService.identifiersToServerHead(data.value))
   useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value))
 }
-const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null)
+const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null)
 
 const cacheStore = useCacheStore()
 cacheStore.setIdentifier(identifier)
@@ -253,7 +253,7 @@ export default {
       if (!this.database || !this.database.identifiers) {
         return []
       }
-      return this.database.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id))
+      return this.database.identifiers.filter(i => i.query_id === this.$route.params.subset_id)
     },
     pid () {
       return this.$route.query.pid
diff --git a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue
index 505a7651232b071a03dd2b7ea481ff306e8dc3b4..1adbe4bf9bdb5cb31a633cd4b05bd8b28006e40b 100644
--- a/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/persist/[identifier_id]/index.vue
@@ -58,7 +58,7 @@ export default {
       if (!this.database) {
         return false
       }
-      const filter = this.database.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id))
+      const filter = this.database.identifiers.filter(i => i.id === this.$route.params.identifier_id)
       return filter.length === 1 ? filter[0] : null
     },
     canPersistIdentifier () {
diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue
index 8905ede1d2f88c8b2411f65655c4443827c23315..3d82b13bdaa7a988039724342900f57d5f0d2251 100644
--- a/dbrepo-ui/pages/database/[database_id]/settings.vue
+++ b/dbrepo-ui/pages/database/[database_id]/settings.vue
@@ -20,7 +20,8 @@
               <v-row
                 v-if="previewImage"
                 dense>
-                <v-col md="8">
+                <v-col
+                  lg="8">
                   <v-alert
                     v-if="file"
                     border="start"
@@ -45,8 +46,10 @@
                     @click="removeDatabaseImage" />
                 </v-col>
               </v-row>
-              <v-row dense>
-                <v-col md="8">
+              <v-row
+                dense>
+                <v-col
+                  lg="8">
                   <v-file-input
                     v-model="file"
                     accept="image/*"
@@ -134,7 +137,7 @@
             <v-row
               dense>
               <v-col
-                md="4">
+                lg="4">
                 <v-select
                   v-model="modifyVisibility.is_public"
                   :items="dataOptions"
@@ -148,7 +151,7 @@
                   :hint="$t('pages.database.resource.data.hint', { resource: 'database' })" />
               </v-col>
               <v-col
-                md="4">
+                lg="4">
                 <v-select
                   v-model="modifyVisibility.is_schema_public"
                   :items="schemaOptions"
@@ -184,7 +187,8 @@
           rounded="0">
           <v-card-text>
             <v-row>
-              <v-col md="8">
+              <v-col
+                lg="8">
                 <v-select
                   v-model="modifyOwner.id"
                   :items="users"
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
index db5d45b4610de195f2a16d213eea60674c8dcf86..d3b5f624d7425992e4858caa2e000dcc82c1ec59 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
@@ -94,7 +94,7 @@ if (data.value && data.value.length > 0) {
   useServerHead(identifierService.identifiersToServerHead(data.value))
   useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value))
 }
-const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null)
+const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null)
 
 const cacheStore = useCacheStore()
 cacheStore.setIdentifier(identifier)
@@ -162,11 +162,14 @@ export default {
     subset () {
       return this.cacheStore.getSubset
     },
+    access () {
+      return this.cacheStore.getAccess
+    },
     identifiers () {
       if (!this.database || !this.database.subsets) {
         return []
       }
-      return this.database.subsets.filter(i => i.query_id === Number(this.$route.params.subset_id))
+      return this.database.subsets.filter(i => i.query_id === this.$route.params.subset_id)
     },
     canViewInfo () {
       if (!this.database) {
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue
index 78878a0015f61ea3dadf38258b747b20fa8e94d9..e97ac3eb885973c0f69addc0a98aaf03c604855e 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist/[identifier_id]/index.vue
@@ -69,7 +69,7 @@ export default {
       if (!this.subset) {
         return false
       }
-      const filter = this.subset.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id))
+      const filter = this.subset.identifiers.filter(i => i.id === this.$route.params.identifier_id)
       return filter.length === 1 ? filter[0] : null
     },
     canPersistIdentifier () {
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
index 13ee3951c80fae3bb0a3f8391133b53aec57bf79..75e95370077bada111db1319a08630a4a55f29bd 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
@@ -45,7 +45,7 @@
         class="ml-2"
         :disabled="loadingData"
         :loading="loadingData"
-        @click="reload" />
+        @click="reload()" />
       <v-btn
         :prepend-icon="$vuetify.display.mdAndUp ? 'mdi-update' : null"
         variant="flat"
@@ -68,7 +68,7 @@
         class="mt-0 mb-0"
         type="table"
         :select="canSelectTuples"
-        :timestamp="versionISO || lastReload.toISOString()"
+        :timestamp="lastReload.toISOString()"
         @selection="updateSelect" />
     </v-card>
     <v-dialog
@@ -310,7 +310,7 @@ export default {
         }
         const tupleService = useTupleService()
         wait.push(tupleService.remove(this.$route.params.database_id, this.$route.params.table_id, { keys: constraints })
-          .catch(({code, message}) => {
+          .catch(({ code }) => {
             const toast = useToastInstance()
             if (typeof code !== 'string') {
               return
@@ -321,7 +321,7 @@ export default {
       Promise.all(wait)
         .then(() => {
           const toast = useToastInstance()
-          toast.success(`Deleted ${this.selection.length} row(s)`)
+          toast.success(this.$t('success.data.deleted', { total: this.selection.length }))
           this.$emit('modified', { success: true, action: 'delete' })
           this.selection = []
           this.$refs.queryResults.resetSelection()
@@ -400,8 +400,8 @@ export default {
       if (!this.canViewTableData) {
         return
       }
-      this.$refs.queryResults.reExecute(Number(this.$route.params.table_id))
-      this.$refs.queryResults.reExecuteCount(Number(this.$route.params.table_id))
+      this.$refs.queryResults.reExecute(this.$route.params.table_id, this.lastReload)
+      this.$refs.queryResults.reExecuteCount(this.$route.params.table_id, this.lastReload)
     },
     isFileField (column) {
       return ['blob', 'longblob', 'mediumblob', 'tinyblob'].includes(column.type)
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 687358f0290177012dc89f36e23666d6dd6d48d0..18662f55ddf87daafb6d055a17d67f93fb2be737 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
@@ -131,7 +131,7 @@ if (data.value && data.value.length > 0) {
   useServerHead(identifierService.identifiersToServerHead(data.value))
   useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value))
 }
-const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null)
+const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null)
 
 const cacheStore = useCacheStore()
 cacheStore.setIdentifier(identifier)
@@ -244,7 +244,7 @@ export default {
       if (!this.table || !this.table.identifiers) {
         return []
       }
-      return this.table.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id))
+      return this.table.identifiers.filter(i => i.query_id === this.$route.params.subset_id)
     },
     brokerExtraInfo () {
       return this.$config.public.broker.extra
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue
index e2d16e8db44efb0f558fa2c42e1225fc9e6b8355..2d7b94744c57a933ca6b139803091f5989eb29fd 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist/[identifier_id]/index.vue
@@ -67,7 +67,7 @@ export default {
       if (!this.table) {
         return false
       }
-      const filter = this.table.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id))
+      const filter = this.table.identifiers.filter(i => i.id === this.$route.params.identifier_id)
       return filter.length === 1 ? filter[0] : null
     },
     canPersistIdentifier () {
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 0f0a8feab62a7fb065c3ecb6af6b63b83a9884be..4667a7f30c7f1d3add1bfb608ef2c472b9daa681 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
@@ -18,7 +18,7 @@
             <v-card-text>
               <v-row>
                 <v-col
-                  md="8">
+                  lg="8">
                   <v-textarea
                     v-model="modify.description"
                     rows="2"
@@ -34,7 +34,7 @@
               <v-row
                 dense>
                 <v-col
-                  md="4">
+                  lg="4">
                   <v-select
                     v-model="modify.is_public"
                     :items="dataOptions"
@@ -48,7 +48,7 @@
                     :hint="$t('pages.database.resource.data.hint', { resource: 'table' })" />
                 </v-col>
                 <v-col
-                  md="4">
+                  lg="4">
                   <v-select
                     v-model="modify.is_schema_public"
                     :items="schemaOptions"
@@ -90,7 +90,7 @@
           <v-card-text>
             <v-row>
               <v-col
-                md="8">
+                lg="8">
                 <v-btn
                   size="small"
                   variant="flat"
diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
index 24aed7f2ffc6b77edfae4a90e1c4dc7607f97955..a2498d799b2ea0ee2ceb8649f4eee7101ad759a8 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
@@ -21,7 +21,7 @@
         <v-card-text>
           <v-row>
             <v-col
-              md="8">
+              lg="8">
               <v-alert
                 border="start"
                 color="info">
@@ -54,7 +54,8 @@
                 <v-container>
                   <v-row
                     dense>
-                    <v-col md="4">
+                    <v-col
+                      lg="4">
                       <v-text-field
                         v-model="tableCreate.name"
                         :rules="[
@@ -69,7 +70,8 @@
                         :hint="$t('pages.table.subpages.import.name.hint')"
                         :label="$t('pages.table.subpages.import.name.label')"/>
                     </v-col>
-                    <v-col md="4">
+                    <v-col
+                      lg="4">
                       <v-text-field
                         v-model="generatedTableName"
                         :rules="[
@@ -88,7 +90,8 @@
                   </v-row>
                   <v-row
                     dense>
-                    <v-col md="8">
+                    <v-col
+                      lg="8">
                       <v-textarea
                         v-model="tableCreate.description"
                         rows="2"
@@ -104,7 +107,7 @@
                   <v-row
                     dense>
                     <v-col
-                      md="4">
+                      lg="4">
                       <v-select
                         v-model="tableCreate.is_public"
                         name="public"
@@ -120,7 +123,7 @@
                       </v-select>
                     </v-col>
                     <v-col
-                      md="4">
+                      lg="4">
                       <v-select
                         v-model="tableCreate.is_schema_public"
                         name="schema-public"
@@ -175,7 +178,7 @@
               <v-container>
                 <v-row dense>
                   <v-col
-                    md="8">
+                    lg="8">
                     <v-alert
                       border="start"
                       color="success">
diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
index 804ae03c15072719f7612fd46eeca80d45b1a2b8..1c48d143ca83eafeaa6ed21eac3ee9b3190e94aa 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
@@ -32,8 +32,10 @@
               :disabled="table"
               @submit.prevent="submit">
               <v-container>
-                <v-row dense>
-                  <v-col md="4">
+                <v-row
+                  dense>
+                  <v-col
+                    lg="4">
                     <v-text-field
                       v-model="tableCreate.name"
                       :rules="[
@@ -48,7 +50,8 @@
                       :hint="$t('pages.table.subpages.import.name.hint')"
                       :label="$t('pages.table.subpages.import.name.label')" />
                   </v-col>
-                  <v-col md="4">
+                  <v-col
+                    lg="4">
                     <v-text-field
                       v-model="generatedTableName"
                       :rules="[
@@ -65,8 +68,10 @@
                       :label="$t('pages.table.subpages.import.generated.label')" />
                   </v-col>
                 </v-row>
-                <v-row dense>
-                  <v-col md="8">
+                <v-row
+                  dense>
+                  <v-col
+                    lg="8">
                     <v-textarea
                       v-model="tableCreate.description"
                       rows="2"
@@ -82,7 +87,7 @@
                 <v-row
                   dense>
                   <v-col
-                    md="4">
+                    lg="4">
                     <v-select
                       v-model="tableCreate.is_public"
                       name="public"
@@ -98,7 +103,7 @@
                     </v-select>
                   </v-col>
                   <v-col
-                    md="4">
+                    lg="4">
                     <v-select
                       v-model="tableCreate.is_schema_public"
                       name="schema-public"
@@ -146,7 +151,8 @@
             <v-container>
               <v-row
                 dense>
-                <v-col md="8">
+                <v-col
+                  lg="8">
                   <v-alert
                     border="start"
                     color="success">
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue
index f732661f369710b4637f01952f5fab930e9e4812..43e8f491d9cfdb4896b4c824aa39291c0a9a5944 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/data.vue
@@ -104,8 +104,8 @@ export default {
   },
   methods: {
     reload () {
-      this.$refs.queryResults.reExecute(Number(this.$route.params.view_id))
-      this.$refs.queryResults.reExecuteCount(Number(this.$route.params.view_id))
+      this.$refs.queryResults.reExecute(this.$route.params.view_id)
+      this.$refs.queryResults.reExecuteCount(this.$route.params.view_id)
     },
     download () {
       this.downloadLoading = true
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
index 3c0c40e33ce7546e351ea3252a051a0ebb56049e..395be401c08730d0b9880fbbe21c61ccf6bf2db7 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
@@ -72,7 +72,7 @@ if (data.value && data.value.length > 0) {
   useServerHead(identifierService.identifiersToServerHead(data.value))
   useServerSeoMeta(identifierService.identifiersToServerSeoMeta(data.value))
 }
-const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === Number(pid)).length > 0 ? data.value.filter(i => i.id === Number(pid))[0] : data.value[0]) : null)
+const identifier = ref(data.value && data.value.length > 0 ? (pid && data.value.filter(i => i.id === pid).length > 0 ? data.value.filter(i => i.id === pid)[0] : data.value[0]) : null)
 
 const cacheStore = useCacheStore()
 cacheStore.setIdentifier(identifier)
@@ -143,7 +143,7 @@ export default {
       if (!this.view || !this.view.identifiers) {
         return []
       }
-      return this.view.identifiers.filter(i => i.query_id === Number(this.$route.params.subset_id))
+      return this.view.identifiers.filter(i => i.query_id === this.$route.params.subset_id)
     },
     views () {
       if (!this.database) {
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue
index 540bbbdb5e454c725c6d5b9dc6a1da6498e5f8bc..5a1faeb431bf92be87a3b8bab8dc50c952f737e8 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist/[identifier_id]/index.vue
@@ -69,7 +69,7 @@ export default {
       if (!this.view) {
         return false
       }
-      const filter = this.view.identifiers.filter(i => i.id === Number(this.$route.params.identifier_id))
+      const filter = this.view.identifiers.filter(i => i.id === this.$route.params.identifier_id)
       return filter.length === 1 ? filter[0] : null
     },
     canPersistIdentifier () {
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue
index d027a4347b5300025f83d23adba52d78278a443f..41285c4d3be02f005736e61c44c534dce0a041e0 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/settings.vue
@@ -17,7 +17,7 @@
           <v-row
             dense>
             <v-col
-              md="4">
+              lg="4">
               <v-select
                 v-model="modify.is_public"
                 :items="dataOptions"
@@ -31,7 +31,7 @@
                 :hint="$t('pages.database.resource.data.hint', { resource: 'view' })" />
             </v-col>
             <v-col
-              md="4">
+              lg="4">
               <v-select
                 v-model="modify.is_schema_public"
                 :items="schemaOptions"
@@ -72,7 +72,7 @@
       <v-card-text>
         <v-row>
           <v-col
-            md="8">
+            lg="8">
             <v-btn
               size="small"
               variant="flat"
diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue
index 9c8dbf873d5b7ec4c13a4cde7a42a61790fdc4a3..0f52ca7fcc97e5336e713695feef1dc636b9fb3d 100644
--- a/dbrepo-ui/pages/user/info.vue
+++ b/dbrepo-ui/pages/user/info.vue
@@ -14,7 +14,8 @@
             variant="flat">
             <v-card-text>
               <v-row dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="model.id"
                     disabled
@@ -25,7 +26,8 @@
               <v-row
                 v-if="cacheUser"
                 dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="cacheUser.preferred_username"
                     disabled
@@ -56,7 +58,8 @@
                 </v-col>
               </v-row>
               <v-row dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="model.orcid"
                     :disabled="!canModifyInformation"
@@ -71,7 +74,8 @@
                 </v-col>
               </v-row>
               <v-row dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="model.firstname"
                     :disabled="!canModifyInformation || identityProvider"
@@ -83,7 +87,8 @@
                 </v-col>
               </v-row>
               <v-row dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="model.lastname"
                     :disabled="!canModifyInformation || identityProvider"
@@ -95,7 +100,8 @@
                 </v-col>
               </v-row>
               <v-row dense>
-                <v-col md="6">
+                <v-col
+                  lg="6">
                   <v-text-field
                     v-model="model.affiliation"
                     :disabled="!canModifyInformation"
diff --git a/dbrepo-upload-service/pom.xml b/dbrepo-upload-service/pom.xml
index 44b77d7bf59f95af8cabcee93d055e25216db130..e7784d34593c68e3ad1f4c26bc69f9057659aee1 100644
--- a/dbrepo-upload-service/pom.xml
+++ b/dbrepo-upload-service/pom.xml
@@ -11,9 +11,9 @@
     <groupId>at.tuwien</groupId>
     <artifactId>dbrepo-upload-service</artifactId>
     <name>dbrepo-upload-service</name>
-    <version>1.6.5</version>
+    <version>1.7.0</version>
 
-    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url>
+    <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/</url>
     <developers>
         <developer>
             <name>Martin Weise</name>
diff --git a/docker-compose.yml b/docker-compose.yml
index 94b5fc30a61c1081e194fd4eb98c45d7af9b261c..5ab6df06af90c6e46c519be04428c39dd7c69f10 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -22,6 +22,7 @@ services:
     ports:
       - "3306:3306"
     environment:
+      BITNAMI_DEBUG: true
       MARIADB_DATABASE: "${METADATA_DB:-dbrepo}"
       MARIADB_ROOT_PASSWORD: "${METADATA_DB_PASSWORD:-dbrepo}"
       MARIADB_GALERA_MARIABACKUP_PASSWORD: "${METADATA_DB_BACKUP_PASSWORD:-dbrepobackup}"
@@ -484,6 +485,7 @@ services:
     volumes:
       - dashboard-service-data:/opt/bitnami/grafana/data
     environment:
+      BITNAMI_DEBUG: true
       GF_SERVER_DOMAIN: "dashboard-service"
       GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION: "true"
       LDAP_ADMIN_USERNAME: "${IDENTITY_SERVICE_ADMIN_USERNAME:-admin}"
diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml
index 63f5f997ffc71fbe57e0d42d10d8694a315761c7..6af1965b3f2f93250717913ce464ca975decc341 100644
--- a/helm/dbrepo/Chart.yaml
+++ b/helm/dbrepo/Chart.yaml
@@ -7,8 +7,8 @@ description: Helm Chart for installing DBRepo
 sources:
   - https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services
 type: application
-version: "1.6.5"
-appVersion: "1.6.5"
+version: "1.7.0"
+appVersion: "1.7.0"
 keywords:
   - dbrepo
 maintainers:
diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md
index 3c00deb523d8a700e1ee2f36e9746dd00ae007fc..c827d39943f2ce3b2cb262abee51842f4a572d74 100644
--- a/helm/dbrepo/README.md
+++ b/helm/dbrepo/README.md
@@ -11,7 +11,7 @@ sample [
 for your deployment and update the variables, especially `hostname`.
 
 ```bash
-helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.6.5"
+helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.7.0"
 ```
 
 ## Prerequisites
@@ -34,7 +34,7 @@ variable when you increase the available Pod memory for performance.
 To install the chart with the release name `my-release`:
 
 ```bash
-helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.6.5"
+helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.7.0"
 ```
 
 The command deploys DBRepo on the Kubernetes cluster in the default configuration. The Parameters section lists the
diff --git a/helm/dbrepo/files/01-setup-schema.sql b/helm/dbrepo/files/01-setup-schema.sql
index e2bde25ed6d64f69c4f8d6e897a49a672e3f9a71..b9055cf884bdb3d310310c52a17471504cdc6fac 100644
--- a/helm/dbrepo/files/01-setup-schema.sql
+++ b/helm/dbrepo/files/01-setup-schema.sql
@@ -2,390 +2,341 @@ BEGIN;
 
 CREATE TABLE IF NOT EXISTS `mdb_users`
 (
-    id               character varying(36)  NOT NULL,
-    keycloak_id      character varying(36)  NOT NULL,
-    username         character varying(255) NOT NULL,
-    firstname        character varying(255),
-    lastname         character varying(255),
-    orcid            character varying(255),
-    affiliation      character varying(255),
-    is_internal      BOOLEAN                NOT NULL DEFAULT FALSE,
-    mariadb_password character varying(255) NOT NULL,
-    theme            character varying(255) NOT NULL default ('light'),
-    language         character varying(3)   NOT NULL default ('en'),
-    PRIMARY KEY (id),
-    UNIQUE (keycloak_id),
-    UNIQUE (username)
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    keycloak_id      VARCHAR(36)  NOT NULL,
+    username         VARCHAR(255) NOT NULL,
+    firstname        VARCHAR(255),
+    lastname         VARCHAR(255),
+    orcid            VARCHAR(255),
+    affiliation      VARCHAR(255),
+    is_internal      BOOLEAN      NOT NULL DEFAULT FALSE,
+    mariadb_password VARCHAR(255) NOT NULL,
+    theme            VARCHAR(255) NOT NULL DEFAULT ('light'),
+    language         VARCHAR(3)   NOT NULL DEFAULT ('en'),
+    PRIMARY KEY (`id`),
+    UNIQUE (`keycloak_id`),
+    UNIQUE (`username`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_images`
 (
-    id            SERIAL,
-    registry      character varying(255) NOT NULL DEFAULT 'docker.io',
-    name          character varying(255) NOT NULL,
-    version       character varying(255) NOT NULL,
-    default_port  integer                NOT NULL,
-    dialect       character varying(255) NOT NULL,
-    driver_class  character varying(255) NOT NULL,
-    jdbc_method   character varying(255) NOT NULL,
-    is_default    BOOLEAN                NOT NULL DEFAULT FALSE,
-    created       timestamp              NOT NULL DEFAULT NOW(),
-    last_modified timestamp,
-    PRIMARY KEY (id),
-    UNIQUE (name, version),
-    UNIQUE (is_default)
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    registry      VARCHAR(255) NOT NULL DEFAULT 'docker.io',
+    name          VARCHAR(255) NOT NULL,
+    version       VARCHAR(255) NOT NULL,
+    DEFAULT_port  INT          NOT NULL,
+    dialect       VARCHAR(255) NOT NULL,
+    driver_class  VARCHAR(255) NOT NULL,
+    jdbc_method   VARCHAR(255) NOT NULL,
+    is_DEFAULT    BOOLEAN      NOT NULL DEFAULT FALSE,
+    created       TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified TIMESTAMP,
+    PRIMARY KEY (`id`),
+    UNIQUE (`name`, `version`),
+    UNIQUE (`is_DEFAULT`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_containers`
 (
-    id                  SERIAL,
-    internal_name       character varying(255) NOT NULL,
-    name                character varying(255) NOT NULL,
-    host                character varying(255) NOT NULL,
-    port                integer                NOT NULL default 3306,
-    ui_host             character varying(255) NOT NULL default host,
-    ui_port             integer                NOT NULL default port,
-    ui_additional_flags text,
-    sidecar_host        character varying(255),
-    sidecar_port        integer,
-    image_id            bigint                 NOT NULL,
-    created             timestamp              NOT NULL DEFAULT NOW(),
-    last_modified       timestamp,
-    privileged_username character varying(255) NOT NULL,
-    privileged_password character varying(255) NOT NULL,
-    quota               integer                NOT NULL DEFAULT 50,
-    PRIMARY KEY (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_data`
-(
-    ID           SERIAL,
-    PROVENANCE   text,
-    FileEncoding text,
-    FileType     character varying(100),
-    Version      text,
-    Seperator    text,
-    PRIMARY KEY (ID)
+    id                  VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    internal_name       VARCHAR(255) NOT NULL,
+    name                VARCHAR(255) NOT NULL,
+    host                VARCHAR(255) NOT NULL,
+    port                INT          NOT NULL DEFAULT 3306,
+    ui_host             VARCHAR(255) NOT NULL DEFAULT host,
+    ui_port             INT          NOT NULL DEFAULT port,
+    ui_additional_flags TEXT,
+    image_id            VARCHAR(36)  NOT NULL,
+    created             TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified       TIMESTAMP,
+    privileged_username VARCHAR(255) NOT NULL,
+    privileged_password VARCHAR(255) NOT NULL,
+    quota               INT,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES mdb_images (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_licenses`
 (
-    identifier  character varying(255) NOT NULL,
-    uri         text                   NOT NULL,
-    description text                   NOT NULL,
-    PRIMARY KEY (identifier),
+    identifier  VARCHAR(255) NOT NULL,
+    uri         TEXT         NOT NULL,
+    description TEXT         NOT NULL,
+    PRIMARY KEY (`identifier`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_databases`
 (
-    id               SERIAL,
-    cid              BIGINT UNSIGNED        NOT NULL,
-    name             character varying(255) NOT NULL,
-    internal_name    character varying(255) NOT NULL,
-    exchange_name    character varying(255) NOT NULL,
-    description      text,
-    engine           character varying(20),
-    is_public        boolean                NOT NULL DEFAULT TRUE,
-    is_schema_public boolean                NOT NULL DEFAULT TRUE,
-    image            longblob,
-    owned_by         character varying(36),
-    contact_person   character varying(36),
-    created          timestamp              NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    PRIMARY KEY (id),
-    FOREIGN KEY (cid) REFERENCES mdb_containers (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id),
-    FOREIGN KEY (contact_person) REFERENCES mdb_users (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_databases_subjects`
-(
-    dbid     BIGINT                 NOT NULL,
-    subjects character varying(255) NOT NULL,
-    PRIMARY KEY (dbid, subjects)
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    cid              VARCHAR(36)  NOT NULL,
+    name             VARCHAR(255) NOT NULL,
+    internal_name    VARCHAR(255) NOT NULL,
+    exchange_name    VARCHAR(255) NOT NULL,
+    description      TEXT,
+    engine           VARCHAR(20),
+    is_public        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    image            LONGBLOB,
+    owned_by         VARCHAR(36)  NOT NULL,
+    contact_person   VARCHAR(36)  NOT NULL,
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`cid`) REFERENCES mdb_containers (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`),
+    FOREIGN KEY (`contact_person`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_tables`
 (
-    ID               SERIAL,
-    tDBID            BIGINT UNSIGNED       NOT NULL,
-    tName            VARCHAR(64)           NOT NULL,
-    internal_name    VARCHAR(64)           NOT NULL,
-    queue_name       VARCHAR(255)          NOT NULL,
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tDBID            VARCHAR(36)  NOT NULL,
+    tName            VARCHAR(64)  NOT NULL,
+    internal_name    VARCHAR(64)  NOT NULL,
+    queue_name       VARCHAR(255) NOT NULL,
     routing_key      VARCHAR(255),
     tDescription     VARCHAR(2048),
     num_rows         BIGINT,
     data_length      BIGINT,
     max_data_length  BIGINT,
     avg_row_length   BIGINT,
-    `separator`      CHAR(1),
-    quote            CHAR(1),
-    element_null     VARCHAR(50),
-    skip_lines       BIGINT,
-    element_true     VARCHAR(50),
-    element_false    VARCHAR(50),
-    Version          TEXT,
-    created          timestamp             NOT NULL DEFAULT NOW(),
-    versioned        boolean               not null default true,
-    is_public        boolean               not null default true,
-    is_schema_public boolean               not null default true,
-    owned_by         character varying(36) NOT NULL,
-    last_modified    timestamp,
-    PRIMARY KEY (ID),
-    UNIQUE (tDBID, internal_name),
-    FOREIGN KEY (tDBID) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    versioned        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_public        BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    owned_by         VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    last_modified    TIMESTAMP,
+    PRIMARY KEY (`ID`),
+    UNIQUE (`tDBID`, `internal_name`),
+    FOREIGN KEY (`tDBID`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns`
 (
-    ID               SERIAL,
-    tID              BIGINT UNSIGNED NOT NULL,
+    id               VARCHAR(36)     NOT NULL DEFAULT UUID(),
+    tID              VARCHAR(36)     NOT NULL,
     cName            VARCHAR(64),
     internal_name    VARCHAR(64)     NOT NULL,
     Datatype         ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','SERIAL','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'),
     length           BIGINT UNSIGNED NULL,
-    ordinal_position INTEGER         NOT NULL,
+    ordinal_position INT             NOT NULL,
     index_length     BIGINT UNSIGNED NULL,
     description      VARCHAR(2048),
     size             BIGINT UNSIGNED,
     d                BIGINT UNSIGNED,
-    is_null_allowed  BOOLEAN         NOT NULL DEFAULT true,
+    is_null_allowed  BOOLEAN         NOT NULL DEFAULT TRUE,
     val_min          NUMERIC         NULL,
     val_max          NUMERIC         NULL,
     mean             NUMERIC         NULL,
     median           NUMERIC         NULL,
     std_dev          Numeric         NULL,
-    created          timestamp       NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    FOREIGN KEY (tID) REFERENCES mdb_tables (ID) ON DELETE CASCADE,
-    PRIMARY KEY (ID),
-    UNIQUE (tID, internal_name)
+    created          TIMESTAMP       NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    FOREIGN KEY (`tID`) REFERENCES mdb_tables (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`ID`),
+    UNIQUE (`tID`, `internal_name`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_enums`
 (
-    id        SERIAL,
-    column_id BIGINT UNSIGNED        NOT NULL,
-    value     CHARACTER VARYING(255) NOT NULL,
-    FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE,
-    PRIMARY KEY (id)
+    id        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    column_id VARCHAR(36)  NOT NULL,
+    value     VARCHAR(255) NOT NULL,
+    FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_sets`
 (
-    id        SERIAL,
-    column_id BIGINT UNSIGNED        NOT NULL,
-    value     CHARACTER VARYING(255) NOT NULL,
-    FOREIGN KEY (column_id) REFERENCES mdb_columns (ID) ON DELETE CASCADE,
-    PRIMARY KEY (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_columns_nom`
-(
-    cID           BIGINT UNSIGNED,
-    tID           BIGINT UNSIGNED,
-    maxlength     INTEGER,
-    last_modified timestamp,
-    created       timestamp NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_columns_cat`
-(
-    cID           BIGINT UNSIGNED,
-    tID           BIGINT UNSIGNED,
-    num_cat       INTEGER,
-    --    cat_array     TEXT[],
-    last_modified timestamp,
-    created       timestamp NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    id        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    column_id VARCHAR(36)  NOT NULL,
+    value     VARCHAR(255) NOT NULL,
+    FOREIGN KEY (`column_id`) REFERENCES mdb_columns (`ID`) ON DELETE CASCADE,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key`
 (
-    fkid      SERIAL,
-    tid       BIGINT UNSIGNED NOT NULL,
-    rtid      BIGINT UNSIGNED NOT NULL,
-    name      VARCHAR(255)    NOT NULL,
-    on_update VARCHAR(50)     NULL,
-    on_delete VARCHAR(50)     NULL,
-    position  INT             NULL,
-    PRIMARY KEY (fkid),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE,
-    FOREIGN KEY (rtid) REFERENCES mdb_tables (id)
+    fkid      VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tid       VARCHAR(36)  NOT NULL,
+    rtid      VARCHAR(36)  NOT NULL,
+    name      VARCHAR(255) NOT NULL,
+    on_update VARCHAR(50)  NULL,
+    on_delete VARCHAR(50)  NULL,
+    position  INT          NULL,
+    PRIMARY KEY (`fkid`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE,
+    FOREIGN KEY (`rtid`) REFERENCES mdb_tables (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_primary_key`
 (
-    pkid SERIAL,
-    tID  BIGINT UNSIGNED NOT NULL,
-    cid  BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (pkid),
-    FOREIGN KEY (tID) REFERENCES mdb_tables (id) ON DELETE CASCADE,
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE
+    pkid VARCHAR(36) NOT NULL DEFAULT UUID(),
+    tID  VARCHAR(36) NOT NULL,
+    cid  VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`pkid`),
+    FOREIGN KEY (`tID`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE,
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_foreign_key_reference`
 (
-    id   SERIAL,
-    fkid BIGINT UNSIGNED NOT NULL,
-    cid  BIGINT UNSIGNED NOT NULL,
-    rcid BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (id),
+    id   VARCHAR(36) NOT NULL DEFAULT UUID(),
+    fkid VARCHAR(36) NOT NULL,
+    cid  VARCHAR(36) NOT NULL,
+    rcid VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`id`),
     UNIQUE (fkid, cid, rcid),
-    FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid) ON UPDATE CASCADE,
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id),
-    FOREIGN KEY (rcid) REFERENCES mdb_columns (id)
+    FOREIGN KEY (`fkid`) REFERENCES mdb_constraints_foreign_key (`fkid`) ON UPDATE CASCADE,
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`),
+    FOREIGN KEY (`rcid`) REFERENCES mdb_columns (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_unique`
 (
-    uid      SERIAL,
-    name     VARCHAR(255)    NOT NULL,
-    tid      BIGINT UNSIGNED NOT NULL,
-    position INT             NULL,
-    PRIMARY KEY (uid),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE
+    uid      VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    name     VARCHAR(255) NOT NULL,
+    tid      VARCHAR(36)  NOT NULL,
+    position INT          NULL,
+    PRIMARY KEY (`uid`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_unique_columns`
 (
-    id  SERIAL,
-    uid BIGINT UNSIGNED NOT NULL,
-    cid BIGINT UNSIGNED NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid),
-    FOREIGN KEY (cid) REFERENCES mdb_columns (id) ON DELETE CASCADE
+    id  VARCHAR(36) NOT NULL DEFAULT UUID(),
+    uid VARCHAR(36) NOT NULL,
+    cid VARCHAR(36) NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`uid`) REFERENCES mdb_constraints_unique (`uid`),
+    FOREIGN KEY (`cid`) REFERENCES mdb_columns (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_constraints_checks`
 (
-    id     SERIAL,
-    tid    BIGINT UNSIGNED NOT NULL,
-    checks VARCHAR(255)    NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (tid) REFERENCES mdb_tables (id) ON DELETE CASCADE
+    id     VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    tid    VARCHAR(36)  NOT NULL,
+    checks VARCHAR(255) NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`tid`) REFERENCES mdb_tables (`id`) ON DELETE CASCADE
 ) WITH SYSTEM VERSIONING;
 
 
 CREATE TABLE IF NOT EXISTS `mdb_concepts`
 (
-    id          SERIAL,
-    uri         text         not null,
+    id          VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    uri         TEXT         NOT NULL,
     name        VARCHAR(255) null,
     description TEXT         null,
-    created     timestamp    NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (id),
+    created     TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (`id`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_units`
 (
-    id          SERIAL,
-    uri         text         not null,
+    id          VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    uri         TEXT         NOT NULL,
     name        VARCHAR(255) null,
     description TEXT         null,
-    created     timestamp    NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (id),
+    created     TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (`id`),
     UNIQUE (uri(200))
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_concepts`
 (
-    id      BIGINT UNSIGNED NOT NULL,
-    cID     BIGINT UNSIGNED NOT NULL,
-    created timestamp       NOT NULL DEFAULT NOW(),
+    id      VARCHAR(36) NOT NULL DEFAULT UUID(),
+    cID     VARCHAR(36) NOT NULL,
+    created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cid),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_columns_units`
 (
-    id      BIGINT UNSIGNED NOT NULL,
-    cID     BIGINT UNSIGNED NOT NULL,
-    created timestamp       NOT NULL DEFAULT NOW(),
+    id      VARCHAR(36) NOT NULL DEFAULT UUID(),
+    cID     VARCHAR(36) NOT NULL,
+    created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cID),
-    FOREIGN KEY (cID) REFERENCES mdb_columns (ID)
+    FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_view`
 (
-    id               SERIAL,
-    vdbid            BIGINT UNSIGNED       NOT NULL,
-    vName            VARCHAR(64)           NOT NULL,
-    internal_name    VARCHAR(64)           NOT NULL,
-    Query            TEXT                  NOT NULL,
-    query_hash       VARCHAR(255)          NOT NULL,
-    Public           BOOLEAN               NOT NULL DEFAULT TRUE,
-    is_schema_public boolean               NOT NULL DEFAULT TRUE,
-    InitialView      BOOLEAN               NOT NULL,
-    created          timestamp             NOT NULL DEFAULT NOW(),
-    last_modified    timestamp,
-    owned_by         character varying(36) NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (vdbid) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_banner_messages`
-(
-    id            SERIAL,
-    type          ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL default 'INFO',
+    id               VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    vdbid            VARCHAR(36)  NOT NULL,
+    vName            VARCHAR(64)  NOT NULL,
+    internal_name    VARCHAR(64)  NOT NULL,
+    Query            TEXT         NOT NULL,
+    query_hash       VARCHAR(255) NOT NULL,
+    Public           BOOLEAN      NOT NULL DEFAULT TRUE,
+    is_schema_public BOOLEAN      NOT NULL DEFAULT TRUE,
+    InitialView      BOOLEAN      NOT NULL,
+    created          TIMESTAMP    NOT NULL DEFAULT NOW(),
+    last_modified    TIMESTAMP,
+    owned_by         VARCHAR(36)  NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`vdbid`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
+) WITH SYSTEM VERSIONING;
+
+CREATE TABLE IF NOT EXISTS `mdb_messages`
+(
+    id            VARCHAR(36)                       NOT NULL DEFAULT UUID(),
+    type          ENUM ('ERROR', 'WARNING', 'INFO') NOT NULL DEFAULT 'INFO',
     message       TEXT                              NOT NULL,
     link          TEXT                              NULL,
-    link_text     VARCHAR(255)                      NULL,
-    display_start timestamp                         NULL,
-    display_end   timestamp                         NULL,
-    PRIMARY KEY (id)
+    link_TEXT     VARCHAR(255)                      NULL,
+    display_start TIMESTAMP                         NULL,
+    display_end   TIMESTAMP                         NULL,
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_ontologies`
 (
-    id              SERIAL,
-    prefix          VARCHAR(8) NOT NULL,
-    uri             TEXT       NOT NULL,
+    id              VARCHAR(36) NOT NULL DEFAULT UUID(),
+    prefix          VARCHAR(8)  NOT NULL,
+    uri             TEXT        NOT NULL,
     uri_pattern     TEXT,
-    sparql_endpoint TEXT       NULL,
-    rdf_path        TEXT       NULL,
-    last_modified   timestamp,
-    created         timestamp  NOT NULL DEFAULT NOW(),
-    UNIQUE (prefix),
+    sparql_endpoint TEXT        NULL,
+    rdf_path        TEXT        NULL,
+    last_modified   TIMESTAMP,
+    created         TIMESTAMP   NOT NULL DEFAULT NOW(),
+    UNIQUE (`prefix`),
     UNIQUE (uri(200)),
-    PRIMARY KEY (id)
+    PRIMARY KEY (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_view_columns`
 (
-    id               SERIAL,
-    view_id          BIGINT UNSIGNED NOT NULL,
+    id               VARCHAR(36) NOT NULL DEFAULT UUID(),
+    view_id          VARCHAR(36) NOT NULL,
     name             VARCHAR(64),
-    internal_name    VARCHAR(64)     NOT NULL,
+    internal_name    VARCHAR(64) NOT NULL,
     column_type      ENUM ('CHAR','VARCHAR','BINARY','VARBINARY','TINYBLOB','TINYTEXT','TEXT','BLOB','MEDIUMTEXT','MEDIUMBLOB','LONGTEXT','LONGBLOB','ENUM','SET','BIT','TINYINT','BOOL','SMALLINT','MEDIUMINT','INT','BIGINT','FLOAT','DOUBLE','DECIMAL','DATE','DATETIME','TIMESTAMP','TIME','YEAR'),
-    ordinal_position INTEGER         NOT NULL,
+    ordinal_position INT         NOT NULL,
     size             BIGINT UNSIGNED,
     d                BIGINT UNSIGNED,
-    is_null_allowed  BOOLEAN         NOT NULL DEFAULT true,
-    PRIMARY KEY (id),
-    FOREIGN KEY (view_id) REFERENCES mdb_view (id) ON DELETE CASCADE,
+    is_null_allowed  BOOLEAN     NOT NULL DEFAULT TRUE,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`view_id`) REFERENCES mdb_view (`id`) ON DELETE CASCADE,
     UNIQUE (view_id, internal_name)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifiers`
 (
-    id                SERIAL,
-    dbid              BIGINT UNSIGNED                              NOT NULL,
-    qid               BIGINT UNSIGNED,
-    vid               BIGINT UNSIGNED,
-    tid               BIGINT UNSIGNED,
+    id                VARCHAR(36)                                  NOT NULL DEFAULT UUID(),
+    dbid              VARCHAR(36)                                  NOT NULL,
+    qid               VARCHAR(36)                                  NOT NULL,
+    vid               VARCHAR(36)                                  NOT NULL,
+    tid               VARCHAR(36)                                  NOT NULL,
     publisher         VARCHAR(255)                                 NOT NULL,
     language          VARCHAR(2),
-    publication_year  INTEGER                                      NOT NULL,
-    publication_month INTEGER,
-    publication_day   INTEGER,
+    publication_year  INT                                          NOT NULL,
+    publication_month INT,
+    publication_day   INT,
     identifier_type   ENUM ('DATABASE', 'SUBSET', 'VIEW', 'TABLE') NOT NULL,
     status            ENUM ('DRAFT', 'PUBLISHED')                  NOT NULL DEFAULT ('PUBLISHED'),
     query             TEXT,
@@ -398,154 +349,147 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers`
     created           TIMESTAMP                                    NOT NULL DEFAULT NOW(),
     owned_by          VARCHAR(36)                                  NOT NULL,
     last_modified     TIMESTAMP,
-    PRIMARY KEY (id), /* must be a single id from persistent identifier concept */
-    FOREIGN KEY (dbid) REFERENCES mdb_databases (id),
-    FOREIGN KEY (owned_by) REFERENCES mdb_users (id)
+    PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */
+    FOREIGN KEY (`dbid`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`owned_by`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses`
 (
-    pid        BIGINT UNSIGNED NOT NULL,
-    license_id VARCHAR(255)    NOT NULL,
+    pid        VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    license_id VARCHAR(255) NOT NULL,
     PRIMARY KEY (pid, license_id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id),
-    FOREIGN KEY (license_id) REFERENCES mdb_licenses (identifier)
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`),
+    FOREIGN KEY (`license_id`) REFERENCES mdb_licenses (`identifier`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_titles`
 (
-    id         SERIAL,
-    pid        BIGINT UNSIGNED NOT NULL,
-    title      text            NOT NULL,
+    id         VARCHAR(36) NOT NULL DEFAULT UUID(),
+    pid        VARCHAR(36) NOT NULL,
+    title      TEXT        NOT NULL,
     title_type ENUM ('ALTERNATIVE_TITLE', 'SUBTITLE', 'TRANSLATED_TITLE', 'OTHER'),
     language   VARCHAR(2),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_funders`
 (
-    id                     SERIAL,
-    pid                    BIGINT UNSIGNED NOT NULL,
-    funder_name            VARCHAR(255)    NOT NULL,
+    id                     VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    pid                    VARCHAR(36)  NOT NULL,
+    funder_name            VARCHAR(255) NOT NULL,
     funder_identifier      TEXT,
     funder_identifier_type ENUM ('CROSSREF_FUNDER_ID', 'GRID', 'ISNI', 'ROR', 'OTHER'),
-    scheme_uri             text,
+    scheme_uri             TEXT,
     award_number           VARCHAR(255),
-    award_title            text,
+    award_title            TEXT,
     language               VARCHAR(255),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions`
 (
-    id               SERIAL,
-    pid              BIGINT UNSIGNED NOT NULL,
-    description      text            NOT NULL,
+    id               VARCHAR(36) NOT NULL DEFAULT UUID(),
+    pid              VARCHAR(36) NOT NULL,
+    description      TEXT        NOT NULL,
     description_type ENUM ('ABSTRACT', 'METHODS', 'SERIES_INFORMATION', 'TABLE_OF_CONTENTS', 'TECHNICAL_INFO', 'OTHER'),
     language         VARCHAR(2),
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
-CREATE TABLE IF NOT EXISTS `mdb_related_identifiers`
+CREATE TABLE IF NOT EXISTS `mdb_identifier_related`
 (
-    id       SERIAL,
-    pid      BIGINT UNSIGNED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      NOT NULL,
-    value    varchar(255)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         NOT NULL,
+    id       VARCHAR(36)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          NOT NULL DEFAULT UUID(),
+    pid      VARCHAR(36)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          NOT NULL DEFAULT UUID(),
+    value    VARCHAR(255)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         NOT NULL,
     type     ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID')                                                                                                                                                                                                                                                                                                                                                                                                                             NOT NULL,
     relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL,
-    PRIMARY KEY (id), /* must be a single id from persistent identifier concept */
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id),
+    PRIMARY KEY (`id`), /* must be a single id from persistent identifier concept */
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`),
     UNIQUE (pid, value)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_identifier_creators`
 (
-    id                                SERIAL,
-    pid                               BIGINT UNSIGNED NOT NULL,
-    given_names                       text,
-    family_name                       text,
-    creator_name                      VARCHAR(255)    NOT NULL,
-    name_type                         ENUM ('PERSONAL', 'ORGANIZATIONAL') default 'PERSONAL',
-    name_identifier                   text,
+    id                                VARCHAR(36)  NOT NULL               DEFAULT UUID(),
+    pid                               VARCHAR(36)  NOT NULL,
+    given_names                       TEXT,
+    family_name                       TEXT,
+    creator_name                      VARCHAR(255) NOT NULL,
+    name_type                         ENUM ('PERSONAL', 'ORGANIZATIONAL') DEFAULT 'PERSONAL',
+    name_identifier                   TEXT,
     name_identifier_scheme            ENUM ('ROR', 'GRID', 'ISNI', 'ORCID'),
-    name_identifier_scheme_uri        text,
+    name_identifier_scheme_uri        TEXT,
     affiliation                       VARCHAR(255),
-    affiliation_identifier            text,
+    affiliation_identifier            TEXT,
     affiliation_identifier_scheme     ENUM ('ROR', 'GRID', 'ISNI'),
-    affiliation_identifier_scheme_uri text,
-    PRIMARY KEY (id),
-    FOREIGN KEY (pid) REFERENCES mdb_identifiers (id)
-) WITH SYSTEM VERSIONING;
-
-CREATE TABLE IF NOT EXISTS `mdb_update`
-(
-    uUserID character varying(255) NOT NULL,
-    uDBID   BIGINT UNSIGNED        NOT NULL,
-    created timestamp              NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (uUserID, uDBID),
-    FOREIGN KEY (uDBID) REFERENCES mdb_databases (id)
+    affiliation_identifier_scheme_uri TEXT,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`pid`) REFERENCES mdb_identifiers (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_access`
 (
-    aUserID  character varying(255) NOT NULL,
-    aDBID    BIGINT UNSIGNED REFERENCES mdb_databases (id),
+    aUserID  VARCHAR(255) NOT NULL,
+    aDBID    VARCHAR(36)  NOT NULL,
     attime   TIMESTAMP,
     download BOOLEAN,
-    created  timestamp              NOT NULL DEFAULT NOW(),
-    PRIMARY KEY (aUserID, aDBID)
+    created  TIMESTAMP    NOT NULL DEFAULT NOW(),
+    PRIMARY KEY (aUserID, aDBID),
+    FOREIGN KEY (`aDBID`) REFERENCES mdb_databases (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_have_access`
 (
-    user_id     character varying(36)                   NOT NULL,
-    database_id BIGINT UNSIGNED REFERENCES mdb_databases (id),
+    user_id     VARCHAR(36)                             NOT NULL,
+    database_id VARCHAR(36)                             NOT NULL,
     access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL,
-    created     timestamp                               NOT NULL DEFAULT NOW(),
+    created     TIMESTAMP                               NOT NULL DEFAULT NOW(),
     PRIMARY KEY (user_id, database_id),
-    FOREIGN KEY (user_id) REFERENCES mdb_users (id)
+    FOREIGN KEY (`database_id`) REFERENCES mdb_databases (`id`),
+    FOREIGN KEY (`user_id`) REFERENCES mdb_users (`id`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_image_types`
 (
-    id            SERIAL,
-    image_id      BIGINT UNSIGNED NOT NULL,
-    display_name  varchar(255)    NOT NULL,
-    value         varchar(255)    NOT NULL,
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    image_id      VARCHAR(36)  NOT NULL,
+    display_name  VARCHAR(255) NOT NULL,
+    value         VARCHAR(255) NOT NULL,
     size_min      INT UNSIGNED,
     size_max      INT UNSIGNED,
-    size_default  INT UNSIGNED,
-    size_required BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no size',
+    size_DEFAULT  INT UNSIGNED,
+    size_required BOOLEAN comment 'When setting NULL, the service assumes the data type has no size',
     size_step     INT UNSIGNED,
     d_min         INT UNSIGNED,
     d_max         INT UNSIGNED,
-    d_default     INT UNSIGNED,
-    d_required    BOOLEAN COMMENT 'When setting NULL, the service assumes the data type has no d',
+    d_DEFAULT     INT UNSIGNED,
+    d_required    BOOLEAN comment 'When setting NULL, the service assumes the data type has no d',
     d_step        INT UNSIGNED,
     type_hint     TEXT,
     data_hint     TEXT,
-    documentation TEXT            NOT NULL,
-    is_generated  BOOLEAN         NOT NULL,
-    is_quoted     BOOLEAN         NOT NULL,
-    is_buildable  BOOLEAN         NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`),
-    UNIQUE (value)
+    documentation TEXT         NOT NULL,
+    is_generated  BOOLEAN      NOT NULL,
+    is_quoted     BOOLEAN      NOT NULL,
+    is_buildable  BOOLEAN      NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`),
+    UNIQUE (`value`)
 ) WITH SYSTEM VERSIONING;
 
 CREATE TABLE IF NOT EXISTS `mdb_image_operators`
 (
-    id            SERIAL,
-    image_id      BIGINT UNSIGNED NOT NULL,
-    display_name  varchar(255)    NOT NULL,
-    value         varchar(255)    NOT NULL,
-    documentation TEXT            NOT NULL,
-    PRIMARY KEY (id),
-    FOREIGN KEY (image_id) REFERENCES `mdb_images` (`id`),
-    UNIQUE (value)
+    id            VARCHAR(36)  NOT NULL DEFAULT UUID(),
+    image_id      VARCHAR(36)  NOT NULL,
+    display_name  VARCHAR(255) NOT NULL,
+    value         VARCHAR(255) NOT NULL,
+    documentation TEXT         NOT NULL,
+    PRIMARY KEY (`id`),
+    FOREIGN KEY (`image_id`) REFERENCES `mdb_images` (`id`),
+    UNIQUE (image_id, value)
 ) WITH SYSTEM VERSIONING;
 
 COMMIT;
@@ -558,110 +502,121 @@ VALUES ('CC0-1.0', 'https://creativecommons.org/publicdomain/zero/1.0/legalcode'
        ('CC-BY-4.0', 'https://creativecommons.org/licenses/by/4.0/legalcode',
         'The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.');
 
-INSERT INTO `mdb_images` (name, registry, version, default_port, dialect, driver_class, jdbc_method)
-VALUES ('mariadb', 'docker.io', '11.1.3', 3306, 'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver',
-        'mariadb');
+INSERT INTO `mdb_images` (id, name, registry, version, DEFAULT_port, dialect, driver_class, jdbc_method)
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'mariadb', 'docker.io', '11.1.3', 3306,
+        'org.hibernate.dialect.MariaDBDialect', 'org.mariadb.jdbc.Driver', 'mariadb');
 
-INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_default, size_required,
-                               size_step, d_min, d_max, d_default, d_required, d_step, type_hint, data_hint,
+INSERT INTO `mdb_image_types` (image_id, display_name, value, size_min, size_max, size_DEFAULT, size_required,
+                               size_step, d_min, d_max, d_DEFAULT, d_required, d_step, type_hint, data_hint,
                                documentation, is_quoted, is_buildable, is_generated)
-VALUES (1, 'BIGINT(size)', 'bigint', 0, null, null, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bigint/', false, true, false),
-       (1, 'BINARY(size)', 'binary', 0, 255, 255, true, 1, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/binary/', false, true, false),
-       (1, 'BIT(size)', 'bit', 0, 64, null, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bit/', false, true, false),
-       (1, 'BLOB(size)', 'blob', 0, 65535, null, false, 1, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/blob/', false, false, false),
-       (1, 'BOOL', 'bool', null, null, null, null, null, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/bool/', false, true, false),
-       (1, 'CHAR(size)', 'char', 0, 255, 255, false, 1, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/char/', false, true, false),
-       (1, 'DATE', 'date', null, null, null, null, null, null, null, null, null, null,
-        'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD',
-        'https://mariadb.com/kb/en/date/', true, true, false),
-       (1, 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null, null, null,
-        'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9',
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIGINT(size)', 'bigint', 0, null, null, FALSE, 1, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/bigint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BINARY(size)', 'binary', 0, 255, 255, TRUE, 1, null, null, null, null,
+        null, 'size in Bytes', null, 'https://mariadb.com/kb/en/binary/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BIT(size)', 'bit', 0, 64, null, FALSE, 1, null, null, null, null, null,
+        null, null, 'https://mariadb.com/kb/en/bit/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BLOB(size)', 'blob', 0, 65535, null, FALSE, 1, null, null, null, null,
+        null, 'size in Bytes', null, 'https://mariadb.com/kb/en/blob/', FALSE, FALSE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'BOOL', 'bool', null, null, null, null, null, null, null, null, null,
+        null, null, null, 'https://mariadb.com/kb/en/bool/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'CHAR(size)', 'char', 0, 255, 255, FALSE, 1, null, null, null, null,
+        null, null, null, 'https://mariadb.com/kb/en/char/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATE', 'date', null, null, null, null, null, null, null, null, null,
+        null, 'min. 1000-01-01, max. 9999-12-31', 'e.g. YYYY-MM-DD, YY-MM-DD, YYMMDD, YYYY/MM/DD',
+        'https://mariadb.com/kb/en/date/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DATETIME(fsp)', 'datetime', 0, 6, null, null, 1, null, null, null,
+        null, null, 'fsp=microsecond precision, min. 1000-01-01 00:00:00.0, max. 9999-12-31 23:59:59.9',
         'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD',
-        'https://mariadb.com/kb/en/datetime/', true, true, false),
-       (1, 'DECIMAL(size, d)', 'decimal', 0, 65, null, false, 1, 0, 38, null, false, null, null, null,
-        'https://mariadb.com/kb/en/decimal/', false, true, false),
-       (1, 'DOUBLE(size, d)', 'double', null, null, null, false, null, null, null, null, false, null, null, null,
-        'https://mariadb.com/kb/en/double/', false, true, false),
-       (1, 'ENUM(v1,v2,...)', 'enum', null, null, null, null, null, null, null, null, null, null, null,
-        'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/enum/', true, true, false),
-       (1, 'FLOAT(size)', 'float', null, null, null, false, null, null, null, null, null, null, null, null,
-        'https://mariadb.com/kb/en/float/', false, true, false),
-       (1, 'INT(size)', 'int', null, null, null, false, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/int/', false, true, false),
-       (1, 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null,
-        'https://mariadb.com/kb/en/longblob/', false, true, false),
-       (1, 'LONGTEXT', 'longtext', null, null, null, null, null, null, null, null, null, null, 'max. 3.999 GiB', null,
-        'https://mariadb.com/kb/en/longtext/', true, true, false),
-       (1, 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null, null, null, null, 'max. 15.999 MiB',
-        null, 'https://mariadb.com/kb/en/mediumblob/', false, true, false),
-       (1, 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/mediumint/', false, true, false),
-       (1, 'MEDIUMTEXT', 'mediumtext', null, null, null, null, null, null, null, null, null, null, 'size in Bytes',
-        null, 'https://mariadb.com/kb/en/mediumtext/', true, true, false),
-       (1, 'SERIAL', 'serial', null, null, null, null, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/bigint/', true, true, true),
-       (1, 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null, null, null, null,
-        'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', true, true, false),
-       (1, 'SMALLINT(size)', 'smallint', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes',
-        null, 'https://mariadb.com/kb/en/smallint/', false, true, false),
-       (1, 'TEXT(size)', 'text', 0, null, null, false, null, null, null, null, null, null, 'size in Bytes', null,
-        'https://mariadb.com/kb/en/text/', true, true, false),
-       (1, 'TIME(fsp)', 'time', 0, 6, 0, false, null, null, null, null, null, null,
+        'https://mariadb.com/kb/en/datetime/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DECIMAL(size, d)', 'decimal', 0, 65, null, FALSE, 1, 0, 38, null,
+        FALSE, null, null, null, 'https://mariadb.com/kb/en/decimal/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'DOUBLE(size, d)', 'double', null, null, null, FALSE, null, null, null,
+        null, FALSE, null, null, null, 'https://mariadb.com/kb/en/double/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ENUM(v1,v2,...)', 'ENUM', null, null, null, null, null, null, null,
+        null, null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/ENUM/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'FLOAT(size)', 'float', null, null, null, FALSE, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/float/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'INT(size)', 'int', null, null, null, FALSE, null, null, null, null,
+        null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/int/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGBLOB', 'longblob', null, null, null, null, null, null, null, null,
+        null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longblob/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LONGTEXT', 'longTEXT', null, null, null, null, null, null, null, null,
+        null, null, 'max. 3.999 GiB', null, 'https://mariadb.com/kb/en/longTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMBLOB', 'mediumblob', null, null, null, null, null, null, null,
+        null, null, null, 'max. 15.999 MiB', null, 'https://mariadb.com/kb/en/mediumblob/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMINT', 'mediumint', null, null, null, null, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'MEDIUMTEXT', 'mediumTEXT', null, null, null, null, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/mediumTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SERIAL', 'serial', null, null, null, null, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/bigint/', TRUE, TRUE, TRUE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SET(v1,v2,...)', 'set', null, null, null, null, null, null, null, null,
+        null, null, null, 'e.g. value1, value2, ...', 'https://mariadb.com/kb/en/set/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'SMALLINT(size)', 'smallint', 0, null, null, FALSE, null, null, null,
+        null, null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/smallint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TEXT(size)', 'TEXT', 0, null, null, FALSE, null, null, null, null,
+        null, null, 'size in Bytes', null, 'https://mariadb.com/kb/en/TEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIME(fsp)', 'time', 0, 6, 0, FALSE, null, null, null, null, null, null,
         'fsp=microsecond precision, min. 0, max. 6', 'e.g. HH:MM:SS, HH:MM, HHMMSS, H:M:S',
-        'https://mariadb.com/kb/en/time/', true, true, false),
-       (1, 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, false, null, null, null, null, null, null,
-        'fsp=microsecond precision, min. 0, max. 6',
+        'https://mariadb.com/kb/en/time/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TIMESTAMP(fsp)', 'timestamp', 0, 6, 0, FALSE, null, null, null, null,
+        null, null, 'fsp=microsecond precision, min. 0, max. 6',
         'e.g. YYYY-MM-DD HH:MM:SS, YY-MM-DD HH:MM:SS, YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, YYMMDD',
-        'https://mariadb.com/kb/en/timestamp/', true, true, false),
-       (1, 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null, null, null, null,
-        'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', false, true, false),
-       (1, 'TINYINT(size)', 'tinyint', 0, null, null, false, null, null, null, null, null, null, null,
-        'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', false, true, false),
-       (1, 'TINYTEXT', 'tinytext', null, null, null, null, null, null, null, null, null, null, null,
-        'max. 255 characters', 'https://mariadb.com/kb/en/tinytext/', true, true, false),
-       (1, 'YEAR', 'year', 2, 4, null, false, 2, null, null, null, null, null, 'min. 1901, max. 2155', 'e.g. YYYY, YY',
-        'https://mariadb.com/kb/en/year/', false, true, false),
-       (1, 'VARBINARY(size)', 'varbinary', 0, null, null, true, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/varbinary/', false, true, false),
-       (1, 'VARCHAR(size)', 'varchar', 0, 65532, 255, true, null, null, null, null, null, null, null,
-        null, 'https://mariadb.com/kb/en/varchar/', false, true, false);
+        'https://mariadb.com/kb/en/timestamp/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYBLOB', 'tinyblob', null, null, null, null, null, null, null, null,
+        null, null, null, 'fsp=microsecond precision, min. 0, max. 6', 'https://mariadb.com/kb/en/timestamp/', FALSE,
+        TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYINT(size)', 'tinyint', 0, null, null, FALSE, null, null, null,
+        null, null, null, null, 'size in Bytes', 'https://mariadb.com/kb/en/tinyint/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'TINYTEXT', 'tinyTEXT', null, null, null, null, null, null, null, null,
+        null, null, null, 'max. 255 characters', 'https://mariadb.com/kb/en/tinyTEXT/', TRUE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'YEAR', 'year', 2, 4, null, FALSE, 2, null, null, null, null, null,
+        'min. 1901, max. 2155', 'e.g. YYYY, YY', 'https://mariadb.com/kb/en/year/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARBINARY(size)', 'varbinary', 0, null, null, TRUE, null, null, null,
+        null, null, null, null, null, 'https://mariadb.com/kb/en/varbinary/', FALSE, TRUE, FALSE),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'VARCHAR(size)', 'VARCHAR', 0, 65532, 255, TRUE, null, null, null, null,
+        null, null, null, null, 'https://mariadb.com/kb/en/VARCHAR/', FALSE, TRUE, FALSE);
+
 
 INSERT INTO `mdb_image_operators` (image_id, display_name, value, documentation)
-VALUES (1, 'Equal operator', '=', 'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'),
-       (1, 'NULL-safe equal operator', '<=>', 'https://mariadb.com/kb/en/null-safe-equal/'),
-       (1, 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'),
-       (1, 'Less than or equal operator', '<=', 'https://mariadb.com/kb/en/less-than-or-equal/'),
-       (1, 'Greater-than operator', '>', 'https://mariadb.com/kb/en/greater-than/'),
-       (1, 'Greater than or equal operator', '>=', 'https://mariadb.com/kb/en/greater-than-or-equal/'),
-       (1, 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'),
-       (1, 'Addition operator', '+', 'https://mariadb.com/kb/en/addition-operator/'),
-       (1, 'Division operator', '/', 'https://mariadb.com/kb/en/division-operator/'),
-       (1, 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'),
-       (1, 'Multiplication operator', '*', 'https://mariadb.com/kb/en/multiplication-operator/'),
-       (1, 'Subtraction operator', '-', 'https://mariadb.com/kb/en/subtraction-operator-/'),
-       (1, 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'),
-       (1, 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'),
-       (1, 'IN', 'IN', 'https://mariadb.com/kb/en/in/'),
-       (1, 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'),
-       (1, 'IS', 'IS', 'https://mariadb.com/kb/en/is/'),
-       (1, 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'),
-       (1, 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'),
-       (1, 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'),
-       (1, 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'),
-       (1, 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'),
-       (1, 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'),
-       (1, 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'),
-       (1, 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'),
-       (1, 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'),
-       (1, 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'),
-       (1, 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'),
-       (1, 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/');
+VALUES ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Equal operator', '=',
+        'https://mariadb.com/kb/en/assignment-operators-assignment-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NULL-safe equal operator', '<=>',
+        'https://mariadb.com/kb/en/null-safe-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less-than operator', '<', 'https://mariadb.com/kb/en/less-than/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Less than or equal operator', '<=',
+        'https://mariadb.com/kb/en/less-than-or-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater-than operator', '>',
+        'https://mariadb.com/kb/en/greater-than/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Greater than or equal operator', '>=',
+        'https://mariadb.com/kb/en/greater-than-or-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Not equal operator', '!=', 'https://mariadb.com/kb/en/not-equal/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Addition operator', '+',
+        'https://mariadb.com/kb/en/addition-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Division operator', '/',
+        'https://mariadb.com/kb/en/division-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Modulo operator', '%', 'https://mariadb.com/kb/en/modulo-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Multiplication operator', '*',
+        'https://mariadb.com/kb/en/multiplication-operator/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Subtraction operator', '-',
+        'https://mariadb.com/kb/en/subtraction-operator-/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'LIKE', 'LIKE', 'https://mariadb.com/kb/en/like/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT LIKE', 'NOT LIKE', 'https://mariadb.com/kb/en/not-like/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IN', 'IN', 'https://mariadb.com/kb/en/in/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT IN', 'NOT IN', 'https://mariadb.com/kb/en/not-in/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS', 'IS', 'https://mariadb.com/kb/en/is/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT', 'IS NOT', 'https://mariadb.com/kb/en/is-not/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NOT NULL', 'IS NOT NULL', 'https://mariadb.com/kb/en/is-not-null/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'IS NULL', 'IS NULL', 'https://mariadb.com/kb/en/is-null/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'ISNULL', 'ISNULL', 'https://mariadb.com/kb/en/isnull/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'REGEXP', 'REGEXP', 'https://mariadb.com/kb/en/regexp/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'NOT REGEXP', 'NOT REGEXP', 'https://mariadb.com/kb/en/not-regexp/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise AND', '&', 'https://mariadb.com/kb/en/bitwise_and/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise OR', '|', 'https://mariadb.com/kb/en/bitwise-or/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise XOR', '^', 'https://mariadb.com/kb/en/bitwise-xor/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Bitwise NOT', '~', 'https://mariadb.com/kb/en/bitwise-not/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Left shift', '<<', 'https://mariadb.com/kb/en/shift-left/'),
+       ('d79cb089-363c-488b-9717-649e44d8fcc5', 'Right shift', '>>', 'https://mariadb.com/kb/en/shift-right/');
 
 INSERT
 INTO `mdb_ontologies` (prefix, uri, uri_pattern, sparql_endpoint, rdf_path)
diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar
index f370c8825750a431296ef68c3d482a2e4eee9389..8da93ba40f621cea1db4e46414fd28ef77856fc4 100644
Binary files a/helm/dbrepo/files/create-event-listener.jar and b/helm/dbrepo/files/create-event-listener.jar differ
diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml
index 8a23308aff3c047f2fdaec2f56b9768f9d282e54..ff5562eebc310b204b49694fd0c53134a0cbbbf1 100644
--- a/helm/dbrepo/values.yaml
+++ b/helm/dbrepo/values.yaml
@@ -122,7 +122,7 @@ authservice:
   setupJob:
     image:
       ## @skip authservice.setupJob.image.name
-      name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.6.5
+      name: registry.datalab.tuwien.ac.at/dbrepo/auth-service-init:1.7.0
     ## @param authservice.setupJob.resourcesPreset The container resource preset
     resourcesPreset: "nano"
     ## @param authservice.setupJob.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
@@ -415,7 +415,7 @@ analyseservice:
   enabled: true
   image:
     ## @skip analyseservice.image.name
-    name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.5
+    name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.7.0
   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
   podSecurityContext:
     ## @param analyseservice.podSecurityContext.enabled Enable pods' Security Context
@@ -476,7 +476,7 @@ metadataservice:
   enabled: true
   image:
     ## @skip metadataservice.image.name
-    name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.5
+    name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.7.0
   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
   podSecurityContext:
     ## @param metadataservice.podSecurityContext.enabled Enable pods' Security Context
@@ -573,7 +573,7 @@ dataservice:
   endpoint: http://data-service
   image:
     ## @skip dataservice.image.name
-    name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.5
+    name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.7.0
   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
   podSecurityContext:
     ## @param dataservice.podSecurityContext.enabled Enable pods' Security Context
@@ -659,7 +659,7 @@ searchservice:
   endpoint: http://search-service
   image:
     ## @skip searchservice.image.name
-    name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.5
+    name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.7.0
   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
   podSecurityContext:
     ## @param searchservice.podSecurityContext.enabled Enable pods' Security Context
@@ -706,7 +706,7 @@ searchservice:
   init:
     image:
       ## @skip searchservice.init.image.name
-      name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.5
+      name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.7.0
     ## @param searchservice.init.resourcesPreset The container resource preset
     resourcesPreset: "nano"
     ## @param searchservice.init.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
@@ -767,7 +767,7 @@ storageservice:
   init:
     image:
       ## @skip storageservice.init.image.name
-      name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.5
+      name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.7.0
     s3:
       ## @param storageservice.init.s3.endpoint The S3-capable endpoint the microservice connects to.
       endpoint: http://storage-service-s3:8333
@@ -876,7 +876,7 @@ ui:
   enabled: true
   image:
     ## @skip ui.image.name
-    name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.5
+    name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.7.0
   ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
   podSecurityContext:
     ## @param ui.podSecurityContext.enabled Enable pods' Security Context
diff --git a/install.sh b/install.sh
index 004a29ff1f5ff20445ba5f49f9ed8520eb228429..6de016007f4e4eab84cd331a0a1a7aafca046b38 100644
--- a/install.sh
+++ b/install.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # preset
-VERSION="1.6.5"
+VERSION="1.7.0"
 MIN_CPU=8
 MIN_RAM=4
 MIN_MAP_COUNT=262144
diff --git a/lib/python/.coveragerc b/lib/python/.coveragerc
new file mode 100644
index 0000000000000000000000000000000000000000..a387be84259ecf1c8b1387a407e3cfc528960a30
--- /dev/null
+++ b/lib/python/.coveragerc
@@ -0,0 +1,9 @@
+[report]
+omit =
+    # omit tests
+    ./tests/*
+    # omit ext lib
+    ./omlib/*
+
+[html]
+directory = htmlcov
diff --git a/lib/python/coverage.xml b/lib/python/coverage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c3ca2d8955982cd6cfb705f5b102bf28d8d0be2
--- /dev/null
+++ b/lib/python/coverage.xml
@@ -0,0 +1,1798 @@
+<?xml version="1.0" ?>
+<coverage version="7.6.12" timestamp="1740131337201" lines-valid="1752" lines-covered="1699" line-rate="0.9697" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
+	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.12 -->
+	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
+	<sources>
+		<source>/home/mweise/Projects/fda-services/lib/python</source>
+	</sources>
+	<packages>
+		<package name="dbrepo" line-rate="0.9376" branch-rate="0" complexity="0">
+			<classes>
+				<class name="RestClient.py" filename="dbrepo/RestClient.py" complexity="0" line-rate="0.9503" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="1" hits="1"/>
+						<line number="2" hits="1"/>
+						<line number="3" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="6" hits="1"/>
+						<line number="7" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="31" hits="1"/>
+						<line number="32" hits="1"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="41" hits="1"/>
+						<line number="42" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="44" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="51" hits="1"/>
+						<line number="53" hits="1"/>
+						<line number="54" hits="1"/>
+						<line number="55" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="60" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="62" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="66" hits="1"/>
+						<line number="67" hits="1"/>
+						<line number="68" hits="1"/>
+						<line number="69" hits="1"/>
+						<line number="70" hits="1"/>
+						<line number="71" hits="1"/>
+						<line number="72" hits="1"/>
+						<line number="73" hits="1"/>
+						<line number="74" hits="1"/>
+						<line number="75" hits="1"/>
+						<line number="76" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="80" hits="1"/>
+						<line number="86" hits="1"/>
+						<line number="87" hits="1"/>
+						<line number="88" hits="1"/>
+						<line number="89" hits="1"/>
+						<line number="90" hits="1"/>
+						<line number="92" hits="1"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="102" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="105" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="116" hits="1"/>
+						<line number="117" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="121" hits="1"/>
+						<line number="124" hits="1"/>
+						<line number="134" hits="1"/>
+						<line number="135" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="138" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="142" hits="1"/>
+						<line number="143" hits="1"/>
+						<line number="146" hits="1"/>
+						<line number="166" hits="1"/>
+						<line number="167" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="173" hits="1"/>
+						<line number="174" hits="1"/>
+						<line number="175" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="177" hits="1"/>
+						<line number="178" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="182" hits="1"/>
+						<line number="190" hits="1"/>
+						<line number="191" hits="1"/>
+						<line number="192" hits="1"/>
+						<line number="193" hits="1"/>
+						<line number="194" hits="1"/>
+						<line number="195" hits="1"/>
+						<line number="198" hits="1"/>
+						<line number="207" hits="1"/>
+						<line number="208" hits="1"/>
+						<line number="209" hits="1"/>
+						<line number="210" hits="1"/>
+						<line number="211" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="213" hits="1"/>
+						<line number="214" hits="1"/>
+						<line number="217" hits="1"/>
+						<line number="225" hits="1"/>
+						<line number="226" hits="1"/>
+						<line number="227" hits="1"/>
+						<line number="228" hits="1"/>
+						<line number="229" hits="1"/>
+						<line number="230" hits="1"/>
+						<line number="233" hits="1"/>
+						<line number="240" hits="1"/>
+						<line number="241" hits="1"/>
+						<line number="242" hits="1"/>
+						<line number="243" hits="1"/>
+						<line number="244" hits="1"/>
+						<line number="247" hits="1"/>
+						<line number="258" hits="1"/>
+						<line number="259" hits="1"/>
+						<line number="260" hits="1"/>
+						<line number="261" hits="1"/>
+						<line number="262" hits="1"/>
+						<line number="263" hits="1"/>
+						<line number="264" hits="1"/>
+						<line number="265" hits="1"/>
+						<line number="266" hits="1"/>
+						<line number="267" hits="1"/>
+						<line number="270" hits="1"/>
+						<line number="290" hits="1"/>
+						<line number="291" hits="1"/>
+						<line number="294" hits="1"/>
+						<line number="295" hits="1"/>
+						<line number="296" hits="1"/>
+						<line number="297" hits="1"/>
+						<line number="298" hits="1"/>
+						<line number="299" hits="1"/>
+						<line number="300" hits="1"/>
+						<line number="301" hits="1"/>
+						<line number="302" hits="1"/>
+						<line number="303" hits="1"/>
+						<line number="304" hits="1"/>
+						<line number="305" hits="1"/>
+						<line number="306" hits="1"/>
+						<line number="307" hits="1"/>
+						<line number="308" hits="1"/>
+						<line number="309" hits="1"/>
+						<line number="312" hits="1"/>
+						<line number="336" hits="1"/>
+						<line number="337" hits="1"/>
+						<line number="342" hits="1"/>
+						<line number="343" hits="1"/>
+						<line number="344" hits="1"/>
+						<line number="345" hits="1"/>
+						<line number="346" hits="1"/>
+						<line number="347" hits="1"/>
+						<line number="348" hits="1"/>
+						<line number="349" hits="1"/>
+						<line number="350" hits="1"/>
+						<line number="351" hits="1"/>
+						<line number="352" hits="1"/>
+						<line number="353" hits="1"/>
+						<line number="356" hits="1"/>
+						<line number="373" hits="1"/>
+						<line number="374" hits="1"/>
+						<line number="376" hits="1"/>
+						<line number="377" hits="1"/>
+						<line number="378" hits="1"/>
+						<line number="379" hits="1"/>
+						<line number="380" hits="1"/>
+						<line number="381" hits="1"/>
+						<line number="382" hits="1"/>
+						<line number="383" hits="1"/>
+						<line number="384" hits="1"/>
+						<line number="385" hits="1"/>
+						<line number="386" hits="1"/>
+						<line number="388" hits="1"/>
+						<line number="389" hits="1"/>
+						<line number="390" hits="1"/>
+						<line number="393" hits="1"/>
+						<line number="409" hits="1"/>
+						<line number="410" hits="1"/>
+						<line number="411" hits="1"/>
+						<line number="412" hits="1"/>
+						<line number="413" hits="1"/>
+						<line number="414" hits="1"/>
+						<line number="415" hits="1"/>
+						<line number="416" hits="1"/>
+						<line number="417" hits="1"/>
+						<line number="418" hits="1"/>
+						<line number="419" hits="1"/>
+						<line number="420" hits="1"/>
+						<line number="421" hits="1"/>
+						<line number="423" hits="1"/>
+						<line number="424" hits="1"/>
+						<line number="426" hits="1"/>
+						<line number="429" hits="1"/>
+						<line number="444" hits="1"/>
+						<line number="445" hits="1"/>
+						<line number="446" hits="1"/>
+						<line number="447" hits="1"/>
+						<line number="448" hits="1"/>
+						<line number="449" hits="1"/>
+						<line number="450" hits="1"/>
+						<line number="451" hits="1"/>
+						<line number="452" hits="1"/>
+						<line number="453" hits="1"/>
+						<line number="454" hits="1"/>
+						<line number="455" hits="1"/>
+						<line number="456" hits="1"/>
+						<line number="457" hits="1"/>
+						<line number="458" hits="1"/>
+						<line number="459" hits="1"/>
+						<line number="460" hits="1"/>
+						<line number="462" hits="1"/>
+						<line number="463" hits="1"/>
+						<line number="464" hits="1"/>
+						<line number="467" hits="1"/>
+						<line number="491" hits="1"/>
+						<line number="492" hits="1"/>
+						<line number="495" hits="1"/>
+						<line number="496" hits="1"/>
+						<line number="497" hits="1"/>
+						<line number="498" hits="1"/>
+						<line number="499" hits="1"/>
+						<line number="500" hits="1"/>
+						<line number="501" hits="1"/>
+						<line number="502" hits="1"/>
+						<line number="503" hits="1"/>
+						<line number="504" hits="1"/>
+						<line number="505" hits="1"/>
+						<line number="506" hits="1"/>
+						<line number="507" hits="1"/>
+						<line number="508" hits="1"/>
+						<line number="509" hits="1"/>
+						<line number="510" hits="1"/>
+						<line number="513" hits="1"/>
+						<line number="525" hits="1"/>
+						<line number="526" hits="1"/>
+						<line number="527" hits="1"/>
+						<line number="528" hits="1"/>
+						<line number="529" hits="1"/>
+						<line number="530" hits="1"/>
+						<line number="531" hits="1"/>
+						<line number="532" hits="1"/>
+						<line number="533" hits="1"/>
+						<line number="534" hits="1"/>
+						<line number="537" hits="1"/>
+						<line number="550" hits="1"/>
+						<line number="551" hits="1"/>
+						<line number="552" hits="1"/>
+						<line number="553" hits="1"/>
+						<line number="554" hits="1"/>
+						<line number="555" hits="1"/>
+						<line number="556" hits="1"/>
+						<line number="557" hits="1"/>
+						<line number="558" hits="1"/>
+						<line number="559" hits="1"/>
+						<line number="562" hits="1"/>
+						<line number="576" hits="1"/>
+						<line number="577" hits="1"/>
+						<line number="578" hits="1"/>
+						<line number="579" hits="1"/>
+						<line number="580" hits="1"/>
+						<line number="581" hits="1"/>
+						<line number="582" hits="1"/>
+						<line number="583" hits="1"/>
+						<line number="584" hits="1"/>
+						<line number="585" hits="1"/>
+						<line number="586" hits="1"/>
+						<line number="587" hits="1"/>
+						<line number="588" hits="1"/>
+						<line number="589" hits="1"/>
+						<line number="590" hits="1"/>
+						<line number="593" hits="1"/>
+						<line number="606" hits="1"/>
+						<line number="607" hits="1"/>
+						<line number="608" hits="1"/>
+						<line number="609" hits="1"/>
+						<line number="610" hits="1"/>
+						<line number="611" hits="1"/>
+						<line number="612" hits="1"/>
+						<line number="613" hits="1"/>
+						<line number="614" hits="1"/>
+						<line number="615" hits="1"/>
+						<line number="616" hits="1"/>
+						<line number="619" hits="1"/>
+						<line number="633" hits="1"/>
+						<line number="634" hits="1"/>
+						<line number="635" hits="1"/>
+						<line number="636" hits="1"/>
+						<line number="637" hits="1"/>
+						<line number="638" hits="1"/>
+						<line number="639" hits="1"/>
+						<line number="640" hits="1"/>
+						<line number="641" hits="1"/>
+						<line number="642" hits="1"/>
+						<line number="643" hits="1"/>
+						<line number="644" hits="1"/>
+						<line number="645" hits="1"/>
+						<line number="646" hits="1"/>
+						<line number="649" hits="1"/>
+						<line number="660" hits="1"/>
+						<line number="661" hits="1"/>
+						<line number="662" hits="1"/>
+						<line number="663" hits="1"/>
+						<line number="664" hits="1"/>
+						<line number="665" hits="1"/>
+						<line number="666" hits="1"/>
+						<line number="667" hits="1"/>
+						<line number="670" hits="1"/>
+						<line number="683" hits="1"/>
+						<line number="684" hits="1"/>
+						<line number="685" hits="1"/>
+						<line number="686" hits="1"/>
+						<line number="687" hits="1"/>
+						<line number="688" hits="1"/>
+						<line number="689" hits="1"/>
+						<line number="690" hits="1"/>
+						<line number="691" hits="1"/>
+						<line number="692" hits="1"/>
+						<line number="695" hits="1"/>
+						<line number="710" hits="1"/>
+						<line number="711" hits="1"/>
+						<line number="713" hits="1"/>
+						<line number="714" hits="1"/>
+						<line number="715" hits="1"/>
+						<line number="716" hits="1"/>
+						<line number="717" hits="1"/>
+						<line number="718" hits="1"/>
+						<line number="719" hits="1"/>
+						<line number="720" hits="1"/>
+						<line number="723" hits="1"/>
+						<line number="743" hits="1"/>
+						<line number="744" hits="1"/>
+						<line number="747" hits="1"/>
+						<line number="748" hits="1"/>
+						<line number="749" hits="1"/>
+						<line number="750" hits="1"/>
+						<line number="751" hits="1"/>
+						<line number="752" hits="1"/>
+						<line number="753" hits="1"/>
+						<line number="754" hits="1"/>
+						<line number="755" hits="1"/>
+						<line number="756" hits="1"/>
+						<line number="757" hits="1"/>
+						<line number="758" hits="1"/>
+						<line number="759" hits="1"/>
+						<line number="760" hits="1"/>
+						<line number="761" hits="1"/>
+						<line number="762" hits="1"/>
+						<line number="765" hits="1"/>
+						<line number="780" hits="1"/>
+						<line number="781" hits="1"/>
+						<line number="782" hits="1"/>
+						<line number="783" hits="1"/>
+						<line number="784" hits="1"/>
+						<line number="785" hits="1"/>
+						<line number="786" hits="1"/>
+						<line number="787" hits="1"/>
+						<line number="788" hits="1"/>
+						<line number="789" hits="1"/>
+						<line number="790" hits="1"/>
+						<line number="791" hits="1"/>
+						<line number="792" hits="1"/>
+						<line number="793" hits="1"/>
+						<line number="794" hits="1"/>
+						<line number="795" hits="1"/>
+						<line number="796" hits="1"/>
+						<line number="799" hits="1"/>
+						<line number="817" hits="1"/>
+						<line number="818" hits="1"/>
+						<line number="819" hits="1"/>
+						<line number="820" hits="1"/>
+						<line number="821" hits="1"/>
+						<line number="822" hits="1"/>
+						<line number="823" hits="1"/>
+						<line number="824" hits="1"/>
+						<line number="825" hits="1"/>
+						<line number="826" hits="1"/>
+						<line number="827" hits="1"/>
+						<line number="828" hits="1"/>
+						<line number="829" hits="1"/>
+						<line number="830" hits="1"/>
+						<line number="831" hits="1"/>
+						<line number="832" hits="1"/>
+						<line number="833" hits="1"/>
+						<line number="834" hits="1"/>
+						<line number="836" hits="1"/>
+						<line number="839" hits="1"/>
+						<line number="858" hits="1"/>
+						<line number="859" hits="1"/>
+						<line number="860" hits="1"/>
+						<line number="861" hits="1"/>
+						<line number="862" hits="1"/>
+						<line number="863" hits="1"/>
+						<line number="864" hits="1"/>
+						<line number="865" hits="1"/>
+						<line number="866" hits="1"/>
+						<line number="867" hits="1"/>
+						<line number="868" hits="1"/>
+						<line number="869" hits="1"/>
+						<line number="870" hits="1"/>
+						<line number="871" hits="1"/>
+						<line number="872" hits="1"/>
+						<line number="873" hits="1"/>
+						<line number="874" hits="1"/>
+						<line number="875" hits="1"/>
+						<line number="877" hits="1"/>
+						<line number="880" hits="1"/>
+						<line number="894" hits="1"/>
+						<line number="895" hits="1"/>
+						<line number="896" hits="1"/>
+						<line number="897" hits="1"/>
+						<line number="898" hits="1"/>
+						<line number="899" hits="1"/>
+						<line number="900" hits="1"/>
+						<line number="901" hits="1"/>
+						<line number="902" hits="1"/>
+						<line number="903" hits="1"/>
+						<line number="904" hits="1"/>
+						<line number="905" hits="1"/>
+						<line number="907" hits="1"/>
+						<line number="910" hits="1"/>
+						<line number="926" hits="0"/>
+						<line number="927" hits="0"/>
+						<line number="928" hits="0"/>
+						<line number="929" hits="0"/>
+						<line number="932" hits="0"/>
+						<line number="933" hits="0"/>
+						<line number="934" hits="0"/>
+						<line number="935" hits="0"/>
+						<line number="936" hits="0"/>
+						<line number="937" hits="0"/>
+						<line number="938" hits="0"/>
+						<line number="939" hits="0"/>
+						<line number="940" hits="0"/>
+						<line number="941" hits="0"/>
+						<line number="943" hits="0"/>
+						<line number="946" hits="1"/>
+						<line number="960" hits="0"/>
+						<line number="961" hits="0"/>
+						<line number="962" hits="0"/>
+						<line number="968" hits="0"/>
+						<line number="969" hits="0"/>
+						<line number="970" hits="0"/>
+						<line number="971" hits="0"/>
+						<line number="972" hits="0"/>
+						<line number="973" hits="0"/>
+						<line number="974" hits="0"/>
+						<line number="975" hits="0"/>
+						<line number="976" hits="0"/>
+						<line number="977" hits="0"/>
+						<line number="980" hits="1"/>
+						<line number="992" hits="0"/>
+						<line number="993" hits="0"/>
+						<line number="994" hits="0"/>
+						<line number="998" hits="0"/>
+						<line number="999" hits="0"/>
+						<line number="1000" hits="0"/>
+						<line number="1001" hits="0"/>
+						<line number="1002" hits="0"/>
+						<line number="1003" hits="0"/>
+						<line number="1004" hits="0"/>
+						<line number="1005" hits="0"/>
+						<line number="1006" hits="0"/>
+						<line number="1007" hits="0"/>
+						<line number="1010" hits="1"/>
+						<line number="1025" hits="1"/>
+						<line number="1026" hits="1"/>
+						<line number="1027" hits="1"/>
+						<line number="1028" hits="1"/>
+						<line number="1029" hits="1"/>
+						<line number="1030" hits="1"/>
+						<line number="1031" hits="1"/>
+						<line number="1032" hits="1"/>
+						<line number="1033" hits="1"/>
+						<line number="1034" hits="1"/>
+						<line number="1035" hits="1"/>
+						<line number="1037" hits="1"/>
+						<line number="1038" hits="1"/>
+						<line number="1039" hits="1"/>
+						<line number="1042" hits="1"/>
+						<line number="1057" hits="1"/>
+						<line number="1058" hits="1"/>
+						<line number="1059" hits="1"/>
+						<line number="1060" hits="1"/>
+						<line number="1061" hits="1"/>
+						<line number="1062" hits="1"/>
+						<line number="1063" hits="1"/>
+						<line number="1064" hits="1"/>
+						<line number="1065" hits="1"/>
+						<line number="1066" hits="1"/>
+						<line number="1067" hits="1"/>
+						<line number="1068" hits="1"/>
+						<line number="1070" hits="1"/>
+						<line number="1073" hits="1"/>
+						<line number="1087" hits="1"/>
+						<line number="1088" hits="1"/>
+						<line number="1089" hits="1"/>
+						<line number="1090" hits="1"/>
+						<line number="1091" hits="1"/>
+						<line number="1092" hits="1"/>
+						<line number="1093" hits="1"/>
+						<line number="1094" hits="1"/>
+						<line number="1095" hits="1"/>
+						<line number="1096" hits="1"/>
+						<line number="1097" hits="1"/>
+						<line number="1098" hits="1"/>
+						<line number="1100" hits="1"/>
+						<line number="1103" hits="1"/>
+						<line number="1120" hits="1"/>
+						<line number="1121" hits="1"/>
+						<line number="1122" hits="1"/>
+						<line number="1123" hits="1"/>
+						<line number="1124" hits="1"/>
+						<line number="1125" hits="1"/>
+						<line number="1126" hits="1"/>
+						<line number="1127" hits="1"/>
+						<line number="1128" hits="1"/>
+						<line number="1129" hits="1"/>
+						<line number="1130" hits="1"/>
+						<line number="1131" hits="1"/>
+						<line number="1132" hits="1"/>
+						<line number="1133" hits="1"/>
+						<line number="1134" hits="1"/>
+						<line number="1135" hits="1"/>
+						<line number="1136" hits="1"/>
+						<line number="1138" hits="1"/>
+						<line number="1141" hits="1"/>
+						<line number="1157" hits="1"/>
+						<line number="1158" hits="1"/>
+						<line number="1159" hits="1"/>
+						<line number="1160" hits="1"/>
+						<line number="1161" hits="1"/>
+						<line number="1162" hits="1"/>
+						<line number="1163" hits="1"/>
+						<line number="1164" hits="1"/>
+						<line number="1165" hits="1"/>
+						<line number="1166" hits="1"/>
+						<line number="1167" hits="1"/>
+						<line number="1168" hits="1"/>
+						<line number="1169" hits="1"/>
+						<line number="1170" hits="1"/>
+						<line number="1172" hits="1"/>
+						<line number="1175" hits="1"/>
+						<line number="1187" hits="1"/>
+						<line number="1188" hits="1"/>
+						<line number="1189" hits="1"/>
+						<line number="1190" hits="1"/>
+						<line number="1191" hits="1"/>
+						<line number="1192" hits="1"/>
+						<line number="1193" hits="1"/>
+						<line number="1194" hits="1"/>
+						<line number="1195" hits="1"/>
+						<line number="1196" hits="1"/>
+						<line number="1199" hits="1"/>
+						<line number="1216" hits="1"/>
+						<line number="1217" hits="1"/>
+						<line number="1218" hits="1"/>
+						<line number="1219" hits="1"/>
+						<line number="1220" hits="1"/>
+						<line number="1221" hits="1"/>
+						<line number="1222" hits="1"/>
+						<line number="1223" hits="1"/>
+						<line number="1224" hits="1"/>
+						<line number="1225" hits="1"/>
+						<line number="1226" hits="1"/>
+						<line number="1227" hits="1"/>
+						<line number="1228" hits="1"/>
+						<line number="1230" hits="1"/>
+						<line number="1231" hits="1"/>
+						<line number="1232" hits="1"/>
+						<line number="1235" hits="1"/>
+						<line number="1252" hits="1"/>
+						<line number="1253" hits="1"/>
+						<line number="1254" hits="1"/>
+						<line number="1255" hits="1"/>
+						<line number="1256" hits="1"/>
+						<line number="1257" hits="1"/>
+						<line number="1258" hits="1"/>
+						<line number="1259" hits="1"/>
+						<line number="1260" hits="1"/>
+						<line number="1261" hits="1"/>
+						<line number="1262" hits="1"/>
+						<line number="1263" hits="1"/>
+						<line number="1264" hits="1"/>
+						<line number="1266" hits="1"/>
+						<line number="1267" hits="1"/>
+						<line number="1268" hits="1"/>
+						<line number="1271" hits="1"/>
+						<line number="1285" hits="1"/>
+						<line number="1286" hits="1"/>
+						<line number="1287" hits="1"/>
+						<line number="1288" hits="1"/>
+						<line number="1289" hits="1"/>
+						<line number="1290" hits="1"/>
+						<line number="1291" hits="1"/>
+						<line number="1292" hits="1"/>
+						<line number="1293" hits="1"/>
+						<line number="1294" hits="1"/>
+						<line number="1295" hits="1"/>
+						<line number="1296" hits="1"/>
+						<line number="1298" hits="1"/>
+						<line number="1299" hits="1"/>
+						<line number="1300" hits="1"/>
+						<line number="1303" hits="1"/>
+						<line number="1326" hits="1"/>
+						<line number="1327" hits="1"/>
+						<line number="1328" hits="1"/>
+						<line number="1329" hits="1"/>
+						<line number="1330" hits="1"/>
+						<line number="1331" hits="1"/>
+						<line number="1332" hits="1"/>
+						<line number="1333" hits="1"/>
+						<line number="1335" hits="1"/>
+						<line number="1336" hits="1"/>
+						<line number="1337" hits="1"/>
+						<line number="1338" hits="1"/>
+						<line number="1339" hits="1"/>
+						<line number="1340" hits="1"/>
+						<line number="1341" hits="1"/>
+						<line number="1342" hits="1"/>
+						<line number="1343" hits="1"/>
+						<line number="1344" hits="1"/>
+						<line number="1345" hits="1"/>
+						<line number="1346" hits="1"/>
+						<line number="1347" hits="1"/>
+						<line number="1348" hits="1"/>
+						<line number="1349" hits="1"/>
+						<line number="1350" hits="1"/>
+						<line number="1353" hits="1"/>
+						<line number="1371" hits="1"/>
+						<line number="1372" hits="1"/>
+						<line number="1373" hits="1"/>
+						<line number="1374" hits="1"/>
+						<line number="1375" hits="1"/>
+						<line number="1376" hits="1"/>
+						<line number="1377" hits="1"/>
+						<line number="1378" hits="1"/>
+						<line number="1379" hits="1"/>
+						<line number="1380" hits="1"/>
+						<line number="1381" hits="1"/>
+						<line number="1382" hits="1"/>
+						<line number="1383" hits="1"/>
+						<line number="1384" hits="1"/>
+						<line number="1385" hits="1"/>
+						<line number="1386" hits="1"/>
+						<line number="1389" hits="1"/>
+						<line number="1404" hits="1"/>
+						<line number="1405" hits="1"/>
+						<line number="1406" hits="1"/>
+						<line number="1407" hits="1"/>
+						<line number="1408" hits="1"/>
+						<line number="1409" hits="1"/>
+						<line number="1410" hits="1"/>
+						<line number="1411" hits="1"/>
+						<line number="1412" hits="1"/>
+						<line number="1413" hits="1"/>
+						<line number="1414" hits="1"/>
+						<line number="1415" hits="1"/>
+						<line number="1416" hits="1"/>
+						<line number="1419" hits="1"/>
+						<line number="1434" hits="1"/>
+						<line number="1435" hits="1"/>
+						<line number="1436" hits="1"/>
+						<line number="1437" hits="1"/>
+						<line number="1438" hits="1"/>
+						<line number="1439" hits="1"/>
+						<line number="1440" hits="1"/>
+						<line number="1441" hits="1"/>
+						<line number="1442" hits="1"/>
+						<line number="1443" hits="1"/>
+						<line number="1444" hits="1"/>
+						<line number="1445" hits="1"/>
+						<line number="1446" hits="1"/>
+						<line number="1447" hits="1"/>
+						<line number="1450" hits="1"/>
+						<line number="1463" hits="1"/>
+						<line number="1464" hits="1"/>
+						<line number="1465" hits="1"/>
+						<line number="1466" hits="1"/>
+						<line number="1467" hits="1"/>
+						<line number="1468" hits="1"/>
+						<line number="1469" hits="1"/>
+						<line number="1470" hits="1"/>
+						<line number="1471" hits="1"/>
+						<line number="1472" hits="1"/>
+						<line number="1473" hits="1"/>
+						<line number="1474" hits="1"/>
+						<line number="1477" hits="1"/>
+						<line number="1495" hits="1"/>
+						<line number="1496" hits="1"/>
+						<line number="1497" hits="1"/>
+						<line number="1498" hits="1"/>
+						<line number="1499" hits="1"/>
+						<line number="1500" hits="1"/>
+						<line number="1501" hits="1"/>
+						<line number="1502" hits="1"/>
+						<line number="1503" hits="1"/>
+						<line number="1504" hits="1"/>
+						<line number="1505" hits="1"/>
+						<line number="1506" hits="1"/>
+						<line number="1507" hits="1"/>
+						<line number="1508" hits="1"/>
+						<line number="1509" hits="1"/>
+						<line number="1510" hits="1"/>
+						<line number="1513" hits="1"/>
+						<line number="1549" hits="1"/>
+						<line number="1550" hits="1"/>
+						<line number="1555" hits="1"/>
+						<line number="1556" hits="1"/>
+						<line number="1557" hits="1"/>
+						<line number="1558" hits="1"/>
+						<line number="1559" hits="1"/>
+						<line number="1560" hits="1"/>
+						<line number="1561" hits="1"/>
+						<line number="1562" hits="1"/>
+						<line number="1563" hits="1"/>
+						<line number="1564" hits="1"/>
+						<line number="1565" hits="1"/>
+						<line number="1566" hits="1"/>
+						<line number="1568" hits="1"/>
+						<line number="1569" hits="1"/>
+						<line number="1570" hits="1"/>
+						<line number="1573" hits="1"/>
+						<line number="1610" hits="1"/>
+						<line number="1611" hits="1"/>
+						<line number="1617" hits="1"/>
+						<line number="1618" hits="1"/>
+						<line number="1619" hits="1"/>
+						<line number="1620" hits="1"/>
+						<line number="1621" hits="1"/>
+						<line number="1622" hits="1"/>
+						<line number="1623" hits="1"/>
+						<line number="1624" hits="1"/>
+						<line number="1625" hits="1"/>
+						<line number="1626" hits="1"/>
+						<line number="1627" hits="1"/>
+						<line number="1628" hits="1"/>
+						<line number="1630" hits="1"/>
+						<line number="1631" hits="1"/>
+						<line number="1632" hits="1"/>
+						<line number="1635" hits="1"/>
+						<line number="1650" hits="1"/>
+						<line number="1651" hits="1"/>
+						<line number="1652" hits="1"/>
+						<line number="1653" hits="1"/>
+						<line number="1654" hits="1"/>
+						<line number="1655" hits="1"/>
+						<line number="1656" hits="1"/>
+						<line number="1657" hits="1"/>
+						<line number="1658" hits="1"/>
+						<line number="1659" hits="1"/>
+						<line number="1660" hits="1"/>
+						<line number="1661" hits="1"/>
+						<line number="1662" hits="1"/>
+						<line number="1664" hits="1"/>
+						<line number="1665" hits="1"/>
+						<line number="1666" hits="1"/>
+						<line number="1669" hits="1"/>
+						<line number="1675" hits="1"/>
+						<line number="1676" hits="1"/>
+						<line number="1677" hits="1"/>
+						<line number="1678" hits="1"/>
+						<line number="1679" hits="1"/>
+						<line number="1680" hits="1"/>
+						<line number="1683" hits="1"/>
+						<line number="1689" hits="1"/>
+						<line number="1690" hits="1"/>
+						<line number="1691" hits="1"/>
+						<line number="1692" hits="1"/>
+						<line number="1693" hits="1"/>
+						<line number="1694" hits="1"/>
+						<line number="1697" hits="1"/>
+						<line number="1716" hits="1"/>
+						<line number="1717" hits="1"/>
+						<line number="1718" hits="1"/>
+						<line number="1719" hits="1"/>
+						<line number="1720" hits="1"/>
+						<line number="1721" hits="1"/>
+						<line number="1722" hits="1"/>
+						<line number="1723" hits="1"/>
+						<line number="1724" hits="1"/>
+						<line number="1725" hits="1"/>
+						<line number="1726" hits="1"/>
+						<line number="1727" hits="1"/>
+						<line number="1728" hits="1"/>
+						<line number="1729" hits="1"/>
+						<line number="1730" hits="1"/>
+						<line number="1731" hits="1"/>
+						<line number="1732" hits="1"/>
+						<line number="1733" hits="1"/>
+						<line number="1734" hits="1"/>
+						<line number="1735" hits="1"/>
+						<line number="1736" hits="1"/>
+						<line number="1737" hits="1"/>
+						<line number="1738" hits="1"/>
+						<line number="1739" hits="1"/>
+						<line number="1740" hits="1"/>
+						<line number="1741" hits="1"/>
+						<line number="1742" hits="1"/>
+						<line number="1743" hits="1"/>
+						<line number="1745" hits="1"/>
+						<line number="1748" hits="1"/>
+						<line number="1768" hits="1"/>
+						<line number="1769" hits="1"/>
+						<line number="1771" hits="1"/>
+						<line number="1772" hits="1"/>
+						<line number="1773" hits="1"/>
+						<line number="1774" hits="1"/>
+						<line number="1775" hits="1"/>
+						<line number="1776" hits="1"/>
+						<line number="1777" hits="1"/>
+						<line number="1778" hits="1"/>
+						<line number="1779" hits="1"/>
+						<line number="1780" hits="1"/>
+						<line number="1781" hits="1"/>
+						<line number="1782" hits="1"/>
+						<line number="1783" hits="1"/>
+						<line number="1784" hits="1"/>
+					</lines>
+				</class>
+				<class name="UploadClient.py" filename="dbrepo/UploadClient.py" complexity="0" line-rate="0.52" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="1" hits="1"/>
+						<line number="2" hits="1"/>
+						<line number="3" hits="1"/>
+						<line number="4" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="7" hits="1"/>
+						<line number="8" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="24" hits="1"/>
+						<line number="26" hits="1"/>
+						<line number="27" hits="0"/>
+						<line number="29" hits="1"/>
+						<line number="30" hits="0"/>
+						<line number="31" hits="0"/>
+						<line number="32" hits="0"/>
+						<line number="33" hits="0"/>
+						<line number="34" hits="0"/>
+						<line number="35" hits="0"/>
+						<line number="36" hits="0"/>
+						<line number="37" hits="0"/>
+						<line number="38" hits="0"/>
+						<line number="39" hits="0"/>
+						<line number="40" hits="0"/>
+					</lines>
+				</class>
+				<class name="__init__.py" filename="dbrepo/__init__.py" complexity="0" line-rate="1" branch-rate="0">
+					<methods/>
+					<lines/>
+				</class>
+			</classes>
+		</package>
+		<package name="dbrepo.api" line-rate="1" branch-rate="0" complexity="0">
+			<classes>
+				<class name="__init__.py" filename="dbrepo/api/__init__.py" complexity="0" line-rate="1" branch-rate="0">
+					<methods/>
+					<lines/>
+				</class>
+				<class name="dto.py" filename="dbrepo/api/dto.py" complexity="0" line-rate="1" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="1" hits="1"/>
+						<line number="3" hits="1"/>
+						<line number="4" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="6" hits="1"/>
+						<line number="8" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="17" hits="1"/>
+						<line number="18" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="20" hits="1"/>
+						<line number="21" hits="1"/>
+						<line number="22" hits="1"/>
+						<line number="23" hits="1"/>
+						<line number="24" hits="1"/>
+						<line number="27" hits="1"/>
+						<line number="28" hits="1"/>
+						<line number="29" hits="1"/>
+						<line number="30" hits="1"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="37" hits="1"/>
+						<line number="40" hits="1"/>
+						<line number="41" hits="1"/>
+						<line number="42" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="46" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="50" hits="1"/>
+						<line number="51" hits="1"/>
+						<line number="52" hits="1"/>
+						<line number="53" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="62" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="65" hits="1"/>
+						<line number="66" hits="1"/>
+						<line number="67" hits="1"/>
+						<line number="68" hits="1"/>
+						<line number="71" hits="1"/>
+						<line number="72" hits="1"/>
+						<line number="73" hits="1"/>
+						<line number="74" hits="1"/>
+						<line number="75" hits="1"/>
+						<line number="76" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="78" hits="1"/>
+						<line number="81" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="83" hits="1"/>
+						<line number="84" hits="1"/>
+						<line number="85" hits="1"/>
+						<line number="86" hits="1"/>
+						<line number="87" hits="1"/>
+						<line number="88" hits="1"/>
+						<line number="89" hits="1"/>
+						<line number="92" hits="1"/>
+						<line number="93" hits="1"/>
+						<line number="94" hits="1"/>
+						<line number="95" hits="1"/>
+						<line number="96" hits="1"/>
+						<line number="97" hits="1"/>
+						<line number="98" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="102" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="105" hits="1"/>
+						<line number="106" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="111" hits="1"/>
+						<line number="112" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="114" hits="1"/>
+						<line number="115" hits="1"/>
+						<line number="116" hits="1"/>
+						<line number="117" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="123" hits="1"/>
+						<line number="124" hits="1"/>
+						<line number="125" hits="1"/>
+						<line number="126" hits="1"/>
+						<line number="127" hits="1"/>
+						<line number="130" hits="1"/>
+						<line number="131" hits="1"/>
+						<line number="132" hits="1"/>
+						<line number="133" hits="1"/>
+						<line number="134" hits="1"/>
+						<line number="135" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="148" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="153" hits="1"/>
+						<line number="155" hits="1"/>
+						<line number="156" hits="1"/>
+						<line number="158" hits="1"/>
+						<line number="159" hits="1"/>
+						<line number="162" hits="1"/>
+						<line number="166" hits="1"/>
+						<line number="167" hits="1"/>
+						<line number="168" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="173" hits="1"/>
+						<line number="174" hits="1"/>
+						<line number="175" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="177" hits="1"/>
+						<line number="178" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="180" hits="1"/>
+						<line number="181" hits="1"/>
+						<line number="182" hits="1"/>
+						<line number="183" hits="1"/>
+						<line number="184" hits="1"/>
+						<line number="185" hits="1"/>
+						<line number="186" hits="1"/>
+						<line number="187" hits="1"/>
+						<line number="188" hits="1"/>
+						<line number="189" hits="1"/>
+						<line number="190" hits="1"/>
+						<line number="191" hits="1"/>
+						<line number="192" hits="1"/>
+						<line number="193" hits="1"/>
+						<line number="194" hits="1"/>
+						<line number="195" hits="1"/>
+						<line number="198" hits="1"/>
+						<line number="202" hits="1"/>
+						<line number="203" hits="1"/>
+						<line number="204" hits="1"/>
+						<line number="205" hits="1"/>
+						<line number="206" hits="1"/>
+						<line number="207" hits="1"/>
+						<line number="208" hits="1"/>
+						<line number="209" hits="1"/>
+						<line number="210" hits="1"/>
+						<line number="211" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="213" hits="1"/>
+						<line number="214" hits="1"/>
+						<line number="215" hits="1"/>
+						<line number="216" hits="1"/>
+						<line number="217" hits="1"/>
+						<line number="218" hits="1"/>
+						<line number="219" hits="1"/>
+						<line number="220" hits="1"/>
+						<line number="221" hits="1"/>
+						<line number="222" hits="1"/>
+						<line number="223" hits="1"/>
+						<line number="224" hits="1"/>
+						<line number="225" hits="1"/>
+						<line number="226" hits="1"/>
+						<line number="227" hits="1"/>
+						<line number="228" hits="1"/>
+						<line number="229" hits="1"/>
+						<line number="230" hits="1"/>
+						<line number="231" hits="1"/>
+						<line number="232" hits="1"/>
+						<line number="233" hits="1"/>
+						<line number="234" hits="1"/>
+						<line number="235" hits="1"/>
+						<line number="236" hits="1"/>
+						<line number="237" hits="1"/>
+						<line number="238" hits="1"/>
+						<line number="239" hits="1"/>
+						<line number="240" hits="1"/>
+						<line number="241" hits="1"/>
+						<line number="242" hits="1"/>
+						<line number="243" hits="1"/>
+						<line number="244" hits="1"/>
+						<line number="245" hits="1"/>
+						<line number="246" hits="1"/>
+						<line number="247" hits="1"/>
+						<line number="248" hits="1"/>
+						<line number="249" hits="1"/>
+						<line number="250" hits="1"/>
+						<line number="251" hits="1"/>
+						<line number="252" hits="1"/>
+						<line number="253" hits="1"/>
+						<line number="254" hits="1"/>
+						<line number="255" hits="1"/>
+						<line number="256" hits="1"/>
+						<line number="257" hits="1"/>
+						<line number="258" hits="1"/>
+						<line number="259" hits="1"/>
+						<line number="260" hits="1"/>
+						<line number="261" hits="1"/>
+						<line number="262" hits="1"/>
+						<line number="263" hits="1"/>
+						<line number="264" hits="1"/>
+						<line number="265" hits="1"/>
+						<line number="266" hits="1"/>
+						<line number="267" hits="1"/>
+						<line number="268" hits="1"/>
+						<line number="269" hits="1"/>
+						<line number="270" hits="1"/>
+						<line number="271" hits="1"/>
+						<line number="272" hits="1"/>
+						<line number="273" hits="1"/>
+						<line number="274" hits="1"/>
+						<line number="275" hits="1"/>
+						<line number="276" hits="1"/>
+						<line number="277" hits="1"/>
+						<line number="278" hits="1"/>
+						<line number="279" hits="1"/>
+						<line number="280" hits="1"/>
+						<line number="281" hits="1"/>
+						<line number="282" hits="1"/>
+						<line number="283" hits="1"/>
+						<line number="284" hits="1"/>
+						<line number="285" hits="1"/>
+						<line number="286" hits="1"/>
+						<line number="287" hits="1"/>
+						<line number="288" hits="1"/>
+						<line number="289" hits="1"/>
+						<line number="290" hits="1"/>
+						<line number="291" hits="1"/>
+						<line number="292" hits="1"/>
+						<line number="293" hits="1"/>
+						<line number="294" hits="1"/>
+						<line number="295" hits="1"/>
+						<line number="296" hits="1"/>
+						<line number="297" hits="1"/>
+						<line number="298" hits="1"/>
+						<line number="299" hits="1"/>
+						<line number="300" hits="1"/>
+						<line number="301" hits="1"/>
+						<line number="302" hits="1"/>
+						<line number="303" hits="1"/>
+						<line number="304" hits="1"/>
+						<line number="305" hits="1"/>
+						<line number="306" hits="1"/>
+						<line number="307" hits="1"/>
+						<line number="308" hits="1"/>
+						<line number="309" hits="1"/>
+						<line number="310" hits="1"/>
+						<line number="311" hits="1"/>
+						<line number="312" hits="1"/>
+						<line number="313" hits="1"/>
+						<line number="314" hits="1"/>
+						<line number="315" hits="1"/>
+						<line number="316" hits="1"/>
+						<line number="317" hits="1"/>
+						<line number="318" hits="1"/>
+						<line number="319" hits="1"/>
+						<line number="320" hits="1"/>
+						<line number="321" hits="1"/>
+						<line number="322" hits="1"/>
+						<line number="323" hits="1"/>
+						<line number="324" hits="1"/>
+						<line number="325" hits="1"/>
+						<line number="326" hits="1"/>
+						<line number="327" hits="1"/>
+						<line number="328" hits="1"/>
+						<line number="329" hits="1"/>
+						<line number="330" hits="1"/>
+						<line number="331" hits="1"/>
+						<line number="332" hits="1"/>
+						<line number="333" hits="1"/>
+						<line number="334" hits="1"/>
+						<line number="335" hits="1"/>
+						<line number="336" hits="1"/>
+						<line number="337" hits="1"/>
+						<line number="338" hits="1"/>
+						<line number="339" hits="1"/>
+						<line number="340" hits="1"/>
+						<line number="341" hits="1"/>
+						<line number="342" hits="1"/>
+						<line number="343" hits="1"/>
+						<line number="344" hits="1"/>
+						<line number="345" hits="1"/>
+						<line number="346" hits="1"/>
+						<line number="347" hits="1"/>
+						<line number="348" hits="1"/>
+						<line number="349" hits="1"/>
+						<line number="350" hits="1"/>
+						<line number="351" hits="1"/>
+						<line number="352" hits="1"/>
+						<line number="353" hits="1"/>
+						<line number="354" hits="1"/>
+						<line number="355" hits="1"/>
+						<line number="356" hits="1"/>
+						<line number="357" hits="1"/>
+						<line number="358" hits="1"/>
+						<line number="359" hits="1"/>
+						<line number="360" hits="1"/>
+						<line number="361" hits="1"/>
+						<line number="362" hits="1"/>
+						<line number="363" hits="1"/>
+						<line number="364" hits="1"/>
+						<line number="365" hits="1"/>
+						<line number="366" hits="1"/>
+						<line number="367" hits="1"/>
+						<line number="368" hits="1"/>
+						<line number="369" hits="1"/>
+						<line number="370" hits="1"/>
+						<line number="371" hits="1"/>
+						<line number="372" hits="1"/>
+						<line number="373" hits="1"/>
+						<line number="374" hits="1"/>
+						<line number="375" hits="1"/>
+						<line number="376" hits="1"/>
+						<line number="377" hits="1"/>
+						<line number="378" hits="1"/>
+						<line number="379" hits="1"/>
+						<line number="380" hits="1"/>
+						<line number="381" hits="1"/>
+						<line number="382" hits="1"/>
+						<line number="383" hits="1"/>
+						<line number="384" hits="1"/>
+						<line number="385" hits="1"/>
+						<line number="388" hits="1"/>
+						<line number="389" hits="1"/>
+						<line number="390" hits="1"/>
+						<line number="393" hits="1"/>
+						<line number="394" hits="1"/>
+						<line number="397" hits="1"/>
+						<line number="398" hits="1"/>
+						<line number="401" hits="1"/>
+						<line number="405" hits="1"/>
+						<line number="406" hits="1"/>
+						<line number="407" hits="1"/>
+						<line number="408" hits="1"/>
+						<line number="411" hits="1"/>
+						<line number="412" hits="1"/>
+						<line number="413" hits="1"/>
+						<line number="414" hits="1"/>
+						<line number="417" hits="1"/>
+						<line number="418" hits="1"/>
+						<line number="421" hits="1"/>
+						<line number="422" hits="1"/>
+						<line number="423" hits="1"/>
+						<line number="424" hits="1"/>
+						<line number="425" hits="1"/>
+						<line number="428" hits="1"/>
+						<line number="429" hits="1"/>
+						<line number="430" hits="1"/>
+						<line number="431" hits="1"/>
+						<line number="434" hits="1"/>
+						<line number="435" hits="1"/>
+						<line number="438" hits="1"/>
+						<line number="439" hits="1"/>
+						<line number="440" hits="1"/>
+						<line number="441" hits="1"/>
+						<line number="442" hits="1"/>
+						<line number="443" hits="1"/>
+						<line number="444" hits="1"/>
+						<line number="445" hits="1"/>
+						<line number="448" hits="1"/>
+						<line number="449" hits="1"/>
+						<line number="450" hits="1"/>
+						<line number="451" hits="1"/>
+						<line number="452" hits="1"/>
+						<line number="453" hits="1"/>
+						<line number="454" hits="1"/>
+						<line number="457" hits="1"/>
+						<line number="458" hits="1"/>
+						<line number="461" hits="1"/>
+						<line number="462" hits="1"/>
+						<line number="463" hits="1"/>
+						<line number="464" hits="1"/>
+						<line number="467" hits="1"/>
+						<line number="468" hits="1"/>
+						<line number="471" hits="1"/>
+						<line number="472" hits="1"/>
+						<line number="473" hits="1"/>
+						<line number="476" hits="1"/>
+						<line number="477" hits="1"/>
+						<line number="480" hits="1"/>
+						<line number="481" hits="1"/>
+						<line number="482" hits="1"/>
+						<line number="483" hits="1"/>
+						<line number="484" hits="1"/>
+						<line number="485" hits="1"/>
+						<line number="488" hits="1"/>
+						<line number="489" hits="1"/>
+						<line number="490" hits="1"/>
+						<line number="493" hits="1"/>
+						<line number="494" hits="1"/>
+						<line number="495" hits="1"/>
+						<line number="498" hits="1"/>
+						<line number="499" hits="1"/>
+						<line number="502" hits="1"/>
+						<line number="503" hits="1"/>
+						<line number="504" hits="1"/>
+						<line number="505" hits="1"/>
+						<line number="506" hits="1"/>
+						<line number="507" hits="1"/>
+						<line number="508" hits="1"/>
+						<line number="511" hits="1"/>
+						<line number="512" hits="1"/>
+						<line number="513" hits="1"/>
+						<line number="514" hits="1"/>
+						<line number="515" hits="1"/>
+						<line number="516" hits="1"/>
+						<line number="517" hits="1"/>
+						<line number="518" hits="1"/>
+						<line number="519" hits="1"/>
+						<line number="520" hits="1"/>
+						<line number="521" hits="1"/>
+						<line number="522" hits="1"/>
+						<line number="525" hits="1"/>
+						<line number="526" hits="1"/>
+						<line number="527" hits="1"/>
+						<line number="528" hits="1"/>
+						<line number="529" hits="1"/>
+						<line number="532" hits="1"/>
+						<line number="536" hits="1"/>
+						<line number="537" hits="1"/>
+						<line number="538" hits="1"/>
+						<line number="539" hits="1"/>
+						<line number="542" hits="1"/>
+						<line number="546" hits="1"/>
+						<line number="547" hits="1"/>
+						<line number="548" hits="1"/>
+						<line number="551" hits="1"/>
+						<line number="552" hits="1"/>
+						<line number="553" hits="1"/>
+						<line number="554" hits="1"/>
+						<line number="555" hits="1"/>
+						<line number="556" hits="1"/>
+						<line number="557" hits="1"/>
+						<line number="558" hits="1"/>
+						<line number="559" hits="1"/>
+						<line number="560" hits="1"/>
+						<line number="561" hits="1"/>
+						<line number="562" hits="1"/>
+						<line number="563" hits="1"/>
+						<line number="566" hits="1"/>
+						<line number="567" hits="1"/>
+						<line number="568" hits="1"/>
+						<line number="569" hits="1"/>
+						<line number="570" hits="1"/>
+						<line number="571" hits="1"/>
+						<line number="572" hits="1"/>
+						<line number="573" hits="1"/>
+						<line number="574" hits="1"/>
+						<line number="577" hits="1"/>
+						<line number="578" hits="1"/>
+						<line number="579" hits="1"/>
+						<line number="580" hits="1"/>
+						<line number="581" hits="1"/>
+						<line number="582" hits="1"/>
+						<line number="583" hits="1"/>
+						<line number="584" hits="1"/>
+						<line number="585" hits="1"/>
+						<line number="586" hits="1"/>
+						<line number="587" hits="1"/>
+						<line number="588" hits="1"/>
+						<line number="591" hits="1"/>
+						<line number="592" hits="1"/>
+						<line number="595" hits="1"/>
+						<line number="596" hits="1"/>
+						<line number="597" hits="1"/>
+						<line number="598" hits="1"/>
+						<line number="599" hits="1"/>
+						<line number="602" hits="1"/>
+						<line number="603" hits="1"/>
+						<line number="604" hits="1"/>
+						<line number="605" hits="1"/>
+						<line number="608" hits="1"/>
+						<line number="609" hits="1"/>
+						<line number="612" hits="1"/>
+						<line number="613" hits="1"/>
+						<line number="614" hits="1"/>
+						<line number="615" hits="1"/>
+						<line number="616" hits="1"/>
+						<line number="617" hits="1"/>
+						<line number="618" hits="1"/>
+						<line number="619" hits="1"/>
+						<line number="620" hits="1"/>
+						<line number="621" hits="1"/>
+						<line number="622" hits="1"/>
+						<line number="623" hits="1"/>
+						<line number="624" hits="1"/>
+						<line number="625" hits="1"/>
+						<line number="626" hits="1"/>
+						<line number="627" hits="1"/>
+						<line number="628" hits="1"/>
+						<line number="629" hits="1"/>
+						<line number="630" hits="1"/>
+						<line number="631" hits="1"/>
+						<line number="632" hits="1"/>
+						<line number="633" hits="1"/>
+						<line number="634" hits="1"/>
+						<line number="637" hits="1"/>
+						<line number="638" hits="1"/>
+						<line number="641" hits="1"/>
+						<line number="642" hits="1"/>
+						<line number="643" hits="1"/>
+						<line number="644" hits="1"/>
+						<line number="645" hits="1"/>
+						<line number="646" hits="1"/>
+						<line number="647" hits="1"/>
+						<line number="648" hits="1"/>
+						<line number="649" hits="1"/>
+						<line number="650" hits="1"/>
+						<line number="651" hits="1"/>
+						<line number="652" hits="1"/>
+						<line number="653" hits="1"/>
+						<line number="654" hits="1"/>
+						<line number="655" hits="1"/>
+						<line number="656" hits="1"/>
+						<line number="657" hits="1"/>
+						<line number="658" hits="1"/>
+						<line number="659" hits="1"/>
+						<line number="660" hits="1"/>
+						<line number="661" hits="1"/>
+						<line number="662" hits="1"/>
+						<line number="663" hits="1"/>
+						<line number="664" hits="1"/>
+						<line number="665" hits="1"/>
+						<line number="666" hits="1"/>
+						<line number="669" hits="1"/>
+						<line number="670" hits="1"/>
+						<line number="671" hits="1"/>
+						<line number="672" hits="1"/>
+						<line number="673" hits="1"/>
+						<line number="674" hits="1"/>
+						<line number="675" hits="1"/>
+						<line number="676" hits="1"/>
+						<line number="677" hits="1"/>
+						<line number="678" hits="1"/>
+						<line number="679" hits="1"/>
+						<line number="680" hits="1"/>
+						<line number="681" hits="1"/>
+						<line number="684" hits="1"/>
+						<line number="685" hits="1"/>
+						<line number="686" hits="1"/>
+						<line number="687" hits="1"/>
+						<line number="688" hits="1"/>
+						<line number="689" hits="1"/>
+						<line number="690" hits="1"/>
+						<line number="691" hits="1"/>
+						<line number="692" hits="1"/>
+						<line number="693" hits="1"/>
+						<line number="694" hits="1"/>
+						<line number="695" hits="1"/>
+						<line number="696" hits="1"/>
+						<line number="699" hits="1"/>
+						<line number="700" hits="1"/>
+						<line number="701" hits="1"/>
+						<line number="702" hits="1"/>
+						<line number="703" hits="1"/>
+						<line number="706" hits="1"/>
+						<line number="707" hits="1"/>
+						<line number="708" hits="1"/>
+						<line number="709" hits="1"/>
+						<line number="712" hits="1"/>
+						<line number="713" hits="1"/>
+						<line number="714" hits="1"/>
+						<line number="715" hits="1"/>
+						<line number="716" hits="1"/>
+						<line number="717" hits="1"/>
+						<line number="718" hits="1"/>
+						<line number="719" hits="1"/>
+						<line number="720" hits="1"/>
+						<line number="721" hits="1"/>
+						<line number="722" hits="1"/>
+						<line number="725" hits="1"/>
+						<line number="726" hits="1"/>
+						<line number="727" hits="1"/>
+						<line number="728" hits="1"/>
+						<line number="729" hits="1"/>
+						<line number="732" hits="1"/>
+						<line number="733" hits="1"/>
+						<line number="734" hits="1"/>
+						<line number="735" hits="1"/>
+						<line number="738" hits="1"/>
+						<line number="739" hits="1"/>
+						<line number="742" hits="1"/>
+						<line number="743" hits="1"/>
+						<line number="744" hits="1"/>
+						<line number="745" hits="1"/>
+						<line number="746" hits="1"/>
+						<line number="747" hits="1"/>
+						<line number="750" hits="1"/>
+						<line number="751" hits="1"/>
+						<line number="752" hits="1"/>
+						<line number="753" hits="1"/>
+						<line number="756" hits="1"/>
+						<line number="757" hits="1"/>
+						<line number="760" hits="1"/>
+						<line number="761" hits="1"/>
+						<line number="762" hits="1"/>
+						<line number="763" hits="1"/>
+						<line number="764" hits="1"/>
+						<line number="767" hits="1"/>
+						<line number="768" hits="1"/>
+						<line number="771" hits="1"/>
+						<line number="775" hits="1"/>
+						<line number="776" hits="1"/>
+						<line number="777" hits="1"/>
+						<line number="778" hits="1"/>
+						<line number="781" hits="1"/>
+						<line number="785" hits="1"/>
+						<line number="786" hits="1"/>
+						<line number="789" hits="1"/>
+						<line number="793" hits="1"/>
+						<line number="794" hits="1"/>
+						<line number="795" hits="1"/>
+						<line number="796" hits="1"/>
+						<line number="797" hits="1"/>
+						<line number="798" hits="1"/>
+						<line number="799" hits="1"/>
+						<line number="800" hits="1"/>
+						<line number="801" hits="1"/>
+						<line number="802" hits="1"/>
+						<line number="803" hits="1"/>
+						<line number="804" hits="1"/>
+						<line number="805" hits="1"/>
+						<line number="806" hits="1"/>
+						<line number="807" hits="1"/>
+						<line number="808" hits="1"/>
+						<line number="809" hits="1"/>
+						<line number="810" hits="1"/>
+						<line number="813" hits="1"/>
+						<line number="817" hits="1"/>
+						<line number="818" hits="1"/>
+						<line number="819" hits="1"/>
+						<line number="820" hits="1"/>
+						<line number="821" hits="1"/>
+						<line number="822" hits="1"/>
+						<line number="823" hits="1"/>
+						<line number="824" hits="1"/>
+						<line number="825" hits="1"/>
+						<line number="826" hits="1"/>
+						<line number="827" hits="1"/>
+						<line number="828" hits="1"/>
+						<line number="829" hits="1"/>
+						<line number="830" hits="1"/>
+						<line number="831" hits="1"/>
+						<line number="832" hits="1"/>
+						<line number="833" hits="1"/>
+						<line number="834" hits="1"/>
+						<line number="835" hits="1"/>
+						<line number="836" hits="1"/>
+						<line number="837" hits="1"/>
+						<line number="838" hits="1"/>
+						<line number="839" hits="1"/>
+						<line number="840" hits="1"/>
+						<line number="841" hits="1"/>
+						<line number="842" hits="1"/>
+						<line number="843" hits="1"/>
+						<line number="844" hits="1"/>
+						<line number="845" hits="1"/>
+						<line number="846" hits="1"/>
+						<line number="847" hits="1"/>
+						<line number="848" hits="1"/>
+						<line number="849" hits="1"/>
+						<line number="850" hits="1"/>
+						<line number="853" hits="1"/>
+						<line number="857" hits="1"/>
+						<line number="858" hits="1"/>
+						<line number="859" hits="1"/>
+						<line number="860" hits="1"/>
+						<line number="861" hits="1"/>
+						<line number="862" hits="1"/>
+						<line number="865" hits="1"/>
+						<line number="869" hits="1"/>
+						<line number="870" hits="1"/>
+						<line number="872" hits="1"/>
+						<line number="873" hits="1"/>
+						<line number="876" hits="1"/>
+						<line number="880" hits="1"/>
+						<line number="881" hits="1"/>
+						<line number="883" hits="1"/>
+						<line number="884" hits="1"/>
+						<line number="886" hits="1"/>
+						<line number="887" hits="1"/>
+						<line number="889" hits="1"/>
+						<line number="890" hits="1"/>
+						<line number="893" hits="1"/>
+						<line number="897" hits="1"/>
+						<line number="898" hits="1"/>
+						<line number="900" hits="1"/>
+						<line number="901" hits="1"/>
+						<line number="904" hits="1"/>
+						<line number="908" hits="1"/>
+						<line number="909" hits="1"/>
+						<line number="911" hits="1"/>
+						<line number="912" hits="1"/>
+						<line number="914" hits="1"/>
+						<line number="915" hits="1"/>
+						<line number="917" hits="1"/>
+						<line number="918" hits="1"/>
+						<line number="921" hits="1"/>
+						<line number="922" hits="1"/>
+						<line number="923" hits="1"/>
+						<line number="924" hits="1"/>
+						<line number="925" hits="1"/>
+						<line number="926" hits="1"/>
+						<line number="927" hits="1"/>
+						<line number="928" hits="1"/>
+						<line number="929" hits="1"/>
+						<line number="930" hits="1"/>
+						<line number="931" hits="1"/>
+						<line number="932" hits="1"/>
+						<line number="933" hits="1"/>
+						<line number="936" hits="1"/>
+						<line number="937" hits="1"/>
+						<line number="940" hits="1"/>
+						<line number="941" hits="1"/>
+						<line number="942" hits="1"/>
+						<line number="943" hits="1"/>
+						<line number="944" hits="1"/>
+						<line number="945" hits="1"/>
+						<line number="946" hits="1"/>
+						<line number="947" hits="1"/>
+						<line number="948" hits="1"/>
+						<line number="949" hits="1"/>
+						<line number="950" hits="1"/>
+						<line number="951" hits="1"/>
+						<line number="952" hits="1"/>
+						<line number="953" hits="1"/>
+						<line number="954" hits="1"/>
+						<line number="955" hits="1"/>
+						<line number="958" hits="1"/>
+						<line number="959" hits="1"/>
+						<line number="960" hits="1"/>
+						<line number="961" hits="1"/>
+						<line number="962" hits="1"/>
+						<line number="963" hits="1"/>
+						<line number="964" hits="1"/>
+						<line number="965" hits="1"/>
+						<line number="966" hits="1"/>
+						<line number="967" hits="1"/>
+						<line number="968" hits="1"/>
+						<line number="969" hits="1"/>
+						<line number="970" hits="1"/>
+						<line number="971" hits="1"/>
+						<line number="972" hits="1"/>
+						<line number="973" hits="1"/>
+						<line number="974" hits="1"/>
+						<line number="975" hits="1"/>
+						<line number="976" hits="1"/>
+						<line number="977" hits="1"/>
+						<line number="978" hits="1"/>
+						<line number="979" hits="1"/>
+						<line number="980" hits="1"/>
+						<line number="981" hits="1"/>
+						<line number="982" hits="1"/>
+						<line number="983" hits="1"/>
+						<line number="984" hits="1"/>
+						<line number="987" hits="1"/>
+						<line number="988" hits="1"/>
+						<line number="989" hits="1"/>
+						<line number="990" hits="1"/>
+						<line number="991" hits="1"/>
+						<line number="992" hits="1"/>
+						<line number="993" hits="1"/>
+						<line number="994" hits="1"/>
+						<line number="995" hits="1"/>
+						<line number="996" hits="1"/>
+						<line number="997" hits="1"/>
+						<line number="998" hits="1"/>
+						<line number="999" hits="1"/>
+						<line number="1000" hits="1"/>
+						<line number="1001" hits="1"/>
+						<line number="1002" hits="1"/>
+						<line number="1003" hits="1"/>
+						<line number="1006" hits="1"/>
+						<line number="1007" hits="1"/>
+						<line number="1008" hits="1"/>
+						<line number="1009" hits="1"/>
+						<line number="1010" hits="1"/>
+						<line number="1011" hits="1"/>
+						<line number="1012" hits="1"/>
+						<line number="1013" hits="1"/>
+						<line number="1014" hits="1"/>
+						<line number="1015" hits="1"/>
+						<line number="1016" hits="1"/>
+						<line number="1017" hits="1"/>
+						<line number="1018" hits="1"/>
+						<line number="1019" hits="1"/>
+						<line number="1020" hits="1"/>
+						<line number="1021" hits="1"/>
+						<line number="1022" hits="1"/>
+						<line number="1023" hits="1"/>
+						<line number="1024" hits="1"/>
+						<line number="1025" hits="1"/>
+						<line number="1028" hits="1"/>
+						<line number="1029" hits="1"/>
+						<line number="1030" hits="1"/>
+						<line number="1031" hits="1"/>
+						<line number="1032" hits="1"/>
+						<line number="1033" hits="1"/>
+						<line number="1034" hits="1"/>
+						<line number="1035" hits="1"/>
+						<line number="1036" hits="1"/>
+						<line number="1037" hits="1"/>
+						<line number="1038" hits="1"/>
+						<line number="1041" hits="1"/>
+						<line number="1042" hits="1"/>
+						<line number="1043" hits="1"/>
+						<line number="1044" hits="1"/>
+						<line number="1045" hits="1"/>
+						<line number="1046" hits="1"/>
+						<line number="1047" hits="1"/>
+						<line number="1048" hits="1"/>
+						<line number="1049" hits="1"/>
+						<line number="1050" hits="1"/>
+						<line number="1051" hits="1"/>
+						<line number="1052" hits="1"/>
+						<line number="1053" hits="1"/>
+						<line number="1054" hits="1"/>
+						<line number="1055" hits="1"/>
+						<line number="1056" hits="1"/>
+						<line number="1057" hits="1"/>
+						<line number="1058" hits="1"/>
+						<line number="1061" hits="1"/>
+						<line number="1062" hits="1"/>
+						<line number="1063" hits="1"/>
+						<line number="1064" hits="1"/>
+						<line number="1067" hits="1"/>
+						<line number="1068" hits="1"/>
+						<line number="1069" hits="1"/>
+						<line number="1070" hits="1"/>
+						<line number="1071" hits="1"/>
+						<line number="1074" hits="1"/>
+						<line number="1078" hits="1"/>
+						<line number="1079" hits="1"/>
+						<line number="1080" hits="1"/>
+						<line number="1081" hits="1"/>
+						<line number="1082" hits="1"/>
+						<line number="1085" hits="1"/>
+						<line number="1086" hits="1"/>
+						<line number="1089" hits="1"/>
+						<line number="1090" hits="1"/>
+						<line number="1091" hits="1"/>
+						<line number="1092" hits="1"/>
+						<line number="1093" hits="1"/>
+						<line number="1094" hits="1"/>
+						<line number="1095" hits="1"/>
+						<line number="1096" hits="1"/>
+						<line number="1099" hits="1"/>
+						<line number="1100" hits="1"/>
+						<line number="1101" hits="1"/>
+						<line number="1102" hits="1"/>
+						<line number="1103" hits="1"/>
+						<line number="1104" hits="1"/>
+						<line number="1107" hits="1"/>
+						<line number="1108" hits="1"/>
+						<line number="1109" hits="1"/>
+						<line number="1110" hits="1"/>
+						<line number="1113" hits="1"/>
+						<line number="1114" hits="1"/>
+						<line number="1115" hits="1"/>
+						<line number="1116" hits="1"/>
+						<line number="1117" hits="1"/>
+					</lines>
+				</class>
+				<class name="exceptions.py" filename="dbrepo/api/exceptions.py" complexity="0" line-rate="1" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="1" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="8" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="22" hits="1"/>
+						<line number="26" hits="1"/>
+						<line number="29" hits="1"/>
+						<line number="33" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="40" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="50" hits="1"/>
+						<line number="54" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="68" hits="1"/>
+						<line number="71" hits="1"/>
+						<line number="75" hits="1"/>
+						<line number="78" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="85" hits="1"/>
+						<line number="89" hits="1"/>
+						<line number="92" hits="1"/>
+						<line number="96" hits="1"/>
+						<line number="99" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="106" hits="1"/>
+						<line number="110" hits="1"/>
+					</lines>
+				</class>
+			</classes>
+		</package>
+	</packages>
+</coverage>
diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py
index 11e171b056819b768a008909d2de453227af741d..9e609a70921634ee22377407e398507db46693db 100644
--- a/lib/python/dbrepo/RestClient.py
+++ b/lib/python/dbrepo/RestClient.py
@@ -195,7 +195,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find containers: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_container(self, container_id: int) -> Container:
+    def get_container(self, container_id: str) -> Container:
         """
         Get a container with given id.
 
@@ -244,7 +244,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find databases: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_database(self, database_id: int) -> Database:
+    def get_database(self, database_id: str) -> Database:
         """
         Get a databases with given id.
 
@@ -267,7 +267,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find database: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def create_database(self, name: str, container_id: int, is_public: bool = True,
+    def create_database(self, name: str, container_id: str, is_public: bool = True,
                         is_schema_public: bool = True) -> Database:
         """
         Create a databases in a container with given container id.
@@ -309,7 +309,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create database: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def create_container(self, name: str, host: str, image_id: int, privileged_username: str, privileged_password: str,
+    def create_container(self, name: str, host: str, image_id: str, privileged_username: str, privileged_password: str,
                          port: int = None, ui_host: str = None, ui_port: int = None) -> Container:
         """
         Register a container instance executing a given container image. Note that this does not create a container,
@@ -353,7 +353,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create container: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def update_database_visibility(self, database_id: int, is_public: bool, is_schema_public: bool) -> Database:
+    def update_database_visibility(self, database_id: str, is_public: bool, is_schema_public: bool) -> Database:
         """
         Updates the database visibility of a database with given database id.
 
@@ -390,7 +390,7 @@ class RestClient:
         raise ResponseCodeError(
             f'Failed to update database visibility: response code: {response.status_code} is not 202 (ACCEPTED)')
 
-    def update_database_owner(self, database_id: int, user_id: str) -> Database:
+    def update_database_owner(self, database_id: str, user_id: str) -> Database:
         """
         Updates the database owner of a database with given database id.
 
@@ -426,7 +426,7 @@ class RestClient:
         raise ResponseCodeError(
             f'Failed to update database visibility: response code: {response.status_code} is not 202 (ACCEPTED)')
 
-    def update_database_schema(self, database_id: int) -> DatabaseBrief:
+    def update_database_schema(self, database_id: str) -> DatabaseBrief:
         """
         Updates the database table and view metadata of a database with given database id.
 
@@ -464,7 +464,7 @@ class RestClient:
         raise ResponseCodeError(
             f'Failed to update database schema: response code: {response.status_code} is not 200 (OK)')
 
-    def create_table(self, database_id: int, name: str, is_public: bool, is_schema_public: bool,
+    def create_table(self, database_id: str, name: str, is_public: bool, is_schema_public: bool,
                      columns: List[CreateTableColumn], constraints: CreateTableConstraints,
                      description: str = None) -> TableBrief:
         """
@@ -510,7 +510,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create table: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def get_tables(self, database_id: int) -> List[TableBrief]:
+    def get_tables(self, database_id: str) -> List[TableBrief]:
         """
         Get all tables.
 
@@ -534,7 +534,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get tables: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_table(self, database_id: int, table_id: int) -> Table:
+    def get_table(self, database_id: str, table_id: str) -> Table:
         """
         Get a table with given database id and table id.
 
@@ -559,7 +559,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find table: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def delete_table(self, database_id: int, table_id: int) -> None:
+    def delete_table(self, database_id: str, table_id: str) -> None:
         """
         Delete a table with given database id and table id.
 
@@ -590,7 +590,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to delete table: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def delete_container(self, container_id: int) -> None:
+    def delete_container(self, container_id: str) -> None:
         """
         Deletes a container with given id. Note that this does not delete the container, but deletes the entry in the
         metadata database. The container still needs to be removed, e.g. `docker container stop hash` and then
@@ -616,7 +616,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to delete container: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def get_table_history(self, database_id: int, table_id: int, size: int = 100) -> [History]:
+    def get_table_history(self, database_id: str, table_id: str, size: int = 100) -> [History]:
         """
         Get the table history of insert/delete operations.
 
@@ -646,7 +646,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get table history: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_views(self, database_id: int) -> List[ViewBrief]:
+    def get_views(self, database_id: str) -> List[ViewBrief]:
         """
         Gets views of a database with given database id.
 
@@ -667,7 +667,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find views: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_view(self, database_id: int, view_id: int) -> View:
+    def get_view(self, database_id: str, view_id: str) -> View:
         """
         Get a view of a database with given database id and view id.
 
@@ -692,7 +692,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find view: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def update_view(self, database_id: int, view_id: int, is_public: bool, is_schema_public: bool) -> ViewBrief:
+    def update_view(self, database_id: str, view_id: str, is_public: bool, is_schema_public: bool) -> ViewBrief:
         """
         Get a view of a database with given database id and view id.
 
@@ -720,7 +720,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to update view: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def create_view(self, database_id: int, name: str, query: str, is_public: bool, is_schema_public: bool) -> View:
+    def create_view(self, database_id: str, name: str, query: str, is_public: bool, is_schema_public: bool) -> View:
         """
         Create a view in a database with given database id.
 
@@ -762,7 +762,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create view: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def delete_view(self, database_id: int, view_id: int) -> None:
+    def delete_view(self, database_id: str, view_id: str) -> None:
         """
         Deletes a view in a database with given database id and view id.
 
@@ -796,7 +796,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to delete view: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def get_view_data(self, database_id: int, view_id: int, page: int = 0, size: int = 10) -> DataFrame:
+    def get_view_data(self, database_id: str, view_id: str, page: int = 0, size: int = 10) -> DataFrame:
         """
         Get data of a view in a database with given database id and view id.
 
@@ -836,7 +836,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get view data: response code: {response.status_code} is not '
                                 f'200 (OK):{response.text}')
 
-    def get_table_data(self, database_id: int, table_id: int, page: int = 0, size: int = 10,
+    def get_table_data(self, database_id: str, table_id: str, page: int = 0, size: int = 10,
                        timestamp: datetime.datetime = None) -> DataFrame:
         """
         Get data of a table in a database with given database id and table id.
@@ -877,7 +877,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get table data: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def create_table_data(self, database_id: int, table_id: int, data: dict) -> None:
+    def create_table_data(self, database_id: str, table_id: str, data: dict) -> None:
         """
         Insert data into a table in a database with given database id and table id.
 
@@ -907,7 +907,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to insert table data: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def import_table_data(self, database_id: int, table_id: int, dataframe: DataFrame) -> None:
+    def import_table_data(self, database_id: str, table_id: str, dataframe: DataFrame) -> None:
         """
         Import a csv dataset from a file into a table in a database with given database id and table id. ATTENTION:
         the import is column-ordering sensitive! The csv dataset must have the same columns in the same order as the
@@ -1007,7 +1007,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to analyse data types: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def analyse_table_statistics(self, database_id: int, table_id: int) -> TableStatistics:
+    def analyse_table_statistics(self, database_id: str, table_id: str) -> TableStatistics:
         """
         Analyses the numerical contents of a table in a database with given database id and table id.
 
@@ -1039,7 +1039,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to analyse table statistics: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def update_table_data(self, database_id: int, table_id: int, data: dict, keys: dict) -> None:
+    def update_table_data(self, database_id: str, table_id: str, data: dict, keys: dict) -> None:
         """
         Update data in a table in a database with given database id and table id.
 
@@ -1070,7 +1070,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to update table data: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def delete_table_data(self, database_id: int, table_id: int, keys: dict) -> None:
+    def delete_table_data(self, database_id: str, table_id: str, keys: dict) -> None:
         """
         Delete data in a table in a database with given database id and table id.
 
@@ -1100,7 +1100,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to delete table data: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def get_table_data_count(self, database_id: int, table_id: int, timestamp: datetime.datetime = None) -> int:
+    def get_table_data_count(self, database_id: str, table_id: str, timestamp: datetime.datetime = None) -> int:
         """
         Get data count of a table in a database with given database id and table id.
 
@@ -1138,7 +1138,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to count table data: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_view_data_count(self, database_id: int, view_id: int) -> int:
+    def get_view_data_count(self, database_id: str, view_id: str) -> int:
         """
         Get data count of a view in a database with given database id and view id.
 
@@ -1172,7 +1172,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to count view data: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_database_access(self, database_id: int) -> AccessType:
+    def get_database_access(self, database_id: str) -> AccessType:
         """
         Get access of a view in a database with given database id and view id.
 
@@ -1196,7 +1196,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get database access: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def create_database_access(self, database_id: int, user_id: str, type: AccessType) -> AccessType:
+    def create_database_access(self, database_id: str, user_id: str, type: AccessType) -> AccessType:
         """
         Create access to a database with given database id and user id.
 
@@ -1232,7 +1232,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create database access: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def update_database_access(self, database_id: int, user_id: str, type: AccessType) -> AccessType:
+    def update_database_access(self, database_id: str, user_id: str, type: AccessType) -> AccessType:
         """
         Updates the access for a user to a database with given database id and user id.
 
@@ -1268,7 +1268,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to update database access: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def delete_database_access(self, database_id: int, user_id: str) -> None:
+    def delete_database_access(self, database_id: str, user_id: str) -> None:
         """
         Deletes the access for a user to a database with given database id and user id.
 
@@ -1300,7 +1300,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to delete database access: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def create_subset(self, database_id: int, query: str, page: int = 0, size: int = 10,
+    def create_subset(self, database_id: str, query: str, page: int = 0, size: int = 10,
                       timestamp: datetime.datetime = None) -> DataFrame:
         """
         Executes a SQL query in a database where the current user has at least read access with given database id. The
@@ -1350,7 +1350,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create subset: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def get_subset_data(self, database_id: int, subset_id: int, page: int = 0, size: int = 10) -> DataFrame:
+    def get_subset_data(self, database_id: str, subset_id: str, page: int = 0, size: int = 10) -> DataFrame:
         """
         Re-executes a query in a database with given database id and query id.
 
@@ -1386,7 +1386,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get query data: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_subset_data_count(self, database_id: int, subset_id: int) -> int:
+    def get_subset_data_count(self, database_id: str, subset_id: str) -> int:
         """
         Re-executes a query in a database with given database id and query id and only counts the results.
 
@@ -1416,7 +1416,7 @@ class RestClient:
         raise ResponseCodeError(
             f'Failed to get query count: response code: {response.status_code} is not 200 (OK)')
 
-    def get_subset(self, database_id: int, subset_id: int) -> Query:
+    def get_subset(self, database_id: str, subset_id: str) -> Query:
         """
         Get query from a database with given database id and query id.
 
@@ -1447,7 +1447,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find subset: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_queries(self, database_id: int) -> List[Query]:
+    def get_queries(self, database_id: str) -> List[Query]:
         """
         Get queries from a database with given database id.
 
@@ -1474,7 +1474,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to find query: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def update_subset(self, database_id: int, subset_id: int, persist: bool) -> Query:
+    def update_subset(self, database_id: str, subset_id: str, persist: bool) -> Query:
         """
         Save query or mark it for deletion (at a later time) in a database with given database id and query id.
 
@@ -1510,11 +1510,11 @@ class RestClient:
         raise ResponseCodeError(f'Failed to update query: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def create_identifier(self, database_id: int, type: IdentifierType, titles: List[CreateIdentifierTitle],
+    def create_identifier(self, database_id: str, type: IdentifierType, titles: List[CreateIdentifierTitle],
                           publisher: str, creators: List[CreateIdentifierCreator], publication_year: int,
                           descriptions: List[CreateIdentifierDescription] = None,
                           funders: List[CreateIdentifierFunder] = None, licenses: List[License] = None,
-                          language: Language = None, subset_id: int = None, view_id: int = None, table_id: int = None,
+                          language: Language = None, subset_id: str = None, view_id: str = None, table_id: str = None,
                           publication_day: int = None, publication_month: int = None,
                           related_identifiers: List[CreateRelatedIdentifier] = None) -> Identifier:
         """
@@ -1570,11 +1570,11 @@ class RestClient:
         raise ResponseCodeError(f'Failed to create identifier: response code: {response.status_code} is not '
                                 f'201 (CREATED): {response.text}')
 
-    def update_identifier(self, identifier_id: int, database_id: int, type: IdentifierType,
+    def update_identifier(self, identifier_id: str, database_id: str, type: IdentifierType,
                           titles: List[SaveIdentifierTitle], publisher: str, creators: List[SaveIdentifierCreator],
                           publication_year: int, descriptions: List[SaveIdentifierDescription] = None,
                           funders: List[SaveIdentifierFunder] = None, licenses: List[License] = None,
-                          language: Language = None, subset_id: int = None, view_id: int = None, table_id: int = None,
+                          language: Language = None, subset_id: str = None, view_id: str = None, table_id: str = None,
                           publication_day: int = None, publication_month: int = None,
                           related_identifiers: List[SaveRelatedIdentifier] = None) -> Identifier:
         """
@@ -1632,7 +1632,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to save identifier: response code: {response.status_code} is not '
                                 f'202 (ACCEPTED): {response.text}')
 
-    def publish_identifier(self, identifier_id: int) -> Identifier:
+    def publish_identifier(self, identifier_id: str) -> Identifier:
         """
         Publish an identifier with given id.
 
@@ -1694,8 +1694,8 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get concepts: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def get_identifiers(self, database_id: int = None, subset_id: int = None, view_id: int = None,
-                        table_id: int = None, type: IdentifierType = None, status: IdentifierStatusType = None) -> List[
+    def get_identifiers(self, database_id: str = None, subset_id: str = None, view_id: str = None,
+                        table_id: str = None, type: IdentifierType = None, status: IdentifierStatusType = None) -> List[
                                                                                                                        Identifier] | str:
         """
         Get list of identifiers, filter by the remaining optional arguments.
@@ -1745,7 +1745,7 @@ class RestClient:
         raise ResponseCodeError(f'Failed to get identifiers: response code: {response.status_code} is not '
                                 f'200 (OK): {response.text}')
 
-    def update_table_column(self, database_id: int, table_id: int, column_id: int, concept_uri: str = None,
+    def update_table_column(self, database_id: str, table_id: str, column_id: str, concept_uri: str = None,
                             unit_uri: str = None) -> Column:
         """
         Update semantic information of a table column by given database id and table id and column id.
diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py
index 9e042b966d9a452c29625fbc162886fbf89b2cf8..ac071cb412aa4f2b63306f1d8150397188a181fb 100644
--- a/lib/python/dbrepo/api/dto.py
+++ b/lib/python/dbrepo/api/dto.py
@@ -13,7 +13,7 @@ Timestamp = Annotated[
 
 
 class Image(BaseModel):
-    id: int
+    id: str
     registry: str
     name: str
     version: str
@@ -25,15 +25,14 @@ class Image(BaseModel):
 
 
 class ImageBrief(BaseModel):
-    id: int
+    id: str
     name: str
     version: str
-    jdbc_method: str
 
 
 class CreateDatabase(BaseModel):
     name: str
-    container_id: int
+    container_id: str
     is_public: bool
     is_schema_public: bool
 
@@ -46,7 +45,7 @@ class UpdateView(BaseModel):
 class CreateContainer(BaseModel):
     name: str
     host: str
-    image_id: int
+    image_id: str
     privileged_username: str
     privileged_password: str
     ui_host: Optional[str] = None
@@ -80,7 +79,7 @@ class UserBrief(BaseModel):
 
 
 class Container(BaseModel):
-    id: int
+    id: str
     name: str
     internal_name: str
     host: str
@@ -91,7 +90,7 @@ class Container(BaseModel):
 
 
 class ContainerBrief(BaseModel):
-    id: int
+    id: str
     name: str
     image: ImageBrief
     internal_name: str
@@ -100,18 +99,18 @@ class ContainerBrief(BaseModel):
 
 
 class ColumnBrief(BaseModel):
-    id: int
+    id: str
     name: str
-    database_id: int
-    table_id: int
+    database_id: str
+    table_id: str
     internal_name: str
     type: ColumnType
     alias: Optional[str] = None
 
 
 class TableBrief(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     name: str
     description: Optional[str] = None
     internal_name: str
@@ -403,7 +402,7 @@ class IdentifierTitle(BaseModel):
     """
     Title of an identifier. See external documentation: https://support.datacite.org/docs/datacite-metadata-schema-v44-mandatory-properties#3-title.
     """
-    id: int
+    id: str
     title: str
     language: Optional[Language] = None
     type: Optional[TitleType] = None
@@ -416,11 +415,11 @@ class CreateIdentifierTitle(BaseModel):
 
 
 class SaveIdentifierTitle(CreateIdentifierTitle):
-    id: int
+    id: str
 
 
 class IdentifierDescription(BaseModel):
-    id: int
+    id: str
     description: str
     language: Optional[Language] = None
     type: Optional[DescriptionType] = None
@@ -433,11 +432,11 @@ class CreateIdentifierDescription(BaseModel):
 
 
 class SaveIdentifierDescription(CreateIdentifierDescription):
-    id: int
+    id: str
 
 
 class IdentifierFunder(BaseModel):
-    id: int
+    id: str
     funder_name: str
     funder_identifier: Optional[str] = None
     funder_identifier_type: Optional[str] = None
@@ -456,7 +455,7 @@ class CreateIdentifierFunder(BaseModel):
 
 
 class SaveIdentifierFunder(CreateIdentifierFunder):
-    id: int
+    id: str
 
 
 class License(BaseModel):
@@ -550,7 +549,7 @@ class AffiliationIdentifierSchemeType(str, Enum):
 
 
 class Creator(BaseModel):
-    id: int
+    id: str
     creator_name: str
     firstname: Optional[str] = None
     lastname: Optional[str] = None
@@ -565,7 +564,7 @@ class Creator(BaseModel):
 
 
 class CreatorBrief(BaseModel):
-    id: int
+    id: str
     creator_name: str
     affiliation: Optional[str] = None
     name_type: Optional[str] = None
@@ -590,11 +589,11 @@ class CreateIdentifierCreator(BaseModel):
 
 
 class SaveIdentifierCreator(CreateIdentifierCreator):
-    id: int
+    id: str
 
 
 class RelatedIdentifier(BaseModel):
-    id: int
+    id: str
     value: str
     type: RelatedIdentifierType
     relation: RelatedIdentifierRelation
@@ -607,11 +606,11 @@ class CreateRelatedIdentifier(BaseModel):
 
 
 class SaveRelatedIdentifier(CreateRelatedIdentifier):
-    id: int
+    id: str
 
 
 class CreateIdentifier(BaseModel):
-    database_id: int
+    database_id: str
     type: IdentifierType
     creators: List[CreateIdentifierCreator]
     publication_year: int
@@ -622,9 +621,9 @@ class CreateIdentifier(BaseModel):
     doi: Optional[str] = None
     language: Optional[str] = None
     licenses: Optional[List[License]] = field(default_factory=list)
-    query_id: Optional[int] = None
-    table_id: Optional[int] = None
-    view_id: Optional[int] = None
+    query_id: Optional[str] = None
+    table_id: Optional[str] = None
+    view_id: Optional[str] = None
     query: Optional[str] = None
     query_normalized: Optional[str] = None
     execution: Optional[str] = None
@@ -636,12 +635,12 @@ class CreateIdentifier(BaseModel):
 
 
 class IdentifierSave(CreateIdentifier):
-    id: int
+    id: str
 
 
 class Identifier(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     type: IdentifierType
     owner: UserBrief
     status: IdentifierStatusType
@@ -654,9 +653,9 @@ class Identifier(BaseModel):
     doi: Optional[str] = None
     language: Optional[str] = None
     licenses: Optional[List[License]] = field(default_factory=list)
-    query_id: Optional[int] = None
-    table_id: Optional[int] = None
-    view_id: Optional[int] = None
+    query_id: Optional[str] = None
+    table_id: Optional[str] = None
+    view_id: Optional[str] = None
     query: Optional[str] = None
     query_normalized: Optional[str] = None
     execution: Optional[str] = None
@@ -668,8 +667,8 @@ class Identifier(BaseModel):
 
 
 class IdentifierBrief(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     type: IdentifierType
     owned_by: str
     status: IdentifierStatusType
@@ -677,14 +676,14 @@ class IdentifierBrief(BaseModel):
     publisher: str
     titles: List[IdentifierTitle]
     doi: Optional[str] = None
-    query_id: Optional[int] = None
-    table_id: Optional[int] = None
-    view_id: Optional[int] = None
+    query_id: Optional[str] = None
+    table_id: Optional[str] = None
+    view_id: Optional[str] = None
 
 
 class View(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     name: str
     query: str
     query_hash: str
@@ -711,8 +710,8 @@ class History(BaseModel):
 
 
 class ViewBrief(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     name: str
     internal_name: str
     is_public: bool
@@ -724,7 +723,7 @@ class ViewBrief(BaseModel):
 
 
 class ConceptBrief(BaseModel):
-    id: int
+    id: str
     uri: str
     name: Optional[str] = None
     description: Optional[str] = None
@@ -759,7 +758,7 @@ class TableStatistics(BaseModel):
 
 
 class UnitBrief(BaseModel):
-    id: int
+    id: str
     uri: str
     name: Optional[str] = None
     description: Optional[str] = None
@@ -920,12 +919,12 @@ class IdentifierType(str, Enum):
 
 
 class Query(BaseModel):
-    id: int
+    id: str
     owner: UserBrief
     execution: Timestamp
     query: str
     type: QueryType
-    database_id: int
+    database_id: str
     query_hash: str
     is_persisted: bool
     result_hash: str
@@ -957,10 +956,10 @@ class DataType(BaseModel):
 
 
 class Column(BaseModel):
-    id: int
+    id: str
     name: str
-    database_id: int
-    table_id: int
+    database_id: str
+    table_id: str
     ord: int
     internal_name: str
     is_null_allowed: bool
@@ -986,10 +985,10 @@ class Column(BaseModel):
 
 
 class ViewColumn(BaseModel):
-    id: int
+    id: str
     name: str
     ord: int
-    database_id: int
+    database_id: str
     internal_name: str
     type: ColumnType
     is_null_allowed: bool
@@ -1005,8 +1004,8 @@ class ViewColumn(BaseModel):
 
 
 class Table(BaseModel):
-    id: int
-    database_id: int
+    id: str
+    database_id: str
     name: str
     owner: UserBrief
     columns: List[Column]
@@ -1027,7 +1026,7 @@ class Table(BaseModel):
 
 
 class DatabaseBrief(BaseModel):
-    id: int
+    id: str
     name: str
     contact: UserBrief
     owner_id: str
@@ -1040,7 +1039,7 @@ class DatabaseBrief(BaseModel):
 
 
 class Database(BaseModel):
-    id: int
+    id: str
     name: str
     owner: UserBrief
     contact: UserBrief
@@ -1060,13 +1059,13 @@ class Database(BaseModel):
 
 
 class Unique(BaseModel):
-    id: int
+    id: str
     table: TableBrief
     columns: List[ColumnBrief]
 
 
 class ForeignKeyReference(BaseModel):
-    id: int
+    id: str
     foreign_key: ForeignKeyBrief
     column: ColumnBrief
     referenced_column: ColumnBrief
@@ -1084,11 +1083,11 @@ class ReferenceType(str, Enum):
 
 
 class ForeignKeyBrief(BaseModel):
-    id: int
+    id: str
 
 
 class ForeignKey(BaseModel):
-    id: int
+    id: str
     name: str
     references: List[ForeignKeyReference]
     table: TableBrief
@@ -1106,7 +1105,7 @@ class CreateForeignKey(BaseModel):
 
 
 class PrimaryKey(BaseModel):
-    id: int
+    id: str
     table: TableBrief
     column: ColumnBrief
 
diff --git a/lib/python/docs/index.rst b/lib/python/docs/index.rst
index 8951bf165f7c5738843ccdcb011c8b932f1531e5..511a08b52d559b8dc252e593dd69c692aacabf6c 100644
--- a/lib/python/docs/index.rst
+++ b/lib/python/docs/index.rst
@@ -6,7 +6,7 @@ Pandas `DataFrame <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame
 provides an object-oriented API as well as low-level access to DBRepo services.
 
 .. note::
-   The SDK has been implemented and documented for DBRepo version 1.6.5, earlier versions may be supported but are not tested for compatibility.
+   The SDK has been implemented and documented for DBRepo version 1.7.0, earlier versions may be supported but are not tested for compatibility.
 
 Quickstart
 ----------
diff --git a/lib/python/pyproject.toml b/lib/python/pyproject.toml
index cbebfbc8a90c462e808d50def00390739c217b80..49b9bbb1b7e166bff6f58533fbd879559485e239 100644
--- a/lib/python/pyproject.toml
+++ b/lib/python/pyproject.toml
@@ -1,6 +1,6 @@
 [project]
 name = "dbrepo"
-version = "1.6.5"
+version = "1.7.0"
 description = "DBRepo Python Library"
 keywords = [
     "DBRepo",
@@ -34,7 +34,7 @@ requires = [
 build-backend = "setuptools.build_meta"
 
 [project.urls]
-Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/"
+Homepage = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/"
 Documentation = "https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/python/"
 Issues = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues"
 Source = "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/"
\ No newline at end of file
diff --git a/lib/python/setup.py b/lib/python/setup.py
index 19600afc0be83a18d00fff7a75cc082bb73408c1..4fff48185b04734932caad08d4aa06583730a52f 100644
--- a/lib/python/setup.py
+++ b/lib/python/setup.py
@@ -2,9 +2,9 @@
 from distutils.core import setup
 
 setup(name="dbrepo",
-      version="1.6.5",
+      version="1.7.0",
       description="A library for communicating with DBRepo",
-      url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/",
+      url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/",
       author="Martin Weise",
       license="Apache-2.0",
       author_email="martin.weise@tuwien.ac.at",
diff --git a/lib/python/tests/test_unit_concept.py b/lib/python/tests/test_unit_concept.py
index 54104dada8b1a69eb4ca61d8aede1ecd9a6a3956..75f8aa52387ee2de10d673fdd298135d8a0880b1 100644
--- a/lib/python/tests/test_unit_concept.py
+++ b/lib/python/tests/test_unit_concept.py
@@ -11,7 +11,7 @@ class ContainerUnitTest(unittest.TestCase):
 
     def test_get_concepts_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [ConceptBrief(id=1,
+            exp = [ConceptBrief(id="65586aef-f5b0-446f-b2e1-9dc2a3c0c359",
                                 uri="http://dbpedia.org/page/Category:Precipitation",
                                 name="Precipitation")]
             # mock
diff --git a/lib/python/tests/test_unit_container.py b/lib/python/tests/test_unit_container.py
index 2edc65bf1983aa836eae6475918a990ae19611a6..1faf4ec738ff689d56ec6fcf84932767ad68379c 100644
--- a/lib/python/tests/test_unit_container.py
+++ b/lib/python/tests/test_unit_container.py
@@ -12,12 +12,12 @@ class ContainerUnitTest(unittest.TestCase):
 
     def test_create_container_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Container(id=1,
+            exp = Container(id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                             name="MariaDB 10.11.3",
                             internal_name="mariadb_10_11_3",
                             host="data-db",
                             port=12345,
-                            image=Image(id=1,
+                            image=Image(id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                         registry="docker.io",
                                         name="mariadb",
                                         version="10.11.3",
@@ -33,7 +33,8 @@ class ContainerUnitTest(unittest.TestCase):
             mock.post('/api/container', json=exp.model_dump(), status_code=201)
             # test
             response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                   host='data-db2', image_id=1,
+                                                                                   host='data-db2',
+                                                                                   image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                    privileged_username='root',
                                                                                    privileged_password='dbrepo',
                                                                                    port=3306)
@@ -42,7 +43,8 @@ class ContainerUnitTest(unittest.TestCase):
     def test_create_container_anonymous_fails(self):
         # test
         try:
-            response = RestClient().create_container(name='MariaDB 10.11.3', host='data-db2', image_id=1,
+            response = RestClient().create_container(name='MariaDB 10.11.3', host='data-db2',
+                                                     image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                      privileged_username='root', privileged_password='dbrepo',
                                                      port=3306)
         except AuthenticationError:
@@ -55,7 +57,8 @@ class ContainerUnitTest(unittest.TestCase):
             # test
             try:
                 response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                       host='data-db2', image_id=1,
+                                                                                       host='data-db2',
+                                                                                       image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                        privileged_username='root',
                                                                                        privileged_password='dbrepo',
                                                                                        port=3306)
@@ -69,7 +72,8 @@ class ContainerUnitTest(unittest.TestCase):
             # test
             try:
                 response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                       host='data-db2', image_id=1,
+                                                                                       host='data-db2',
+                                                                                       image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                        privileged_username='root',
                                                                                        privileged_password='dbrepo',
                                                                                        port=3306)
@@ -83,7 +87,8 @@ class ContainerUnitTest(unittest.TestCase):
             # test
             try:
                 response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                       host='data-db2', image_id=1,
+                                                                                       host='data-db2',
+                                                                                       image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                        privileged_username='root',
                                                                                        privileged_password='dbrepo',
                                                                                        port=3306)
@@ -97,7 +102,8 @@ class ContainerUnitTest(unittest.TestCase):
             # test
             try:
                 response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                       host='data-db2', image_id=1,
+                                                                                       host='data-db2',
+                                                                                       image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                        privileged_username='root',
                                                                                        privileged_password='dbrepo',
                                                                                        port=3306)
@@ -111,7 +117,8 @@ class ContainerUnitTest(unittest.TestCase):
             # test
             try:
                 response = RestClient(username="foo", password="bar").create_container(name='MariaDB 10.11.3',
-                                                                                       host='data-db2', image_id=1,
+                                                                                       host='data-db2',
+                                                                                       image_id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                                                        privileged_username='root',
                                                                                        privileged_password='dbrepo',
                                                                                        port=3306)
@@ -129,14 +136,13 @@ class ContainerUnitTest(unittest.TestCase):
     def test_get_containers_succeeds(self):
         with requests_mock.Mocker() as mock:
             exp = [
-                ContainerBrief(id=1,
+                ContainerBrief(id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                name="MariaDB 10.11.3",
                                internal_name="mariadb_10_11_3",
                                running=True,
-                               image=ImageBrief(id=1,
+                               image=ImageBrief(id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                                 name="mariadb",
-                                                version="10.11.3",
-                                                jdbc_method="mariadb"),
+                                                version="10.11.3"),
                                hash="f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
             ]
             # mock
@@ -157,12 +163,12 @@ class ContainerUnitTest(unittest.TestCase):
 
     def test_get_container_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Container(id=1,
+            exp = Container(id="",
                             name="MariaDB 10.11.3",
                             internal_name="mariadb_10_11_3",
                             host="data-db",
                             port=12345,
-                            image=Image(id=1,
+                            image=Image(id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                                         registry="docker.io",
                                         name="mariadb",
                                         version="10.11.3",
@@ -175,82 +181,87 @@ class ContainerUnitTest(unittest.TestCase):
                                                      documentation="https://mariadb.com/kb/en/bigint/",
                                                      is_quoted=False, is_buildable=True)]))
             # mock
-            mock.get('/api/container/1', json=exp.model_dump())
+            mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', json=exp.model_dump())
             # test
-            response = RestClient().get_container(container_id=1)
+            response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             self.assertEqual(exp, response)
 
     def test_get_container_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/container/1', status_code=404)
+            mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=404)
             # test
             try:
-                response = RestClient().get_container(container_id=1)
+                response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except NotExistsError:
                 pass
 
     def test_get_container_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/container/1', status_code=401)
+            mock.get('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=401)
             # test
             try:
-                response = RestClient().get_container(container_id=1)
+                response = RestClient().get_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except ResponseCodeError:
                 pass
 
     def test_delete_container_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/container/1', status_code=202)
+            mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=202)
             # test
-            RestClient(username='foo', password='bar').delete_container(container_id=1)
+            RestClient(username='foo', password='bar').delete_container(
+                container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
 
     def test_delete_container_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/container/1', status_code=400)
+            mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=400)
             # test
             try:
-                RestClient(username='foo', password='bar').delete_container(container_id=1)
+                RestClient(username='foo', password='bar').delete_container(
+                    container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except MalformedError:
                 pass
 
     def test_delete_container_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/container/1', status_code=403)
+            mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=403)
             # test
             try:
-                RestClient(username='foo', password='bar').delete_container(container_id=1)
+                RestClient(username='foo', password='bar').delete_container(
+                    container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except ForbiddenError:
                 pass
 
     def test_delete_container_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/container/1', status_code=404)
+            mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=404)
             # test
             try:
-                RestClient(username='foo', password='bar').delete_container(container_id=1)
+                RestClient(username='foo', password='bar').delete_container(
+                    container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except NotExistsError:
                 pass
 
     def test_delete_container_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/container/1', status_code=200)
+            mock.delete('/api/container/44d811a8-4019-46ba-bd57-ea10a2eb0c74', status_code=200)
             # test
             try:
-                RestClient(username='foo', password='bar').delete_container(container_id=1)
+                RestClient(username='foo', password='bar').delete_container(
+                    container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
             except ResponseCodeError:
                 pass
 
     def test_delete_container_anonymous_fails(self):
         # test
         try:
-            RestClient().delete_container(container_id=1)
+            RestClient().delete_container(container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74")
         except AuthenticationError:
             pass
 
diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py
index 952b27c61f844e52df9249d386fe900c5099fbc1..3fd7ddcd60a7c78db0bfdacdef471db19361d53e 100644
--- a/lib/python/tests/test_unit_database.py
+++ b/lib/python/tests/test_unit_database.py
@@ -22,7 +22,7 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_get_databases_succeeds(self):
         exp = [
             DatabaseBrief(
-                id=1,
+                id="6bd39359-b154-456d-b9c2-caa516a45732",
                 name='test',
                 owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16',
                 contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -68,7 +68,7 @@ class DatabaseUnitTest(unittest.TestCase):
 
     def test_get_database_succeeds(self):
         exp = Database(
-            id=1,
+            id="6bd39359-b154-456d-b9c2-caa516a45732",
             name='test',
             owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
             contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -77,57 +77,56 @@ class DatabaseUnitTest(unittest.TestCase):
             is_public=True,
             is_schema_public=True,
             container=ContainerBrief(
-                id=1,
+                id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                 name='MariaDB Galera 11.1.3',
                 internal_name='mariadb',
                 image=ImageBrief(
-                    id=1,
+                    id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                     name='mariadb',
-                    version='11.2.2',
-                    jdbc_method='mariadb'
+                    version='11.2.2'
                 )
             )
         )
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1', json=exp.model_dump())
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', json=exp.model_dump())
             # test
-            response = RestClient().get_database(1)
+            response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_get_database_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=403)
             # test
             try:
-                response = RestClient().get_database(1)
+                response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError as e:
                 pass
 
     def test_get_database_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=404)
             # test
             try:
-                response = RestClient().get_database(1)
+                response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError as e:
                 pass
 
     def test_get_database_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732', status_code=202)
             # test
             try:
-                response = RestClient().get_database(1)
+                response = RestClient().get_database(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError as e:
                 pass
 
     def test_create_database_succeeds(self):
         exp = Database(
-            id=1,
+            id="6bd39359-b154-456d-b9c2-caa516a45732",
             name='test',
             owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
             contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -136,14 +135,13 @@ class DatabaseUnitTest(unittest.TestCase):
             is_public=True,
             is_schema_public=True,
             container=ContainerBrief(
-                id=1,
+                id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                 name='MariaDB Galera 11.1.3',
                 internal_name='mariadb',
                 image=ImageBrief(
-                    id=1,
+                    id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                     name='mariadb',
-                    version='11.2.2',
-                    jdbc_method='mariadb'
+                    version='11.2.2'
                 )
             )
         )
@@ -152,7 +150,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', json=exp.model_dump(), status_code=201)
             # test
             client = RestClient(username="a", password="b")
-            response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+            response = RestClient(username="a", password="b").create_database(name='test',
+                                                                              container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                               is_public=True)
             self.assertEqual(response.name, 'test')
 
@@ -162,7 +161,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=400)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except MalformedError as e:
                 pass
@@ -173,7 +173,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=403)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except ForbiddenError as e:
                 pass
@@ -184,7 +185,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=404)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except NotExistsError as e:
                 pass
@@ -195,7 +197,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=409)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except QueryStoreError as e:
                 pass
@@ -206,7 +209,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=502)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except ServiceConnectionError as e:
                 pass
@@ -217,7 +221,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=503)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except ServiceError as e:
                 pass
@@ -228,7 +233,8 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=202)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database(name='test', container_id=1,
+                response = RestClient(username="a", password="b").create_database(name='test',
+                                                                                  container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                                                                                   is_public=True)
             except ResponseCodeError as e:
                 pass
@@ -239,13 +245,15 @@ class DatabaseUnitTest(unittest.TestCase):
             mock.post('/api/database', status_code=404)
             # test
             try:
-                response = RestClient().create_database(name='test', container_id=1, is_public=True)
+                response = RestClient().create_database(name='test',
+                                                        container_id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
+                                                        is_public=True)
             except AuthenticationError as e:
                 pass
 
     def test_update_database_visibility_succeeds(self):
         exp = Database(
-            id=1,
+            id="6bd39359-b154-456d-b9c2-caa516a45732",
             name='test',
             owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
             contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -254,33 +262,34 @@ class DatabaseUnitTest(unittest.TestCase):
             is_public=True,
             is_schema_public=True,
             container=ContainerBrief(
-                id=1,
+                id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                 name='MariaDB Galera 11.1.3',
                 internal_name='mariadb',
                 image=ImageBrief(
-                    id=1,
+                    id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                     name='mariadb',
-                    version='11.2.2',
-                    jdbc_method='mariadb'
+                    version='11.2.2'
                 )
             )
         )
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', json=exp.model_dump(), status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', json=exp.model_dump(),
+                     status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            response = RestClient(username="a", password="b").update_database_visibility(database_id=1, is_public=True,
+            response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                                                         is_public=True,
                                                                                          is_schema_public=True)
             self.assertEqual(response.is_public, True)
 
     def test_update_database_visibility_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=400)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except MalformedError:
@@ -289,10 +298,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=403)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except ForbiddenError:
@@ -301,10 +310,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=404)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except NotExistsError:
@@ -313,10 +322,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=502)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=502)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except ServiceConnectionError:
@@ -325,10 +334,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=503)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except ServiceError:
@@ -337,10 +346,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/visibility', status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/visibility', status_code=200)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_visibility(database_id=1,
+                response = RestClient(username="a", password="b").update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                              is_public=True,
                                                                                              is_schema_public=True)
             except ResponseCodeError:
@@ -349,13 +358,13 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_visibility_anonymous_fails(self):
         # test
         try:
-            response = RestClient().update_database_visibility(database_id=1, is_public=True, is_schema_public=True)
+            response = RestClient().update_database_visibility(database_id="6bd39359-b154-456d-b9c2-caa516a45732", is_public=True, is_schema_public=True)
         except AuthenticationError:
             pass
 
     def test_update_database_owner_succeeds(self):
         exp = Database(
-            id=1,
+            id="6bd39359-b154-456d-b9c2-caa516a45732",
             name='test',
             owner=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='mweise'),
             contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -364,33 +373,32 @@ class DatabaseUnitTest(unittest.TestCase):
             is_public=True,
             is_schema_public=True,
             container=ContainerBrief(
-                id=1,
+                id="44d811a8-4019-46ba-bd57-ea10a2eb0c74",
                 name='MariaDB Galera 11.1.3',
                 internal_name='mariadb',
                 image=ImageBrief(
-                    id=1,
+                    id="b104648b-54d2-4d72-9834-8e0e6d428b39",
                     name='mariadb',
-                    version='11.2.2',
-                    jdbc_method='mariadb'
+                    version='11.2.2'
                 )
             )
         )
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', json=exp.model_dump(), status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', json=exp.model_dump(), status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+            response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                     user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             self.assertEqual(response.owner.id, 'abdbf897-e599-4e5a-a3f0-7529884ea011')
 
     def test_update_database_owner_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=400)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except MalformedError:
                 pass
@@ -398,10 +406,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=403)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ForbiddenError:
                 pass
@@ -409,10 +417,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=404)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except NotExistsError:
                 pass
@@ -420,10 +428,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=502)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=502)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceConnectionError:
                 pass
@@ -431,10 +439,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=503)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceError:
                 pass
@@ -442,10 +450,10 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=200)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_owner(database_id=1,
+                response = RestClient(username="a", password="b").update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                         user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ResponseCodeError:
                 pass
@@ -453,17 +461,17 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_owner_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/owner', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/owner', status_code=404)
             # test
             try:
-                response = RestClient().update_database_owner(database_id=1,
+                response = RestClient().update_database_owner(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except AuthenticationError:
                 pass
 
     def test_update_database_schema_succeeds(self):
         exp = DatabaseBrief(
-            id=1,
+            id="6bd39359-b154-456d-b9c2-caa516a45732",
             name='test',
             owner_id='8638c043-5145-4be8-a3e4-4b79991b0a16',
             contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
@@ -473,142 +481,142 @@ class DatabaseUnitTest(unittest.TestCase):
         )
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json=exp.model_dump())
-            mock.put('/api/database/1/metadata/view', json=exp.model_dump())
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json=exp.model_dump())
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', json=exp.model_dump())
             # test
-            response = RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+            response = RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_update_database_schema_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=400)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except MalformedError:
                 pass
 
     def test_update_database_schema_view_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=400)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except MalformedError:
                 pass
 
     def test_update_database_schema_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=403)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError:
                 pass
 
     def test_update_database_schema_view_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=403)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError:
                 pass
 
     def test_update_database_schema_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=404)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_update_database_schema_view_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=404)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_update_database_schema_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=502)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=502)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ServiceConnectionError:
                 pass
 
     def test_update_database_schema_view_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=502)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=502)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ServiceConnectionError:
                 pass
 
     def test_update_database_schema_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=503)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ServiceError:
                 pass
 
     def test_update_database_schema_view_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=503)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ServiceError:
                 pass
 
     def test_update_database_schema_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', status_code=202)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
     def test_update_database_schema_view_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/metadata/table', json={}, status_code=200)
-            mock.put('/api/database/1/metadata/view', status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/table', json={}, status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/metadata/view', status_code=202)
             # test
             try:
-                RestClient(username='foo', password='bar').update_database_schema(database_id=1)
+                RestClient(username='foo', password='bar').update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
     def test_update_database_schema_anonymous_fails(self):
         # test
         try:
-            RestClient().update_database_schema(database_id=1)
+            RestClient().update_database_schema(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
         except AuthenticationError:
             pass
 
@@ -617,38 +625,38 @@ class DatabaseUnitTest(unittest.TestCase):
                              user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other'))
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/access', json=exp.model_dump())
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', json=exp.model_dump())
             # test
-            response = RestClient().get_database_access(database_id=1)
+            response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(response, AccessType.READ)
 
     def test_get_database_access_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/access', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=403)
             # test
             try:
-                response = RestClient().get_database_access(database_id=1)
+                response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError:
                 pass
 
     def test_get_database_access_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/access', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=404)
             # test
             try:
-                response = RestClient().get_database_access(database_id=1)
+                response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_get_database_access_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/access', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access', status_code=202)
             # test
             try:
-                response = RestClient().get_database_access(database_id=1)
+                response = RestClient().get_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
@@ -657,10 +665,11 @@ class DatabaseUnitTest(unittest.TestCase):
                              user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other'))
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(),
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      json=exp.model_dump(),
                       status_code=202)
             # test
-            response = RestClient(username="a", password="b").create_database_access(database_id=1,
+            response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                      type=AccessType.READ,
                                                                                      user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             self.assertEqual(response, exp.type)
@@ -668,10 +677,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=400)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except MalformedError:
@@ -680,10 +690,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=400)
             # test
             try:
-                response = RestClient().create_database_access(database_id=1, type=AccessType.READ,
+                response = RestClient().create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ,
                                                                user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except AuthenticationError:
                 pass
@@ -691,10 +702,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=403)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ForbiddenError:
@@ -703,10 +715,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=404)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except NotExistsError:
@@ -715,10 +728,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=502)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceConnectionError:
@@ -727,10 +741,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=503)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceError:
@@ -739,10 +754,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_create_database_access_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                      status_code=200)
             # test
             try:
-                response = RestClient(username="a", password="b").create_database_access(database_id=1,
+                response = RestClient(username="a", password="b").create_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ResponseCodeError:
@@ -753,10 +769,11 @@ class DatabaseUnitTest(unittest.TestCase):
                              user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other'))
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(),
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     json=exp.model_dump(),
                      status_code=202)
             # test
-            response = RestClient(username="a", password="b").update_database_access(database_id=1,
+            response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                      type=AccessType.READ,
                                                                                      user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             self.assertEqual(response, exp.type)
@@ -764,10 +781,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=400)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except MalformedError:
@@ -776,10 +794,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=403)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ForbiddenError:
@@ -788,10 +807,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=404)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except NotExistsError:
@@ -800,10 +820,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=502)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceConnectionError:
@@ -812,10 +833,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=503)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceError:
@@ -824,10 +846,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=200)
             # test
             try:
-                response = RestClient(username="a", password="b").update_database_access(database_id=1,
+                response = RestClient(username="a", password="b").update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                                          type=AccessType.READ,
                                                                                          user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ResponseCodeError:
@@ -836,10 +859,11 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_update_database_access_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                     status_code=404)
             # test
             try:
-                response = RestClient().update_database_access(database_id=1, type=AccessType.READ,
+                response = RestClient().update_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=AccessType.READ,
                                                                user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except AuthenticationError:
                 pass
@@ -847,19 +871,23 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=202)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            RestClient(username="a", password="b").delete_database_access(database_id=1,
+            RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                           user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
 
     def test_delete_database_access_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=400)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=400)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except MalformedError:
                 pass
@@ -867,10 +895,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=403)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=403)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ForbiddenError:
                 pass
@@ -878,10 +908,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=404)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except NotExistsError:
                 pass
@@ -889,10 +921,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=502)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=502)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceConnectionError:
                 pass
@@ -900,10 +934,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=503)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=503)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ServiceError:
                 pass
@@ -911,10 +947,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=200)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=200)
             # test
             try:
-                RestClient(username="a", password="b").delete_database_access(database_id=1,
+                RestClient(username="a", password="b").delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                                                               user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except ResponseCodeError:
                 pass
@@ -922,10 +960,12 @@ class DatabaseUnitTest(unittest.TestCase):
     def test_delete_database_access_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', status_code=404)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/access/abdbf897-e599-4e5a-a3f0-7529884ea011',
+                status_code=404)
             # test
             try:
-                RestClient().delete_database_access(database_id=1, user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
+                RestClient().delete_database_access(database_id="6bd39359-b154-456d-b9c2-caa516a45732", user_id='abdbf897-e599-4e5a-a3f0-7529884ea011')
             except AuthenticationError:
                 pass
 
diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py
index 36630e3df00559aea6a5ac43bd0c18fe10e6b648..6509bcac5a3e9e20a13bf25f67c86b2196712517 100644
--- a/lib/python/tests/test_unit_identifier.py
+++ b/lib/python/tests/test_unit_identifier.py
@@ -16,20 +16,26 @@ class IdentifierUnitTest(unittest.TestCase):
 
     def test_create_identifier_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="ffaf9e0c-c37d-4655-bd68-80cd991cf24c",
+                                                     title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                       funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                   value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232",
+                                               creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
@@ -37,7 +43,7 @@ class IdentifierUnitTest(unittest.TestCase):
             # test
             client = RestClient(username="a", password="b")
             response = client.create_identifier(
-                database_id=1, type=IdentifierType.VIEW,
+                database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                 titles=[CreateIdentifierTitle(title='Test Title')],
                 publisher='TU Wien', publication_year=2024,
                 language=Language.EN,
@@ -57,7 +63,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -73,7 +79,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -89,7 +95,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -105,7 +111,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -121,7 +127,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -137,7 +143,7 @@ class IdentifierUnitTest(unittest.TestCase):
             try:
                 client = RestClient(username="a", password="b")
                 client.create_identifier(
-                    database_id=1, type=IdentifierType.VIEW,
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                     titles=[CreateIdentifierTitle(title='Test Title')],
                     descriptions=[CreateIdentifierDescription(description='Test')],
                     publisher='TU Wien', publication_year=2024,
@@ -149,7 +155,7 @@ class IdentifierUnitTest(unittest.TestCase):
         # test
         try:
             RestClient().create_identifier(
-                database_id=1, type=IdentifierType.VIEW,
+                database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
                 titles=[CreateIdentifierTitle(title='Test Title')],
                 descriptions=[CreateIdentifierDescription(description='Test')],
                 publisher='TU Wien', publication_year=2024,
@@ -159,26 +165,33 @@ class IdentifierUnitTest(unittest.TestCase):
 
     def test_get_identifiers_view_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [Identifier(id=10,
-                              database_id=1,
-                              view_id=32,
+            exp = [Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                              database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                              view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                               publication_year=2024,
                               publisher='TU Wien',
                               type=IdentifierType.VIEW,
                               language=Language.EN,
-                              descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                              titles=[IdentifierTitle(id=3, title='Test Title')],
-                              funders=[IdentifierFunder(id=4, funder_name='FWF')],
-                              related_identifiers=[RelatedIdentifier(id=7, value='10.12345/abc',
-                                                                     relation=RelatedIdentifierRelation.CITES,
-                                                                     type=RelatedIdentifierType.DOI)],
-                              creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                              descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                  description='Test Description')],
+                              titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                      title='Test Title')],
+                              funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                        funder_name='FWF')],
+                              related_identifiers=[
+                                  RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                    relation=RelatedIdentifierRelation.CITES,
+                                                    type=RelatedIdentifierType.DOI)],
+                              creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232",
+                                                creator_name='Carberry, Josiah')],
                               status=IdentifierStatusType.PUBLISHED,
                               owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))]
             # mock
             mock.get('/api/identifiers', json=[exp[0].model_dump()], headers={"Accept": "application/json"})
             # test
-            response = RestClient().get_identifiers(database_id=1, view_id=32, type=IdentifierType.VIEW,
+            response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                    view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
+                                                    type=IdentifierType.VIEW,
                                                     status=IdentifierStatusType.PUBLISHED)
             self.assertEqual(exp, response)
 
@@ -188,7 +201,8 @@ class IdentifierUnitTest(unittest.TestCase):
             # mock
             mock.get('/api/identifiers', json=[], headers={"Accept": "application/json"})
             # test
-            response = RestClient().get_identifiers(database_id=1, subset_id=2)
+            response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                    subset_id="0831bf54-9dd9-46fe-8c2c-c539332ea177")
             self.assertEqual(exp, response)
 
     def test_get_identifiers_table_succeeds(self):
@@ -197,27 +211,28 @@ class IdentifierUnitTest(unittest.TestCase):
             # mock
             mock.get('/api/identifiers', json=[], headers={"Accept": "application/json"})
             # test
-            response = RestClient().get_identifiers(database_id=1, table_id=3)
+            response = RestClient().get_identifiers(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             self.assertEqual(exp, response)
 
     def test_get_identifiers_view_param_database_fails(self):
         # test
         try:
-            RestClient().get_identifiers(view_id=1)
+            RestClient().get_identifiers(view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c")
         except RequestError:
             pass
 
     def test_get_identifiers_subset_param_database_fails(self):
         # test
         try:
-            RestClient().get_identifiers(subset_id=1)
+            RestClient().get_identifiers(subset_id="0831bf54-9dd9-46fe-8c2c-c539332ea177")
         except RequestError:
             pass
 
     def test_get_identifiers_table_param_database_fails(self):
         # test
         try:
-            RestClient().get_identifiers(table_id=1)
+            RestClient().get_identifiers(table_id="b3230b86-4743-498d-9015-3fad58049692")
         except RequestError:
             pass
 
@@ -253,62 +268,78 @@ class IdentifierUnitTest(unittest.TestCase):
 
     def test_update_identifier_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                     title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                       funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                   value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[Creator(id="70539dff-c549-4c95-8257-9c750decf232",
+                                               creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10', json=exp.model_dump(), status_code=202)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', json=exp.model_dump(), status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            response = client.update_identifier(identifier_id=10,
-                                                database_id=1, type=IdentifierType.VIEW,
-                                                titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+            response = client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                type=IdentifierType.VIEW,
+                                                titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                            title='Test Title')],
                                                 publisher='TU Wien', publication_year=2024,
                                                 language=Language.EN,
-                                                funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                                related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                           value='10.12345/abc',
-                                                                                           relation=RelatedIdentifierRelation.CITES,
-                                                                                           type=RelatedIdentifierType.DOI)],
-                                                descriptions=[SaveIdentifierDescription(id=2,
-                                                                                        description='Test Description')],
-                                                creators=[SaveIdentifierCreator(id=30,
-                                                                                creator_name='Carberry, Josiah')])
+                                                funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                              funder_name='FWF')],
+                                                related_identifiers=[
+                                                    SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                          value='10.12345/abc',
+                                                                          relation=RelatedIdentifierRelation.CITES,
+                                                                          type=RelatedIdentifierType.DOI)],
+                                                descriptions=[
+                                                    SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                              description='Test Description')],
+                                                creators=[
+                                                    SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
+                                                                          creator_name='Carberry, Josiah')])
             self.assertEqual(exp, response)
 
     def test_update_identifier_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=400)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=400)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except MalformedError:
                 pass
@@ -316,23 +347,27 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=403)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=403)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except ForbiddenError:
                 pass
@@ -340,23 +375,27 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=404)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=404)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except NotExistsError:
                 pass
@@ -364,23 +403,27 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=502)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=502)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except ServiceConnectionError:
                 pass
@@ -388,23 +431,27 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=503)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=503)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except ServiceError:
                 pass
@@ -412,23 +459,27 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/identifier/10', status_code=200)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3', status_code=200)
             # test
             client = RestClient(username="a", password="b")
             try:
-                client.update_identifier(identifier_id=10,
-                                         database_id=1, type=IdentifierType.VIEW,
-                                         titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+                client.update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                         database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                         titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                     title='Test Title')],
                                          publisher='TU Wien', publication_year=2024,
                                          language=Language.EN,
-                                         funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                         related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                    value='10.12345/abc',
-                                                                                    relation=RelatedIdentifierRelation.CITES,
-                                                                                    type=RelatedIdentifierType.DOI)],
-                                         descriptions=[SaveIdentifierDescription(id=2,
-                                                                                 description='Test Description')],
-                                         creators=[SaveIdentifierCreator(id=30,
+                                         funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                       funder_name='FWF')],
+                                         related_identifiers=[
+                                             SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                   value='10.12345/abc',
+                                                                   relation=RelatedIdentifierRelation.CITES,
+                                                                   type=RelatedIdentifierType.DOI)],
+                                         descriptions=[
+                                             SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                       description='Test Description')],
+                                         creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                          creator_name='Carberry, Josiah')])
             except ResponseCodeError:
                 pass
@@ -436,208 +487,239 @@ class IdentifierUnitTest(unittest.TestCase):
     def test_update_identifier_anonymous_fails(self):
         # test
         try:
-            RestClient().update_identifier(identifier_id=10,
-                                           database_id=1, type=IdentifierType.VIEW,
-                                           titles=[SaveIdentifierTitle(id=10, title='Test Title')],
+            RestClient().update_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                           database_id="6bd39359-b154-456d-b9c2-caa516a45732", type=IdentifierType.VIEW,
+                                           titles=[SaveIdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                                                                       title='Test Title')],
                                            publisher='TU Wien', publication_year=2024,
                                            language=Language.EN,
-                                           funders=[SaveIdentifierFunder(id=2, funder_name='FWF')],
-                                           related_identifiers=[SaveRelatedIdentifier(id=2,
-                                                                                      value='10.12345/abc',
-                                                                                      relation=RelatedIdentifierRelation.CITES,
-                                                                                      type=RelatedIdentifierType.DOI)],
-                                           descriptions=[SaveIdentifierDescription(id=2,
-                                                                                   description='Test Description')],
-                                           creators=[SaveIdentifierCreator(id=30,
+                                           funders=[SaveIdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c",
+                                                                         funder_name='FWF')],
+                                           related_identifiers=[
+                                               SaveRelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815",
+                                                                     value='10.12345/abc',
+                                                                     relation=RelatedIdentifierRelation.CITES,
+                                                                     type=RelatedIdentifierType.DOI)],
+                                           descriptions=[
+                                               SaveIdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                         description='Test Description')],
+                                           creators=[SaveIdentifierCreator(id="6bf894bc-8f55-4b5d-83cf-198b29253260",
                                                                            creator_name='Carberry, Josiah')])
         except AuthenticationError:
             pass
 
     def test_publish_identifier_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=202)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            response = client.publish_identifier(identifier_id=10)
+            response = client.publish_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             self.assertEqual(exp, response)
 
     def test_publish_identifier_400_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=400)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=400)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except MalformedError:
                 pass
 
     def test_publish_identifier_403_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=403)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=403)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except ForbiddenError:
                 pass
 
     def test_publish_identifier_404_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=404)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=404)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except NotExistsError:
                 pass
 
     def test_publish_identifier_502_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=502)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=502)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except ServiceConnectionError:
                 pass
 
     def test_publish_identifier_503_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=503)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=503)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except ServiceError:
                 pass
 
     def test_publish_identifier_unknown_fails(self):
         with requests_mock.Mocker() as mock:
-            exp = Identifier(id=10,
-                             database_id=1,
-                             view_id=32,
+            exp = Identifier(id="f6171539-a479-4829-9b9b-a6b474e1c7d3",
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                             view_id="e5229d24-584a-43e8-b9f6-d349c3053f9c",
                              publication_year=2024,
                              publisher='TU Wien',
                              type=IdentifierType.VIEW,
                              language=Language.EN,
-                             descriptions=[IdentifierDescription(id=2, description='Test Description')],
-                             titles=[IdentifierTitle(id=3, title='Test Title')],
-                             funders=[IdentifierFunder(id=4, funder_name='FWF')],
+                             descriptions=[IdentifierDescription(id="d8bdc933-655c-46bd-9903-ede3928a304b",
+                                                                 description='Test Description')],
+                             titles=[IdentifierTitle(id="f6171539-a479-4829-9b9b-a6b474e1c7d3", title='Test Title')],
+                             funders=[IdentifierFunder(id="d0dc801d-cfb7-4b07-9b20-2d7af39c913c", funder_name='FWF')],
                              related_identifiers=[
-                                 RelatedIdentifier(id=7, value='10.12345/abc', relation=RelatedIdentifierRelation.CITES,
+                                 RelatedIdentifier(id="6655eba7-b0ac-4bc4-9f09-6355fec8d815", value='10.12345/abc',
+                                                   relation=RelatedIdentifierRelation.CITES,
                                                    type=RelatedIdentifierType.DOI)],
-                             creators=[Creator(id=5, creator_name='Carberry, Josiah')],
+                             creators=[
+                                 Creator(id="70539dff-c549-4c95-8257-9c750decf232", creator_name='Carberry, Josiah')],
                              status=IdentifierStatusType.PUBLISHED,
                              owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))
             # mock
-            mock.put('/api/identifier/10/publish', json=exp.model_dump(), status_code=200)
+            mock.put('/api/identifier/f6171539-a479-4829-9b9b-a6b474e1c7d3/publish', json=exp.model_dump(), status_code=200)
             # test
             try:
-                RestClient(username="a", password="b").publish_identifier(identifier_id=10)
+                RestClient(username="a", password="b").publish_identifier(
+                    identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
             except ResponseCodeError:
                 pass
 
     def test_publish_identifier_anonymous_fails(self):
         # test
         try:
-            RestClient().publish_identifier(identifier_id=10)
+            RestClient().publish_identifier(identifier_id="f6171539-a479-4829-9b9b-a6b474e1c7d3")
         except AuthenticationError:
             pass
 
diff --git a/lib/python/tests/test_unit_query.py b/lib/python/tests/test_unit_query.py
index 415a35b86ce3f2e44d517506cf0fe70644ad5659..fb23a3c9491305e6be650c81c1566a985d6c9f04 100644
--- a/lib/python/tests/test_unit_query.py
+++ b/lib/python/tests/test_unit_query.py
@@ -18,10 +18,11 @@ class QueryUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.post('/api/database/1/subset', json=json.dumps(exp), headers={'X-Id': '1'}, status_code=201)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=json.dumps(exp),
+                      headers={'X-Id': '1'}, status_code=201)
             # test
             client = RestClient(username="a", password="b")
-            response = client.create_subset(database_id=1, page=0, size=10,
+            response = client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", page=0, size=10,
                                             timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc),
                                             query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             self.assertTrue(DataFrame.equals(df, response))
@@ -29,11 +30,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=400)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except MalformedError:
                 pass
@@ -41,11 +42,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=403)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except ForbiddenError:
                 pass
@@ -53,11 +54,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=404)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except NotExistsError:
                 pass
@@ -65,11 +66,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_417_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=417)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=417)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except QueryStoreError:
                 pass
@@ -77,11 +78,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_501_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=501)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=501)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except FormatNotAvailable:
                 pass
@@ -89,11 +90,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=503)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except ServiceError:
                 pass
@@ -101,11 +102,11 @@ class QueryUnitTest(unittest.TestCase):
     def test_create_subset_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/subset', status_code=200)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_subset(database_id=1,
+                client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                      query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             except ResponseCodeError:
                 pass
@@ -115,81 +116,94 @@ class QueryUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.post('/api/database/1/subset', json=json.dumps(exp), headers={'X-Id': '1'}, status_code=201)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=json.dumps(exp),
+                      headers={'X-Id': '1'}, status_code=201)
             # test
 
             client = RestClient()
-            response = client.create_subset(database_id=1, page=0, size=10,
+            response = client.create_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732", page=0, size=10,
                                             query="SELECT id, username FROM some_table WHERE id IN (1,2)")
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_subset_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Query(id=6,
+            exp = Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
                         owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                         execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc),
                         query='SELECT id, username FROM some_table WHERE id IN (1,2)',
                         query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)',
                         type=QueryType.QUERY,
-                        database_id=1,
+                        database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                         query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8',
                         result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4',
                         is_persisted=False,
                         result_number=None,
                         identifiers=[])
             # mock
-            mock.get('/api/database/1/subset/6', json=exp.model_dump())
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     json=exp.model_dump())
             # test
-            response = RestClient().get_subset(database_id=1, subset_id=6)
+            response = RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             self.assertEqual(exp, response)
 
     def test_get_subset_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=403)
             # test
             try:
-                RestClient().get_subset(database_id=1, subset_id=6)
+                RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ForbiddenError:
                 pass
 
     def test_get_subset_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=404)
             # test
             try:
-                RestClient().get_subset(database_id=1, subset_id=6)
+                RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except NotExistsError:
                 pass
 
     def test_get_subset_406_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6', status_code=406)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=406)
             # test
             try:
-                RestClient().get_subset(database_id=1, subset_id=6)
+                RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except FormatNotAvailable:
                 pass
 
     def test_get_subset_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6', status_code=503)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=503)
             # test
             try:
-                RestClient().get_subset(database_id=1, subset_id=6)
+                RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ServiceError:
                 pass
 
     def test_get_subset_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=202)
             # test
             try:
-                RestClient().get_subset(database_id=1, subset_id=6)
+                RestClient().get_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ResponseCodeError:
                 pass
 
@@ -197,156 +211,180 @@ class QueryUnitTest(unittest.TestCase):
         with requests_mock.Mocker() as mock:
             exp = []
             # mock
-            mock.get('/api/database/1/subset', json=[])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=[])
             # test
-            response = RestClient().get_queries(database_id=1)
+            response = RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_update_subset_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Query(id=6,
+            exp = Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
                         owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                         execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc),
                         query='SELECT id, username FROM some_table WHERE id IN (1,2)',
                         query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)',
                         type=QueryType.QUERY,
-                        database_id=1,
+                        database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                         query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8',
                         result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4',
                         is_persisted=True,
                         result_number=None,
                         identifiers=[])
             # mock
-            mock.put('/api/database/1/subset/6', json=exp.model_dump(), status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     json=exp.model_dump(),
+                     status_code=202)
             # test
-            response = RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6,
-                                                                                persist=True)
+            response = RestClient(username='foo', password='bar').update_subset(
+                database_id="6bd39359-b154-456d-b9c2-caa516a45732", subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
+                persist=True)
             self.assertEqual(exp, response)
 
     def test_update_subset_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=400)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=400)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True)
             except MalformedError:
                 pass
 
     def test_update_subset_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=403)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True)
             except ForbiddenError:
                 pass
 
     def test_update_subset_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=404)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True)
             except NotExistsError:
                 pass
 
     def test_update_subset_417_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=417)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=417)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True)
             except QueryStoreError:
                 pass
 
     def test_update_subset_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=503)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=503)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939", persist=True)
             except ServiceError:
                 pass
 
     def test_update_subset_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/subset/6', status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939',
+                     status_code=200)
             # test
             try:
-                RestClient(username='foo', password='bar').update_subset(database_id=1, subset_id=6, persist=True)
+                RestClient(username='foo', password='bar').update_subset(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
+                    persist=True)
             except ResponseCodeError:
                 pass
 
     def test_update_subset_anonymous_fails(self):
         # test
         try:
-            RestClient().update_subset(database_id=1, subset_id=6, persist=True)
+            RestClient().update_subset(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                       subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
+                                       persist=True)
         except AuthenticationError:
             pass
 
     def test_get_queries_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [Query(id=6,
+            exp = [Query(id="e1df2bb8-1f12-494a-ade5-2c4aecdab939",
                          owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                          execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc),
                          query='SELECT id, username FROM some_table WHERE id IN (1,2)',
                          query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)',
                          type=QueryType.QUERY,
-                         database_id=1,
+                         database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                          query_hash='da5ff66c4a57683171e2ffcec25298ee684680d1e03633cd286f9067d6924ad8',
                          result_hash='464740ba612225913bb15b26f13377707949b55e65288e89c3f8b4c6469aecb4',
                          is_persisted=False,
                          result_number=None,
                          identifiers=[])]
             # mock
-            mock.get('/api/database/1/subset', json=[exp[0].model_dump()])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', json=[exp[0].model_dump()])
             # test
-            response = RestClient().get_queries(database_id=1)
+            response = RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_get_queries_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=403)
             # test
             try:
-                RestClient().get_queries(database_id=1)
+                RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError:
                 pass
 
     def test_get_queries_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=404)
             # test
             try:
-                RestClient().get_queries(database_id=1)
+                RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_get_queries_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset', status_code=503)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=503)
             # test
             try:
-                RestClient().get_queries(database_id=1)
+                RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ServiceError:
                 pass
 
     def test_get_queries_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset', status_code=202)
             # test
             try:
-                RestClient().get_queries(database_id=1)
+                RestClient().get_queries(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
@@ -355,9 +393,12 @@ class QueryUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/subset/6/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                json=json.dumps(exp))
             # test
-            response = RestClient().get_subset_data(database_id=1, subset_id=6)
+            response = RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_subset_data_dataframe_succeeds(self):
@@ -365,59 +406,77 @@ class QueryUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/subset/6/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                json=json.dumps(exp))
             # test
-            response = RestClient().get_subset_data(database_id=1, subset_id=6)
+            response = RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                    subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             self.assertEqual(df.shape, response.shape)
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_subset_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6/data', status_code=400)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=400)
             # test
             try:
-                RestClient().get_subset_data(database_id=1, subset_id=6)
+                RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except MalformedError:
                 pass
 
     def test_get_subset_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6/data', status_code=403)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=403)
             # test
             try:
-                RestClient().get_subset_data(database_id=1, subset_id=6)
+                RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ForbiddenError:
                 pass
 
     def test_get_subset_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6/data', status_code=404)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=404)
             # test
             try:
-                RestClient().get_subset_data(database_id=1, subset_id=6)
+                RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except NotExistsError:
                 pass
 
     def test_get_subset_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6/data', status_code=503)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=503)
             # test
             try:
-                RestClient().get_subset_data(database_id=1, subset_id=6)
+                RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ServiceError:
                 pass
 
     def test_get_subset_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/subset/6/data', status_code=202)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=202)
             # test
             try:
-                RestClient().get_subset_data(database_id=1, subset_id=6)
+                RestClient().get_subset_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ResponseCodeError:
                 pass
 
@@ -425,58 +484,76 @@ class QueryUnitTest(unittest.TestCase):
         with requests_mock.Mocker() as mock:
             exp = 2
             # mock
-            mock.head('/api/database/1/subset/6/data', headers={'X-Count': str(exp)})
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                headers={'X-Count': str(exp)})
             # test
-            response = RestClient().get_subset_data_count(database_id=1, subset_id=6)
+            response = RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                          subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             self.assertEqual(exp, response)
 
     def test_get_subset_data_count_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/subset/6/data', status_code=400)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=400)
             # test
             try:
-                RestClient().get_subset_data_count(database_id=1, subset_id=6)
+                RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except MalformedError:
                 pass
 
     def test_get_subset_data_count_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/subset/6/data', status_code=403)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=403)
             # test
             try:
-                RestClient().get_subset_data_count(database_id=1, subset_id=6)
+                RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ForbiddenError:
                 pass
 
     def test_get_subset_data_count_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/subset/6/data', status_code=404)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=404)
             # test
             try:
-                RestClient().get_subset_data_count(database_id=1, subset_id=6)
+                RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except NotExistsError:
                 pass
 
     def test_get_subset_data_count_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/subset/6/data', status_code=503)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=503)
             # test
             try:
-                RestClient().get_subset_data_count(database_id=1, subset_id=6)
+                RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ServiceError:
                 pass
 
     def test_get_subset_data_count_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/subset/6/data', status_code=202)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/subset/e1df2bb8-1f12-494a-ade5-2c4aecdab939/data',
+                status_code=202)
             # test
             try:
-                RestClient().get_subset_data_count(database_id=1, subset_id=6)
+                RestClient().get_subset_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   subset_id="e1df2bb8-1f12-494a-ade5-2c4aecdab939")
             except ResponseCodeError:
                 pass
 
diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py
index 3518439b8c4166d9fe2b891b095ca7086ddef7c2..a5632f4237f2ab9a34b111e5168cebe7fc084ef6 100644
--- a/lib/python/tests/test_unit_table.py
+++ b/lib/python/tests/test_unit_table.py
@@ -15,8 +15,8 @@ from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError
 class TableUnitTest(unittest.TestCase):
 
     def test_create_table_succeeds(self):
-        exp = TableBrief(id=2,
-                         database_id=1,
+        exp = TableBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
+                         database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                          name="Test",
                          description="Test Table",
                          internal_name="test",
@@ -26,10 +26,12 @@ class TableUnitTest(unittest.TestCase):
                          is_schema_public=True)
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', json=exp.model_dump(), status_code=201)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=exp.model_dump(),
+                      status_code=201)
             # test
             client = RestClient(username="a", password="b")
-            response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+            response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                           description="Test Table", columns=[],
                                            is_public=True, is_schema_public=True,
                                            constraints=CreateTableConstraints())
             self.assertEqual(exp, response)
@@ -37,11 +39,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=400)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except MalformedError:
@@ -50,10 +53,11 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=403)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=403)
             # test
             try:
-                RestClient(username="a", password="b").create_table(database_id=1, name="Test",
+                RestClient(username="a", password="b").create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                                    name="Test",
                                                                     description="Test Table", columns=[],
                                                                     is_public=True, is_schema_public=True,
                                                                     constraints=CreateTableConstraints())
@@ -63,11 +67,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=404)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except NotExistsError:
@@ -76,11 +81,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_409_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=409)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=409)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except NameExistsError:
@@ -89,11 +95,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=502)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=502)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except ServiceConnectionError:
@@ -102,11 +109,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=503)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except ServiceError:
@@ -115,11 +123,12 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=200)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = client.create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                               description="Test Table", columns=[],
                                                is_public=True, is_schema_public=True,
                                                constraints=CreateTableConstraints())
             except ResponseCodeError:
@@ -128,10 +137,11 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table', status_code=409)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=409)
             # test
             try:
-                response = RestClient().create_table(database_id=1, name="Test", description="Test Table", columns=[],
+                response = RestClient().create_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Test",
+                                                     description="Test Table", columns=[],
                                                      is_public=True, is_schema_public=True,
                                                      constraints=CreateTableConstraints())
             except AuthenticationError:
@@ -140,64 +150,64 @@ class TableUnitTest(unittest.TestCase):
     def test_get_tables_empty_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table', json=[])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=[])
             # test
-            response = RestClient().get_tables(database_id=1)
+            response = RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual([], response)
 
     def test_get_tables_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [TableBrief(id=2,
+            exp = [TableBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
                               name="Test",
                               description="Test Table",
-                              database_id=1,
+                              database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                               internal_name="test",
                               is_public=True,
                               is_schema_public=True,
                               owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16',
                               is_versioned=True)]
             # mock
-            mock.get('/api/database/1/table', json=[exp[0].model_dump()])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', json=[exp[0].model_dump()])
             # test
-            response = RestClient().get_tables(database_id=1)
+            response = RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_get_tables_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=403)
             # test
             try:
-                RestClient().get_tables(database_id=1)
+                RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ForbiddenError:
                 pass
 
     def test_get_tables_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=404)
             # test
             try:
-                RestClient().get_tables(database_id=1)
+                RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_get_tables_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table', status_code=202)
             # test
             try:
-                RestClient().get_tables(database_id=1)
+                RestClient().get_tables(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
     def test_get_table_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Table(id=2,
+            exp = Table(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
                         name="Test",
                         description="Test Table",
-                        database_id=1,
+                        database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                         internal_name="test",
                         owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                         is_versioned=True,
@@ -208,146 +218,174 @@ class TableUnitTest(unittest.TestCase):
                         constraints=Constraints(uniques=[],
                                                 foreign_keys=[],
                                                 checks=[],
-                                                primary_key=[PrimaryKey(id=1,
-                                                                        table=TableBrief(id=2, database_id=1,
-                                                                                         name='Other',
-                                                                                         internal_name='other',
-                                                                                         description=None,
-                                                                                         is_versioned=True,
-                                                                                         is_public=True,
-                                                                                         is_schema_public=True,
-                                                                                         owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16'),
-                                                                        column=ColumnBrief(id=1, table_id=2,
-                                                                                           database_id=1,
-                                                                                           name='id',
-                                                                                           alias=None,
-                                                                                           internal_name='id',
-                                                                                           type=ColumnType.BIGINT))]),
-                        columns=[Column(id=1,
+                                                primary_key=[PrimaryKey(id="1516310f-ecb5-4614-abe2-3b96114e1484",
+                                                                        table=TableBrief(
+                                                                            id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
+                                                                            database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                                            name='Other',
+                                                                            internal_name='other',
+                                                                            description=None,
+                                                                            is_versioned=True,
+                                                                            is_public=True,
+                                                                            is_schema_public=True,
+                                                                            owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16'),
+                                                                        column=ColumnBrief(
+                                                                            id="31a533b6-8ddf-43d6-ac6a-b9da597cb976",
+                                                                            table_id="",
+                                                                            database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                                            name='id',
+                                                                            alias=None,
+                                                                            internal_name='id',
+                                                                            type=ColumnType.BIGINT))]),
+                        columns=[Column(id="31a533b6-8ddf-43d6-ac6a-b9da597cb976",
                                         name="ID",
                                         ord=0,
-                                        database_id=1,
-                                        table_id=2,
+                                        database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                        table_id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
                                         internal_name="id",
                                         type=ColumnType.BIGINT,
                                         is_null_allowed=False)])
             # mock
-            mock.get('/api/database/1/table/2', json=exp.model_dump())
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                     json=exp.model_dump())
             # test
-            response = RestClient().get_table(database_id=1, table_id=2)
+            response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                              table_id="b3230b86-4743-498d-9015-3fad58049692")
             self.assertEqual(exp, response)
 
     def test_get_table_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/2', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                     status_code=403)
             # test
             try:
-                response = RestClient().get_table(database_id=1, table_id=2)
+                response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                  table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ForbiddenError:
                 pass
 
     def test_get_table_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/2', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                     status_code=404)
             # test
             try:
-                response = RestClient().get_table(database_id=1, table_id=2)
+                response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                  table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_get_table_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/2', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                     status_code=202)
             # test
             try:
-                response = RestClient().get_table(database_id=1, table_id=2)
+                response = RestClient().get_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                  table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
     def test_delete_table_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=202)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            client.delete_table(database_id=1, table_id=2)
+            client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                table_id="b3230b86-4743-498d-9015-3fad58049692")
 
     def test_delete_table_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=400)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except MalformedError:
                 pass
 
     def test_delete_table_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=403)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ForbiddenError:
                 pass
 
     def test_delete_table_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=404)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_delete_table_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=502)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=502)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceConnectionError:
                 pass
 
     def test_delete_table_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=503)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceError:
                 pass
 
     def test_delete_table_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=200)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table(database_id=1, table_id=2)
+                client.delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                    table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
     def test_delete_table_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/2', status_code=404)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692',
+                        status_code=404)
             # test
             try:
-                RestClient().delete_table(database_id=1, table_id=2)
+                RestClient().delete_table(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                          table_id="b3230b86-4743-498d-9015-3fad58049692")
             except AuthenticationError:
                 pass
 
@@ -357,58 +395,76 @@ class TableUnitTest(unittest.TestCase):
                            total=2,
                            timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc))]
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', json=[exp[0].model_dump()])
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                json=[exp[0].model_dump()])
             # test
-            response = RestClient().get_table_history(database_id=1, table_id=9)
+            response = RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             self.assertEqual(exp, response)
 
     def test_get_table_history_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', status_code=400)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                status_code=400)
             # test
             try:
-                RestClient().get_table_history(database_id=1, table_id=9)
+                RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692")
             except MalformedError:
                 pass
 
     def test_get_table_history_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', status_code=403)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                status_code=403)
             # test
             try:
-                RestClient().get_table_history(database_id=1, table_id=9)
+                RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ForbiddenError:
                 pass
 
     def test_get_table_history_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', status_code=404)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                status_code=404)
             # test
             try:
-                RestClient().get_table_history(database_id=1, table_id=9)
+                RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_get_table_history_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', status_code=503)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                status_code=503)
             # test
             try:
-                RestClient().get_table_history(database_id=1, table_id=9)
+                RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceError:
                 pass
 
     def test_get_table_history_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/history?size=100', status_code=202)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/history?size=100',
+                status_code=202)
             # test
             try:
-                RestClient().get_table_history(database_id=1, table_id=9)
+                RestClient().get_table_history(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
@@ -417,9 +473,12 @@ class TableUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/table/9/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                json=json.dumps(exp))
             # test
-            response = RestClient().get_table_data(database_id=1, table_id=9,
+            response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   table_id="b3230b86-4743-498d-9015-3fad58049692",
                                                    timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0,
                                                                                datetime.timezone.utc))
             self.assertTrue(DataFrame.equals(df, response))
@@ -429,59 +488,77 @@ class TableUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/table/9/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                json=json.dumps(exp))
             # test
-            response = RestClient().get_table_data(database_id=1, table_id=9)
+            response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                   table_id="b3230b86-4743-498d-9015-3fad58049692")
             self.assertEqual(df.shape, response.shape)
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_table_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/data', status_code=400)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=400)
             # test
             try:
-                response = RestClient().get_table_data(database_id=1, table_id=9)
+                response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                       table_id="b3230b86-4743-498d-9015-3fad58049692")
             except MalformedError:
                 pass
 
     def test_get_table_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/data', status_code=403)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=403)
             # test
             try:
-                response = RestClient().get_table_data(database_id=1, table_id=9)
+                response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                       table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ForbiddenError:
                 pass
 
     def test_get_table_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/data', status_code=404)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
-                response = RestClient().get_table_data(database_id=1, table_id=9)
+                response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                       table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_get_table_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/data', status_code=503)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
-                response = RestClient().get_table_data(database_id=1, table_id=9)
+                response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                       table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceError:
                 pass
 
     def test_get_table_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/table/9/data', status_code=202)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=202)
             # test
             try:
-                response = RestClient().get_table_data(database_id=1, table_id=9)
+                response = RestClient().get_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                       table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
@@ -489,89 +566,116 @@ class TableUnitTest(unittest.TestCase):
         with requests_mock.Mocker() as mock:
             exp = 2
             # mock
-            mock.head('/api/database/1/table/9/data', headers={'X-Count': str(exp)})
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                headers={'X-Count': str(exp)})
             # test
-            response = RestClient().get_table_data_count(database_id=1, table_id=9,
+            response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                                          timestamp=datetime.datetime(2024, 1, 1, 0, 0, 0, 0))
             self.assertEqual(exp, response)
 
     def test_get_table_data_count_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=400)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=400)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except MalformedError:
                 pass
 
     def test_get_table_data_count_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=403)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=403)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ForbiddenError:
                 pass
 
     def test_get_table_data_count_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=404)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_get_table_data_count_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=503)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceError:
                 pass
 
     def test_get_table_data_count_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=202)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=202)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
     def test_get_table_data_count_not_countable_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/table/9/data', status_code=409)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=409)
             # test
             try:
-                response = RestClient().get_table_data_count(database_id=1, table_id=9)
+                response = RestClient().get_table_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ExternalSystemError:
                 pass
 
     def test_create_table_data_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=201)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=201)
             # test
             client = RestClient(username="a", password="b")
-            client.create_table_data(database_id=1, table_id=9,
+            client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                     table_id="b3230b86-4743-498d-9015-3fad58049692",
                                      data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
 
     def test_create_table_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=400)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_table_data(database_id=1, table_id=9,
+                client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except MalformedError:
                 pass
@@ -579,11 +683,14 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=403)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_table_data(database_id=1, table_id=9,
+                client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except ForbiddenError:
                 pass
@@ -591,11 +698,14 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=404)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_table_data(database_id=1, table_id=9,
+                client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except NotExistsError:
                 pass
@@ -603,11 +713,14 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=503)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_table_data(database_id=1, table_id=9,
+                client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except ServiceError:
                 pass
@@ -615,11 +728,14 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=200)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.create_table_data(database_id=1, table_id=9,
+                client.create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except ResponseCodeError:
                 pass
@@ -627,10 +743,13 @@ class TableUnitTest(unittest.TestCase):
     def test_create_table_data_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/table/9/data', status_code=503)
+            mock.post(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
-                RestClient().create_table_data(database_id=1, table_id=9,
+                RestClient().create_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692",
                                                data={'name': 'Josiah', 'age': 45, 'gender': 'male'})
             except AuthenticationError:
                 pass
@@ -638,21 +757,27 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_data_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=202)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            client.update_table_data(database_id=1, table_id=9,
+            client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                     table_id="b3230b86-4743-498d-9015-3fad58049692",
                                      data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                      keys={'id': 1})
 
     def test_update_table_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=400)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_data(database_id=1, table_id=9,
+                client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                          keys={'id': 1})
             except MalformedError:
@@ -661,11 +786,14 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=403)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_data(database_id=1, table_id=9,
+                client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                          keys={'id': 1})
             except ForbiddenError:
@@ -674,11 +802,14 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=404)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_data(database_id=1, table_id=9,
+                client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                          keys={'id': 1})
             except NotExistsError:
@@ -687,11 +818,14 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=503)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_data(database_id=1, table_id=9,
+                client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                          keys={'id': 1})
             except ServiceError:
@@ -700,11 +834,14 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/9/data', status_code=200)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_data(database_id=1, table_id=9,
+                client.update_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                                          data={'name': 'Josiah', 'age': 45, 'gender': 'male'},
                                          keys={'id': 1})
             except ResponseCodeError:
@@ -713,97 +850,124 @@ class TableUnitTest(unittest.TestCase):
     def test_delete_table_data_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=202)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+            client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                     table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
 
     def test_delete_table_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=400)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
             except MalformedError:
                 pass
 
     def test_delete_table_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=403)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
             except ForbiddenError:
                 pass
 
     def test_delete_table_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=404)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
             except NotExistsError:
                 pass
 
     def test_delete_table_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=503)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
             except ServiceError:
                 pass
 
     def test_delete_table_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=200)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                client.delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         table_id="b3230b86-4743-498d-9015-3fad58049692", keys={'id': 1})
             except ResponseCodeError:
                 pass
 
     def test_delete_table_data_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/table/9/data', status_code=404)
+            mock.delete(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/data',
+                status_code=404)
             # test
             try:
-                RestClient().delete_table_data(database_id=1, table_id=9, keys={'id': 1})
+                RestClient().delete_table_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                               table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                               keys={'id': 1})
             except AuthenticationError:
                 pass
 
     def test_update_table_column_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = Column(id=1,
+            exp = Column(id="2f30858d-b47b-4068-9028-fb0524ddf6cb",
                          ord=0,
                          name="ID",
-                         database_id=1,
-                         table_id=2,
+                         database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                         table_id="b3230b86-4743-498d-9015-3fad58049692",
                          internal_name="id",
                          type=ColumnType.BIGINT,
-                         concept=ConceptBrief(id=2,
+                         concept=ConceptBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
                                               uri="http://dbpedia.org/page/Category:Precipitation",
                                               name="Precipitation"),
-                         unit=UnitBrief(id=2,
+                         unit=UnitBrief(id="029d773f-f98b-40c0-ab22-b8b1635d4fbc",
                                         uri="http://www.wikidata.org/entity/Q119856947",
                                         name="liters per square meter"),
                          is_null_allowed=False)
             # mock
-            mock.put('/api/database/1/table/2/column/1', json=exp.model_dump(), status_code=202)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                json=exp.model_dump(),
+                status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            response = client.update_table_column(database_id=1, table_id=2, column_id=1,
+            response = client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                  table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                                  column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                                   unit_uri="http://www.wikidata.org/entity/Q119856947",
                                                   concept_uri="http://dbpedia.org/page/Category:Precipitation")
             self.assertEqual(exp, response)
@@ -811,11 +975,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=400)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except MalformedError:
@@ -824,11 +992,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=403)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except ForbiddenError:
@@ -837,11 +1009,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=404)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except NotExistsError:
@@ -850,11 +1026,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=502)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=502)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except ServiceConnectionError:
@@ -863,11 +1043,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=503)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except ServiceError:
@@ -876,11 +1060,15 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=200)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.update_table_column(database_id=1, table_id=2, column_id=1,
+                client.update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                           table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                           column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                            unit_uri="http://www.wikidata.org/entity/Q119856947",
                                            concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except ResponseCodeError:
@@ -889,10 +1077,14 @@ class TableUnitTest(unittest.TestCase):
     def test_update_table_column_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/table/2/column/1', status_code=404)
+            mock.put(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/column/758da021-f809-4d87-a866-9d4664a039dc',
+                status_code=404)
             # test
             try:
-                RestClient().update_table_column(database_id=1, table_id=2, column_id=1,
+                RestClient().update_table_column(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                 table_id="b3230b86-4743-498d-9015-3fad58049692",
+                                                 column_id="758da021-f809-4d87-a866-9d4664a039dc",
                                                  unit_uri="http://www.wikidata.org/entity/Q119856947",
                                                  concept_uri="http://dbpedia.org/page/Category:Precipitation")
             except AuthenticationError:
@@ -903,58 +1095,76 @@ class TableUnitTest(unittest.TestCase):
             exp = TableStatistics(
                 columns={"id": ColumnStatistic(val_min=1.0, val_max=9.0, mean=5.0, median=5.0, std_dev=2.73)})
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', json=exp.model_dump(), status_code=202)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                json=exp.model_dump(), status_code=202)
             # test
-            response = RestClient().analyse_table_statistics(database_id=1, table_id=2)
+            response = RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             table_id="b3230b86-4743-498d-9015-3fad58049692")
             self.assertEqual(exp, response)
 
     def test_analyse_table_statistics_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', status_code=400)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                status_code=400)
             # test
             try:
-                RestClient().analyse_table_statistics(database_id=1, table_id=2)
+                RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             except MalformedError:
                 pass
 
     def test_analyse_table_statistics_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', status_code=404)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                status_code=404)
             # test
             try:
-                RestClient().analyse_table_statistics(database_id=1, table_id=2)
+                RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             except NotExistsError:
                 pass
 
     def test_analyse_table_statistics_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', status_code=502)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                status_code=502)
             # test
             try:
-                RestClient().analyse_table_statistics(database_id=1, table_id=2)
+                RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceConnectionError:
                 pass
 
     def test_analyse_table_statistics_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', status_code=503)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                status_code=503)
             # test
             try:
-                RestClient().analyse_table_statistics(database_id=1, table_id=2)
+                RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ServiceError:
                 pass
 
     def test_analyse_table_statistics_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/analyse/database/1/table/2/statistics', status_code=200)
+            mock.get(
+                '/api/analyse/database/6bd39359-b154-456d-b9c2-caa516a45732/table/b3230b86-4743-498d-9015-3fad58049692/statistics',
+                status_code=200)
             # test
             try:
-                RestClient().analyse_table_statistics(database_id=1, table_id=2)
+                RestClient().analyse_table_statistics(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      table_id="b3230b86-4743-498d-9015-3fad58049692")
             except ResponseCodeError:
                 pass
 
diff --git a/lib/python/tests/test_unit_unit.py b/lib/python/tests/test_unit_unit.py
index efea8b69bb335cf4618216e7822dd5a7d2a1e467..3af429b74ebcb84767105d3b4da23540fd3fdf31 100644
--- a/lib/python/tests/test_unit_unit.py
+++ b/lib/python/tests/test_unit_unit.py
@@ -11,7 +11,7 @@ class UserUnitTest(unittest.TestCase):
 
     def test_get_units_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [UnitBrief(id=1,
+            exp = [UnitBrief(id="d8eec1ab-7b37-4eb3-bdf7-b44a8b384c0b",
                              uri='http://www.ontology-of-units-of-measure.org/resource/om-2/CelsiusTemperature',
                              name='Celsius Temperature')]
             # mock
diff --git a/lib/python/tests/test_unit_view.py b/lib/python/tests/test_unit_view.py
index 7a8bebe4e01fc538a004d87b30493c6bfbe913aa..5792d028b37726d1c3e1f29a941387c12306cfc2 100644
--- a/lib/python/tests/test_unit_view.py
+++ b/lib/python/tests/test_unit_view.py
@@ -15,17 +15,17 @@ class ViewUnitTest(unittest.TestCase):
     def test_get_views_empty_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view', json=[])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=[])
             # test
-            response = RestClient().get_views(database_id=1)
+            response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual([], response)
 
     def test_get_views_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = [ViewBrief(id=1,
+            exp = [ViewBrief(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                              name="Data",
                              internal_name="data",
-                             database_id=1,
+                             database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                              initial_view=False,
                              query="SELECT id FROM mytable WHERE deg > 0",
                              query_hash="94c74728b11a690e51d64719868824735f0817b7",
@@ -33,93 +33,101 @@ class ViewUnitTest(unittest.TestCase):
                              is_public=True,
                              is_schema_public=True)]
             # mock
-            mock.get('/api/database/1/view', json=[exp[0].model_dump()])
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=[exp[0].model_dump()])
             # test
-            response = RestClient().get_views(database_id=1)
+            response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             self.assertEqual(exp, response)
 
     def test_get_views_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404)
             # test
             try:
-                response = RestClient().get_views(database_id=1)
+                response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except NotExistsError:
                 pass
 
     def test_get_views_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=202)
             # test
             try:
-                response = RestClient().get_views(database_id=1)
+                response = RestClient().get_views(database_id="6bd39359-b154-456d-b9c2-caa516a45732")
             except ResponseCodeError:
                 pass
 
     def test_get_view_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = View(id=3,
+            exp = View(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                        name="Data",
                        internal_name="data",
-                       database_id=1,
+                       database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                        initial_view=False,
                        query="SELECT id FROM mytable WHERE deg > 0",
                        query_hash="94c74728b11a690e51d64719868824735f0817b7",
                        owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                        is_public=True,
                        is_schema_public=True,
-                       columns=[ViewColumn(id=1,
+                       columns=[ViewColumn(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                                            ord=0,
                                            name="id",
                                            internal_name="id",
-                                           database_id=1,
+                                           database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                            type=ColumnType.BIGINT,
                                            is_null_allowed=False)],
                        identifiers=[])
             # mock
-            mock.get('/api/database/1/view/3', json=exp.model_dump())
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                     json=exp.model_dump())
             # test
-            response = RestClient().get_view(database_id=1, view_id=3)
+            response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                             view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             self.assertEqual(exp, response)
 
     def test_get_view_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3', status_code=403)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                     status_code=403)
             # test
             try:
-                response = RestClient().get_view(database_id=1, view_id=3)
+                response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                 view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ForbiddenError:
                 pass
 
     def test_get_view_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3', status_code=404)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                     status_code=404)
             # test
             try:
-                response = RestClient().get_view(database_id=1, view_id=3)
+                response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                 view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except NotExistsError:
                 pass
 
     def test_get_view_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3', status_code=202)
+            mock.get('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                     status_code=202)
             # test
             try:
-                response = RestClient().get_view(database_id=1, view_id=3)
+                response = RestClient().get_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                 view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ResponseCodeError:
                 pass
 
     def test_update_view_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = ViewBrief(id=1,
+            exp = ViewBrief(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                             name="Data",
                             internal_name="data",
-                            database_id=1,
+                            database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                             initial_view=False,
                             query="SELECT id FROM mytable WHERE deg > 0",
                             query_hash="94c74728b11a690e51d64719868824735f0817b7",
@@ -127,91 +135,99 @@ class ViewUnitTest(unittest.TestCase):
                             is_public=False,
                             is_schema_public=False)
             # mock
-            mock.put('/api/database/1/view/1', json=exp.model_dump(), status_code=202)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', json=exp.model_dump(),
+                     status_code=202)
             # test
-            response = RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1,
-                                                                              is_public=False, is_schema_public=False)
+            response = RestClient(username='foo', password='bar').update_view(
+                database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1,
+                is_public=False, is_schema_public=False)
             self.assertEqual(exp, response)
 
     def test_update_view_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/view/1', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=403)
             # test
             try:
-                RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False,
-                                                                       is_schema_public=False)
+                RestClient(username='foo', password='bar').update_view(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False,
+                    is_schema_public=False)
             except ForbiddenError:
                 pass
 
     def test_update_view_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/view/1', status_code=404)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=404)
             # test
             try:
-                RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False,
-                                                                       is_schema_public=False)
+                RestClient(username='foo', password='bar').update_view(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False,
+                    is_schema_public=False)
             except NotExistsError:
                 pass
 
     def test_update_view_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/view/1', status_code=200)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=200)
             # test
             try:
-                RestClient(username='foo', password='bar').update_view(database_id=1, view_id=1, is_public=False,
-                                                                       is_schema_public=False)
+                RestClient(username='foo', password='bar').update_view(
+                    database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False,
+                    is_schema_public=False)
             except ResponseCodeError:
                 pass
 
     def test_update_view_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.put('/api/database/1/view/1', status_code=403)
+            mock.put('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1', status_code=403)
             # test
             try:
-                RestClient().update_view(database_id=1, view_id=1, is_public=False, is_schema_public=False)
+                RestClient().update_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", view_id=1, is_public=False,
+                                         is_schema_public=False)
             except AuthenticationError:
                 pass
 
     def test_create_view_succeeds(self):
         with requests_mock.Mocker() as mock:
-            exp = View(id=3,
+            exp = View(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                        name="Data",
                        internal_name="data",
-                       database_id=1,
+                       database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                        initial_view=False,
                        query="SELECT id FROM mytable WHERE deg > 0",
                        query_hash="94c74728b11a690e51d64719868824735f0817b7",
                        owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'),
                        is_public=True,
                        is_schema_public=True,
-                       columns=[ViewColumn(id=1,
+                       columns=[ViewColumn(id="1b3449d2-780e-4683-9af0-8733e608a4aa",
                                            ord=0,
                                            name="id",
                                            internal_name="id",
-                                           database_id=1,
+                                           database_id="6bd39359-b154-456d-b9c2-caa516a45732",
                                            type=ColumnType.BIGINT,
                                            is_null_allowed=False)],
                        identifiers=[])
             # mock
-            mock.post('/api/database/1/view', json=exp.model_dump(), status_code=201)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', json=exp.model_dump(), status_code=201)
             # test
             client = RestClient(username="a", password="b")
-            response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+            response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                          is_public=True, is_schema_public=True,
                                           query="SELECT id FROM mytable WHERE deg > 0")
             self.assertEqual(exp, response)
 
     def test_create_view_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=400)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except MalformedError:
                 pass
@@ -219,11 +235,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=403)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except ForbiddenError:
                 pass
@@ -231,11 +248,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=404)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except NotExistsError:
                 pass
@@ -243,11 +261,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_423_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=423)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=423)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except ExternalSystemError:
                 pass
@@ -255,11 +274,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=502)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=502)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except ServiceConnectionError:
                 pass
@@ -267,11 +287,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=503)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except ServiceError:
                 pass
@@ -279,11 +300,12 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=200)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = client.create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                              is_public=True, is_schema_public=True,
                                               query="SELECT id FROM mytable WHERE deg > 0")
             except ResponseCodeError:
                 pass
@@ -291,10 +313,11 @@ class ViewUnitTest(unittest.TestCase):
     def test_create_view_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.post('/api/database/1/view', status_code=404)
+            mock.post('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view', status_code=404)
             # test
             try:
-                response = RestClient().create_view(database_id=1, name="Data", is_public=True, is_schema_public=True,
+                response = RestClient().create_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732", name="Data",
+                                                    is_public=True, is_schema_public=True,
                                                     query="SELECT id FROM mytable WHERE deg > 0")
             except AuthenticationError:
                 pass
@@ -302,95 +325,113 @@ class ViewUnitTest(unittest.TestCase):
     def test_delete_view_succeeds(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=202)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=202)
             # test
             client = RestClient(username="a", password="b")
-            client.delete_view(database_id=1, view_id=3)
+            client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                               view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
 
     def test_delete_view_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=400)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=400)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except MalformedError:
                 pass
 
     def test_delete_view_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=403)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=403)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ForbiddenError:
                 pass
 
     def test_delete_view_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=404)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=404)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except NotExistsError:
                 pass
 
     def test_delete_view_423_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=423)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=423)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ExternalSystemError:
                 pass
 
     def test_delete_view_502_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=502)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=502)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ServiceConnectionError:
                 pass
 
     def test_delete_view_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=503)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=503)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ServiceError:
                 pass
 
     def test_delete_view_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=200)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=200)
             # test
             try:
                 client = RestClient(username="a", password="b")
-                client.delete_view(database_id=1, view_id=3)
+                client.delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                   view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ResponseCodeError:
                 pass
 
     def test_delete_view_anonymous_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.delete('/api/database/1/view/3', status_code=403)
+            mock.delete('/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa',
+                        status_code=403)
             # test
             try:
-                RestClient().delete_view(database_id=1, view_id=3)
+                RestClient().delete_view(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                         view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except AuthenticationError:
                 pass
 
@@ -399,9 +440,12 @@ class ViewUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/view/3/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                json=json.dumps(exp))
             # test
-            response = RestClient().get_view_data(database_id=1, view_id=3)
+            response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                  view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_view_data_dataframe_succeeds(self):
@@ -409,69 +453,90 @@ class ViewUnitTest(unittest.TestCase):
             exp = [{'id': 1, 'username': 'foo'}, {'id': 2, 'username': 'bar'}]
             df = DataFrame.from_records(json.dumps(exp))
             # mock
-            mock.get('/api/database/1/view/3/data', json=json.dumps(exp))
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                json=json.dumps(exp))
             # test
-            response: DataFrame = RestClient().get_view_data(database_id=1, view_id=3)
+            response: DataFrame = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                             view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             self.assertEqual(df.shape, response.shape)
             self.assertTrue(DataFrame.equals(df, response))
 
     def test_get_view_data_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=400)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=400)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except MalformedError:
                 pass
 
     def test_get_view_data_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=403)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=403)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ForbiddenError:
                 pass
 
     def test_get_view_data_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=404)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=404)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except NotExistsError:
                 pass
 
     def test_get_view_data_409_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=409)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=409)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ExternalSystemError:
                 pass
 
     def test_get_view_data_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=503)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=503)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ServiceError:
                 pass
 
     def test_get_view_data_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.get('/api/database/1/view/3/data', status_code=202)
+            mock.get(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=202)
             # test
             try:
-                response = RestClient().get_view_data(database_id=1, view_id=3)
+                response = RestClient().get_view_data(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                      view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ResponseCodeError:
                 pass
 
@@ -479,68 +544,89 @@ class ViewUnitTest(unittest.TestCase):
         with requests_mock.Mocker() as mock:
             exp = 844737
             # mock
-            mock.head('/api/database/1/view/3/data', headers={'X-Count': str(exp)})
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                headers={'X-Count': str(exp)})
             # test
-            response = RestClient().get_view_data_count(database_id=1, view_id=3)
+            response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                        view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             self.assertEqual(exp, response)
 
     def test_get_view_data_count_400_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=400)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=400)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except MalformedError:
                 pass
 
     def test_get_view_data_count_403_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=403)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=403)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ForbiddenError:
                 pass
 
     def test_get_view_data_count_404_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=404)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=404)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except NotExistsError:
                 pass
 
     def test_get_view_data_count_409_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=409)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=409)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ExternalSystemError:
                 pass
 
     def test_get_view_data_count_503_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=503)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=503)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ServiceError:
                 pass
 
     def test_get_view_data_count_unknown_fails(self):
         with requests_mock.Mocker() as mock:
             # mock
-            mock.head('/api/database/1/view/3/data', status_code=202)
+            mock.head(
+                '/api/database/6bd39359-b154-456d-b9c2-caa516a45732/view/1b3449d2-780e-4683-9af0-8733e608a4aa/data',
+                status_code=202)
             # test
             try:
-                response = RestClient().get_view_data_count(database_id=1, view_id=3)
+                response = RestClient().get_view_data_count(database_id="6bd39359-b154-456d-b9c2-caa516a45732",
+                                                            view_id="1b3449d2-780e-4683-9af0-8733e608a4aa")
             except ResponseCodeError:
                 pass
 
diff --git a/mkdocs.yml b/mkdocs.yml
index 5ec3a92799fba08d9299e466e780422f20bf1a65..536eed294ed4f5683d601f2e0a460a8ade5267d1 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,5 +1,5 @@
 site_name: Database Repository
-site_url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/
+site_url: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/
 repo_url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services
 repo_name: fda-services
 site_author: Research Unit Data Science, Technische Universit&auml;t Wien
@@ -120,9 +120,9 @@ markdown_extensions:
         custom_icons:
           - .docs/overrides/.icons
 extra:
-  homepage: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/
+  homepage: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.7/
   version:
-    default: 1.6
+    default: 1.7
     provider: mike
   social:
     - icon: simple/artifacthub
diff --git a/sonar-project.properties b/sonar-project.properties
index c044de9ff1cd165bdd794b1959d5bae87369f5a0..0d25b112d7133494be618d3f61e3e17a2c415e94 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -2,7 +2,7 @@
 sonar.projectKey=fair-data-austria-db-repository_fda-services_a57fa043-ab99-4cdd-a721-162d9a916d77
 sonar.host.url=https://s39.datalab.tuwien.ac.at
 # project
-sonar.projectVersion=1.6.5
+sonar.projectVersion=1.7.0
 # general
 sonar.qualitygate.wait=true
 sonar.projectCreation.mainBranchName=master
diff --git a/versions.json b/versions.json
index b42a3dfd7d8ac8f78858923d4ac6d89906452771..95ca2a62a6fec4b73534bc3d6981b1bcdfd8fff2 100644
--- a/versions.json
+++ b/versions.json
@@ -1,4 +1,9 @@
 [
+  {
+    "version": "1.7",
+    "title": "1.7",
+    "aliases": []
+  },
   {
     "version": "1.6",
     "title": "1.6",