diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
index 25dcb0caea1e161e0c6964b5cc121495aed78130..db00195e049295bfd4b054f831ffd2c50f17f01c 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
@@ -53,7 +53,9 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
         genesis();
         /* metadata database */
         MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME);
+        MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME);
         MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO);
+        MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_DTO);
     }
 
     @Test
@@ -92,6 +94,46 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
         assertEquals(0, foreignKeys.size());
     }
 
+    @Test
+    public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException {
+
+        /* test */
+        final TableDto response = schemaService.inspectTable(DATABASE_2_PRIVILEGED_DTO, "experiments");
+        assertEquals("experiments", response.getInternalName());
+        assertEquals("experiments", response.getName());
+        assertEquals(DATABASE_2_ID, response.getTdbid());
+        assertTrue(response.getIsVersioned());
+        assertEquals(DATABASE_2_PUBLIC, response.getIsPublic());
+        assertEquals(DATABASE_2_OWNER, response.getCreatedBy());
+        assertNotNull(response.getCreator());
+        assertEquals(DATABASE_2_OWNER, response.getCreator().getId());
+        assertEquals(USER_2_NAME, response.getCreator().getName());
+        assertEquals(USER_2_USERNAME, response.getCreator().getUsername());
+        assertEquals(USER_2_FIRSTNAME, response.getCreator().getFirstname());
+        assertEquals(USER_2_LASTNAME, response.getCreator().getLastname());
+        assertEquals(USER_2_QUALIFIED_NAME, response.getCreator().getQualifiedName());
+        assertNotNull(response.getCreator().getAttributes());
+        assertEquals(USER_2_AFFILIATION, response.getCreator().getAttributes().getAffiliation());
+        assertEquals(USER_2_THEME, response.getCreator().getAttributes().getTheme());
+        assertEquals(USER_2_LANGUAGE, response.getCreator().getAttributes().getLanguage());
+        assertEquals(USER_2_ORCID_URL, response.getCreator().getAttributes().getOrcid());
+        assertNull(response.getCreator().getAttributes().getMariadbPassword());
+        final List<IdentifierDto> identifiers = response.getIdentifiers();
+        assertNotNull(identifiers);
+        assertEquals(0, identifiers.size());
+        final List<ColumnDto> columns = response.getColumns();
+        assertNotNull(columns);
+        assertEquals(3, columns.size());
+        assertColumn(columns.get(0), null, null, DATABASE_2_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null, null);
+        assertColumn(columns.get(1), null, null, DATABASE_2_ID, "mode", "mode", ColumnTypeDto.ENUM, 3L, null, false, null, null);
+        assertEquals(2, columns.get(1).getEnums().size());
+        assertEquals(List.of("ABC", "DEF"), columns.get(1).getEnums());
+        assertColumn(columns.get(2), null, null, DATABASE_2_ID, "seq", "seq", ColumnTypeDto.SET, 5L, null, true, null, null);
+        assertEquals(3, columns.get(2).getSets().size());
+        assertEquals(List.of("1", "2", "3"), columns.get(2).getSets());
+        /* ignore rest (constraints) */
+    }
+
     @Test
     public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException {
 
@@ -348,8 +390,8 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
     }
 
     protected static void assertColumn(ColumnDto column, Long id, Long tableId, Long databaseId, String name,
-                                           String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed,
-                                           Long dfid, String description) {
+                                       String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed,
+                                       Long dfid, String description) {
         log.trace("assert column: {}", internalName);
         assertNotNull(column);
         assertEquals(id, column.getId());
diff --git a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
index 6279d887cc22e7112e663eb87242e9b7092b4a7f..88284978c5921f696dc6acfd821bde5856e6b6eb 100644
--- a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
+++ b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
@@ -38,6 +38,15 @@ create table names
     unique key (firstname, lastname)
 ) with system versioning;
 
+CREATE SEQUENCE seq_experiments;
+
+create table experiments
+(
+    id   bigint              not null default nextval(seq_experiments),
+    mode enum ('ABC', 'DEF') not null,
+    seq  set ('1','2','3')
+) WITH SYSTEM VERSIONING;
+
 create table likes
 (
     name_id bigint not null,
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 5be39d4f0ae9c5b3255be9782ed1a70ce1316831..ea6734bac35b5b6209a243adf29406fa9ad0f6d6 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
@@ -754,6 +754,22 @@ public interface MariaDbMapper {
                 .databaseId(table.getTdbid())
                 .description(resultSet.getString(11))
                 .build();
+        if (column.getColumnType().equals(ColumnTypeDto.ENUM)) {
+            column.setEnums(Arrays.stream(resultSet.getString(8)
+                            .substring(0, resultSet.getString(8).length() - 1)
+                            .replace("enum(", "")
+                            .split(","))
+                    .map(value -> value.replace("'", ""))
+                    .toList());
+        }
+        if (column.getColumnType().equals(ColumnTypeDto.SET)) {
+            column.setSets(Arrays.stream(resultSet.getString(8)
+                            .substring(0, resultSet.getString(8).length() - 1)
+                            .replace("set(", "")
+                            .split(","))
+                    .map(value -> value.replace("'", ""))
+                    .toList());
+        }
         /* constraints */
         if (resultSet.getString(9) != null && resultSet.getString(9).equals("PRI")) {
             table.getConstraints().getPrimaryKey().add(PrimaryKeyDto.builder()
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 89f52c6cb2d2b199e5b1883d10b4969fad3ec612..15986289ba848215a44cd50d7f4f8fdd97b27220 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/constraints/foreignKey/ForeignKeyReference.java
@@ -26,17 +26,17 @@ public class ForeignKeyReference {
     private Long id;
 
     @ToString.Exclude
-    @ManyToOne(fetch = FetchType.LAZY)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
     @JoinColumn(name = "fkid", referencedColumnName = "fkid", nullable = false)
     private ForeignKey foreignKey;
 
-    @ManyToOne(fetch = FetchType.LAZY)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "cid", referencedColumnName = "id", nullable = false)
     })
     private TableColumn column;
 
-    @ManyToOne(fetch = FetchType.LAZY)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinColumns({
             @JoinColumn(name = "rcid", referencedColumnName = "id", nullable = false)
     })
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/DatabaseMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/DatabaseMapper.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
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 1cb8f6d3949704cb18f635f1d90af0829d7c95e6..a0a8eab0cfc51369fa540382340d3b00cf358c52 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
@@ -540,17 +540,14 @@ public interface MetadataMapper {
                     pk.getColumn().setDatabaseId(data.getDatabase().getId());
                 });
         for (ForeignKeyDto fk : table.getConstraints().getForeignKeys()) {
+            fk.getTable().setDatabaseId(table.getTdbid());
+            fk.getReferencedTable().setDatabaseId(table.getTdbid());
             for (ForeignKeyReferenceDto ref : fk.getReferences()) {
                 ref.setForeignKey(foreignKeyDtoToForeignKeyBriefDto(fk));
                 ref.getColumn().setTableId(table.getId());
                 ref.getColumn().setDatabaseId(table.getTdbid());
-                final Optional<TableColumn> optional = data.getDatabase().getTables().stream().map(Table::getColumns).flatMap(List::stream).filter(c -> c.getId().equals(ref.getReferencedColumn().getId())).findFirst();
-                if (optional.isEmpty()) {
-                    log.error("Failed to find foreign key referenced column {}.{} in columns: {}", table.getInternalName(), ref.getReferencedColumn().getInternalName(), data.getDatabase().getTables().stream().map(Table::getColumns).flatMap(List::stream).toList());
-                    throw new IllegalArgumentException("Failed to find foreign key referenced column");
-                }
-                ref.getReferencedColumn().setTableId(optional.get().getTable().getId());
-                ref.getReferencedColumn().setDatabaseId(optional.get().getTable().getTdbid());
+                ref.getReferencedColumn().setTableId(fk.getReferencedTable().getId());
+                ref.getReferencedColumn().setDatabaseId(table.getTdbid());
             }
         }
         table.getConstraints()
@@ -594,7 +591,7 @@ public interface MetadataMapper {
     Unique uniqueDtoToUnique(UniqueDto data);
 
     @Mappings({
-            @Mapping(target = "ownedBy", source = "owner.id"),
+            @Mapping(target = "ownedBy", source = "owner.id")
     })
     Table tableDtoToTable(TableDto data);
 
diff --git a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
index 3312af7c5af638096be77f207d0b6524ea9d0dab..87987f76bc609a2bdcf430510b611cb2d5b8059e 100644
--- a/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
+++ b/dbrepo-metadata-service/rest-service/src/main/resources/application-local.yml
@@ -13,6 +13,7 @@ spring:
         default_schema: fda
         jdbc:
           time_zone: UTC
+        format_sql: false
   application:
     name: metadata-service
   rabbitmq:
@@ -43,6 +44,7 @@ logging:
     root: warn
     at.tuwien.: trace
     org.springframework.security.web.FilterChainProxy: debug
+#    org.hibernate.resource.jdbc: trace
     org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: debug
 dbrepo:
   repository-name: Database Repository
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 28ab4ccb41133b237c033adbf77c85e9dcf7bb3f..c357020a684be7b90120ef6dc0fad68a42dcd098 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
@@ -284,15 +284,17 @@ public class MetadataMapperUnitTest extends AbstractUnitTest {
         assertEquals("fk_location", table1fk.getName());
         assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnDelete());
         assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnUpdate());
-        assertEquals(TABLE_1_ID, table1fk.getTable().getId());
-        assertEquals(TABLE_2_ID, table1fk.getReferencedTable().getId());
+        assertEquals(TABLE_2_ID, table1fk.getTable().getId());
+        assertEquals(DATABASE_1_ID, table1fk.getTable().getDatabaseId());
+        assertEquals(TABLE_1_ID, table1fk.getReferencedTable().getId());
+        assertEquals(DATABASE_1_ID, table1fk.getReferencedTable().getDatabaseId());
         final ForeignKeyReferenceDto table1fkr = table1fk.getReferences().get(0);
         assertEquals(1L, table1fkr.getId());
         assertEquals(TABLE_2_COLUMNS_DTO.get(2).getId(), table1fkr.getColumn().getId());
-        assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTable().getId(), table1fkr.getColumn().getTableId());
+        assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTableId(), table1fkr.getColumn().getTableId());
         assertEquals(TABLE_2_COLUMNS_DTO.get(2).getDatabaseId(), table1fkr.getColumn().getDatabaseId());
-        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getId());
-        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getTableId());
+        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getId(), table1fkr.getReferencedColumn().getId());
+        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getTableId(), table1fkr.getReferencedColumn().getTableId());
         assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getDatabaseId());
         assertEquals(1, table1.getConstraints().getPrimaryKey().size());
         final PrimaryKeyDto table1pk = new ArrayList<>(table1.getConstraints().getPrimaryKey()).get(0);
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 16d23d7af1d31c4bbefa50c607f6ad42b23eac8e..76871aa68ac3ea416ca73df0c990e5588b94300d 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
@@ -6,13 +6,13 @@ import at.tuwien.api.database.DatabaseModifyVisibilityDto;
 import at.tuwien.api.database.ViewDto;
 import at.tuwien.api.database.internal.CreateDatabaseDto;
 import at.tuwien.api.database.table.TableDto;
-import at.tuwien.api.database.table.columns.ColumnDto;
-import at.tuwien.api.database.table.constraints.primary.PrimaryKeyDto;
 import at.tuwien.api.user.internal.UpdateUserPasswordDto;
 import at.tuwien.entities.container.Container;
 import at.tuwien.entities.database.*;
 import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.database.table.columns.TableColumn;
+import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKey;
+import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKeyReference;
 import at.tuwien.entities.database.table.constraints.primaryKey.PrimaryKey;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
@@ -238,6 +238,46 @@ public class DatabaseServiceImpl implements DatabaseService {
             database.getTables()
                     .add(tableEntity);
         }
+        /* update referenced tables after they are known to the service */
+        for (ForeignKey foreignKey : database.getTables().stream().map(t -> t.getConstraints().getForeignKeys()).flatMap(List::stream).toList()) {
+            log.trace("lookup table {} in tables: {}", foreignKey.getReferencedTable().getInternalName(), database.getTables().stream().map(Table::getInternalName).toList());
+            final Optional<Table> optional = database.getTables()
+                    .stream()
+                    .filter(t -> t.getInternalName().equals(foreignKey.getReferencedTable().getInternalName()))
+                    .findFirst();
+            if (optional.isEmpty()) {
+                log.error("Failed to find referenced table: {}.{}", database.getInternalName(), foreignKey.getReferencedTable().getInternalName());
+                throw new IllegalArgumentException("Failed to find referenced table: " + database.getInternalName() + "." + foreignKey.getReferencedTable().getInternalName());
+            }
+            foreignKey.setReferencedTable(optional.get());
+            for (ForeignKeyReference reference : foreignKey.getReferences()) {
+                reference.setForeignKey(foreignKey);
+                final Optional<TableColumn> optional1 = database.getTables()
+                        .stream()
+                        .filter(t -> t.getInternalName().equals(foreignKey.getTable().getInternalName()))
+                        .map(Table::getColumns)
+                        .flatMap(List::stream)
+                        .filter(c -> c.getInternalName().equals(reference.getColumn().getInternalName()))
+                        .findFirst();
+                if (optional1.isEmpty()) {
+                    log.error("Failed to find foreign key column: {}.{}.{}", database.getInternalName(), foreignKey.getTable().getInternalName(), reference.getColumn().getInternalName());
+                    throw new IllegalArgumentException("Failed to find foreign key column: " + reference.getColumn().getInternalName());
+                }
+                reference.setColumn(optional1.get());
+                final Optional<TableColumn> optional2 = database.getTables()
+                        .stream()
+                        .filter(t -> t.getInternalName().equals(foreignKey.getReferencedTable().getInternalName()))
+                        .map(Table::getColumns)
+                        .flatMap(List::stream)
+                        .filter(c -> c.getInternalName().equals(reference.getReferencedColumn().getInternalName()))
+                        .findFirst();
+                if (optional2.isEmpty()) {
+                    log.error("Failed to find foreign key referenced column: {}", reference.getReferencedColumn().getInternalName());
+                    throw new IllegalArgumentException("Failed to find foreign key referenced column: " + reference.getReferencedColumn().getInternalName());
+                }
+                reference.setReferencedColumn(optional2.get());
+            }
+        }
         /* update in metadata database */
         database = databaseRepository.save(database);
         /* save in search service */
diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
index cf32bf4f005830c3aff5ff22b13dea03df26bb3e..156563a041c833376f850465032f28b69602e020 100644
--- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
+++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
@@ -72,9 +72,13 @@ public abstract class AbstractUnitTest extends BaseTest {
         /* DATABASE 2 */
         DATABASE_2.setSubsets(new LinkedList<>());
         DATABASE_2.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS, DATABASE_2_USER_3_READ_ACCESS)));
+        DATABASE_2_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO)));
         DATABASE_2.setTables(new LinkedList<>(List.of(TABLE_5, TABLE_6, TABLE_7)));
         DATABASE_2.setViews(new LinkedList<>(List.of(VIEW_4)));
         DATABASE_2.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5)));
+        DATABASE_2_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)));
+        DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_DTO)));
+        DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO)));
         TABLE_5.setDatabase(DATABASE_2);
         TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS));
         TABLE_5.setConstraints(TABLE_5_CONSTRAINTS);
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 fa47be8af84496f5fcbd96fb9c485a9fffdc3ceb..2d9a2f40a03a60b4650e8fa626d9ef17e7ab9eb4 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
@@ -29,7 +29,6 @@ import at.tuwien.api.database.table.internal.PrivilegedTableDto;
 import at.tuwien.api.datacite.DataCiteBody;
 import at.tuwien.api.datacite.DataCiteData;
 import at.tuwien.api.datacite.doi.DataCiteDoi;
-import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.api.identifier.*;
 import at.tuwien.api.keycloak.CredentialDto;
 import at.tuwien.api.keycloak.CredentialTypeDto;
@@ -74,21 +73,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 io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.http.MediaType;
 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 org.springframework.web.bind.annotation.ResponseStatus;
 
 import java.io.File;
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.nio.charset.Charset;
@@ -592,6 +585,8 @@ public abstract class BaseTest {
             .firstname(USER_2_FIRSTNAME)
             .lastname(USER_2_LASTNAME)
             .name(USER_2_NAME)
+            .qualifiedName(USER_2_QUALIFIED_NAME)
+            .attributes(USER_2_ATTRIBUTES_DTO)
             .build();
 
     public final static UserBriefDto USER_2_BRIEF_DTO = UserBriefDto.builder()
@@ -1257,14 +1252,6 @@ public abstract class BaseTest {
     public final static UUID DATABASE_2_OWNER = USER_2_ID;
     public final static UUID DATABASE_2_CREATOR = USER_2_ID;
 
-    public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder()
-            .id(DATABASE_2_ID)
-            .name(DATABASE_2_NAME)
-            .internalName(DATABASE_2_INTERNALNAME)
-            .container(CONTAINER_1_PRIVILEGED_DTO)
-            .views(new LinkedList<>())
-            .build();
-
     public final static DatabaseCreateDto DATABASE_2_CREATE = DatabaseCreateDto.builder()
             .name(DATABASE_2_NAME)
             .isPublic(DATABASE_2_PUBLIC)
@@ -7178,6 +7165,22 @@ public abstract class BaseTest {
             .identifiers(new LinkedList<>())
             .build();
 
+    public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder()
+            .id(DATABASE_2_ID)
+            .created(Instant.now().minus(1, HOURS))
+            .isPublic(DATABASE_2_PUBLIC)
+            .name(DATABASE_2_NAME)
+            .container(CONTAINER_1_PRIVILEGED_DTO)
+            .internalName(DATABASE_2_INTERNALNAME)
+            .exchangeName(DATABASE_2_EXCHANGE)
+            .identifiers(List.of(IDENTIFIER_5_DTO))
+            .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))
+            .views(List.of(VIEW_4_DTO))
+            .created(DATABASE_2_CREATED)
+            .creator(USER_2_DTO)
+            .owner(USER_2_DTO)
+            .build();
+
     public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder()
             .id(DATABASE_2_ID)
             .created(DATABASE_2_CREATED)
@@ -7240,6 +7243,13 @@ public abstract class BaseTest {
             .user(USER_2)
             .build();
 
+    public final static DatabaseAccessDto DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO = DatabaseAccessDto.builder()
+            .type(AccessTypeDto.WRITE_ALL)
+            .hdbid(DATABASE_2_ID)
+            .huserid(USER_2_ID)
+            .user(USER_2_DTO)
+            .build();
+
     public final static DatabaseAccess DATABASE_2_USER_3_READ_ACCESS = DatabaseAccess.builder()
             .type(AccessType.READ)
             .hdbid(DATABASE_2_ID)
@@ -7248,6 +7258,13 @@ public abstract class BaseTest {
             .user(USER_3)
             .build();
 
+    public final static DatabaseAccessDto DATABASE_2_USER_3_READ_ACCESS_DTO = DatabaseAccessDto.builder()
+            .type(AccessTypeDto.READ)
+            .hdbid(DATABASE_2_ID)
+            .huserid(USER_3_ID)
+            .user(USER_3_DTO)
+            .build();
+
     public final static DatabaseAccess DATABASE_2_USER_3_WRITE_OWN_ACCESS = DatabaseAccess.builder()
             .type(AccessType.WRITE_OWN)
             .hdbid(DATABASE_2_ID)
@@ -7555,8 +7572,8 @@ public abstract class BaseTest {
                             .referencedColumn(TABLE_1_COLUMNS.get(0))
                             .foreignKey(null) // set later
                             .build())))
-                    .table(TABLE_1)
-                    .referencedTable(TABLE_2)
+                    .table(TABLE_2)
+                    .referencedTable(TABLE_1)
                     .onUpdate(ReferenceType.NO_ACTION)
                     .build())))
             .uniques(new LinkedList<>(List.of(Unique.builder()