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 18e19b532835c0fcf8c110dea4982dc31ec6d457..1537738afb28e7ba10ad03e331a2a8062d124615 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
@@ -112,6 +112,7 @@ public class DatabaseEndpoint {
         log.trace("list databases resulted in databases {}", dtos);
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Count", "" + dtos.size());
+        headers.set("Access-Control-Expose-Headers", "X-Count");
         return ResponseEntity.status(HttpStatus.OK)
                 .headers(headers)
                 .body(dtos);
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/QueryEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/QueryEndpoint.java
index 3f274a89242be739a2c02508cbeaabc00e335690..7142dbc27ac1a81ce326f1af83af1a9440e12442 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/QueryEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/QueryEndpoint.java
@@ -178,6 +178,7 @@ public class QueryEndpoint {
         final Long count = queryService.reExecuteCount(databaseId, query, principal);
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Count", "" + count);
+        headers.set("Access-Control-Expose-Headers", "X-Count");
         if (request.getMethod().equals("GET")) {
             final QueryResultDto result = queryService.reExecute(databaseId, query, page, size, sortDirection, sortColumn,
                     principal);
diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableDataEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableDataEndpoint.java
index 8c3169f70079787dd315f2b7c8bbbdfc93a9d607..a3201d2040be9e32ea9329baa84f506eddab5dd0 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableDataEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/TableDataEndpoint.java
@@ -307,6 +307,7 @@ public class TableDataEndpoint {
         final Long count = queryService.tableCount(databaseId, tableId, timestamp, principal);
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Count", "" + count);
+        headers.set("Access-Control-Expose-Headers", "X-Count");
         if (request.getMethod().equals("GET")) {
             final QueryResultDto response = queryService.tableFindAll(databaseId, tableId, timestamp, page, size, principal);
             log.trace("find table data resulted in result {}", response);
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 14fee21e4df431acd7b0c50e69e17af19f592792..9f9c8f85e357a5d96ef887749ac66340fcdc2ee6 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
@@ -316,6 +316,7 @@ public class ViewEndpoint {
         final Long count = queryService.viewCount(databaseId, view, principal);
         final HttpHeaders headers = new HttpHeaders();
         headers.set("X-Count", "" + count);
+        headers.set("Access-Control-Expose-Headers", "X-Count");
         if (request.getMethod().equals("GET")) {
             final QueryResultDto result = queryService.viewFindAll(databaseId, view, page, size, principal);
             log.trace("execute view data for view with id {}", viewId);
diff --git a/dbrepo-ui/bun.lockb b/dbrepo-ui/bun.lockb
index 90e197bf8ac360877c05d20dec7b22b6a8c537ec..2515c8bef0602da9ac0cea0b99464da4f0963ab8 100755
Binary files a/dbrepo-ui/bun.lockb and b/dbrepo-ui/bun.lockb differ
diff --git a/dbrepo-ui/components/database/DatabaseList.vue b/dbrepo-ui/components/database/DatabaseList.vue
index baefecad2071d7db23c4d69299d8741ee77ce26d..999b89632e24031f12329d5f24d7ce4528620a27 100644
--- a/dbrepo-ui/components/database/DatabaseList.vue
+++ b/dbrepo-ui/components/database/DatabaseList.vue
@@ -14,7 +14,7 @@
 </template>
 
 <script>
-import DatabaseSkeleton from '@/components/database/DatabaseSkeleton'
+import DatabaseSkeleton from '@/components/database/DatabaseSkeleton.vue'
 
 export default {
   components: {
diff --git a/dbrepo-ui/components/dialogs/EditTuple.vue b/dbrepo-ui/components/dialogs/EditTuple.vue
index a6e95a57db9b4ae4deef55431a43f3c8bb7b60db..bb2ee7aa42a52451a5e1277ed1cb110cea37b53d 100644
--- a/dbrepo-ui/components/dialogs/EditTuple.vue
+++ b/dbrepo-ui/components/dialogs/EditTuple.vue
@@ -135,7 +135,7 @@
 </template>
 
 <script>
-import BlobUpload from '@/components/table/BlobUpload'
+import BlobUpload from '@/components/table/BlobUpload.vue'
 import {localizedMessage} from '@/utils'
 
 export default {
diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue
index 386b2a551f1caeb155be82653a1f19dc1fee07b0..fd64efa9e702dcbc3f8aa629a599c0a04d270f03 100644
--- a/dbrepo-ui/components/dialogs/Semantics.vue
+++ b/dbrepo-ui/components/dialogs/Semantics.vue
@@ -121,7 +121,6 @@
 
 <script>
 import { useCacheStore } from '@/stores/cache'
-import {localizedMessage} from '@/utils'
 
 export default {
   props: {
diff --git a/dbrepo-ui/components/identifier/Select.vue b/dbrepo-ui/components/identifier/Select.vue
index d276686798b708816808f6f42db906f0b5f3f775..cfb1656b8d12af0855d351d34053c6a3bd88f1f6 100644
--- a/dbrepo-ui/components/identifier/Select.vue
+++ b/dbrepo-ui/components/identifier/Select.vue
@@ -30,7 +30,7 @@
 </template>
 
 <script>
-import Banner from '@/components/identifier/Banner'
+import Banner from '@/components/identifier/Banner.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/components/identifier/Summary.vue b/dbrepo-ui/components/identifier/Summary.vue
index 005c42cc3ccb1dc07cecc8df9dc40e907b8543c3..534bd798f87d011e933e965d7dab7cf0272c2dd4 100644
--- a/dbrepo-ui/components/identifier/Summary.vue
+++ b/dbrepo-ui/components/identifier/Summary.vue
@@ -168,12 +168,12 @@
 </template>
 
 <script>
-import Citation from '@/components/identifier/Citation'
-import IsniIcon from '@/components/icons/IsniIcon'
-import OrcidIcon from '@/components/icons/OrcidIcon'
-import RorIcon from '@/components/icons/RorIcon'
-import Banner from '@/components/identifier/Banner'
-import Persist from '@/components/identifier/Persist'
+import Citation from '@/components/identifier/Citation.vue'
+import IsniIcon from '@/components/icons/IsniIcon.vue'
+import OrcidIcon from '@/components/icons/OrcidIcon.vue'
+import RorIcon from '@/components/icons/RorIcon.vue'
+import Banner from '@/components/identifier/Banner.vue'
+import Persist from '@/components/identifier/Persist.vue'
 import { formatLanguage } from '@/utils'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue
index e69621747a4854d238751332e08c2d079ed3b255..0c64055308fdf60d463885bc2a3cfddd4dd21897 100644
--- a/dbrepo-ui/components/subset/Builder.vue
+++ b/dbrepo-ui/components/subset/Builder.vue
@@ -271,9 +271,9 @@
 </template>
 
 <script>
-import TimeDrift from '@/components/TimeDrift'
-import Raw from '@/components/subset/Raw'
-import Results from '@/components/subset/Results'
+import TimeDrift from '@/components/TimeDrift.vue'
+import Raw from '@/components/subset/Raw.vue'
+import Results from '@/components/subset/Results.vue'
 import { useCacheStore } from '@/stores/cache'
 import { useUserStore } from '@/stores/user'
 import { format } from 'sql-formatter'
diff --git a/dbrepo-ui/components/subset/SubsetToolbar.vue b/dbrepo-ui/components/subset/SubsetToolbar.vue
index 20cbc25e0ce018c3c0bef1ce873d1802e2e30681..aa481ac4921c51ff4396ae5c6f3cf1fca8e2109b 100644
--- a/dbrepo-ui/components/subset/SubsetToolbar.vue
+++ b/dbrepo-ui/components/subset/SubsetToolbar.vue
@@ -75,7 +75,7 @@
 </template>
 
 <script>
-import DownloadButton from '@/components/identifier/DownloadButton'
+import DownloadButton from '@/components/identifier/DownloadButton.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue
index 75405386b245c1634b50881f357a4a6038024d7a..8923a45e8192bd2b10b0e3271a00a48666db98ff 100644
--- a/dbrepo-ui/components/table/TableImport.vue
+++ b/dbrepo-ui/components/table/TableImport.vue
@@ -399,6 +399,7 @@ export default {
               this.rowCount = rowCount
             })
           this.step = this.stepStart + 2
+          this.loading = false
         })
         .catch((error) => {
           console.error('Failed to import csv', error)
@@ -410,6 +411,7 @@ export default {
         })
     },
     uploadAndAnalyse() {
+      this.loading = true
       this.previousFile = this.fileModel[0]
       const uploadService = useUploadService()
       return uploadService.create(this.previousFile)
@@ -421,17 +423,14 @@ export default {
           this.$toast.error(this.$t('error.upload.dataset'))
           this.loading = false
         })
-        .finally(() => {
-          this.loading = false
-        })
     },
     analyse(filename) {
-      this.loading = true
       const analyseService = useAnalyseService()
       const payload = { filename }
       if (this.tableImport.separator) {
         payload.separator = this.tableImport.separator
       }
+      this.loading = true
       analyseService.suggest(payload)
         .then((analysis) => {
           const {columns, separator, line_termination} = analysis
@@ -456,6 +455,7 @@ export default {
           this.step = this.stepStart + 2
           this.$toast.success(this.$t('success.analyse.dataset'))
           this.$emit('analyse', {columns: this.columns, filename, line_termination})
+          this.loading = false
         })
         .catch((error) => {
           this.$toast.error(localizedMessage(this.$t, error, null))
diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue
index d62a9d2a1329b2621aeca65da57b373d9733793e..22c162d8e25162a7d6bd15e720284d71fe0f686e 100644
--- a/dbrepo-ui/components/table/TableToolbar.vue
+++ b/dbrepo-ui/components/table/TableToolbar.vue
@@ -73,8 +73,8 @@
 </template>
 
 <script>
-import EditTuple from '@/components/dialogs/EditTuple'
-import DropTable from '@/components/dialogs/DropTable'
+import EditTuple from '@/components/dialogs/EditTuple.vue'
+import DropTable from '@/components/dialogs/DropTable.vue'
 import { useCacheStore } from '@/stores/cache'
 import { useUserStore } from '@/stores/user'
 
diff --git a/dbrepo-ui/components/user/UserBadge.vue b/dbrepo-ui/components/user/UserBadge.vue
index e8b1217312766907075b34ed1c7eecb143f9d5eb..65945725e4954a99cda99696626d0a6d947edfd7 100644
--- a/dbrepo-ui/components/user/UserBadge.vue
+++ b/dbrepo-ui/components/user/UserBadge.vue
@@ -15,7 +15,7 @@
 </template>
 
 <script>
-import OrcidIcon from '@/components/icons/OrcidIcon'
+import OrcidIcon from '@/components/icons/OrcidIcon.vue'
 
 export default {
   components: {
diff --git a/dbrepo-ui/composables/axios-instance.ts b/dbrepo-ui/composables/axios-instance.ts
index 274b4792ccdff98aa002438bcfa76adc96069996..2d33869c27008e2cc1cf25e559ad5da18b880035 100644
--- a/dbrepo-ui/composables/axios-instance.ts
+++ b/dbrepo-ui/composables/axios-instance.ts
@@ -8,11 +8,12 @@ export const useAxiosInstance = () => {
   const userStore = useUserStore()
   if (!instance) {
     instance = axios.create({
-      timeout: 3000,
+      timeout: 10000,
       params: {},
       headers: {
         Accept: 'application/json',
-        'Content-Type': 'application/json'
+        'Content-Type': 'application/json',
+        'Access-Control-Allow-Origin': '*'
       },
       baseURL: config.public.api.client
     });
diff --git a/dbrepo-ui/composables/query-service.ts b/dbrepo-ui/composables/query-service.ts
index 6ba39194282ddc61f5a7ee51c19b7cf94b544dc3..28e2be085b9e64a5fcbb3e070bc3da8f40c61fbe 100644
--- a/dbrepo-ui/composables/query-service.ts
+++ b/dbrepo-ui/composables/query-service.ts
@@ -110,8 +110,9 @@ export const useQueryService = (): any => {
     return new Promise<number>((resolve, reject) => {
       axios.head<void>(`/api/database/${databaseId}/query/${queryId}/data`)
         .then((response) => {
+          const count: number = Number(response.headers['x-count'])
           console.info('Re-executed query in database with id', databaseId)
-          resolve(Number(response.headers['X-Count']))
+          resolve(count)
         })
         .catch((error) => {
           console.error('Failed to re-execute query', error)
diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts
index 418c1ad04fef8c0813813e03c2a2bf2b0fe11a6c..58e4a9ed2d62eb328fd1914fe8beaca73bb6228a 100644
--- a/dbrepo-ui/composables/table-service.ts
+++ b/dbrepo-ui/composables/table-service.ts
@@ -1,4 +1,4 @@
-import type {AxiosRequestConfig} from 'axios'
+import type {AxiosRequestConfig, AxiosResponse} from 'axios'
 
 export const useTableService = (): any => {
 
@@ -87,9 +87,10 @@ export const useTableService = (): any => {
     console.debug('get data count for table with id', tableId, 'in database with id', databaseId);
     return new Promise<number>((resolve, reject) => {
       axios.head<number>(`/api/database/${databaseId}/table/${tableId}/data`, {params: mapFilter(timestamp, null, null)})
-        .then((response) => {
-          console.info('Got data count for table with id', tableId, 'in database with id', databaseId)
-          resolve(response.data)
+        .then((response: AxiosResponse<void>) => {
+          const count: number = Number(response.headers['x-count'])
+          console.info('Found' +  count + 'in table with id', tableId, 'in database with id', databaseId)
+          resolve(count)
         })
         .catch((error) => {
           console.error('Failed to get data count')
diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts
index 31ee8ba2262988fc6b7162a807fae5e3d07e3a10..cd23a9db6ca59117e343b6e1397be9a58f7c5a90 100644
--- a/dbrepo-ui/composables/view-service.ts
+++ b/dbrepo-ui/composables/view-service.ts
@@ -53,7 +53,7 @@ export const useViewService = (): any => {
     return new Promise<number>((resolve, reject) => {
       axios.head<number>(`/api/database/${databaseId}/view/${viewId}/data`)
         .then((response) => {
-          const count: number = Number(response.headers['X-Count'])
+          const count: number = Number(response.headers['x-count'])
           console.info('Re-executed view with id', viewId, 'in database with id', databaseId)
           resolve(count)
         })
diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts
index 77697186ca1e580b63204f69afe2eb7ff58e842c..e5267c5edb0a2692595e35ba2f31e96a79ac2939 100644
--- a/dbrepo-ui/nuxt.config.ts
+++ b/dbrepo-ui/nuxt.config.ts
@@ -74,7 +74,7 @@ export default defineNuxtConfig({
       },
       api: {
         client: 'http://localhost',
-        server: 'http://gateway-service',
+        server: 'http://localhost',
       },
       database: {
         unsupported: '*,AVG,BIT_AND,BIT_OR,BIT_XOR,COUNT,COUNTDISTINCT,GROUP_CONCAT,JSON_ARRAYAGG,JSON_OBJECTAGG,MAX,MIN,STD,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VARIANCE,VAR_POP,VAR_SAMP,--',
@@ -100,7 +100,7 @@ export default defineNuxtConfig({
         },
         rabbitmq: {
           text: 'RabbitMQ Admin',
-          href: '/admin/broker/'
+          href: '/api/broker/'
         },
         keycloak: {
           text: 'Keycloak Admin',
diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue
index eb1b6f544b784bcafeea731cc922687dbb1906c4..a7145026260f4aaeebca8ef0697d2ecec3beb74c 100644
--- a/dbrepo-ui/pages/database/[database_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/info.vue
@@ -158,10 +158,10 @@ if (data.value) {
 }
 </script>
 <script>
-import DatabaseToolbar from '@/components/database/DatabaseToolbar'
-import Summary from '@/components/identifier/Summary'
-import Select from '@/components/identifier/Select'
-import UserBadge from '@/components/user/UserBadge'
+import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue'
+import Summary from '@/components/identifier/Summary.vue'
+import Select from '@/components/identifier/Select.vue'
+import UserBadge from '@/components/user/UserBadge.vue'
 import { formatTimestampUTCLabel, sizeToHumanLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/database/[database_id]/persist.vue b/dbrepo-ui/pages/database/[database_id]/persist.vue
index 87ae9700c2ec96e647eb5c39249984436383fdfd..9e0d97b4b6487e2702391c3e419cd09abe2e5b90 100644
--- a/dbrepo-ui/pages/database/[database_id]/persist.vue
+++ b/dbrepo-ui/pages/database/[database_id]/persist.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import Persist from '@/components/identifier/Persist'
+import Persist from '@/components/identifier/Persist.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue
index b8722cf5337afad06ef73a7253e9e2ee3694ed18..57bf242eff5486101d0318b8379b7c33e1d0b44a 100644
--- a/dbrepo-ui/pages/database/[database_id]/settings.vue
+++ b/dbrepo-ui/pages/database/[database_id]/settings.vue
@@ -185,8 +185,8 @@
 </template>
 
 <script>
-import DatabaseToolbar from '@/components/database/DatabaseToolbar'
-import EditAccess from '@/components/dialogs/EditAccess'
+import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue'
+import EditAccess from '@/components/dialogs/EditAccess.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
index 10c44335f7ce0b71106868f75768c8abc63dea32..117461d800667099a8435ea83c763023e227f9b2 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
@@ -18,8 +18,8 @@
 </template>
 
 <script>
-import QueryResults from '@/components/subset/Results'
-import SubsetToolbar from '@/components/subset/SubsetToolbar'
+import QueryResults from '@/components/subset/Results.vue'
+import SubsetToolbar from '@/components/subset/SubsetToolbar.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import { useCacheStore } from '@/stores/cache'
 
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 3ab5479828f57d6a35881a949dcca2f861aae03e..83850ebf93c12fc6c5c14e260269b8dc16129241 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
@@ -103,10 +103,10 @@ if (data.value) {
 }
 </script>
 <script>
-import Summary from '@/components/identifier/Summary'
-import SubsetToolbar from '@/components/subset/SubsetToolbar'
-import Select from '@/components/identifier/Select'
-import UserBadge from '@/components/user/UserBadge'
+import Summary from '@/components/identifier/Summary.vue'
+import SubsetToolbar from '@/components/subset/SubsetToolbar.vue'
+import Select from '@/components/identifier/Select.vue'
+import UserBadge from '@/components/user/UserBadge.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist.vue
index 763e9eca30e02f647925684e672517806e1f648a..8f42c3fbc82d3f7aa8be645190a9ca1dc74df793 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/persist.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import Persist from '@/components/identifier/Persist'
+import Persist from '@/components/identifier/Persist.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/create.vue b/dbrepo-ui/pages/database/[database_id]/subset/create.vue
index dfc61ad511bcbcc11cb31bb7ac95fcbca606d08a..62241db5050a1aebe1924cf6154d585fb1eb85e9 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/create.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/create.vue
@@ -7,7 +7,8 @@
 
 <script>
 import { useUserStore } from '@/stores/user'
-import Builder from '@/components/subset/Builder'
+import Builder from '@/components/subset/Builder.vue'
+
 export default {
   components: {
     Builder
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/index.vue b/dbrepo-ui/pages/database/[database_id]/subset/index.vue
index 8e8c215e3df398423db765931e4f1e6c066a95fe..1793a1af07db6fffe969fb77719c78b08b38a28c 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/index.vue
@@ -7,7 +7,7 @@
 </template>
 
 <script>
-import SubsetList from '@/components/subset/SubsetList'
+import SubsetList from '@/components/subset/SubsetList.vue'
 
 export default {
   components: {
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 d0cdd08ade0d499512725cd68dad474ecd01261a..d0bd1a7a4ac9536b45912bcd21f0cecd82497365 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
@@ -102,14 +102,14 @@
 </template>
 
 <script>
-import TimeTravel from '@/components/dialogs/TimeTravel'
-import TimeDrift from '@/components/TimeDrift'
-import TableToolbar from '@/components/table/TableToolbar'
+import TimeTravel from '@/components/dialogs/TimeTravel.vue'
+import TimeDrift from '@/components/TimeDrift.vue'
+import TableToolbar from '@/components/table/TableToolbar.vue'
 import {formatTimestampUTC, formatDateUTC, formatTimestamp, localizedMessage} from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
-import EditTuple from '@/components/dialogs/EditTuple'
-import BlobDownload from "~/components/table/BlobDownload.vue";
+import EditTuple from '@/components/dialogs/EditTuple.vue'
+import BlobDownload from '@/components/table/BlobDownload.vue'
 
 export default {
   components: {
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
index 34d9facf98573f9e1fab52b28963e6e8f1e9994f..7b29c6ba8e9f22c1568db41b5ab8898a63b0bda6 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/import.vue
@@ -28,7 +28,7 @@
 </template>
 
 <script>
-import TableImport from '@/components/table/TableImport'
+import TableImport from '@/components/table/TableImport.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
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 753aa5cbab2b24d5a79027521b7b3f3534e6596e..49fe3f27bb7020c1ebbb58365b9ea9b32db3f367 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
@@ -164,10 +164,10 @@ if (data.value) {
 }
 </script>
 <script>
-import TableToolbar from '@/components/table/TableToolbar'
-import Select from '@/components/identifier/Select'
-import Summary from '@/components/identifier/Summary'
-import UserBadge from '@/components/user/UserBadge'
+import TableToolbar from '@/components/table/TableToolbar.vue'
+import Select from '@/components/identifier/Select.vue'
+import Summary from '@/components/identifier/Summary.vue'
+import UserBadge from '@/components/user/UserBadge.vue'
 import { formatTimestampUTCLabel, sizeToHumanLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist.vue
index 887a721237ea0540b688c025da46d273b6e52b66..49fddef8e3c736848eb38b9fa8f9cce5a8f972bd 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/persist.vue
@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import Persist from '@/components/identifier/Persist'
+import Persist from '@/components/identifier/Persist.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
index 0d695bace449590517ffc79d61ce9bf85b8c9bc1..699977b279a1add87d26d0f7a2d411ecdff418f2 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
@@ -130,7 +130,7 @@
 </template>
 
 <script>
-import TableToolbar from '@/components/table/TableToolbar'
+import TableToolbar from '@/components/table/TableToolbar.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/table/create.vue b/dbrepo-ui/pages/database/[database_id]/table/create.vue
index 6b352410cc68c5525ae8cb7a38b45cff62deab9e..d77969316dfd968d0d8476461930fe339ec45bfd 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/create.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/create.vue
@@ -141,7 +141,7 @@
 </template>
 
 <script>
-import TableSchema from '@/components/table/TableSchema'
+import TableSchema from '@/components/table/TableSchema.vue'
 import { notEmpty } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/database/[database_id]/table/import.vue b/dbrepo-ui/pages/database/[database_id]/table/import.vue
index b701485976e61237c9c108849c63d15d7bf33f9f..62a8a5667541e06ed4750211da1a1a9c16a7f12c 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/import.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/import.vue
@@ -6,9 +6,9 @@
         variant="plain"
         size="small"
         icon="mdi-arrow-left"
-        :to="`/database/${$route.params.database_id}/table`" />
+        :to="`/database/${$route.params.database_id}/table`"/>
       <v-toolbar-title
-        :text="$t('pages.table.subpages.import.title')" />
+        :text="$t('pages.table.subpages.import.title')"/>
     </v-toolbar>
     <v-card
       variant="flat"
@@ -21,7 +21,7 @@
             <v-stepper-item
               :title="$t('pages.table.subpages.import.metadata.title')"
               :complete="validStep1"
-              :value="1" />
+              :value="1"/>
           </v-stepper-header>
           <v-stepper-window
             direction="vertical">
@@ -44,7 +44,7 @@
                       persistent-hint
                       :variant="inputVariant"
                       :hint="$t('pages.table.subpages.import.name.hint')"
-                      :label="$t('pages.table.subpages.import.name.label')" />
+                      :label="$t('pages.table.subpages.import.name.label')"/>
                   </v-col>
                 </v-row>
                 <v-row dense>
@@ -62,7 +62,7 @@
                       persistent-hint
                       :variant="inputVariant"
                       :hint="$t('pages.table.subpages.import.generated.hint')"
-                      :label="$t('pages.table.subpages.import.generated.label')" />
+                      :label="$t('pages.table.subpages.import.generated.label')"/>
                   </v-col>
                 </v-row>
                 <v-row dense>
@@ -79,7 +79,7 @@
                       persistent-hint
                       :variant="inputVariant"
                       :hint="$t('pages.table.subpages.import.description.hint')"
-                      :label="$t('pages.table.subpages.import.description.label')" />
+                      :label="$t('pages.table.subpages.import.description.label')"/>
                   </v-col>
                 </v-row>
               </v-container>
@@ -89,12 +89,12 @@
             :step-start="2"
             :create="true"
             :table="table"
-            @analyse="onAnalyse" />
+            @analyse="onAnalyse"/>
           <v-stepper-header>
             <v-stepper-item
               :title="$t('pages.table.subpages.import.preview.title')"
               :complete="validStep4"
-              :value="4" />
+              :value="4"/>
           </v-stepper-header>
           <v-stepper-window
             direction="vertical">
@@ -107,13 +107,13 @@
                 :columns="tableCreate.columns"
                 @schema-valid="schemaValidity"
                 @back="onBack"
-                @close="createEmptyTableAndImport" />
+                @close="createEmptyTableAndImport"/>
             </v-container>
           </v-stepper-window>
           <v-stepper-header>
             <v-stepper-item
               :title="$t('pages.table.subpages.import.summary.title')"
-              :value="5" />
+              :value="5"/>
           </v-stepper-header>
           <v-stepper-window
             v-if="table"
@@ -122,12 +122,13 @@
               <v-row dense>
                 <v-col>
                   <v-alert
+                    v-if="rowCount !== null"
                     border="start"
                     color="success">
                     {{ $t('pages.table.subpages.create.summary.prefix') }}
-                    <strong v-text="table.internal_name" />
+                    <strong v-text="table.internal_name"/>
                     {{ $t('pages.table.subpages.create.summary.middle') }}
-                    <strong v-text="rowCount" />
+                    <strong v-text="rowCount"/>
                     {{ $t('pages.table.subpages.create.summary.suffix') }}
                   </v-alert>
                 </v-col>
@@ -140,7 +141,7 @@
                     size="small"
                     variant="flat"
                     :text="$t('navigation.data')"
-                    :to="`/database/${$route.params.database_id}/table/${table.id}/data`" />
+                    :to="`/database/${$route.params.database_id}/table/${table.id}/data`"/>
                 </v-col>
               </v-row>
             </v-container>
@@ -148,21 +149,21 @@
         </v-stepper>
       </v-card-text>
     </v-card>
-    <v-breadcrumbs :items="items" class="pa-0 mt-2" />
+    <v-breadcrumbs :items="items" class="pa-0 mt-2"/>
   </div>
 </template>
 
 <script>
-import TableSchema from '@/components/table/TableSchema'
-import { notEmpty, isNonNegativeInteger } from '@/utils'
-import { useUserStore } from '@/stores/user'
-import { useCacheStore } from '@/stores/cache'
+import TableSchema from '@/components/table/TableSchema.vue'
+import {notEmpty} from '@/utils'
+import {useUserStore} from '@/stores/user'
+import {useCacheStore} from '@/stores/cache'
 
 export default {
   components: {
     TableSchema
   },
-  data () {
+  data() {
     return {
       step: 1,
       validStep1: false,
@@ -171,20 +172,20 @@ export default {
       validStep4: false,
       error: false,
       fileModel: null,
-      rowCount: 0,
+      rowCount: null,
       file: {
         filename: null,
         path: null
       },
       table: null,
       separators: [
-        { key: ',', value: ',' },
-        { key: ';', value: ';' },
-        { key: '\\t (Tabulator)', value: '\t' }
+        {key: ',', value: ','},
+        {key: ';', value: ';'},
+        {key: '\\t (Tabulator)', value: '\t'}
       ],
       quotes: [
-        { key: '" (Double Quotes)', value: '"' },
-        { key: '\' (Single Quotes)', value: '\'' }
+        {key: '" (Double Quotes)', value: '"'},
+        {key: '\' (Single Quotes)', value: '\''}
       ],
       items: [
         {
@@ -238,23 +239,23 @@ export default {
     }
   },
   computed: {
-    user () {
+    user() {
       return this.userStore.getUser
     },
-    roles () {
+    roles() {
       return this.userStore.getRoles
     },
-    database () {
+    database() {
       return this.cacheStore.getDatabase
     },
-    generatedTableName () {
+    generatedTableName() {
       if (!this.tableCreate.name) {
         return null
       }
       const tableService = useTableService()
       return tableService.tableNameToInternalName(this.tableCreate.name)
     },
-    validTableName () {
+    validTableName() {
       if (this.tableCreate.name === null) {
         return true
       }
@@ -270,33 +271,33 @@ export default {
         .map(t => t.internal_name)
         .includes(tableService.tableNameToInternalName(this.tableCreate.name))
     },
-    canInsertTableData () {
+    canInsertTableData() {
       if (!this.roles) {
         return false
       }
       return this.roles.includes('insert-table-data')
     },
-    inputVariant () {
+    inputVariant() {
       const runtimeConfig = useRuntimeConfig()
       return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal
     },
-    buttonVariant () {
+    buttonVariant() {
       const runtimeConfig = useRuntimeConfig()
       return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal
     }
   },
-  mounted () {
+  mounted() {
     this.loadDateFormats()
   },
   methods: {
     notEmpty,
-    onBack () {
+    onBack() {
       this.step = 1
     },
-    submit () {
+    submit() {
       this.$refs.form.validate()
     },
-    async loadDateFormats () {
+    async loadDateFormats() {
       this.loading = true
       const databaseService = useDatabaseService()
       databaseService.findOne(this.$route.params.database_id)
@@ -311,7 +312,7 @@ export default {
           this.loading = false
         })
     },
-    createEmptyTableAndImport () {
+    createEmptyTableAndImport() {
       /* make enum values to array */
       const validColumns = this.tableCreate.columns.map((column) => {
         // validate `id` column: must be a PK
@@ -322,7 +323,9 @@ export default {
         return true
       })
       // bail out if there is a problem with one of the columns
-      if (!validColumns.every(Boolean)) { return }
+      if (!validColumns.every(Boolean)) {
+        return
+      }
       this.tableCreate.columns.forEach(c => {
         if (c.unique) {
           this.tableCreate.constraints.uniques.push([c.name])
@@ -331,7 +334,7 @@ export default {
       })
       this.createTableAndImport(this.tableCreate)
     },
-    createTableAndImport (table) {
+    createTableAndImport(table) {
       const tableService = useTableService()
       tableService.create(this.$route.params.database_id, table)
         .then((table) => {
@@ -348,7 +351,7 @@ export default {
             })
             .catch((error) => {
               console.error('Failed to import csv', error)
-              this.$toast.error(this.$t('error.import.dataset'))
+              this.$toast.error(this.$t('error.import.dataset') + ': ' + error.response.data.message)
               this.loading = false
               this.$refs.schema.loading = false
             })
@@ -363,12 +366,12 @@ export default {
           this.loading = false
         })
     },
-    schemaValidity (event) {
-      const { valid } = event
+    schemaValidity(event) {
+      const {valid} = event
       this.validStep4 = valid
     },
-    onAnalyse (event) {
-      const { columns, filename, line_termination } = event
+    onAnalyse(event) {
+      const {columns, filename, line_termination} = event
       console.debug('analysed', columns)
       this.tableCreate.columns = columns
       this.tableImport.location = filename
diff --git a/dbrepo-ui/pages/database/[database_id]/table/index.vue b/dbrepo-ui/pages/database/[database_id]/table/index.vue
index 810b85df545a719f7e1e090c1954093c5969c8db..7198c88cf31ab8203f711cd8e7982805524ecff9 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/index.vue
@@ -8,8 +8,8 @@
   </div>
 </template>
 <script>
-import TableList from '@/components/table/TableList'
-import DatabaseToolbar from '@/components/database/DatabaseToolbar'
+import TableList from '@/components/table/TableList.vue'
+import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue'
 
 export default {
   name: 'Tables',
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 e20af92a0ed8af18a82343ee232eca96bcf94e6c..aed29aed246fd676d766cafcc168781b4f3fed31 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
@@ -20,8 +20,8 @@
 </template>
 
 <script>
-import TimeDrift from '@/components/TimeDrift'
-import QueryResults from '@/components/subset/Results'
+import TimeDrift from '@/components/TimeDrift.vue'
+import QueryResults from '@/components/subset/Results.vue'
 import { useCacheStore } from '@/stores/cache'
 
 export default {
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 c965fbbb04c3dd5761a4114410c198507849918d..71c8be0328d88970495f942614769124a66360bc 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
@@ -84,10 +84,10 @@ if (data.value) {
 }
 </script>
 <script>
-import ViewToolbar from '@/components/view/ViewToolbar'
-import Summary from '@/components/identifier/Summary'
-import Select from '@/components/identifier/Select'
-import UserBadge from '~/components/user/UserBadge'
+import ViewToolbar from '@/components/view/ViewToolbar.vue'
+import Summary from '@/components/identifier/Summary.vue'
+import Select from '@/components/identifier/Select.vue'
+import UserBadge from '@/components/user/UserBadge.vue'
 import { formatTimestampUTCLabel } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist.vue
index 4c98ab68057c83384148440983cf3353cc620a11..dba5316a586c48ea9a08325ed88c1ac7cd44f3ff 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/persist.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import Persist from '@/components/identifier/Persist'
+import Persist from '@/components/identifier/Persist.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/database/[database_id]/view/create.vue b/dbrepo-ui/pages/database/[database_id]/view/create.vue
index e020b0142fb262c0557521f9dcfa5544bb7cd9a2..839b79e243d4ceb7903e8a81ee9da0306d29697a 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/create.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/create.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import Builder from '@/components/subset/Builder'
+import Builder from '@/components/subset/Builder.vue'
 
 export default {
   components: {
diff --git a/dbrepo-ui/pages/database/[database_id]/view/index.vue b/dbrepo-ui/pages/database/[database_id]/view/index.vue
index a5bc576afe6d65b4aaeee9cc85473542be38af08..dc87510ae887285ac36fc647e8f2a172cb708784 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/index.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/index.vue
@@ -9,8 +9,8 @@
 </template>
 
 <script>
-import DatabaseToolbar from '@/components/database/DatabaseToolbar'
-import ViewList from '@/components/view/ViewList'
+import DatabaseToolbar from '@/components/database/DatabaseToolbar.vue'
+import ViewList from '@/components/view/ViewList.vue'
 
 export default {
   name: 'Views',
diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue
index 76403dda9606fc2576a4079cd18267db0aaf7b4e..e23a1cce94db3030129f72f79673ed42fe636929 100644
--- a/dbrepo-ui/pages/index.vue
+++ b/dbrepo-ui/pages/index.vue
@@ -28,8 +28,8 @@
 </template>
 
 <script>
-import DatabaseList from '@/components/database/DatabaseList'
-import DatabaseCreate from '@/components/database/DatabaseCreate'
+import DatabaseList from '@/components/database/DatabaseList.vue'
+import DatabaseCreate from '@/components/database/DatabaseCreate.vue'
 import { useUserStore } from '@/stores/user'
 
 export default {
diff --git a/dbrepo-ui/pages/search.vue b/dbrepo-ui/pages/search.vue
index 8b132ee89fa7864cdc5207f946bd651ea23ee370..711cee2c7b0d682809fb361ac9dda1661ac7288c 100644
--- a/dbrepo-ui/pages/search.vue
+++ b/dbrepo-ui/pages/search.vue
@@ -71,8 +71,8 @@
 </template>
 
 <script>
-import DatabaseCreate from '@/components/database/DatabaseCreate'
-import AdvancedSearch from '@/components/search/AdvancedSearch'
+import DatabaseCreate from '@/components/database/DatabaseCreate.vue'
+import AdvancedSearch from '@/components/search/AdvancedSearch.vue'
 import { useUserStore } from '@/stores/user'
 
 export default {
diff --git a/dbrepo-ui/pages/semantic/index.vue b/dbrepo-ui/pages/semantic/index.vue
index 819cf8c1a417abbe1f9a66eb83fdb0ccd51da3c2..f6b6721b17c28d1bc5f30d2885ee253139d96a0c 100644
--- a/dbrepo-ui/pages/semantic/index.vue
+++ b/dbrepo-ui/pages/semantic/index.vue
@@ -56,7 +56,7 @@
 </template>
 
 <script>
-import ViewSemanticEntity from '@/components/dialogs/ViewSemanticEntity'
+import ViewSemanticEntity from '@/components/dialogs/ViewSemanticEntity.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/semantic/ontology/index.vue b/dbrepo-ui/pages/semantic/ontology/index.vue
index 0714584d3ab90a82197fed084418c4ad072144d2..c4c5291aefcce046d401c4986fee05a530d897fa 100644
--- a/dbrepo-ui/pages/semantic/ontology/index.vue
+++ b/dbrepo-ui/pages/semantic/ontology/index.vue
@@ -30,8 +30,8 @@
 </template>
 
 <script>
-import OntologiesList from '@/components/OntologiesList'
-import CreateOntology from '@/components/dialogs/CreateOntology'
+import OntologiesList from '@/components/OntologiesList.vue'
+import CreateOntology from '@/components/dialogs/CreateOntology.vue'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
 
diff --git a/dbrepo-ui/pages/user/authentication.vue b/dbrepo-ui/pages/user/authentication.vue
index c1b4826149f90ef44bed38b4a5802ac9a27a49aa..0af8140c5987d9e84c3777a1b1b2dc1c9c75ca00 100644
--- a/dbrepo-ui/pages/user/authentication.vue
+++ b/dbrepo-ui/pages/user/authentication.vue
@@ -61,7 +61,7 @@
 </template>
 
 <script>
-import UserToolbar from '@/components/user/UserToolbar'
+import UserToolbar from '@/components/user/UserToolbar.vue'
 import { useUserStore } from '@/stores/user'
 
 export default {
diff --git a/dbrepo-ui/pages/user/developer.vue b/dbrepo-ui/pages/user/developer.vue
index 1f034c3b9e9769cbedec91ce661c0b8269d14013..b53c6f7192ca4b2f0431a9d728877442ed523399 100644
--- a/dbrepo-ui/pages/user/developer.vue
+++ b/dbrepo-ui/pages/user/developer.vue
@@ -88,8 +88,8 @@
 </template>
 
 <script>
-import UserToolbar from '@/components/user/UserToolbar'
-import EditMaintenanceMessage from '@/components/dialogs/EditMaintenanceMessage'
+import UserToolbar from '@/components/user/UserToolbar.vue'
+import EditMaintenanceMessage from '@/components/dialogs/EditMaintenanceMessage.vue'
 import { formatTimestampUTCLabel, isActiveMessage, timestampsToHumanDifference } from '@/utils'
 import { useUserStore } from '@/stores/user'
 import { useCacheStore } from '@/stores/cache'
diff --git a/dbrepo-ui/pages/user/info.vue b/dbrepo-ui/pages/user/info.vue
index 730ba736f02a72db43dab98c1dbdef16c9fce6fa..4fce64f020f5719963deb4f2e96e1d6eb0bf4ad1 100644
--- a/dbrepo-ui/pages/user/info.vue
+++ b/dbrepo-ui/pages/user/info.vue
@@ -133,7 +133,7 @@
 </template>
 
 <script>
-import UserToolbar from '@/components/user/UserToolbar'
+import UserToolbar from '@/components/user/UserToolbar.vue'
 import { useUserStore } from '@/stores/user'
 
 export default {
diff --git a/helm-charts/dbrepo/Chart.lock b/helm-charts/dbrepo/Chart.lock
index e42753285372ee514c872d517d269130942af64c..e815e19b9a025adb3d364ee14fbbfb2a424a39be 100644
--- a/helm-charts/dbrepo/Chart.lock
+++ b/helm-charts/dbrepo/Chart.lock
@@ -19,12 +19,9 @@ dependencies:
   version: 12.1.7
 - name: rabbitmq
   repository: https://charts.bitnami.com/bitnami
-  version: 12.5.1
-- name: fluent-bit
-  repository: https://fluent.github.io/helm-charts
-  version: 0.40.0
+  version: 14.0.0
 - name: seaweedfs
   repository: https://seaweedfs.github.io/seaweedfs/helm
   version: 3.59.4
-digest: sha256:a8cdc5c9c76c732d2997450dd92af1fe17686cea93d3b521185b6be17e9fa536
-generated: "2024-03-18T07:22:03.360916672+01:00"
+digest: sha256:c9413a2ea531ba66cd4619ff96bc84e5c9186984e63a4f21411b5d680c5e9389
+generated: "2024-04-13T09:46:36.27988377+02:00"
diff --git a/helm-charts/dbrepo/Chart.tpl.yaml b/helm-charts/dbrepo/Chart.tpl.yaml
index 587bd52deefdc19587cb02ec4132a1aa06c5d52f..07785aee9b7102e09c830225e5e448f8c789fa82 100644
--- a/helm-charts/dbrepo/Chart.tpl.yaml
+++ b/helm-charts/dbrepo/Chart.tpl.yaml
@@ -46,7 +46,7 @@ dependencies:
     condition: authDb.enabled
   - name: rabbitmq
     alias: brokerService
-    version: 12.5.1
+    version: 14.0.0
     repository: https://charts.bitnami.com/bitnami
     condition: brokerService.enabled
   - name: seaweedfs
diff --git a/helm-charts/dbrepo/Chart.yaml b/helm-charts/dbrepo/Chart.yaml
index 6417f15fe0cff95a4f5018678583f2054f4f6614..976fea322038e8f7c88ef8a28f682256955ca491 100644
--- a/helm-charts/dbrepo/Chart.yaml
+++ b/helm-charts/dbrepo/Chart.yaml
@@ -46,7 +46,7 @@ dependencies:
     condition: authDb.enabled
   - name: rabbitmq
     alias: brokerService
-    version: 12.5.1
+    version: 14.0.0
     repository: https://charts.bitnami.com/bitnami
     condition: brokerService.enabled
   - name: seaweedfs
diff --git a/helm-charts/dbrepo/charts/rabbitmq-12.5.1.tgz b/helm-charts/dbrepo/charts/rabbitmq-12.5.1.tgz
deleted file mode 100644
index cd252174f05f13e755c8049def5561b1e2f9a3ef..0000000000000000000000000000000000000000
Binary files a/helm-charts/dbrepo/charts/rabbitmq-12.5.1.tgz and /dev/null differ
diff --git a/helm-charts/dbrepo/charts/rabbitmq-14.0.0.tgz b/helm-charts/dbrepo/charts/rabbitmq-14.0.0.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..39ea3aaef2a94fe507a08242bbfe37209eb9fa53
Binary files /dev/null and b/helm-charts/dbrepo/charts/rabbitmq-14.0.0.tgz differ
diff --git a/helm-charts/dbrepo/templates/broker-service/secret.yaml b/helm-charts/dbrepo/templates/broker-service/secret.yaml
index de0fb00e9635bfbaba8068da44b03676d7b6f799..d411ca160976494bce8fb0f6df421ee35a58ca38 100644
--- a/helm-charts/dbrepo/templates/broker-service/secret.yaml
+++ b/helm-charts/dbrepo/templates/broker-service/secret.yaml
@@ -6,7 +6,7 @@ metadata:
   name: broker-service-secret
   namespace: {{ .Values.namespace }}
 stringData:
-  definitions.json: |
+  load_definition.json: |
     {
       "bindings": [
         {
diff --git a/helm-charts/dbrepo/templates/ingress.yaml b/helm-charts/dbrepo/templates/ingress.yaml
index e4c19e8066c9e13ff76f52a469bcf4f3ad7fbdd5..ae506eb885383bfe6d3e532b06daeb42d73dc2b0 100644
--- a/helm-charts/dbrepo/templates/ingress.yaml
+++ b/helm-charts/dbrepo/templates/ingress.yaml
@@ -100,32 +100,6 @@ spec:
 ---
 apiVersion: networking.k8s.io/v1
 kind: Ingress
-metadata:
-  name: dbrepo-ingress-rewrite-api
-  annotations: {{ toYaml .Values.ingress.annotations.rewriteApi | nindent 4 }}
-  namespace: {{ .Values.namespace }}
-spec:
-  ingressClassName: {{ .Values.ingress.className }}
-  {{- if .Values.ingress.tls.enabled }}
-  tls:
-    - hosts:
-        - {{ .Values.hostname }}
-      secretName: {{ .Values.ingress.tls.secretName }}
-  {{- end }}
-  rules:
-    - host: {{ .Values.hostname }}
-      http:
-        paths:
-          - path: /api/broker/(.*)
-            pathType: ImplementationSpecific
-            backend:
-              service:
-                name: broker-service
-                port:
-                  number: 15672
----
-apiVersion: networking.k8s.io/v1
-kind: Ingress
 metadata:
   name: dbrepo-ingress-rewrite-root
   annotations: {{ toYaml .Values.ingress.annotations.rewriteRoot | nindent 4 }}
@@ -142,26 +116,19 @@ spec:
     - host: {{ .Values.hostname }}
       http:
         paths:
-          - path: /admin/broker/(.*)
+          - path: /api/broker/(.*)
             pathType: ImplementationSpecific
             backend:
               service:
                 name: broker-service
                 port:
                   number: 15672
-          - path: /admin/storage
-            pathType: ImplementationSpecific
-            backend:
-              service:
-                name: storageservice-s3
-                port:
-                  number: 9000
 ---
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
   name: dbrepo-ingress-rewrite-root-secure
-  annotations: {{ toYaml .Values.ingress.annotations.rewriteRoot | nindent 4 }}
+  annotations: {{ toYaml .Values.ingress.annotations.rewriteRootSecure | nindent 4 }}
   namespace: {{ .Values.namespace }}
 spec:
   ingressClassName: {{ .Values.ingress.className }}
diff --git a/helm-charts/dbrepo/values.dev.yaml b/helm-charts/dbrepo/values.dev.yaml
index 31708922f50c5ba488a8c4e9c6ca58a36b59ad2f..52eca6011cc3872a888691c146a6358d0cfdd9ac 100644
--- a/helm-charts/dbrepo/values.dev.yaml
+++ b/helm-charts/dbrepo/values.dev.yaml
@@ -316,7 +316,7 @@ brokerService:
     default_permissions.configure = .*
     default_permissions.read = .*
     default_permissions.write = .*
-    load_definitions = /etc/rabbitmq/definitions.json
+    load_definitions = /app/load_definition.json
     log.console = true
     listeners.tcp.1 = 0.0.0.0:5672
     auth_backends.1 = rabbit_auth_backend_oauth2
@@ -324,27 +324,13 @@ brokerService:
     auth_oauth2.resource_server_id = rabbitmq
     auth_oauth2.preferred_username_claims.1 = client_id
     auth_oauth2.default_key = t2OCeCheJ9uwoBbNQjG_nN6WKiLcceTIAZmiTbGODFM
-    auth_oauth2.signing_keys.t2OCeCheJ9uwoBbNQjG_nN6WKiLcceTIAZmiTbGODFM = /etc/rabbitmq/cert.pem
-    auth_oauth2.signing_keys.id2 = /etc/rabbitmq/pubkey.pem
+    auth_oauth2.signing_keys.t2OCeCheJ9uwoBbNQjG_nN6WKiLcceTIAZmiTbGODFM = /app/cert.pem
+    auth_oauth2.signing_keys.id2 = /app/pubkey.pem
     auth_oauth2.algorithms.1 = HS256
     auth_oauth2.algorithms.2 = RS256
   loadDefinition:
     enabled: true
-    file: /etc/rabbitmq/definitions.json
     existingSecret: broker-service-secret
-  extraVolumeMounts:
-    - name: secret-map
-      mountPath: /etc/rabbitmq/definitions.json
-      subPath: definitions.json
-      readOnly: true
-    - name: secret-map
-      mountPath: /etc/rabbitmq/pubkey.pem
-      subPath: pubkey.pem
-      readOnly: true
-    - name: secret-map
-      mountPath: /etc/rabbitmq/cert.pem
-      subPath: cert.pem
-      readOnly: true
   extraVolumes:
     - name: secret-map
       secret:
@@ -355,6 +341,7 @@ brokerService:
     size: 5Gi
   service:
     type: ClusterIP
+    managerPortEnabled: true
     # loadBalancerIP:
   replicaCount: 1
 
@@ -501,6 +488,10 @@ ingress:
       nginx.ingress.kubernetes.io/use-regex: "true"
       nginx.ingress.kubernetes.io/rewrite-target: /api/$1
     rewriteRoot:
+#      cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer
+      nginx.ingress.kubernetes.io/use-regex: "true"
+      nginx.ingress.kubernetes.io/rewrite-target: /$1
+    rewriteRootSecure:
 #      cert-manager.io/cluster-issuer: letsencrypt-cluster-issuer
       nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
       nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
diff --git a/helm-charts/dbrepo/values.yaml b/helm-charts/dbrepo/values.yaml
index ba938be03752fcce3a1a2e36e39a193ce54ffc6b..726251e07b876a51b3e6fc524026c23520c14e00 100644
--- a/helm-charts/dbrepo/values.yaml
+++ b/helm-charts/dbrepo/values.yaml
@@ -316,7 +316,7 @@ brokerService:
     default_permissions.configure = .*
     default_permissions.read = .*
     default_permissions.write = .*
-    load_definitions = /etc/rabbitmq/definitions.json
+    load_definitions = /app/load_definition.json
     log.console = true
     listeners.tcp.1 = 0.0.0.0:5672
     auth_backends.1 = rabbit_auth_backend_oauth2
@@ -330,13 +330,8 @@ brokerService:
     auth_oauth2.algorithms.2 = RS256
   loadDefinition:
     enabled: true
-    file: /etc/rabbitmq/definitions.json
     existingSecret: broker-service-secret
   extraVolumeMounts:
-    - name: secret-map
-      mountPath: /etc/rabbitmq/definitions.json
-      subPath: definitions.json
-      readOnly: true
     - name: secret-map
       mountPath: /etc/rabbitmq/pubkey.pem
       subPath: pubkey.pem