diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-container-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index 5e47ebae6303fbc31256fed584c167971ce8e671..cb6d20fd1090e83c6d9b86987e910f02be7cffcb 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -22,6 +22,12 @@ public interface UserMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserMapper.class);
 
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
+    UserDetailsDto userDtoToUserDetailsDto(UserDto data);
+
     /* keep */
     @Mappings({
             @Mapping(target = "orcid", expression = "java(userToOrcid(data))")
@@ -43,6 +49,10 @@ public interface UserMapper {
         return orcid.map(UserAttribute::getValue).orElse(null);
     }
 
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
     UserDetailsDto userBriefDtoToUserDetailsDto(UserBriefDto data);
 
     default UserDetailsDto tokenIntrospectDtoToUserDetailsDto(TokenIntrospectDto data) {
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
index 0505e07c3af85b62bdcf9321a12f57fcdbaa38ca..c1a5d756b7af9d163766f3a9fae3c31cf157a77c 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -6,8 +6,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface RealmRepository extends JpaRepository<Realm, String> {
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
 
 }
diff --git a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index e77de8f6a8160d1f2e04a0ce7575b1ee3d833a0a..9eb0b5190252b7e1890deb7717fe9b2afc133d41 100644
--- a/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-container-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.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 UserRepository extends JpaRepository<User, String> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
index e8e9192e1c18093df6206e884be1e6fd8f81fce5..e08b535f2dab9c5a70b3435bf3f35a64f06f8094 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/AccessEndpointUnitTest.java
@@ -30,6 +30,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.security.Principal;
 import java.util.Optional;
+import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
@@ -209,7 +210,7 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
     }
 
     protected void generic_find(Long containerId, Long databaseId, Database database, DatabaseAccess access,
-                                String username, String userId, Principal principal) throws AccessDeniedException,
+                                String username, UUID userId, Principal principal) throws AccessDeniedException,
             NotAllowedException {
 
         /* mock */
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
index b8f79bee732620a753af5bf6bbdd5acf7a661817..549b9489a0678756b1b466941b98bab4fe2a9c6f 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AccessServiceIntegrationTest.java
@@ -9,13 +9,18 @@ import at.tuwien.config.H2Utils;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.AccessType;
+import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
+import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.repository.jpa.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
@@ -24,6 +29,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.io.File;
 import java.util.List;
+import java.util.UUID;
+import java.util.stream.Stream;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -43,9 +50,6 @@ public class AccessServiceIntegrationTest extends BaseUnitTest {
     @MockBean
     private Channel channel;
 
-    @Autowired
-    private DatabaseAccessRepository databaseAccessRepository;
-
     @Autowired
     private ImageRepository imageRepository;
 
@@ -55,12 +59,18 @@ public class AccessServiceIntegrationTest extends BaseUnitTest {
     @Autowired
     private DatabaseRepository databaseRepository;
 
+    @Autowired
+    private DatabaseAccessRepository databaseAccessRepository;
+
     @Autowired
     private AccessService accessService;
 
     @Autowired
     private UserRepository userRepository;
 
+    @Autowired
+    private RealmRepository realmRepository;
+
     @Autowired
     private H2Utils h2Utils;
 
@@ -84,11 +94,13 @@ public class AccessServiceIntegrationTest extends BaseUnitTest {
         DockerConfig.createAllNetworks();
         /* metadata database */
         h2Utils.runScript("schema.sql");
+        realmRepository.save(REALM_DBREPO);
         imageRepository.save(IMAGE_1);
         userRepository.save(USER_1_SIMPLE);
         userRepository.save(USER_2_SIMPLE);
+        userRepository.save(USER_3_SIMPLE);
         containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
+        databaseRepository.save(DATABASE_1);
     }
 
     @AfterEach
@@ -97,205 +109,156 @@ public class AccessServiceIntegrationTest extends BaseUnitTest {
         DockerConfig.removeAllNetworks();
     }
 
-    @Test
-    public void create_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
-
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
-
-        /* test */
-        create_generic(AccessTypeDto.READ, AccessType.READ, USER_2_USERNAME, USER_2_ID);
+    public static Stream<Arguments> create_succeeds_parameters() {
+        return Stream.of(
+                Arguments.arguments("general", AccessTypeDto.READ, AccessType.READ, USER_3_USERNAME, USER_3_ID)
+        );
     }
 
-    @Test
-    public void create_multiple_fails() throws InterruptedException {
-
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
-        databaseAccessRepository.save(DATABASE_1_DEVELOPER_READ_ACCESS);
+    public static Stream<Arguments> create_fails_parameters() {
+        return Stream.of(
+                Arguments.arguments("general", NotAllowedException.class, AccessTypeDto.READ, USER_2_USERNAME)
+        );
+    }
 
-        /* test */
-        assertThrows(NotAllowedException.class, () -> {
-            create_generic(AccessTypeDto.READ, AccessType.READ, USER_2_USERNAME, USER_2_ID);
-        });
+    public static Stream<Arguments> update_succeeds_parameters() {
+        return Stream.of(
+                Arguments.arguments("same access", CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.READ, AccessType.READ,
+                        USER_2_USERNAME, USER_2_ID),
+                Arguments.arguments("write own access", CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.WRITE_OWN,
+                        AccessType.WRITE_OWN, USER_2_USERNAME, USER_2_ID),
+                Arguments.arguments("write all access", CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.WRITE_ALL,
+                        AccessType.WRITE_ALL, USER_2_USERNAME, USER_2_ID)
+        );
     }
 
-    @Test
-    public void update_same_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
+    public static Stream<Arguments> update_fails_parameters() {
+        return Stream.of(
+                Arguments.arguments("user not found", UserNotFoundException.class, CONTAINER_1_ID, DATABASE_1_ID,
+                        AccessTypeDto.READ, "l33tsp34k"),
+                Arguments.arguments("database not found", DatabaseNotFoundException.class, CONTAINER_2_ID, DATABASE_2_ID,
+                        AccessTypeDto.READ, USER_2_USERNAME)
+        );
+    }
 
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
-        databaseAccessRepository.save(DATABASE_1_DEVELOPER_READ_ACCESS);
+    public static Stream<Arguments> delete_fails_parameters() {
+        return Stream.of(
+                Arguments.arguments("user not found", UserNotFoundException.class, "l33tsp34k"),
+                Arguments.arguments("is owner", NotAllowedException.class, USER_1_USERNAME)
+        );
+    }
 
-        /* test */
-        update_generic(CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.READ, AccessType.READ, USER_2_USERNAME, USER_2_ID);
+    public static Stream<Arguments> delete_succeeds_parameters() {
+        return Stream.of(
+                Arguments.arguments("general", USER_2_USERNAME)
+        );
     }
 
-    @Test
-    public void update_writeOwn_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
+    /* ################################################################################################### */
+    /* ## GENERIC TEST CASES                                                                            ## */
+    /* ################################################################################################### */
+
+    @ParameterizedTest
+    @MethodSource("create_fails_parameters")
+    protected <T extends Throwable> void create_fails(String test, Class<T> expectedException,
+                                                      AccessTypeDto accessTypeDto, String username) {
+        final DatabaseGiveAccessDto request = DatabaseGiveAccessDto.builder()
+                .type(accessTypeDto)
+                .username(username)
+                .build();
 
         /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
+        databaseAccessRepository.save(DATABASE_1_DEVELOPER_READ_ACCESS);
 
         /* test */
-        update_generic(CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.WRITE_OWN, AccessType.WRITE_OWN, USER_2_USERNAME, USER_2_ID);
+        assertThrows(expectedException, () -> {
+            accessService.create(CONTAINER_1_ID, DATABASE_1_ID, request);
+        });
     }
 
-    @Test
-    public void update_writeAll_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
+    @ParameterizedTest
+    @MethodSource("create_succeeds_parameters")
+    protected <T extends Throwable> void create_succeeds(String test, AccessTypeDto accessTypeDto, AccessType access,
+                                                         String username, UUID userId)
+            throws UserNotFoundException, NotAllowedException, QueryMalformedException, DatabaseNotFoundException,
+            DatabaseMalformedException, InterruptedException {
+        final DatabaseGiveAccessDto request = DatabaseGiveAccessDto.builder()
+                .type(accessTypeDto)
+                .username(username)
+                .build();
 
         /* mock */
         DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
         DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
 
         /* test */
-        update_generic(CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.WRITE_ALL, AccessType.WRITE_ALL, USER_2_USERNAME, USER_2_ID);
+        accessService.create(CONTAINER_1_ID, DATABASE_1_ID, request);
+        final List<DatabaseAccess> response = databaseAccessRepository.findAll();
+        assertEquals(1, response.size());
+        assertEquals(access, response.get(0).getType());
+        assertEquals(DATABASE_1_ID, response.get(0).getHdbid());
+        assertEquals(userId, response.get(0).getHuserid());
     }
 
-    @Test
-    public void update_userNotFound_fails() throws InterruptedException {
+    @ParameterizedTest
+    @MethodSource("update_succeeds_parameters")
+    protected void update_succeeds(String test, Long containerId, Long databaseId, AccessTypeDto accessTypeDto, AccessType access,
+                                   String username) throws UserNotFoundException, NotAllowedException,
+            QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException, AccessDeniedException, InterruptedException {
+        final DatabaseModifyAccessDto request = DatabaseModifyAccessDto.builder()
+                .type(accessTypeDto)
+                .build();
 
         /* mock */
+        databaseAccessRepository.save(DATABASE_1_DEVELOPER_READ_ACCESS);
         DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
         DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
 
         /* test */
-        assertThrows(UserNotFoundException.class, () -> {
-            update_generic(CONTAINER_1_ID, DATABASE_1_ID, AccessTypeDto.READ, AccessType.READ, "l33tsp34k", null);
-        });
+        accessService.update(containerId, databaseId, username, request);
+        final List<DatabaseAccess> response = databaseAccessRepository.findAll();
+        assertEquals(1, response.size());
+        assertEquals(access, response.get(0).getType());
+        assertEquals(databaseId, response.get(0).getHdbid());
     }
 
-    @Test
-    public void update_databaseNotFound_fails() throws InterruptedException {
-
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_2, CONTAINER_2_ENV);
-        DockerConfig.startContainer(CONTAINER_2);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        containerRepository.save(CONTAINER_2);
-        databaseRepository.save(DATABASE_1_SIMPLE);
+    @ParameterizedTest
+    @MethodSource("update_fails_parameters")
+    protected <T extends Throwable> void update_fails(String name, Class<T> expectedException, Long containerId,
+                                                      Long databaseId, AccessTypeDto accessTypeDto,
+                                                      String username) {
+        final DatabaseModifyAccessDto request = DatabaseModifyAccessDto.builder()
+                .type(accessTypeDto)
+                .build();
 
         /* test */
-        assertThrows(DatabaseNotFoundException.class, () -> {
-            update_generic(CONTAINER_2_ID, DATABASE_2_ID, AccessTypeDto.READ, AccessType.READ, USER_2_USERNAME, USER_2_ID);
+        assertThrows(expectedException, () -> {
+            accessService.update(containerId, databaseId, username, request);
         });
     }
 
-    @Test
-    public void delete_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseNotFoundException, DatabaseMalformedException, InterruptedException {
-
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        userRepository.save(USER_2_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
+    @ParameterizedTest
+    @MethodSource("delete_fails_parameters")
+    protected <T extends Throwable> void delete_fails(String name, Class<T> expectedException, String username) {
 
         /* test */
-        accessService.delete(CONTAINER_1_ID, DATABASE_1_ID, USER_2_USERNAME);
-    }
-
-    @Test
-    public void delete_isOwner_fails() throws InterruptedException {
-
-        /* mock */
-        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
-        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        userRepository.save(USER_1_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
-
-        /* test */
-        assertThrows(NotAllowedException.class, () -> {
-            accessService.delete(CONTAINER_1_ID, DATABASE_1_ID, USER_1_USERNAME);
+        assertThrows(expectedException, () -> {
+            accessService.delete(CONTAINER_1_ID, DATABASE_1_ID, username);
         });
     }
 
-    @Test
-    public void delete_notExists_fails() throws InterruptedException {
+    @ParameterizedTest
+    @MethodSource("delete_succeeds_parameters")
+    protected <T extends Throwable> void delete_succeeds(String name, String username) throws InterruptedException,
+            UserNotFoundException, NotAllowedException, QueryMalformedException, DatabaseNotFoundException,
+            DatabaseMalformedException {
 
         /* mock */
         DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
         DockerConfig.startContainer(CONTAINER_1_SIMPLE);
-        containerRepository.save(CONTAINER_1_SIMPLE);
-        databaseRepository.save(DATABASE_1_SIMPLE);
-
-        /* test */
-        assertThrows(UserNotFoundException.class, () -> {
-            accessService.delete(CONTAINER_1_ID, DATABASE_1_ID, "l33tsp34k");
-        });
-    }
-
-    /* ################################################################################################### */
-    /* ## GENERIC TEST CASES                                                                            ## */
-    /* ################################################################################################### */
-
-    protected void create_generic(AccessTypeDto accessTypeDto, AccessType access, String username, String userId)
-            throws UserNotFoundException, NotAllowedException, QueryMalformedException, DatabaseNotFoundException,
-            DatabaseMalformedException {
-        final DatabaseGiveAccessDto request = DatabaseGiveAccessDto.builder()
-                .type(accessTypeDto)
-                .username(username)
-                .build();
 
         /* test */
-        accessService.create(CONTAINER_1_ID, DATABASE_1_ID, request);
-        final List<DatabaseAccess> response = databaseAccessRepository.findAll();
-        assertEquals(1, response.size());
-        assertEquals(access, response.get(0).getType());
-        assertEquals(DATABASE_1_ID, response.get(0).getHdbid());
-        assertEquals(userId, response.get(0).getHuserid());
-    }
-
-    protected void update_generic(Long containerId, Long databaseId, AccessTypeDto accessTypeDto, AccessType access,
-                                  String username, String userId) throws UserNotFoundException, NotAllowedException,
-            QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException {
-        final DatabaseModifyAccessDto request = DatabaseModifyAccessDto.builder()
-                .type(accessTypeDto)
-                .build();
-
-        /* test */
-        accessService.update(containerId, databaseId, username, request);
-        final List<DatabaseAccess> response = databaseAccessRepository.findAll();
-        assertEquals(1, response.size());
-        assertEquals(access, response.get(0).getType());
-        assertEquals(databaseId, response.get(0).getHdbid());
-        assertEquals(userId, response.get(0).getHuserid());
+        accessService.delete(CONTAINER_1_ID, DATABASE_1_ID, username);
     }
 
 }
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationElasticTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationElasticTest.java
index 7d680ea0af17a10435c3f887c79867bc76356fc3..370972f192629619377fc89faea976524a9bbccf 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationElasticTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationElasticTest.java
@@ -82,7 +82,7 @@ public class DatabaseServiceIntegrationElasticTest extends BaseUnitTest {
         afterEach();
         /* metadata database */
         h2Utils.runScript("schema.sql");
-        imageRepository.save(IMAGE_1_SIMPLE);
+        imageRepository.save(IMAGE_1);
         userRepository.save(USER_1_SIMPLE);
     }
 
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
index 0da52ebd92f914a2a4017c5daf2c0060cb09209f..85c0e90563f84b52898d42a6693f46b6ebc45542 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
@@ -8,6 +8,7 @@ import at.tuwien.config.IndexConfig;
 import at.tuwien.config.MariaDbConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.entities.database.Database;
+import at.tuwien.entities.user.User;
 import at.tuwien.exception.QueryMalformedException;
 import at.tuwien.repository.elastic.DatabaseIdxRepository;
 import at.tuwien.repository.jpa.*;
@@ -26,6 +27,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 import java.io.File;
 import java.security.Principal;
 import java.sql.SQLException;
+import java.util.List;
 import java.util.Optional;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -47,18 +49,27 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
     @MockBean
     private IndexConfig indexConfig;
 
-    @MockBean
-    private ContainerRepository containerRepository;
-
     @MockBean
     private DatabaseIdxRepository databaseIdxRepository;
 
-    @MockBean
-    private MariaDbServiceImpl databaseService;
+    @Autowired
+    private ContainerRepository containerRepository;
 
-    @MockBean
+    @Autowired
     private DatabaseRepository databaseRepository;
 
+    @Autowired
+    private ImageRepository imageRepository;
+
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private MariaDbServiceImpl databaseService;
+
     @Autowired
     private MariaDbConfig mariaDbConfig;
 
@@ -82,6 +93,12 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
     public void beforeEach() {
         afterEach();
         DockerConfig.createAllNetworks();
+        /* metadata database */
+        imageRepository.save(IMAGE_1);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        userRepository.save(USER_2_SIMPLE);
+        userRepository.save(USER_3_SIMPLE);
     }
 
     @AfterEach
@@ -98,11 +115,10 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
         MariaDbConfig.dropDatabase(CONTAINER_3_INTERNALNAME, DATABASE_3_INTERNALNAME, "root", "mariadb");
         when(databaseIdxRepository.save(any(DatabaseDto.class)))
-                .thenReturn(DATABASE_1_DTO);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_1);
+                .thenReturn(DATABASE_3_DTO);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_create(CONTAINER_3_ID, DATABASE_3_CREATE, DATABASE_3);
@@ -121,11 +137,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         when(databaseIdxRepository.save(any(DatabaseDto.class)))
                 .thenReturn(DATABASE_2_DTO)
                 .thenReturn(DATABASE_3_DTO);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3_SIMPLE));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_2)
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE);
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_create(CONTAINER_2_ID, DATABASE_2_CREATE, DATABASE_2);
@@ -145,11 +159,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         when(databaseIdxRepository.save(any(DatabaseDto.class)))
                 .thenReturn(DATABASE_3_DTO)
                 .thenReturn(DATABASE_2_DTO);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_2)
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE);
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_create(CONTAINER_3_ID, DATABASE_3_CREATE, DATABASE_3);
@@ -162,10 +174,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_insert(QUERY_4_STATEMENT, 1L);
@@ -178,10 +189,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_insert(QUERY_4_STATEMENT, 1L);
@@ -195,10 +205,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_system_insert("root", "mariadb");
@@ -210,10 +219,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         assertThrows(SQLException.class, () -> {
@@ -227,10 +235,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_user_insert("root", "mariadb");
@@ -242,10 +249,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* mock */
         DockerConfig.createContainer(BIND_MUSICOLOGY, CONTAINER_3_SIMPLE, CONTAINER_3_ENV);
         DockerConfig.startContainer(CONTAINER_3_SIMPLE);
-        when(containerRepository.findById(CONTAINER_3_ID))
-                .thenReturn(Optional.of(CONTAINER_3));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(DATABASE_3);
+        containerRepository.save(CONTAINER_1_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_2_SIMPLE) /* increase id */;
+        containerRepository.save(CONTAINER_3_SIMPLE);
 
         /* test */
         generic_user_insert("junit1", "junit1");
@@ -268,10 +274,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
 
     protected void generic_create(Long containerId, DatabaseCreateDto createDto, Database database)
             throws Exception {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* test */
-        final Database response = databaseService.create(containerId, createDto, principal);
+        final Database response = databaseService.create(containerId, createDto, USER_1_PRINCIPAL);
         assertEquals(database.getName(), response.getName());
         assertEquals(containerId, database.getId());
     }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-database-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index c8c386119eb093501d958e654b5e23097839eafd..cb3679d1c347d809015b4a67fcd99d4d01130709 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -6,10 +6,13 @@ import at.tuwien.api.user.UserBriefDto;
 import at.tuwien.api.user.UserDetailsDto;
 import at.tuwien.api.user.UserDto;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
 import java.util.Arrays;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 @Mapper(componentModel = "spring")
@@ -17,6 +20,10 @@ public interface UserMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserMapper.class);
 
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
     UserDetailsDto userDtoToUserDetailsDto(UserDto data);
 
     UserBriefDto userDtoToUserBriefDto(UserDto data);
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
index 62123403ef4e1acc3d95cfbc8c242cf62daf7592..3cf7c7ad0072c6ddbd510696263cf6921dc6d1e0 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/DatabaseAccessRepository.java
@@ -8,11 +8,12 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
 public interface DatabaseAccessRepository extends JpaRepository<DatabaseAccess, Long> {
 
-    void deleteByHdbidAndHuserid(Long databaseId, String userId);
+    void deleteByHdbidAndHuserid(Long databaseId, UUID userId);
 
     Optional<DatabaseAccess> findByHdbidAndHuserid(Long databaseId, String userId);
 
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
index 74d99176b09d25ee4def85fce8905ff80d1169b7..99f75a4104e8daa1c61a3e7b67ee28aa4a3800ec 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -4,6 +4,8 @@ import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 @Repository
-public interface RealmRepository extends JpaRepository<Realm, String>  {
+public interface RealmRepository extends JpaRepository<Realm, UUID>  {
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index 3772a12f59a6e9a9225612d34a0bf7b4a50fcd4e..9eb0b5190252b7e1890deb7717fe9b2afc133d41 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.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 UserRepository extends JpaRepository<User, Long> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/AccessService.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/AccessService.java
index c32cd3579f2dfa5dd0724b82766ffe1feca95b07..97eed76ada8e5b1ed01ac97ab6de9d6b2354680b 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/AccessService.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/AccessService.java
@@ -50,7 +50,7 @@ public interface AccessService {
      * @throws DatabaseMalformedException The database has an invalid state.
      */
     void update(Long containerId, Long databaseId, String username, DatabaseModifyAccessDto accessDto)
-            throws DatabaseNotFoundException, UserNotFoundException, NotAllowedException, QueryMalformedException, DatabaseMalformedException;
+            throws DatabaseNotFoundException, UserNotFoundException, NotAllowedException, QueryMalformedException, DatabaseMalformedException, AccessDeniedException;
 
     /**
      * Revokes access to a database of container.
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/UserService.java
index 2a052646544dabdaf5100761ca2843ed031024ae..cec9cf42e785ee2211782faeefc0181cf5c7ff4f 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/UserService.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/UserService.java
@@ -3,9 +3,11 @@ package at.tuwien.service;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
 
+import java.util.UUID;
+
 public interface UserService {
 
     User findByUsername(String username) throws UserNotFoundException;
 
-    User find(Long id) throws UserNotFoundException;
+    User find(UUID id) throws UserNotFoundException;
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index 3aa6ab4ea334e16c6db8bc9eef418e7aec7af43c..a94df1399012e231287e07756353e2aa11f6be97 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -102,7 +102,7 @@ public class AccessServiceImpl extends HibernateConnector implements AccessServi
     @Transactional
     public void update(Long containerId, Long databaseId, String username, DatabaseModifyAccessDto accessDto)
             throws DatabaseNotFoundException, UserNotFoundException, NotAllowedException, QueryMalformedException,
-            DatabaseMalformedException {
+            DatabaseMalformedException, AccessDeniedException {
         /* check */
         final Database database = databaseService.findById(containerId, databaseId);
         final Container container = database.getContainer();
@@ -111,6 +111,7 @@ public class AccessServiceImpl extends HibernateConnector implements AccessServi
             log.error("Failed to modify access of user with username {}, because it is the owner", username);
             throw new NotAllowedException("Failed modify access");
         }
+        find(databaseId, username);
         final User root = databaseMapper.containerToPrivilegedUser(container);
         final ComboPooledDataSource dataSource = getDataSource(container.getImage(), container, database, root);
         final DatabaseGiveAccessDto giveAccess = databaseMapper.databaseModifyAccessToDatabaseGiveAccessDto(username, accessDto);
@@ -133,8 +134,7 @@ public class AccessServiceImpl extends HibernateConnector implements AccessServi
             dataSource.close();
         }
         /* update access */
-        final DatabaseAccess access = databaseMapper.databaseModifyAccessDtoToDatabaseAccess(database, user, accessDto);
-        final DatabaseAccess entity = databaseAccessRepository.save(access);
+        databaseAccessRepository.save(databaseMapper.databaseModifyAccessDtoToDatabaseAccess(database, user, accessDto));
         log.info("Modified access to database with id {} for user with username {}", databaseId, username);
     }
 
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index d0c7fdb2d0ee3f95584d98f885685fbbb9584aab..003f54c319a01c901076553690c5d319aeab2953 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -8,7 +8,9 @@ import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -32,7 +34,7 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public User find(Long id) throws UserNotFoundException {
+    public User find(UUID id) throws UserNotFoundException {
         final Optional<User> optional = userRepository.findById(id);
         if (optional.isEmpty()) {
             log.error("Failed to retrieve user with id {}", id);
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index f14430e9675c7a152c778df18fc892e3423afdc6..bac8f626c26760326cf2dfd17027b5d2e5d29cd1 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -1,16 +1,23 @@
 package at.tuwien.mapper;
 
 import at.tuwien.api.user.GrantedAuthorityDto;
+import at.tuwien.api.user.UserBriefDto;
 import at.tuwien.api.user.UserDetailsDto;
 import at.tuwien.api.user.UserDto;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
 @Mapper(componentModel = "spring")
 public interface UserMapper {
 
-    UserDetailsDto userDtoToUserDetailsDto(UserDto data);
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
+    UserDetailsDto userBriefDtoToUserDetailsDto(UserBriefDto data);
 
     default GrantedAuthority grantedAuthorityDtoToGrantedAuthority(GrantedAuthorityDto data) {
         return new SimpleGrantedAuthority(data.getAuthority());
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..122095a168705beba38dc0c52cba481c1a64a649
--- /dev/null
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -0,0 +1,15 @@
+
+package at.tuwien.repository.jpa;
+
+import at.tuwien.entities.user.Realm;
+import at.tuwien.entities.user.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+import java.util.UUID;
+
+@Repository
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
+
+}
diff --git a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index 8368703d887e68c1df2c18f82fa4f7d46531820e..01b143f6f813cb5c34cd94a413010f2677d43685 100644
--- a/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-identifier-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
@@ -6,9 +6,10 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface UserRepository extends JpaRepository<User, Long> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenBriefDto.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/auth/TokenDto.java
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
index 5824512e7aa7bc8d7da46d103f189fffe5903bec..be111aa08ccb1a04d7a8b010107ceb8bfc4f5c46 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseAccessDto.java
@@ -9,6 +9,7 @@ import lombok.*;
 
 import javax.validation.constraints.NotNull;
 import java.time.Instant;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -21,7 +22,7 @@ public class DatabaseAccessDto {
     @NotNull
     @JsonIgnore
     @ToString.Exclude
-    private String huserid;
+    private UUID huserid;
 
     @NotNull
     @JsonIgnore
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java
index c5f7b7b0b34bc1d3036ed393e7ef1e979591c7b0..fc95f67dc682ff1639116ea859f4f20bd9d1eaa0 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserAttributeDto.java
@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -16,12 +17,12 @@ public class UserAttributeDto {
 
     @NotNull
     @JsonIgnore
-    private String id;
+    private UUID id;
 
     @NotNull
     @JsonIgnore
     @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4")
-    private String userId;
+    private UUID userId;
 
     @Schema(example = "theme_dark")
     private String name;
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
index d11d345a0d66457a56beaacf025b02a15c57a10d..62dfb946fe85884fa91e48b745583fa253a26f80 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
@@ -9,6 +9,7 @@ import org.springframework.security.core.userdetails.UserDetails;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -20,7 +21,7 @@ public class UserBriefDto {
 
     @NotNull
     @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4")
-    private String id;
+    private UUID id;
 
     @NotNull
     @Schema(example = "jcarberry", description = "Only contains lowercase characters")
diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
index d3b081ade0f4f4a67fdf7c60726ec22d8ef4b20d..2c824f4acae33668863d931571e96cc9546e1f15 100644
--- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
+++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
@@ -7,6 +7,7 @@ import lombok.*;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
+import java.util.UUID;
 
 @Getter
 @Setter
@@ -19,7 +20,7 @@ public class UserDto {
 
     @NotNull
     @Schema(example = "1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4")
-    private String id;
+    private UUID id;
 
     @NotNull
     @Schema(example = "jcarberry", description = "Only contains lowercase characters")
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
index bc5ba2b798d68bdc93352c193f30668c1031f54e..5f6e684785d78e7f91e41edc7bb2e8058df5cb4b 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccess.java
@@ -7,6 +7,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
 import java.time.Instant;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -21,8 +22,8 @@ public class DatabaseAccess {
 
     @Id
     @EqualsAndHashCode.Include
-    @Column(name = "user_id", updatable = false)
-    private String huserid;
+    @Column(name = "user_id", updatable = false, columnDefinition = "VARCHAR(36)")
+    private UUID huserid;
 
     @Id
     @EqualsAndHashCode.Include
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
index 6b4b8f2bc8768dce6adba4a3b29083e250822d61..83806068525ef9073e0bb18ca01b1a933f74a090 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/DatabaseAccessKey.java
@@ -3,11 +3,12 @@ package at.tuwien.entities.database;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.UUID;
 
 @EqualsAndHashCode
 public class DatabaseAccessKey implements Serializable {
 
-    private String huserid;
+    private UUID huserid;
 
     private Long hdbid;
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
index 23bd4c566c6e098b6e330a5a81be5f50a4f58a14..0840dca2e7d4f5d8ab21ba69c602237478ae2d4a 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
@@ -15,6 +15,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 import javax.persistence.*;
 import java.time.Instant;
 import java.util.List;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -42,7 +43,7 @@ public class Table {
 
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
-            @JoinColumn(name = "createdBy", referencedColumnName = "ID")
+            @JoinColumn(name = "createdBy", referencedColumnName = "ID", columnDefinition = "VARCHAR(36)")
     })
     private User creator;
 
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java
index f3da481c38b003df917e0ef0003159c9a6fe5066..a422eed5e9eb598c45b15283c6fa2efbae35847e 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Credential.java
@@ -5,6 +5,7 @@ import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -19,16 +20,14 @@ public class Credential {
 
     @Id
     @EqualsAndHashCode.Include
-    @GeneratedValue(generator = "credential-uuid")
-    @GenericGenerator(name = "credential-uuid", strategy = "org.hibernate.id.UUIDGenerator")
     @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
-    private String id;
+    private UUID id;
 
     @Column(nullable = false)
     private String type;
 
-    @Column(name = "user_id", nullable = false)
-    private String userId;
+    @Column(name = "user_id", nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID userId;
 
     @Column(nullable = false)
     private Long createdDate;
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java
index c87b90bc69a2a158e67777d4d2fbc65400fc931a..96ba2ec66181a43d38a4ce0f46e1e04efe8a09a8 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Realm.java
@@ -5,6 +5,7 @@ import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
 import java.util.List;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -21,10 +22,8 @@ public class Realm {
 
     @Id
     @EqualsAndHashCode.Include
-    @GeneratedValue(generator = "realm-uuid")
-    @GenericGenerator(name = "realm-uuid", strategy = "org.hibernate.id.UUIDGenerator")
     @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
-    private String id;
+    private UUID id;
 
     @Column(nullable = false)
     private Boolean enabled;
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java
index f1a8b1031b43134280b1d55d503a415ed1637820..5d25bce86bb08af5375d1f17aca4abee987772a6 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/Role.java
@@ -5,6 +5,7 @@ import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -19,10 +20,8 @@ public class Role {
 
     @Id
     @EqualsAndHashCode.Include
-    @GeneratedValue(generator = "role-uuid")
-    @GenericGenerator(name = "role-uuid", strategy = "org.hibernate.id.UUIDGenerator")
     @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
-    private String id;
+    private UUID id;
 
     @Column(name = "NAME", nullable = false)
     private String name;
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java
index 4ef61ea2ef0e32c1b52da2f96dec404d1b153312..7317453872dcbf11b0d32af43cffa709b5a0e251 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMapping.java
@@ -1,10 +1,10 @@
 package at.tuwien.entities.user;
 
 import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -20,12 +20,12 @@ public class RoleMapping {
 
     @Id
     @EqualsAndHashCode.Include
-    @Column(name = "USER_ID", nullable = false)
-    private String userId;
+    @Column(name = "USER_ID", nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID userId;
 
     @Id
     @EqualsAndHashCode.Include
-    @Column(name = "ROLE_ID", nullable = false)
-    private String roleId;
+    @Column(name = "ROLE_ID", nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID roleId;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java
index 7e96f96b1f12ee3ca306f8526540eebcb78eea06..ffe719a7106640cd38999a148bfcbb9902a39f3d 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/RoleMappingKey.java
@@ -3,12 +3,13 @@ package at.tuwien.entities.user;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.UUID;
 
 @EqualsAndHashCode
 public class RoleMappingKey implements Serializable {
 
-    private String userId;
+    private UUID userId;
 
-    private String roleId;
+    private UUID roleId;
 
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
index 2d36a68aff1e6bd6a63aa5eb6ebc76af1dcc1cf9..b4469d77bf31ac27650a9f114b9a49443a170da5 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
@@ -9,6 +9,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
 import java.util.List;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -31,10 +32,8 @@ public class User {
 
     @Id
     @EqualsAndHashCode.Include
-    @GeneratedValue(generator = "user-uuid")
-    @GenericGenerator(name = "user-uuid", strategy = "org.hibernate.id.UUIDGenerator")
     @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
-    private String id;
+    private UUID id;
 
     @Column(nullable = false)
     private String username;
@@ -45,8 +44,8 @@ public class User {
     @Column(name = "LAST_NAME")
     private String lastname;
 
-    @Column(name = "REALM_ID")
-    private String realmId;
+    @Column(name = "REALM_ID", columnDefinition = "VARCHAR(36)")
+    private UUID realmId;
 
     @Column(nullable = false)
     private String email;
@@ -95,4 +94,9 @@ public class User {
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "creator")
     private List<Identifier> identifiers;
 
+    @Transient
+    @ToString.Exclude
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "creator")
+    private List<at.tuwien.entities.database.table.Table> tables;
+
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java
index fbcfc82cf5512f55ca20cec5bac0089ffd4a1d36..976fc09f81f4881a60462c2c754f177000622b3f 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/user/UserAttribute.java
@@ -1,11 +1,11 @@
 package at.tuwien.entities.user;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.*;
 import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
+import java.util.UUID;
 
 @Data
 @Entity
@@ -20,14 +20,12 @@ public class UserAttribute {
 
     @Id
     @EqualsAndHashCode.Include
-    @GeneratedValue(generator = "attribute-uuid")
-    @GenericGenerator(name = "attribute-uuid", strategy = "org.hibernate.id.UUIDGenerator")
     @Column(name = "ID", nullable = false, columnDefinition = "VARCHAR(36)")
-    private String id;
+    private UUID id;
 
     @ToString.Exclude
-    @Column(name = "USER_ID", nullable = false)
-    private String userId;
+    @Column(name = "USER_ID", nullable = false, columnDefinition = "VARCHAR(36)")
+    private UUID userId;
 
     @Column(name = "NAME", nullable = false)
     private String name;
diff --git a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
index cb509b750df7d873dbef0dc6816f0824997c40cf..d6a515b3974c5a06a1ba62359a90d04163c184f8 100644
--- a/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
+++ b/dbrepo-metadata-db/test/src/main/java/at/tuwien/test/BaseTest.java
@@ -165,7 +165,7 @@ public abstract class BaseTest {
             .themeDark(false)
             .build();
 
-    public final static String REALM_DBREPO_ID = "6264bf7b-d1d3-4562-9c07-ce4364a8f9d3";
+    public final static UUID REALM_DBREPO_ID = UUID.fromString("6264bf7b-d1d3-4562-9c07-ce4364a8f9d3");
     public final static String REALM_DBREPO_NAME = "dbrepo";
     public final static Boolean REALM_DBREPO_ENABLED = true;
 
@@ -182,7 +182,7 @@ public abstract class BaseTest {
             .username(USER_BROKER_USERNAME)
             .build();
 
-    public final static String USER_1_ID = "cd5bab0d-7799-4069-85fb-c5d738572a0b";
+    public final static UUID USER_1_ID = UUID.fromString("cd5bab0d-7799-4069-85fb-c5d738572a0b");
     public final static String USER_1_EMAIL = "john.doe@example.com";
     public final static String USER_1_USERNAME = "junit1";
     public final static String USER_1_PASSWORD = "s3cr3t1nf0rm4t10n";
@@ -200,41 +200,41 @@ public abstract class BaseTest {
     public final static Boolean USER_1_THEME_DARK = false;
     public final static Instant USER_1_CREATED = Instant.ofEpochSecond(1677399441) /* 2023-02-26 08:17:21 (UTC) */;
     public final static Instant USER_1_LAST_MODIFIED = USER_1_CREATED;
-    public final static String USER_1_REALM_ID = REALM_DBREPO_ID;
+    public final static UUID USER_1_REALM_ID = REALM_DBREPO_ID;
 
     public final static List<UserAttribute> USER_1_ATTRIBUTES = List.of(UserAttribute.builder()
-                    .id("c466a105-5bbd-4afc-87ae-751d5037d9ab")
+                    .id(UUID.fromString("c466a105-5bbd-4afc-87ae-751d5037d9ab"))
                     .userId(USER_1_ID)
                     .name("theme_dark")
                     .value("false")
                     .build(),
             UserAttribute.builder()
-                    .id("0870498b-d6ac-4543-bef1-830142de96d7")
+                    .id(UUID.fromString("0870498b-d6ac-4543-bef1-830142de96d7"))
                     .userId(USER_1_ID)
                     .name("orcid")
                     .value(USER_1_ORCID_UNCOMPRESSED)
                     .build(),
             UserAttribute.builder()
-                    .id("42b06e7f-9df2-4b1c-bdfb-904401d6ad36")
+                    .id(UUID.fromString("42b06e7f-9df2-4b1c-bdfb-904401d6ad36"))
                     .userId(USER_1_ID)
                     .name("affiliation")
                     .value(USER_1_AFFILIATION)
                     .build());
 
     public final static List<UserAttributeDto> USER_1_ATTRIBUTES_DTO = List.of(UserAttributeDto.builder()
-                    .id("c466a105-5bbd-4afc-87ae-751d5037d9ab")
+                    .id(UUID.fromString("c466a105-5bbd-4afc-87ae-751d5037d9ab"))
                     .userId(USER_1_ID)
                     .name("theme_dark")
                     .value("false")
                     .build(),
             UserAttributeDto.builder()
-                    .id("0870498b-d6ac-4543-bef1-830142de96d7")
+                    .id(UUID.fromString("0870498b-d6ac-4543-bef1-830142de96d7"))
                     .userId(USER_1_ID)
                     .name("orcid")
                     .value(USER_1_ORCID_UNCOMPRESSED)
                     .build(),
             UserAttributeDto.builder()
-                    .id("42b06e7f-9df2-4b1c-bdfb-904401d6ad36")
+                    .id(UUID.fromString("42b06e7f-9df2-4b1c-bdfb-904401d6ad36"))
                     .userId(USER_1_ID)
                     .name("affiliation")
                     .value(USER_1_AFFILIATION)
@@ -302,7 +302,7 @@ public abstract class BaseTest {
             .tags(new String[]{"administrator"})
             .build();
 
-    public final static String USER_2_ID = "eeb9a51b-4cd8-4039-90bf-e24f17372f7c";
+    public final static UUID USER_2_ID = UUID.fromString("eeb9a51b-4cd8-4039-90bf-e24f17372f7c");
     public final static String USER_2_EMAIL = "jane.doe@example.com";
     public final static String USER_2_USERNAME = "junit2";
     public final static String USER_2_FIRSTNAME = "Jane";
@@ -317,41 +317,41 @@ public abstract class BaseTest {
     public final static Boolean USER_2_THEME_DARK = false;
     public final static Instant USER_2_CREATED = Instant.ofEpochSecond(1677399528) /* 2023-02-26 08:18:48 (UTC) */;
     public final static Instant USER_2_LAST_MODIFIED = USER_1_CREATED;
-    public final static String USER_2_REALM_ID = REALM_DBREPO_ID;
+    public final static UUID USER_2_REALM_ID = REALM_DBREPO_ID;
 
     public final static List<UserAttribute> USER_2_ATTRIBUTES = List.of(UserAttribute.builder()
-                    .id("23da2c08-cb8a-4e18-a7f0-70c30de2771e")
+                    .id(UUID.fromString("23da2c08-cb8a-4e18-a7f0-70c30de2771e"))
                     .userId(USER_2_ID)
                     .name("theme_dark")
                     .value("false")
                     .build(),
             UserAttribute.builder()
-                    .id("83223dfd-1c80-4132-8c74-a38994f45f4a")
+                    .id(UUID.fromString("83223dfd-1c80-4132-8c74-a38994f45f4a"))
                     .userId(USER_2_ID)
                     .name("orcid")
                     .value(USER_2_ORCID_UNCOMPRESSED)
                     .build(),
             UserAttribute.builder()
-                    .id("a29879fd-9801-4adf-bf3a-16bbff6ea207")
+                    .id(UUID.fromString("a29879fd-9801-4adf-bf3a-16bbff6ea207"))
                     .userId(USER_2_ID)
                     .name("affiliation")
                     .value(USER_2_AFFILIATION)
                     .build());
 
     public final static List<UserAttributeDto> USER_2_ATTRIBUTES_DTO = List.of(UserAttributeDto.builder()
-                    .id("23da2c08-cb8a-4e18-a7f0-70c30de2771e")
+                    .id(UUID.fromString("23da2c08-cb8a-4e18-a7f0-70c30de2771e"))
                     .userId(USER_2_ID)
                     .name("theme_dark")
                     .value("false")
                     .build(),
             UserAttributeDto.builder()
-                    .id("83223dfd-1c80-4132-8c74-a38994f45f4a")
+                    .id(UUID.fromString("83223dfd-1c80-4132-8c74-a38994f45f4a"))
                     .userId(USER_2_ID)
                     .name("orcid")
                     .value(USER_2_ORCID_UNCOMPRESSED)
                     .build(),
             UserAttributeDto.builder()
-                    .id("a29879fd-9801-4adf-bf3a-16bbff6ea207")
+                    .id(UUID.fromString("a29879fd-9801-4adf-bf3a-16bbff6ea207"))
                     .userId(USER_2_ID)
                     .name("affiliation")
                     .value(USER_2_AFFILIATION)
@@ -401,7 +401,7 @@ public abstract class BaseTest {
             .build();
 
     public final static UserDetails USER_2_DETAILS = UserDetailsDto.builder()
-            .id(USER_2_ID)
+            .id(USER_2_ID.toString())
             .username(USER_2_USERNAME)
             .email(USER_2_EMAIL)
             .password(USER_2_PASSWORD)
@@ -416,7 +416,7 @@ public abstract class BaseTest {
     public final static Principal USER_2_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_2_DETAILS,
             USER_2_PASSWORD, USER_2_DETAILS.getAuthorities());
 
-    public final static String USER_3_ID = "7b080e33-d8db-4276-9d53-47208e657006";
+    public final static UUID USER_3_ID = UUID.fromString("7b080e33-d8db-4276-9d53-47208e657006");
     public final static String USER_3_USERNAME = "junit3";
     public final static String USER_3_FIRSTNAME = "System";
     public final static String USER_3_LASTNAME = "System";
@@ -429,7 +429,45 @@ public abstract class BaseTest {
     public final static Boolean USER_3_ENABLED = true;
     public final static Boolean USER_3_THEME_DARK = false;
     public final static Instant USER_3_CREATED = Instant.ofEpochSecond(1677399559) /* 2023-02-26 08:19:19 (UTC) */;
-    public final static String USER_3_REALM_ID = REALM_DBREPO_ID;
+    public final static UUID USER_3_REALM_ID = REALM_DBREPO_ID;
+
+    public final static List<UserAttribute> USER_3_ATTRIBUTES = List.of(UserAttribute.builder()
+                    .id(UUID.fromString("58062219-7b99-4c0d-b00b-136b7d916c04"))
+                    .userId(USER_3_ID)
+                    .name("theme_dark")
+                    .value(USER_3_THEME_DARK.toString())
+                    .build(),
+            UserAttribute.builder()
+                    .id(UUID.fromString("384851ee-83c4-4cda-805e-be0c1bab71eb"))
+                    .userId(USER_3_ID)
+                    .name("orcid")
+                    .value(null)
+                    .build(),
+            UserAttribute.builder()
+                    .id(UUID.fromString("c2cb2357-5e34-453f-b080-ca1c97f56d4a"))
+                    .userId(USER_3_ID)
+                    .name("affiliation")
+                    .value(USER_3_AFFILIATION)
+                    .build());
+
+    public final static List<UserAttributeDto> USER_3_ATTRIBUTES_DTO = List.of(UserAttributeDto.builder()
+                    .id(UUID.fromString("58062219-7b99-4c0d-b00b-136b7d916c04"))
+                    .userId(USER_3_ID)
+                    .name("theme_dark")
+                    .value(USER_3_THEME_DARK.toString())
+                    .build(),
+            UserAttributeDto.builder()
+                    .id(UUID.fromString("384851ee-83c4-4cda-805e-be0c1bab71eb"))
+                    .userId(USER_3_ID)
+                    .name("orcid")
+                    .value(null)
+                    .build(),
+            UserAttributeDto.builder()
+                    .id(UUID.fromString("c2cb2357-5e34-453f-b080-ca1c97f56d4a"))
+                    .userId(USER_3_ID)
+                    .name("affiliation")
+                    .value(USER_3_AFFILIATION)
+                    .build());
 
     public final static User USER_3 = User.builder()
             .id(USER_3_ID)
@@ -437,8 +475,26 @@ public abstract class BaseTest {
             .email(USER_3_EMAIL)
             .emailVerified(true)
             .databasePassword(USER_3_DATABASE_PASSWORD)
+            .firstname(USER_3_FIRSTNAME)
+            .lastname(USER_3_LASTNAME)
+            .emailVerified(USER_3_VERIFIED)
             .enabled(USER_3_ENABLED)
             .realmId(USER_3_REALM_ID)
+            .attributes(USER_3_ATTRIBUTES)
+            .build();
+
+    public final static User USER_3_SIMPLE = User.builder()
+            .id(USER_3_ID)
+            .username(USER_3_USERNAME)
+            .email(USER_3_EMAIL)
+            .emailVerified(true)
+            .databasePassword(USER_3_DATABASE_PASSWORD)
+            .firstname(USER_3_FIRSTNAME)
+            .lastname(USER_3_LASTNAME)
+            .emailVerified(USER_3_VERIFIED)
+            .enabled(USER_3_ENABLED)
+            .realmId(USER_3_REALM_ID)
+            .attributes(List.of() /* for jpa */)
             .build();
 
     public final static UserDto USER_3_DTO = UserDto.builder()
@@ -465,7 +521,7 @@ public abstract class BaseTest {
             .tags(new String[]{})
             .build();
 
-    public final static String USER_4_ID = "791d58c5-bfab-4520-b4fc-b44d4ab9feb0";
+    public final static UUID USER_4_ID = UUID.fromString("791d58c5-bfab-4520-b4fc-b44d4ab9feb0");
     public final static String USER_4_USERNAME = "junit4";
     public final static String USER_4_FIRSTNAME = "JUnit";
     public final static String USER_4_LASTNAME = "4";
@@ -478,7 +534,7 @@ public abstract class BaseTest {
     public final static Boolean USER_4_ENABLED = true;
     public final static Boolean USER_4_THEME_DARK = false;
     public final static Instant USER_4_CREATED = Instant.ofEpochSecond(1677399592) /* 2023-02-26 08:19:52 (UTC) */;
-    public final static String USER_4_REALM_ID = REALM_DBREPO_ID;
+    public final static UUID USER_4_REALM_ID = REALM_DBREPO_ID;
 
     public final static User USER_4 = User.builder()
             .id(USER_4_ID)
@@ -509,7 +565,7 @@ public abstract class BaseTest {
     public final static Principal USER_4_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_4_DETAILS,
             USER_4_PASSWORD, USER_4_DETAILS.getAuthorities());
 
-    public final static String USER_5_ID = "28ff851d-d7bc-4422-959c-edd7a5b15630";
+    public final static UUID USER_5_ID = UUID.fromString("28ff851d-d7bc-4422-959c-edd7a5b15630");
     public final static String USER_5_USERNAME = "system";
     public final static String USER_5_FIRSTNAME = "System";
     public final static String USER_5_LASTNAME = "System";
@@ -521,7 +577,7 @@ public abstract class BaseTest {
     public final static Boolean USER_5_VERIFIED = true;
     public final static Boolean USER_5_THEME_DARK = false;
     public final static Instant USER_5_CREATED = Instant.ofEpochSecond(1677399592) /* 2023-02-26 08:19:52 (UTC) */;
-    public final static String USER_5_REALM_ID = REALM_DBREPO_ID;
+    public final static UUID USER_5_REALM_ID = REALM_DBREPO_ID;
 
     public final static User USER_5 = User.builder()
             .id(USER_5_ID)
@@ -1448,6 +1504,33 @@ public abstract class BaseTest {
     public final static Instant TABLE_7_CREATED = Instant.ofEpochSecond(1677400175) /* 2023-02-26 08:29:35 (UTC) */;
     public final static Instant TABLE_7_LAST_MODIFIED = Instant.ofEpochSecond(1677400175) /* 2023-02-26 08:29:35 (UTC) */;
 
+    public final static List<TableColumn> TABLE_7_COLUMNS = List.of(TableColumn.builder()
+                    .id(1L)
+                    .ordinalPosition(0)
+                    .cdbid(DATABASE_1_ID)
+                    .tid(TABLE_1_ID)
+                    .name("Timestamp")
+                    .internalName("timestamp")
+                    .columnType(TableColumnType.TIMESTAMP)
+                    .dfid(IMAGE_DATE_3_ID)
+                    .isNullAllowed(false)
+                    .autoGenerated(false)
+                    .isPrimaryKey(true)
+                    .build(),
+            TableColumn.builder()
+                    .id(2L)
+                    .ordinalPosition(1)
+                    .cdbid(DATABASE_1_ID)
+                    .tid(TABLE_1_ID)
+                    .name("Value")
+                    .internalName("value")
+                    .columnType(TableColumnType.DECIMAL)
+                    .dfid(null)
+                    .isNullAllowed(true)
+                    .autoGenerated(false)
+                    .isPrimaryKey(false)
+                    .build());
+
     public final static Table TABLE_7 = Table.builder()
             .id(TABLE_7_ID)
             .created(Instant.now())
@@ -1457,37 +1540,27 @@ public abstract class BaseTest {
             .tdbid(DATABASE_1_ID)
             .queueName(TABLE_7_QUEUE_NAME)
             .routingKey(TABLE_7_ROUTING_KEY)
-            .columns(List.of(TableColumn.builder()
-                            .id(1L)
-                            .ordinalPosition(0)
-                            .cdbid(DATABASE_1_ID)
-                            .tid(TABLE_1_ID)
-                            .name("Timestamp")
-                            .internalName("timestamp")
-                            .columnType(TableColumnType.TIMESTAMP)
-                            .dfid(IMAGE_DATE_3_ID)
-                            .isNullAllowed(false)
-                            .autoGenerated(false)
-                            .isPrimaryKey(true)
-                            .build(),
-                    TableColumn.builder()
-                            .id(2L)
-                            .ordinalPosition(1)
-                            .cdbid(DATABASE_1_ID)
-                            .tid(TABLE_1_ID)
-                            .name("Value")
-                            .internalName("value")
-                            .columnType(TableColumnType.DECIMAL)
-                            .dfid(null)
-                            .isNullAllowed(true)
-                            .autoGenerated(false)
-                            .isPrimaryKey(false)
-                            .build()))
+            .columns(TABLE_7_COLUMNS)
             .creator(USER_1)
             .created(TABLE_7_CREATED)
             .lastModified(TABLE_7_LAST_MODIFIED)
             .build();
 
+    public final static Table TABLE_7_SIMPLE = Table.builder()
+            .id(TABLE_7_ID)
+            .created(Instant.now())
+            .internalName(TABLE_7_INTERNAL_NAME)
+            .description(TABLE_7_DESCRIPTION)
+            .name(TABLE_7_NAME)
+            .tdbid(DATABASE_1_ID)
+            .queueName(TABLE_7_QUEUE_NAME)
+            .routingKey(TABLE_7_ROUTING_KEY)
+            .columns(List.of() /* for jpa */)
+            .creator(null /* for jpa */)
+            .created(TABLE_7_CREATED)
+            .lastModified(TABLE_7_LAST_MODIFIED)
+            .build();
+
     public final static Long TABLE_8_ID = 8L;
     public final static String TABLE_8_NAME = "mfcc";
     public final static String TABLE_8_INTERNAL_NAME = "mfcc";
@@ -2066,7 +2139,7 @@ public abstract class BaseTest {
             .resultHash(QUERY_1_RESULT_HASH)
             .created(QUERY_1_CREATED)
             .execution(QUERY_1_EXECUTION)
-            .createdBy(USER_1_ID)
+            .createdBy(USER_1_ID.toString())
             .creator(USER_1_DTO)
             .build();
 
@@ -2079,7 +2152,7 @@ public abstract class BaseTest {
             .resultHash(QUERY_1_RESULT_HASH)
             .created(QUERY_1_CREATED)
             .execution(QUERY_1_EXECUTION)
-            .createdBy(USER_1_ID)
+            .createdBy(USER_1_ID.toString())
             .creator(USER_1_DTO)
             .build();
 
@@ -2385,8 +2458,9 @@ public abstract class BaseTest {
             .lastModified(TABLE_1_LAST_MODIFIED)
             .build();
 
-    public final static Table TABLE_1_NOCOLS = Table.builder()
+    public final static Table TABLE_1_SIMPLE = Table.builder()
             .id(TABLE_1_ID)
+            .database(null /* for jpa */)
             .created(Instant.now())
             .internalName(TABLE_1_INTERNALNAME)
             .description(TABLE_1_DESCRIPTION)
@@ -2395,8 +2469,9 @@ public abstract class BaseTest {
             .tdbid(DATABASE_1_ID)
             .queueName(TABLE_1_QUEUE_NAME)
             .routingKey(TABLE_1_ROUTING_KEY)
-            .columns(List.of())
-            .creator(USER_1)
+            .columns(List.of() /* for jpa */)
+            .constraints(null /* for jpa */) /* TABLE_1_CONSTRAINTS */
+            .creator(null /* for jpa */)
             .created(TABLE_1_CREATED)
             .lastModified(TABLE_1_LAST_MODIFIED)
             .build();
@@ -2461,8 +2536,9 @@ public abstract class BaseTest {
             .lastModified(TABLE_2_LAST_MODIFIED)
             .build();
 
-    public final static Table TABLE_2_NOCOLS = Table.builder()
+    public final static Table TABLE_2_SIMPLE = Table.builder()
             .id(TABLE_2_ID)
+            .database(null /* for jpa */)
             .created(Instant.now())
             .internalName(TABLE_2_INTERNALNAME)
             .description(TABLE_2_DESCRIPTION)
@@ -2471,8 +2547,8 @@ public abstract class BaseTest {
             .tdbid(DATABASE_1_ID)
             .queueName(TABLE_2_QUEUE_NAME)
             .routingKey(TABLE_2_ROUTING_KEY)
-            .columns(List.of())
-            .creator(USER_1)
+            .columns(List.of() /* for jpa */)
+            .creator(null /* for jpa */)
             .created(TABLE_2_CREATED)
             .lastModified(TABLE_2_LAST_MODIFIED)
             .build();
@@ -2970,8 +3046,9 @@ public abstract class BaseTest {
             .lastModified(TABLE_3_LAST_MODIFIED)
             .build();
 
-    public final static Table TABLE_3_NOCOLS = Table.builder()
+    public final static Table TABLE_3_SIMPLE = Table.builder()
             .id(TABLE_3_ID)
+            .database(null /* for jpa */)
             .created(Instant.now())
             .internalName(TABLE_3_INTERNALNAME)
             .description(TABLE_3_DESCRIPTION)
@@ -2980,8 +3057,9 @@ public abstract class BaseTest {
             .tdbid(DATABASE_1_ID)
             .queueName(TABLE_3_QUEUE_NAME)
             .routingKey(TABLE_3_ROUTING_KEY)
-            .columns(List.of())
-            .creator(USER_1)
+            .columns(List.of() /* for jpa */)
+            .constraints(TABLE_3_CONSTRAINTS)
+            .creator(null /* for jpa */)
             .created(TABLE_3_CREATED)
             .lastModified(TABLE_3_LAST_MODIFIED)
             .build();
@@ -3300,22 +3378,6 @@ public abstract class BaseTest {
             .creator(USER_1)
             .build();
 
-    public final static Table TABLE_4_NOCOLS = Table.builder()
-            .id(TABLE_4_ID)
-            .created(Instant.now())
-            .internalName(TABLE_4_INTERNALNAME)
-            .description(TABLE_4_DESCRIPTION)
-            .name(TABLE_4_NAME)
-            .lastModified(TABLE_4_LAST_MODIFIED)
-            .tdbid(DATABASE_1_ID)
-            .queueName(TABLE_4_QUEUE_NAME)
-            .routingKey(TABLE_4_ROUTING_KEY)
-            .columns(List.of())
-            .creator(USER_1)
-            .created(TABLE_4_CREATED)
-            .lastModified(TABLE_4_LAST_MODIFIED)
-            .build();
-
     public final static List<ForeignKeyCreateDto> TABLE_4_FOREIGN_KEYS_INVALID_CREATE = List.of(ForeignKeyCreateDto.builder()
             .columns(List.of("somecolumn"))
             .referencedTable("sometable")
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
index 2a7a024b703bd373e85b4eec648c198b9500b9f3..de175df7097f2db03ee8c965bd5e6ec267ad0aea 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/endpoint/StoreEndpointUnitTest.java
@@ -10,14 +10,12 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.listener.MessageQueueListener;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
 import at.tuwien.querystore.Query;
 import at.tuwien.repository.jpa.IdentifierRepository;
 import at.tuwien.service.AccessService;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.QueryService;
-import at.tuwien.service.UserService;
 import at.tuwien.service.impl.StoreServiceImpl;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
@@ -34,6 +32,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.doReturn;
@@ -70,9 +69,6 @@ public class StoreEndpointUnitTest extends BaseUnitTest {
     @MockBean
     private StoreServiceImpl storeService;
 
-    @MockBean
-    private UserService userService;
-
     @MockBean
     private IdentifierRepository identifierRepository;
 
@@ -309,13 +305,6 @@ public class StoreEndpointUnitTest extends BaseUnitTest {
         /* mock */
         doReturn(List.of(QUERY_1)).when(storeService)
                 .findAll(containerId, databaseId, true, principal);
-        if (user != null) {
-            when(userService.findAll())
-                    .thenReturn(List.of(user));
-        } else {
-            when(userService.findAll())
-                    .thenReturn(List.of());
-        }
         when(databaseService.find(containerId, databaseId))
                 .thenReturn(database);
 
@@ -330,7 +319,7 @@ public class StoreEndpointUnitTest extends BaseUnitTest {
     }
 
     protected QueryDto find_generic(Long containerId, Long databaseId, Database database, Long queryId, Query query,
-                                    String userId, User user, Principal principal) throws QueryStoreException,
+                                    UUID userId, User user, Principal principal) throws QueryStoreException,
             QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, UserNotFoundException,
             NotAllowedException, DatabaseConnectionException {
 
@@ -342,13 +331,6 @@ public class StoreEndpointUnitTest extends BaseUnitTest {
             when(storeService.findOne(containerId, databaseId, queryId, principal))
                     .thenThrow(QueryNotFoundException.class);
         }
-        if (user != null) {
-            when(userService.find(userId))
-                    .thenReturn(user);
-        } else {
-            when(userService.find(userId))
-                    .thenThrow(UserNotFoundException.class);
-        }
         if (database != null) {
             when(databaseService.find(containerId, databaseId))
                     .thenReturn(database);
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
index 84b278ad273abe5180df23c724829b0da2da14c3..09cd52fefd2a52652503e33273843d7e22822dd1 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/listener/RabbitMqListenerIntegrationTest.java
@@ -47,6 +47,12 @@ public class RabbitMqListenerIntegrationTest extends BaseUnitTest {
     @Autowired
     private ContainerRepository containerRepository;
 
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
     @Autowired
     private DatabaseRepository databaseRepository;
 
@@ -85,14 +91,14 @@ public class RabbitMqListenerIntegrationTest extends BaseUnitTest {
     public void beforeEach() {
         /* metadata database */
         h2Utils.runScript("schema.sql");
-        imageRepository.save(IMAGE_1);
-        containerRepository.save(CONTAINER_1);
-        DATABASE_1.setTables(List.of());
-        databaseRepository.save(DATABASE_1);
-        DATABASE_1.setTables(List.of(TABLE_1, TABLE_2, TABLE_3));
-        tableRepository.save(TABLE_1_NOCOLS);
-        tableRepository.save(TABLE_2_NOCOLS);
-        tableRepository.save(TABLE_3_NOCOLS);
+        imageRepository.save(IMAGE_1_SIMPLE);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+        tableRepository.save(TABLE_1_SIMPLE);
+        tableRepository.save(TABLE_2_SIMPLE);
+        tableRepository.save(TABLE_3_SIMPLE);
     }
 
     @Test
diff --git a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
index ed559e44234a96407aaab186b5e41735fff52fa8..9eaa311b103932e1163d278189873063f0856084 100644
--- a/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
+++ b/dbrepo-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
@@ -8,10 +8,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.listener.impl.RabbitMqListenerImpl;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.jpa.*;
 import com.rabbitmq.client.Channel;
 import at.tuwien.config.DockerConfig;
 import lombok.extern.log4j.Log4j2;
@@ -65,6 +62,12 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
     @Autowired
     private ContainerRepository containerRepository;
 
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
     @Autowired
     private DatabaseRepository databaseRepository;
 
@@ -97,15 +100,16 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
         /* metadata db */
         h2Utils.runScript("schema.sql");
         /* metadata db */
-        imageRepository.save(IMAGE_1);
-        containerRepository.save(CONTAINER_1);
-        tableRepository.save(TABLE_1_NOCOLS);
-        tableRepository.save(TABLE_2_NOCOLS);
-        tableRepository.save(TABLE_3_NOCOLS);
-        tableRepository.save(TABLE_7_NOCOLS);
-        DATABASE_1.setTables(List.of());
-        DATABASE_1.setViews(List.of());
-        databaseRepository.save(DATABASE_1);
+        imageRepository.save(IMAGE_1_SIMPLE);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        userRepository.save(USER_2_SIMPLE);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+        tableRepository.save(TABLE_1_SIMPLE);
+        tableRepository.save(TABLE_2_SIMPLE);
+        tableRepository.save(TABLE_3_SIMPLE);
+        tableRepository.save(TABLE_7_SIMPLE);
     }
 
     @Test
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index 4352af3a5974a8cc2d7b28641c64dbfb227371a4..cf803c0f1355dca095ea010e376b079c1b1b891a 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -1,10 +1,13 @@
 package at.tuwien.mapper;
 
 import at.tuwien.api.user.GrantedAuthorityDto;
+import at.tuwien.api.user.UserBriefDto;
 import at.tuwien.api.user.UserDetailsDto;
 import at.tuwien.api.user.UserDto;
 import at.tuwien.entities.user.User;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
@@ -13,7 +16,11 @@ public interface UserMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserMapper.class);
 
-    UserDetailsDto userDtoToUserDetailsDto(UserDto data);
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
+    UserDetailsDto userBriefDtoToUserDetailsDto(UserBriefDto data);
 
     UserDto userToUserDto(User data);
 
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/ViewMapper.java b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/ViewMapper.java
index 04234f583fe89abaa5556f60495fadf3287f60f9..91fb6bc00c8e31c9d535d80ecb7df576f9d1045d 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/ViewMapper.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/mapper/ViewMapper.java
@@ -3,30 +3,19 @@ package at.tuwien.mapper;
 import at.tuwien.api.database.ViewBriefDto;
 import at.tuwien.api.database.ViewCreateDto;
 import at.tuwien.api.database.ViewDto;
-import at.tuwien.api.database.query.QueryResultDto;
 import at.tuwien.entities.database.View;
 import at.tuwien.exception.QueryMalformedException;
-import at.tuwien.exception.QueryStoreException;
-import at.tuwien.exception.TableMalformedException;
-import at.tuwien.querystore.Query;
-import org.apache.commons.codec.digest.DigestUtils;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.Mappings;
 import org.mapstruct.Named;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
 
-import javax.persistence.Column;
 import java.sql.*;
 import java.text.Normalizer;
-import java.time.Instant;
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
-@Mapper(componentModel = "spring", uses = {ContainerMapper.class})
+@Mapper(componentModel = "spring", uses = {ContainerMapper.class, UserMapper.class})
 public interface ViewMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ViewMapper.class);
@@ -52,7 +41,7 @@ public interface ViewMapper {
     ViewDto viewToViewDto(View data);
 
     @Mappings({
-            @Mapping(target = "createdBy", source = "creator.id")
+            @Mapping(target = "createdBy", expression = "java(data.getCreator().getId().toString())")
     })
     ViewBriefDto viewToViewBriefDto(View data);
 
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1a5d756b7af9d163766f3a9fae3c31cf157a77c
--- /dev/null
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -0,0 +1,14 @@
+package at.tuwien.repository.jpa;
+
+import at.tuwien.entities.user.Realm;
+import at.tuwien.entities.user.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+import java.util.UUID;
+
+@Repository
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
+
+}
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index e77de8f6a8160d1f2e04a0ce7575b1ee3d833a0a..9eb0b5190252b7e1890deb7717fe9b2afc133d41 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.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 UserRepository extends JpaRepository<User, String> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/UserService.java
index 830efcaf6b54b8420149aa4fa5aeb0db758de4e0..a96834b6483e46adfd0a3ecae2830ea0b35abe6b 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/UserService.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/UserService.java
@@ -6,6 +6,7 @@ import at.tuwien.exception.UserNotFoundException;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 public interface UserService {
 
@@ -24,23 +25,4 @@ public interface UserService {
      * @throws UserNotFoundException The user was not found in the metadata database.
      */
     User findByUsername(String username) throws UserNotFoundException;
-
-    /**
-     * Finds a user by user principal or uses the anonymous user
-     *
-     * @param principal The user principal.
-     * @param container The container which is used to detetermine the image's default anonymous user
-     * @return A user, if successful.
-     * @throws UserNotFoundException No user was found.
-     */
-    User findByPrincipalOrAnonymous(Principal principal, Container container) throws UserNotFoundException;
-
-    /**
-     * Finds a user by id.
-     *
-     * @param id The id.
-     * @return The user.
-     * @throws UserNotFoundException The user was not found in the metadata database.
-     */
-    User find(String id) throws UserNotFoundException;
 }
diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 89a95b367828f166b0d9c0bde5fa224314a091db..d3c8b1659624e6b4e2df7a5c4bbbfa5f6c3f59e9 100644
--- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -1,8 +1,5 @@
 package at.tuwien.service.impl;
 
-import at.tuwien.entities.container.Container;
-import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
-import at.tuwien.entities.container.image.ContainerImageEnvironmentItemType;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.UserNotFoundException;
 import at.tuwien.repository.jpa.UserRepository;
@@ -10,12 +7,9 @@ import at.tuwien.service.UserService;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.security.Principal;
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 @Log4j2
 @Service
@@ -43,43 +37,4 @@ public class UserServiceImpl implements UserService {
         return optional.get();
     }
 
-    @Override
-    @Transactional(readOnly = true)
-    public User findByPrincipalOrAnonymous(Principal principal, Container container) throws UserNotFoundException {
-        log.trace("find user or anonymous, principal={}, container={}", principal, container);
-        if (principal == null) {
-            final String username = container.getImage()
-                    .getEnvironment()
-                    .stream()
-                    .filter(e -> e.getType().equals(ContainerImageEnvironmentItemType.PRIVILEGED_USERNAME))
-                    .map(ContainerImageEnvironmentItem::getValue)
-                    .collect(Collectors.toList())
-                    .get(0);
-            final String password = container.getImage()
-                    .getEnvironment()
-                    .stream()
-                    .filter(e -> e.getType().equals(ContainerImageEnvironmentItemType.PRIVILEGED_PASSWORD))
-                    .map(ContainerImageEnvironmentItem::getValue)
-                    .collect(Collectors.toList())
-                    .get(0);
-            final User user = User.builder()
-                    .username(username)
-                    .databasePassword(password)
-                    .build();
-            log.trace("mapped anonymous user {}", user);
-            return user;
-        }
-        return findByUsername(principal.getName());
-    }
-
-    @Override
-    public User find(String id) throws UserNotFoundException {
-        final Optional<User> optional = userRepository.findById(id);
-        if (optional.isEmpty()) {
-            log.error("Failed to retrieve user with id {}", id);
-            throw new UserNotFoundException("Failed to retrieve user");
-        }
-        return optional.get();
-    }
-
 }
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
index 9b4db6f4f0b5cad39d7d9eb2b38c8cdd2f1d19bf..04daf45d0bfd517513bcf1e066307bdcf7a74fb7 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java
@@ -7,10 +7,10 @@ import at.tuwien.endpoints.TableEndpoint;
 import at.tuwien.exception.DatabaseNotFoundException;
 import at.tuwien.repository.elastic.TableColumnIdxRepository;
 import at.tuwien.repository.elastic.TableIdxRepository;
+import at.tuwien.repository.jpa.*;
 import at.tuwien.service.DatabaseService;
 import com.rabbitmq.client.Channel;
-import org.apache.http.auth.BasicUserPrincipal;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,9 +18,6 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-import javax.ws.rs.NotAllowedException;
-import java.security.Principal;
-
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
@@ -28,54 +25,51 @@ import static org.mockito.Mockito.*;
 @SpringBootTest
 public class TableEndpointUnitTest extends BaseUnitTest {
 
-    /**
-     * RabbitMQ not required in this test
-     */
     @MockBean
     private ReadyConfig readyConfig;
 
-    /**
-     * RabbitMQ not required in this test
-     */
     @MockBean
     private Channel channel;
 
-    /**
-     * ElasticSearch not required in this test
-     */
     @MockBean
     private IndexConfig indexInitializer;
 
-    /**
-     * ElasticSearch not required in this test
-     */
     @MockBean
     private TableIdxRepository tableidxRepository;
 
-    /**
-     * ElasticSearch not required in this test
-     */
     @MockBean
     private TableColumnIdxRepository tableColumnidxRepository;
 
-    @MockBean
-    private DatabaseService databaseService;
+    @Autowired
+    private ContainerRepository containerRepository;
+
+    @Autowired
+    private ImageRepository imageRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private RealmRepository realmRepository;
 
     @Autowired
     private TableEndpoint tableEndpoint;
 
-    @Test
-    @Disabled
-    public void list_databaseNotFound_fails() throws DatabaseNotFoundException {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
+    @BeforeEach
+    public void beforeEach() {
+        /* metadata database */
+        imageRepository.save(IMAGE_1_SIMPLE);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+    }
 
-        /* mock */
-        when(databaseService.find(CONTAINER_1_ID, DATABASE_1_ID))
-                .thenThrow(DatabaseNotFoundException.class);
+    @Test
+    public void list_databaseNotFound_fails() {
 
         /* test */
-        assertThrows(NotAllowedException.class, () -> {
-            tableEndpoint.list(CONTAINER_1_ID, DATABASE_1_ID, principal);
+        assertThrows(DatabaseNotFoundException.class, () -> {
+            tableEndpoint.list(CONTAINER_1_ID, DATABASE_1_ID, USER_1_PRINCIPAL);
         });
     }
 }
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
index c5face43b7d3de010b2d56583f27ae623168e86e..d808459c0808115294b21d7d5c3eb3503254833d 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
@@ -72,13 +72,7 @@ public class MessageQueueServiceIntegrationTest extends BaseUnitTest {
     public static void afterAll() {
         /* stop containers and remove them */
         DockerConfig.removeAllContainers();
-        DockerConfig.createAllNetworks();
-    }
-
-    @BeforeEach
-    public void beforeEach() {
-        TABLE_1.setDatabase(DATABASE_1);
-        TABLE_2.setDatabase(DATABASE_1);
+        DockerConfig.removeAllNetworks();
     }
 
     @Test
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
index 5e7bebc7f62f31696691f01a4fec28d1c40a36ca..0d529abc1c2e72ae8b4a3bcdc33379a0a981b8a3 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationReadTest.java
@@ -9,10 +9,7 @@ import at.tuwien.entities.database.table.Table;
 import at.tuwien.exception.*;
 import at.tuwien.repository.elastic.TableColumnIdxRepository;
 import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.jpa.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.*;
@@ -50,9 +47,15 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
     @MockBean
     private TableColumnIdxRepository tableColumnidxRepository;
 
+    @Autowired
+    private RealmRepository realmRepository;
+
     @Autowired
     private ImageRepository imageRepository;
 
+    @Autowired
+    private UserRepository userRepository;
+
     @Autowired
     private ContainerRepository containerRepository;
 
@@ -88,11 +91,14 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
     public void beforeEach() {
         h2Utils.runScript("schema.sql");
         imageRepository.save(IMAGE_1);
-        containerRepository.save(CONTAINER_1);
-        containerRepository.save(CONTAINER_2);
-        databaseRepository.save(DATABASE_1) /* will have 2 tables */;
-        tableRepository.save(TABLE_1);
-        tableRepository.save(TABLE_2);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        userRepository.save(USER_2_SIMPLE);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        containerRepository.save(CONTAINER_2_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+        tableRepository.save(TABLE_1_SIMPLE);
+        tableRepository.save(TABLE_2_SIMPLE);
     }
 
     @Test
@@ -128,7 +134,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
 
         /* test */
         assertThrows(TableNotFoundException.class, () -> {
-            tableService.findById(CONTAINER_1_ID, DATABASE_1_ID, TABLE_3_ID);
+            tableService.findById(CONTAINER_1_ID, DATABASE_1_ID, 99999L);
         });
     }
 
@@ -137,7 +143,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
 
         /* test */
         assertThrows(DatabaseNotFoundException.class, () -> {
-            tableService.findById(CONTAINER_2_ID, DATABASE_3_ID, TABLE_3_ID);
+            tableService.findById(CONTAINER_2_ID, 99999L, TABLE_3_ID);
         });
     }
 
@@ -146,7 +152,7 @@ public class TableServiceIntegrationReadTest extends BaseUnitTest {
 
         /* test */
         assertThrows(ContainerNotFoundException.class, () -> {
-            tableService.findById(CONTAINER_3_ID, DATABASE_3_ID, TABLE_3_ID);
+            tableService.findById(99999L, DATABASE_3_ID, TABLE_3_ID);
         });
     }
 
diff --git a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
index 670b3301b3b20711a92ccf5af892d757db4bce98..f6dabd2250294716a70520a37b2ff77f02485082 100644
--- a/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
+++ b/dbrepo-table-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationWriteTest.java
@@ -10,10 +10,7 @@ import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.*;
 import at.tuwien.repository.elastic.TableColumnIdxRepository;
 import at.tuwien.repository.elastic.TableIdxRepository;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.ImageRepository;
-import at.tuwien.repository.jpa.TableRepository;
+import at.tuwien.repository.jpa.*;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.apache.http.auth.BasicUserPrincipal;
@@ -72,6 +69,12 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
     @Autowired
     private TableService tableService;
 
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private RealmRepository realmRepository;
+
     @Autowired
     private H2Utils h2Utils;
 
@@ -88,11 +91,14 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
         /* metadata database */
         h2Utils.runScript("schema.sql");
         imageRepository.save(IMAGE_1);
-        containerRepository.save(CONTAINER_1);
-        containerRepository.save(CONTAINER_2);
-        databaseRepository.save(DATABASE_1) /* will have 2 tables */;
-        tableRepository.save(TABLE_1);
-        tableRepository.save(TABLE_2);
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1_SIMPLE);
+        userRepository.save(USER_2_SIMPLE);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        containerRepository.save(CONTAINER_2_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+        tableRepository.save(TABLE_1_SIMPLE);
+        tableRepository.save(TABLE_2_SIMPLE);
     }
 
     @AfterEach
@@ -105,7 +111,6 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
     public void create_succeeds() throws UserNotFoundException, TableMalformedException, QueryMalformedException,
             DatabaseNotFoundException, ImageNotSupportedException, TableNameExistsException,
             ContainerNotFoundException {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* mock */
         when(tableidxRepository.save(any(TableDto.class)))
@@ -114,7 +119,7 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
                 .thenReturn(List.of());
 
         /* test */
-        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_3_CREATE_DTO, principal);
+        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_3_CREATE_DTO, USER_1_PRINCIPAL);
     }
 
     @Test
@@ -142,7 +147,6 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
     public void create_withConstraints_succeeds() throws UserNotFoundException, TableMalformedException, QueryMalformedException,
             DatabaseNotFoundException, ImageNotSupportedException, TableNameExistsException,
             ContainerNotFoundException {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* mock */
         when(tableidxRepository.save(any(TableDto.class)))
@@ -151,23 +155,16 @@ public class TableServiceIntegrationWriteTest extends BaseUnitTest {
                 .thenReturn(List.of());
 
         /* test */
-        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_4_CREATE_DTO, principal); // table to reference
-        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_5_CREATE_DTO, principal);
+        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_4_CREATE_DTO, USER_1_PRINCIPAL); // table to reference
+        tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_5_CREATE_DTO, USER_1_PRINCIPAL);
     }
 
     @Test
     public void create_withForeignKeyButWithoutReferencingTable_fails() {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-
-        /* mock */
-        when(tableidxRepository.save(any(TableDto.class)))
-                .thenReturn(null);
-        when(tableColumnidxRepository.saveAll(anyList()))
-                .thenReturn(List.of());
 
         /* test */
         assertThrows(TableMalformedException.class, () -> {
-            tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_5_CREATE_DTO, principal);
+            tableService.createTable(CONTAINER_1_ID, DATABASE_1_ID, TABLE_5_CREATE_DTO, USER_1_PRINCIPAL);
         });
     }
 
diff --git a/dbrepo-table-service/rest-service/src/test/resources/application.properties b/dbrepo-table-service/rest-service/src/test/resources/application.properties
index eb36bd3f1dbfd4c1c7542fe3ff08c2959f564f3b..41b07348e3e6e770e028deace6feaf5f801b0a25 100644
--- a/dbrepo-table-service/rest-service/src/test/resources/application.properties
+++ b/dbrepo-table-service/rest-service/src/test/resources/application.properties
@@ -17,6 +17,9 @@ spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
 spring.jpa.hibernate.ddl-auto=create-drop
 spring.jpa.show-sql=false
 
+# log
+logging.level.org.hibernate.SQL=trace
+
 # broker service
 spring.rabbitmq.host=dbrepo-broker-service
 spring.rabbitmq.username=guest
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index e4fe5c286258089991df210c7099437c2670765b..b57185b5c5499b4a7d61a520e0d2f3875183ddf6 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -8,15 +8,23 @@ import at.tuwien.api.user.UserDto;
 import at.tuwien.entities.user.User;
 import at.tuwien.entities.user.UserAttribute;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
+import java.util.UUID;
+
 
 @Mapper(componentModel = "spring")
 public interface UserMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserMapper.class);
 
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
     UserDetailsDto userDtoToUserDetailsDto(UserDto data);
 
     UserDto userToUserDto(User data);
@@ -31,7 +39,7 @@ public interface UserMapper {
         return authority;
     }
 
-    default UserAttribute tripleToUserAttribute(String userId, String name, String value) {
+    default UserAttribute tripleToUserAttribute(UUID userId, String name, String value) {
         return UserAttribute.builder()
                 .userId(userId)
                 .name(name)
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b5855dec88d3e3ef8d032369a7d6af6956a702e
--- /dev/null
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -0,0 +1,12 @@
+package at.tuwien.repository.jpa;
+
+import at.tuwien.entities.user.Realm;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.UUID;
+
+@Repository
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
+
+}
diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index 3772a12f59a6e9a9225612d34a0bf7b4a50fcd4e..9eb0b5190252b7e1890deb7717fe9b2afc133d41 100644
--- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.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 UserRepository extends JpaRepository<User, Long> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-user-service/pom.xml b/dbrepo-user-service/pom.xml
index 8b3b45fbf1906a8e8d0261b470e5449dbed44645..58cfe80e7ce92578f30b4aee05a0b7ab7cc56a76 100644
--- a/dbrepo-user-service/pom.xml
+++ b/dbrepo-user-service/pom.xml
@@ -9,9 +9,9 @@
     </parent>
 
     <groupId>at.tuwien</groupId>
-    <artifactId>fda-user-service</artifactId>
-    <version>1.1.0-alpha</version>
-    <name>fda-user-service</name>
+    <artifactId>dbrepo-user-service</artifactId>
+    <version>1.2.0</version>
+    <name>dbrepo-user-service</name>
     <description>
         The query service provides an interface to insert data into the tables created by the table service. It
         also allows for view-only (possibly paginated and versioned) query execution to the raw data and consumes
@@ -132,13 +132,13 @@
         <!-- Entity, API, QueryStore -->
         <dependency>
             <groupId>at.tuwien</groupId>
-            <artifactId>fda-metadata-db-api</artifactId>
+            <artifactId>dbrepo-metadata-db-api</artifactId>
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>at.tuwien</groupId>
-            <artifactId>fda-metadata-db-entites</artifactId>
+            <artifactId>dbrepo-metadata-db-entites</artifactId>
             <version>${project.version}</version>
             <scope>compile</scope>
         </dependency>
diff --git a/dbrepo-user-service/report/pom.xml b/dbrepo-user-service/report/pom.xml
index b93720ffeb6fb8f68ae0c891a7a83afd5dfde333..fc1e116c6a94ef847292fe2e72329c5fc0e3c8bb 100644
--- a/dbrepo-user-service/report/pom.xml
+++ b/dbrepo-user-service/report/pom.xml
@@ -4,14 +4,14 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>fda-user-service</artifactId>
+        <artifactId>dbrepo-user-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.1.0-alpha</version>
+        <version>1.2.0</version>
     </parent>
 
     <artifactId>report</artifactId>
-    <version>1.1.0-alpha</version>
-    <name>fda-user-service-report</name>
+    <version>1.2.0</version>
+    <name>dbrepo-user-service-report</name>
     <description>
         This module is only intended for the pipeline coverage report. See the detailed report in the
         respective modules
diff --git a/dbrepo-user-service/rest-service/pom.xml b/dbrepo-user-service/rest-service/pom.xml
index 6a53b116b31e1bb41ae9bda847e770e83bf836fa..c805699d3fddcc5295693ea8182bd42aa47977f4 100644
--- a/dbrepo-user-service/rest-service/pom.xml
+++ b/dbrepo-user-service/rest-service/pom.xml
@@ -4,14 +4,14 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>fda-user-service</artifactId>
+        <artifactId>dbrepo-user-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.1.0-alpha</version>
+        <version>1.2.0</version>
     </parent>
 
     <artifactId>rest-service</artifactId>
-    <version>1.1.0-alpha</version>
-    <name>fda-user-service-rest</name>
+    <version>1.2.0</version>
+    <name>dbrepo-user-service-rest</name>
 
     <dependencies>
         <dependency>
diff --git a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
index 5316b9e062ffae5a99c06d24bedc5c98f66599c3..9ee7a22d2d1f6edb6b9674f988fe91e98629de13 100644
--- a/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
+++ b/dbrepo-user-service/rest-service/src/main/java/at/tuwien/endpoint/UserEndpoint.java
@@ -3,7 +3,7 @@ package at.tuwien.endpoint;
 import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.*;
 import at.tuwien.config.AuthenticationConfig;
-import at.tuwien.entities.auth.Realm;
+import at.tuwien.entities.user.Realm;
 import at.tuwien.entities.user.Role;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
@@ -15,7 +15,6 @@ import io.micrometer.core.annotation.Timed;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import lombok.extern.log4j.Log4j2;
-import org.elasticsearch.client.security.ChangePasswordRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -27,6 +26,7 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
 @Log4j2
@@ -90,7 +90,7 @@ public class UserEndpoint {
                                         @NotNull Principal principal)
             throws UserNotFoundException {
         log.debug("endpoint find a user, id={}, principal={}", id, principal);
-        final UserDto dto = userMapper.userToUserDto(userService.find(id));
+        final UserDto dto = userMapper.userToUserDto(userService.find(UUID.fromString(id)));
         log.trace("find user resulted in dto {}", dto);
         return ResponseEntity.ok()
                 .body(dto);
@@ -106,7 +106,7 @@ public class UserEndpoint {
                                           @NotNull Principal principal)
             throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException {
         log.debug("endpoint modify a user, id={}, data={}, principal={}", id, data, principal);
-        final UserDto dto = userMapper.userToUserDto(userService.modify(id, data, principal));
+        final UserDto dto = userMapper.userToUserDto(userService.modify(UUID.fromString(id), data, principal));
         log.trace("modify user resulted in dto {}", dto);
         return ResponseEntity.status(HttpStatus.ACCEPTED)
                 .body(dto);
@@ -122,7 +122,7 @@ public class UserEndpoint {
                                          @NotNull Principal principal)
             throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException {
         log.debug("endpoint modify a user theme, id={}, data={}, principal={}", id, data, principal);
-        final User user = userService.toggleTheme(id, data, principal);
+        final User user = userService.toggleTheme(UUID.fromString(id), data, principal);
         final UserDto dto = userMapper.userToUserDto(user);
         log.trace("modify user theme resulted in dto {}", dto);
         return ResponseEntity.accepted()
@@ -139,7 +139,7 @@ public class UserEndpoint {
                                             @NotNull Principal principal)
             throws UserNotFoundException, ForeignUserException {
         log.debug("endpoint modify a user password, id={}, data={}, principal={}", id, data, principal);
-        final User user = userService.updatePassword(id, data, principal);
+        final User user = userService.updatePassword(UUID.fromString(id), data, principal);
         final UserDto dto = userMapper.userToUserDto(user);
         log.trace("updated user password resulted in dto {}", dto);
         return ResponseEntity.accepted()
diff --git a/dbrepo-user-service/services/pom.xml b/dbrepo-user-service/services/pom.xml
index a42439c741b47488ded1aaa259a3c362cecc87eb..ff14aaa5473b2aba218690ddf511fc05d915fc52 100644
--- a/dbrepo-user-service/services/pom.xml
+++ b/dbrepo-user-service/services/pom.xml
@@ -4,13 +4,13 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>fda-user-service</artifactId>
+        <artifactId>dbrepo-user-service</artifactId>
         <groupId>at.tuwien</groupId>
-        <version>1.1.0-alpha</version>
+        <version>1.2.0</version>
     </parent>
 
     <artifactId>services</artifactId>
-    <version>1.1.0-alpha</version>
-    <name>fda-user-service-services</name>
+    <version>1.2.0</version>
+    <name>dbrepo-user-service-services</name>
 
 </project>
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/AuthenticationMapper.java b/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/AuthenticationMapper.java
index 8e97787ee770caeb989717581e7ba01939f8c827..9d00f7e159748aa20dcb4cbf4df067c696f18b1a 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/AuthenticationMapper.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/AuthenticationMapper.java
@@ -6,7 +6,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert
 
 import java.util.Collections;
 
-@Mapper(componentModel = "spring")
+@Mapper(componentModel = "spring", uses = {UserMapper.class})
 public interface AuthenticationMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AuthenticationMapper.class);
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index e4fe5c286258089991df210c7099437c2670765b..9156ecd0c3c13e4628508541f67efefe312065b2 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -8,16 +8,24 @@ import at.tuwien.api.user.UserDto;
 import at.tuwien.entities.user.User;
 import at.tuwien.entities.user.UserAttribute;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
+import java.util.UUID;
+
 
 @Mapper(componentModel = "spring")
 public interface UserMapper {
 
     org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(UserMapper.class);
 
-    UserDetailsDto userDtoToUserDetailsDto(UserDto data);
+    /* keep */
+    @Mappings({
+            @Mapping(target = "id", expression = "java(data.getId().toString())")
+    })
+    UserDetailsDto userBriefDtoToUserDetailsDto(UserBriefDto data);
 
     UserDto userToUserDto(User data);
 
@@ -31,7 +39,7 @@ public interface UserMapper {
         return authority;
     }
 
-    default UserAttribute tripleToUserAttribute(String userId, String name, String value) {
+    default UserAttribute tripleToUserAttribute(UUID userId, String name, String value) {
         return UserAttribute.builder()
                 .userId(userId)
                 .name(name)
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java
index eb43a5af74d5863735c9f532351a4f40bb6f35aa..d204a19345e7d27eec347ad8ea9b9a98ab997b1f 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/CredentialRepository.java
@@ -4,7 +4,9 @@ import at.tuwien.entities.user.Credential;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 @Repository
-public interface CredentialRepository extends JpaRepository<Credential, String> {
+public interface CredentialRepository extends JpaRepository<Credential, UUID> {
 
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
index db0443c0a78c3c8c2d653edf15901c9a3f2e4686..aabd612289f0130745444ceafe3f8fc67bd0bfd0 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RealmRepository.java
@@ -1,13 +1,14 @@
 package at.tuwien.repository.jpa;
 
-import at.tuwien.entities.auth.Realm;
+import at.tuwien.entities.user.Realm;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface RealmRepository extends JpaRepository<Realm, String> {
+public interface RealmRepository extends JpaRepository<Realm, UUID> {
 
     Optional<Realm> findByName(String name);
 
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java
index fd7261d3a85245155a6254fee75223a5c4d97bff..8669937f1d599162999a44dc28d5d8f9fdf73f04 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleMappingRepository.java
@@ -4,6 +4,8 @@ import at.tuwien.entities.user.RoleMapping;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+import java.util.UUID;
+
 @Repository
-public interface RoleMappingRepository extends JpaRepository<RoleMapping, String> {
+public interface RoleMappingRepository extends JpaRepository<RoleMapping, UUID> {
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java
index 6efb6c207110626771b2e67234e5779a0a23e2dc..a3a4713f6864a9539344e5c413583e468863c4fe 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/RoleRepository.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 RoleRepository extends JpaRepository<Role, String> {
+public interface RoleRepository extends JpaRepository<Role, UUID> {
 
     Optional<Role> findByName(String name);
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java
index 08077e1525c52223220c166f6a8b4abc4f08270a..e0c8531399f55fd72429eb7ead6f92e10c54fdf8 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserAttributeRepository.java
@@ -6,12 +6,11 @@ import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Repository
-public interface UserAttributeRepository extends JpaRepository<UserAttribute, String> {
+public interface UserAttributeRepository extends JpaRepository<UserAttribute, UUID> {
 
-    List<UserAttribute> findByUser(String userId);
-
-    Optional<UserAttribute> findByUserIdAndName(String userId, String name);
+    Optional<UserAttribute> findByUserIdAndName(UUID userId, String name);
 
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
index 289a4abae21670ed954124a9a5f8b9d951685906..48e7ab240f644a583d2bdbb9a54b8322a500b804 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/repository/jpa/UserRepository.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 UserRepository extends JpaRepository<User, String> {
+public interface UserRepository extends JpaRepository<User, UUID> {
 
     Optional<User> findByUsername(String username);
 
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/RealmService.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/RealmService.java
index 768b437a715f78830e3b1a8182cbc90a4a514614..6c93de60862f459c1ca80db0f7493babf36a8531 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/RealmService.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/RealmService.java
@@ -1,6 +1,6 @@
 package at.tuwien.service;
 
-import at.tuwien.entities.auth.Realm;
+import at.tuwien.entities.user.Realm;
 import at.tuwien.exception.RealmNotFoundException;
 
 public interface RealmService {
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserAttributeService.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserAttributeService.java
index e3471adb395d5c3a56fc8775c977340b48fecb69..d8af9940ad232d4f7160362b0efa703146dffd0e 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserAttributeService.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserAttributeService.java
@@ -3,14 +3,13 @@ package at.tuwien.service;
 import at.tuwien.entities.user.UserAttribute;
 import at.tuwien.exception.UserAttributeNotFoundException;
 
-import java.util.List;
+import java.util.UUID;
 
 public interface UserAttributeService {
-    List<UserAttribute> findAll(String userId);
 
-    UserAttribute find(String userId, String name) throws UserAttributeNotFoundException;
+    UserAttribute find(UUID userId, String name) throws UserAttributeNotFoundException;
 
-    UserAttribute update(String userId, String name, String value) throws UserAttributeNotFoundException;
+    UserAttribute update(UUID userId, String name, String value) throws UserAttributeNotFoundException;
 
     UserAttribute create(UserAttribute userAttribute);
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserService.java
index 4f64b63e02c50d587ce298ce0f6743aa67444ed7..c607aedaa7e24f26cd0b1bd136678f7db2ec5a36 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserService.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/UserService.java
@@ -4,13 +4,14 @@ import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.UserPasswordDto;
 import at.tuwien.api.user.UserThemeSetDto;
 import at.tuwien.api.user.UserUpdateDto;
-import at.tuwien.entities.auth.Realm;
+import at.tuwien.entities.user.Realm;
 import at.tuwien.entities.user.Role;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 
 import java.security.Principal;
 import java.util.List;
+import java.util.UUID;
 
 public interface UserService {
 
@@ -21,26 +22,16 @@ public interface UserService {
      */
     List<User> findAll();
 
-    /**
-     * Finds a user by username.
-     *
-     * @param username The username.
-     * @return The user.
-     * @throws UserNotFoundException The user was not found in the metadata database.
-     */
-    User findByUsername(String username) throws UserNotFoundException;
-
-    User findById(String id) throws UserNotFoundException;
-
     User create(SignupRequestDto data, Realm realm, Role role) throws RemoteUnavailableException, UserNotFoundException,
             UserAlreadyExistsException;
 
-    User modify(String id, UserUpdateDto data, Principal principal) throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException;
+    User modify(UUID id, UserUpdateDto data, Principal principal) throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException;
 
-    User updatePassword(String id, UserPasswordDto data, Principal principal) throws UserNotFoundException,
+    User updatePassword(UUID id, UserPasswordDto data, Principal principal) throws UserNotFoundException,
             ForeignUserException;
 
-    User toggleTheme(String id, UserThemeSetDto data, Principal principal) throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException;
+    User toggleTheme(UUID id, UserThemeSetDto data, Principal principal) throws UserNotFoundException, ForeignUserException, UserAttributeNotFoundException;
+
 
-    User find(String id) throws UserNotFoundException;
+    User find(UUID id) throws UserNotFoundException;
 }
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
index 6c971add7fe6deed7968b00a7980e868dfad382c..b499b6c43bde74e44902af54109e464ee4c147a4 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/RealmServiceImpl.java
@@ -1,6 +1,6 @@
 package at.tuwien.service.impl;
 
-import at.tuwien.entities.auth.Realm;
+import at.tuwien.entities.user.Realm;
 import at.tuwien.exception.RealmNotFoundException;
 import at.tuwien.repository.jpa.RealmRepository;
 import at.tuwien.service.RealmService;
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
index 6771f33a9cbfffef8377a0c931b74d248799a45b..14885f60f09fcb029818e9c517ad84a584c3176e 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserAttributeServiceImpl.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -23,12 +24,7 @@ public class UserAttributeServiceImpl implements UserAttributeService {
     }
 
     @Override
-    public List<UserAttribute> findAll(String userId) {
-        return userAttributeRepository.findByUser(userId);
-    }
-
-    @Override
-    public UserAttribute find(String userId, String name) throws UserAttributeNotFoundException {
+    public UserAttribute find(UUID userId, String name) throws UserAttributeNotFoundException {
         final Optional<UserAttribute> optional = userAttributeRepository.findByUserIdAndName(userId, name);
         if (optional.isEmpty()) {
             log.error("Failed to find user attribute with name {}", name);
@@ -38,7 +34,7 @@ public class UserAttributeServiceImpl implements UserAttributeService {
     }
 
     @Override
-    public UserAttribute update(String userId, String name, String value) throws UserAttributeNotFoundException {
+    public UserAttribute update(UUID userId, String name, String value) throws UserAttributeNotFoundException {
         final UserAttribute entity = find(userId, name);
         entity.setValue(value);
         return userAttributeRepository.save(entity);
diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
index 569eb90a4f15d522a962371196ac534ae3372445..96fceaa61d76576ac66f04b2b44589977ddf633f 100644
--- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
+++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java
@@ -4,13 +4,11 @@ import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.UserPasswordDto;
 import at.tuwien.api.user.UserThemeSetDto;
 import at.tuwien.api.user.UserUpdateDto;
-import at.tuwien.entities.auth.Realm;
 import at.tuwien.entities.user.*;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.UserMapper;
 import at.tuwien.repository.jpa.CredentialRepository;
 import at.tuwien.repository.jpa.RoleMappingRepository;
-import at.tuwien.repository.jpa.UserAttributeRepository;
 import at.tuwien.repository.jpa.UserRepository;
 import at.tuwien.service.UserAttributeService;
 import at.tuwien.service.UserService;
@@ -30,6 +28,7 @@ import java.security.spec.KeySpec;
 import java.time.Instant;
 import java.util.List;
 import java.util.Optional;
+import java.util.UUID;
 
 @Log4j2
 @Service
@@ -64,26 +63,6 @@ public class UserServiceImpl implements UserService {
         return userRepository.findAll();
     }
 
-    @Override
-    public User findByUsername(String username) throws UserNotFoundException {
-        final Optional<User> optional = userRepository.findByUsername(username);
-        if (optional.isEmpty()) {
-            log.error("Failed to retrieve user with username {}", username);
-            throw new UserNotFoundException("Failed to retrieve user");
-        }
-        return optional.get();
-    }
-
-    @Override
-    public User findById(String id) throws UserNotFoundException {
-        final Optional<User> optional = userRepository.findById(id);
-        if (optional.isEmpty()) {
-            log.error("Failed to retrieve user with id {}", id);
-            throw new UserNotFoundException("Failed to retrieve user");
-        }
-        return optional.get();
-    }
-
     @Override
     public User create(SignupRequestDto data, Realm realm, Role role) throws RemoteUnavailableException, UserNotFoundException,
             UserAlreadyExistsException {
@@ -141,10 +120,10 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public User modify(String id, UserUpdateDto data, Principal principal) throws UserNotFoundException,
+    public User modify(UUID id, UserUpdateDto data, Principal principal) throws UserNotFoundException,
             ForeignUserException, UserAttributeNotFoundException {
         /* check */
-        User user = findById(id);
+        User user = find(id);
         if (!user.getUsername().equals(principal.getName())) {
             log.error("Failed to modify user: attempting to modify other user");
             throw new ForeignUserException("Failed to modify user: attempting to modify other user");
@@ -161,10 +140,10 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public User updatePassword(String id, UserPasswordDto data, Principal principal) throws UserNotFoundException,
+    public User updatePassword(UUID id, UserPasswordDto data, Principal principal) throws UserNotFoundException,
             ForeignUserException {
         /* check */
-        final User user = findById(id);
+        final User user = find(id);
         if (!user.getUsername().equals(principal.getName())) {
             log.error("Failed to modify user: attempting to modify other user");
             throw new ForeignUserException("Failed to modify user: attempting to modify other user");
@@ -191,10 +170,10 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public User toggleTheme(String id, UserThemeSetDto data, Principal principal) throws UserNotFoundException,
+    public User toggleTheme(UUID id, UserThemeSetDto data, Principal principal) throws UserNotFoundException,
             ForeignUserException, UserAttributeNotFoundException {
         /* check */
-        final User user = findById(id);
+        final User user = find(id);
         if (!user.getUsername().equals(principal.getName())) {
             log.error("Failed to modify user: attempting to modify other user");
             throw new ForeignUserException("Failed to modify user: attempting to modify other user");
@@ -205,7 +184,7 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public User find(String id) throws UserNotFoundException {
+    public User find(UUID id) throws UserNotFoundException {
         final Optional<User> optional = userRepository.findById(id);
         if (optional.isEmpty()) {
             log.error("Failed to retrieve user with id {}", id);