diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml
index c86fd2464296304442a513cb70d1050fe4a16389..49aac1bc36b2f4c2e0b70dae7e9774b1e1674c2c 100644
--- a/dbrepo-database-service/pom.xml
+++ b/dbrepo-database-service/pom.xml
@@ -226,8 +226,9 @@
                         <exclude>at/tuwien/utils/**/*</exclude>
                         <exclude>at/tuwien/handlers/**/*</exclude>
                         <exclude>at/tuwien/seeder/**/*</exclude>
+                        <exclude>at/tuwien/auth/**/*</exclude>
                         <exclude>**/HibernateConnector.class</exclude>
-                        <exclude>**/FdaDatabaseManagingApplication.class</exclude>
+                        <exclude>**/DbrepoDatabaseManagingApplication.class</exclude>
                     </excludes>
                 </configuration>
                 <executions>
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 bf74ff488ba38a31ffc2963ab1a517153acc68b2..68b5a0c1c23875d0f0036b7d3588241a43f42cc1 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
@@ -14,6 +14,7 @@ import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.AccessMapper;
 import at.tuwien.repository.jpa.*;
+import at.tuwien.service.AccessService;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Disabled;
@@ -33,7 +34,8 @@ import java.util.Optional;
 import java.util.UUID;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.when;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.*;
 
 @Log4j2
 @SpringBootTest
@@ -50,7 +52,7 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
     private Channel channel;
 
     @MockBean
-    private DatabaseAccessRepository databaseAccessRepository;
+    private AccessService accessService;
 
     @MockBean
     private DatabaseRepository databaseRepository;
@@ -84,6 +86,20 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
         });
     }
 
+    @Test
+    @WithMockUser(username = USER_1_USERNAME, authorities = {"create-database-access"})
+    public void create_succeeds() throws UserNotFoundException, NotAllowedException, QueryMalformedException,
+            DatabaseNotFoundException, DatabaseMalformedException, AccessDeniedException {
+
+        /* mock */
+        doNothing()
+                .when(accessService)
+                .create(eq(CONTAINER_1_ID), eq(DATABASE_1_ID), any(DatabaseGiveAccessDto.class));
+
+        /* test */
+        generic_create(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, null, USER_2_USERNAME, USER_2, USER_1_PRINCIPAL);
+    }
+
     @Test
     @WithAnonymousUser
     public void find_anonymous_fails() {
@@ -100,16 +116,16 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
 
         /* test */
         assertThrows(AccessDeniedException.class, () -> {
-            generic_find(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, null, USER_2_USERNAME, USER_2_ID, USER_1_PRINCIPAL);
+            generic_find(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, null, USER_2_USERNAME, USER_2_ID, USER_2_PRINCIPAL);
         });
     }
 
     @Test
     @WithMockUser(username = USER_1_USERNAME, authorities = {"check-database-access"})
-    public void find_hasRoleHasAccess_fails() throws AccessDeniedException, NotAllowedException {
+    public void find_hasRoleHasAccess_succeeds() throws AccessDeniedException, NotAllowedException {
 
         /* test */
-        generic_find(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, DATABASE_1_USER_1_READ_ACCESS, USER_2_USERNAME, USER_2_ID, USER_1_PRINCIPAL);
+        generic_find(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, DATABASE_1_USER_1_READ_ACCESS, USER_1_USERNAME, USER_1_ID, USER_1_PRINCIPAL);
     }
 
     @Test
@@ -154,13 +170,64 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
         });
     }
 
+    @Test
+    @WithMockUser(username = USER_1_USERNAME, authorities = {"update-database-access"})
+    public void update_succeeds() throws UserNotFoundException, AccessDeniedException, NotAllowedException,
+            QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException {
+
+        /* mock */
+        when(userRepository.findByUsername(USER_1_USERNAME))
+                .thenReturn(Optional.of(USER_1));
+        doNothing()
+                .when(accessService)
+                .update(eq(CONTAINER_1_ID), eq(DATABASE_1_ID), eq(USER_2_USERNAME), any(DatabaseModifyAccessDto.class));
+
+        /* test */
+        generic_update(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1, DATABASE_1_USER_2_WRITE_OWN_ACCESS, USER_2_USERNAME, USER_1_PRINCIPAL);
+    }
+
+    @Test
+    @WithAnonymousUser
+    public void revoke_anonymous_fails() {
+
+        /* test */
+        assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> {
+            generic_revoke(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_USER_1_WRITE_ALL_ACCESS, USER_2_USERNAME, USER_1_PRINCIPAL);
+        });
+    }
+
+    @Test
+    @WithMockUser(username = USER_4_USERNAME)
+    public void revoke_noRoleNoAccess_fails() {
+
+        /* test */
+        assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> {
+            generic_revoke(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_USER_1_WRITE_ALL_ACCESS, USER_2_USERNAME, USER_4_PRINCIPAL);
+        });
+    }
+
+    @Test
+    @WithMockUser(username = USER_1_USERNAME, authorities = {"delete-database-access"})
+    public void revoke_succeeds() throws UserNotFoundException, NotAllowedException,
+            QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException, AccessDeniedException {
+
+        /* mock */
+        doNothing()
+                .when(accessService)
+                .delete(CONTAINER_1_ID, DATABASE_1_ID, USER_2_USERNAME);
+
+        /* test */
+        generic_revoke(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_USER_1_WRITE_ALL_ACCESS, USER_2_USERNAME, USER_1_PRINCIPAL);
+    }
+
     /* ################################################################################################### */
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
 
     protected void generic_create(Long containerId, Long databaseId, Database database, DatabaseAccess access,
                                   String username, User user, Principal principal) throws UserNotFoundException,
-            NotAllowedException, QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException {
+            NotAllowedException, QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException,
+            AccessDeniedException {
         final DatabaseGiveAccessDto request = DatabaseGiveAccessDto.builder()
                 .username(username)
                 .type(AccessTypeDto.READ)
@@ -171,12 +238,15 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
                 .thenReturn(Optional.of(database));
         when(userRepository.findByUsername(username))
                 .thenReturn(Optional.of(user));
-        if (access == null) {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.empty());
+        if (access != null) {
+            log.trace("mock access {} for user with username {} for database with id {}", access.getType(), username, databaseId);
+            when(accessService.find(databaseId, username))
+                    .thenReturn(access);
         } else {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.of(access));
+            log.trace("mock no access for user with username {} for database with id {}", username, databaseId);
+            doThrow(AccessDeniedException.class)
+                    .when(accessService)
+                    .find(databaseId, username);
         }
 
         /* test */
@@ -193,17 +263,14 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
         when(databaseRepository.findById(databaseId))
                 .thenReturn(Optional.of(database));
         if (access != null) {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.of(access));
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, principal.getName()))
-                    .thenReturn(Optional.of(DatabaseAccess.builder()
-                            .type(access.getType())
-                            .hdbid(databaseId)
-                            .huserid(username.equals(USER_1_USERNAME) ? USER_1_ID : USER_2_ID)
-                            .build()));
+            log.trace("mock access {} for user with username {} for database with id {}", access.getType(), username, databaseId);
+            when(accessService.find(databaseId, username))
+                    .thenReturn(access);
         } else {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.empty());
+            log.trace("mock no access for user with username {} for database with id {}", username, databaseId);
+            doThrow(AccessDeniedException.class)
+                    .when(accessService)
+                    .find(databaseId, username);
         }
 
         /* test */
@@ -226,12 +293,15 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
         /* mock */
         when(databaseRepository.findById(databaseId))
                 .thenReturn(Optional.of(database));
-        if (access == null) {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.empty());
+        if (access != null) {
+            log.trace("mock access {} for user with username {} for database with id {}", access.getType(), username, databaseId);
+            when(accessService.find(databaseId, username))
+                    .thenReturn(access);
         } else {
-            when(databaseAccessRepository.findByDatabaseIdAndUsername(databaseId, username))
-                    .thenReturn(Optional.of(access));
+            log.trace("mock no access for user with username {} for database with id {}", username, databaseId);
+            doThrow(AccessDeniedException.class)
+                    .when(accessService)
+                    .find(databaseId, username);
         }
 
         /* test */
@@ -240,4 +310,26 @@ public class AccessEndpointUnitTest extends BaseUnitTest {
         assertNull(response.getBody());
     }
 
+    protected void generic_revoke(Long containerId, Long databaseId, DatabaseAccess access, String username,
+                                  Principal principal) throws AccessDeniedException, NotAllowedException,
+            UserNotFoundException, QueryMalformedException, DatabaseNotFoundException, DatabaseMalformedException {
+
+        /* mock */
+        if (access != null) {
+            log.trace("mock access {} for user with username {} for database with id {}", access.getType(), username, databaseId);
+            when(accessService.find(databaseId, username))
+                    .thenReturn(access);
+        } else {
+            log.trace("mock no access for user with username {} for database with id {}", username, databaseId);
+            doThrow(AccessDeniedException.class)
+                    .when(accessService)
+                    .find(databaseId, username);
+        }
+
+        /* test */
+        final ResponseEntity<?> response = accessEndpoint.revoke(containerId, databaseId, username, principal);
+        assertEquals(HttpStatus.ACCEPTED, response.getStatusCode());
+        assertNull(response.getBody());
+    }
+
 }
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
index 6b8259fa0f0125ebd81fa0232474014456e35d4a..d73873ade43078c0f81f0b596099989110e611c0 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/endpoint/DatabaseEndpointUnitTest.java
@@ -11,8 +11,8 @@ import at.tuwien.entities.database.DatabaseAccess;
 import at.tuwien.exception.*;
 import at.tuwien.repository.elastic.DatabaseIdxRepository;
 import at.tuwien.repository.jpa.*;
-import at.tuwien.service.MessageQueueService;
-import at.tuwien.service.QueryStoreService;
+import at.tuwien.service.*;
+import at.tuwien.service.impl.MariaDbServiceImpl;
 import at.tuwien.test.BaseTest;
 import com.rabbitmq.client.Channel;
 import lombok.With;
@@ -35,8 +35,7 @@ import java.util.Optional;
 
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
 
 @Log4j2
 @SpringBootTest
@@ -59,19 +58,22 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
     private MessageQueueService messageQueueService;
 
     @MockBean
-    private DatabaseIdxRepository databaseIdxRepository;
+    private AccessService accessService;
 
     @MockBean
-    private DatabaseAccessRepository databaseAccessRepository;
+    private ContainerService containerService;
+
+    @MockBean
+    private MariaDbServiceImpl databaseService;
 
     @MockBean
     private QueryStoreService queryStoreService;
 
     @MockBean
-    private ContainerRepository containerRepository;
+    private DatabaseIdxRepository databaseIdxRepository;
 
     @MockBean
-    private DatabaseRepository databaseRepository;
+    private DatabaseAccessRepository databaseAccessRepository;
 
     @MockBean
     private IdentifierRepository identifierRepository;
@@ -113,13 +115,15 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
 
     @Test
     @WithMockUser(username = USER_2_USERNAME, authorities = {"create-database"})
-    public void create_hasRoleForeign_fails() {
+    public void create_hasRoleForeign_fails() throws ContainerNotFoundException {
         final DatabaseCreateDto request = DatabaseCreateDto.builder()
                 .name(DATABASE_1_NAME)
                 .isPublic(DATABASE_1_PUBLIC)
                 .build();
 
         /* mock */
+        when(containerService.find(CONTAINER_1_ID))
+                .thenReturn(CONTAINER_1);
         when(userRepository.findByUsername(USER_2_USERNAME))
                 .thenReturn(Optional.of(USER_2));
 
@@ -129,6 +133,43 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
         });
     }
 
+    @Test
+    @WithMockUser(username = USER_1_USERNAME, authorities = {"create-database"})
+    public void create_succeeds() throws UserNotFoundException, BrokerVirtualHostGrantException,
+            DatabaseNameExistsException, NotAllowedException, ContainerConnectionException, DatabaseMalformedException,
+            QueryStoreException, DatabaseConnectionException, QueryMalformedException, DatabaseNotFoundException,
+            ImageNotSupportedException, AmqpException, BrokerVirtualHostCreationException, ContainerNotFoundException {
+        final DatabaseCreateDto request = DatabaseCreateDto.builder()
+                .name(DATABASE_1_NAME)
+                .isPublic(DATABASE_1_PUBLIC)
+                .build();
+
+        /* mock */
+        when(userRepository.findByUsername(USER_1_USERNAME))
+                .thenReturn(Optional.of(USER_1));
+        when(containerService.find(CONTAINER_1_ID))
+                .thenReturn(CONTAINER_1);
+        when(databaseService.create(CONTAINER_1_ID, request, USER_1_PRINCIPAL))
+                .thenReturn(DATABASE_1);
+        doNothing()
+                .when(messageQueueService)
+                .createUser(USER_1);
+        doNothing()
+                .when(messageQueueService)
+                .createExchange(DATABASE_1, USER_1_PRINCIPAL);
+        doNothing()
+                .when(messageQueueService)
+                .updatePermissions(USER_1_PRINCIPAL);
+        doNothing()
+                .when(queryStoreService)
+                .create(CONTAINER_1_ID, DATABASE_1_ID, USER_1_PRINCIPAL);
+        when(databaseAccessRepository.save(any(DatabaseAccess.class)))
+                .thenReturn(DATABASE_1_USER_1_WRITE_ALL_ACCESS);
+
+        /* test */
+        create_generic(CONTAINER_1_ID, CONTAINER_1, DATABASE_1_ID, null, request, USER_1_PRINCIPAL);
+    }
+
     @Test
     @WithAnonymousUser
     public void list_anonymous_succeeds() {
@@ -247,7 +288,7 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
 
     @Test
     @WithMockUser(username = USER_2_USERNAME, authorities = {"modify-database-owner"})
-    public void transfer_hasRoleForeign_fails() {
+    public void transfer_hasRoleForeign_fails() throws DatabaseNotFoundException {
         final DatabaseTransferDto request = DatabaseTransferDto.builder()
                 .username(USER_4_USERNAME)
                 .build();
@@ -255,8 +296,8 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
         /* mock */
         when(userRepository.findByUsername(USER_2_USERNAME))
                 .thenReturn(Optional.of(USER_2));
-        when(databaseRepository.findById(DATABASE_1_ID))
-                .thenReturn(Optional.of(DATABASE_1));
+        when(databaseService.findById(CONTAINER_1_ID, DATABASE_1_ID))
+                .thenReturn(DATABASE_1);
 
         /* test */
         assertThrows(NotAllowedException.class, () -> {
@@ -276,8 +317,8 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
                 .thenReturn(Optional.of(USER_1));
         when(userRepository.findByUsername(USER_4_USERNAME))
                 .thenReturn(Optional.of(USER_4));
-        when(databaseRepository.findById(DATABASE_1_ID))
-                .thenReturn(Optional.of(DATABASE_1));
+        when(databaseService.findById(CONTAINER_1_ID, DATABASE_1_ID))
+                .thenReturn(DATABASE_1);
 
         /* test */
         databaseEndpoint.transfer(CONTAINER_1_ID, DATABASE_1_ID, request, USER_1_PRINCIPAL);
@@ -285,7 +326,7 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
 
     @Test
     @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-owner"})
-    public void transfer_hasRoleUserNotExists_succeeds() {
+    public void transfer_hasRoleUserNotExists_succeeds() throws DatabaseNotFoundException, UserNotFoundException {
         final DatabaseTransferDto request = DatabaseTransferDto.builder()
                 .username("foobar")
                 .build();
@@ -293,8 +334,11 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
         /* mock */
         when(userRepository.findByUsername(USER_1_USERNAME))
                 .thenReturn(Optional.of(USER_1));
-        when(databaseRepository.findById(DATABASE_1_ID))
-                .thenReturn(Optional.of(DATABASE_1));
+        when(databaseService.findById(CONTAINER_1_ID, DATABASE_1_ID))
+                .thenReturn(DATABASE_1);
+        doThrow(UserNotFoundException.class)
+                .when(databaseService)
+                .transfer(CONTAINER_1_ID, DATABASE_1_ID, request);
 
         /* test */
         assertThrows(UserNotFoundException.class, () -> {
@@ -343,6 +387,22 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
         findById_generic(CONTAINER_3_ID, CONTAINER_3, DATABASE_3_ID, DATABASE_3, USER_1_PRINCIPAL);
     }
 
+    @Test
+    @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"})
+    public void findById_ownerSeesAccessRights_succeeds() throws AccessDeniedException,
+            DatabaseNotFoundException {
+
+        /* mock */
+        when(accessService.list(DATABASE_1_ID))
+                .thenReturn(List.of(DATABASE_1_USER_1_WRITE_ALL_ACCESS, DATABASE_1_USER_2_READ_ACCESS));
+
+        /* test */
+        final DatabaseDto response = findById_generic(CONTAINER_1_ID, CONTAINER_1, DATABASE_1_ID, DATABASE_1, USER_1_PRINCIPAL);
+        final List<DatabaseAccessDto> accessList = response.getAccesses();
+        assertNotNull(accessList);
+        assertEquals(2, accessList.size());
+    }
+
     @Test
     @WithAnonymousUser
     public void delete_anonymous_fails() {
@@ -381,12 +441,10 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
     public void list_generic(Long containerId, Long databaseId, Container container, List<Database> databases, Principal principal) {
 
         /* mock */
-        when(containerRepository.findById(containerId))
-                .thenReturn(Optional.of(container));
-        when(databaseRepository.findAll(containerId))
-                .thenReturn(databases);
         when(identifierRepository.findByDatabaseId(databaseId))
                 .thenReturn(List.of());
+        when(databaseService.findAll(containerId))
+                .thenReturn(databases);
 
         /* test */
         final ResponseEntity<List<DatabaseBriefDto>> response = databaseEndpoint.list(containerId, principal);
@@ -403,17 +461,6 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
             ImageNotSupportedException, AmqpException, BrokerVirtualHostCreationException, ContainerNotFoundException, BrokerVirtualHostGrantException {
 
         /* mock */
-        when(containerRepository.findById(containerId))
-                .thenReturn(Optional.of(container));
-        if (database != null) {
-            when(databaseRepository.findById(databaseId))
-                    .thenReturn(Optional.of(database));
-        } else {
-            when(databaseRepository.findById(databaseId))
-                    .thenReturn(Optional.empty());
-        }
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(database);
         doNothing()
                 .when(messageQueueService)
                 .createExchange(database, principal);
@@ -428,7 +475,7 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
 
         /* test */
         final ResponseEntity<DatabaseBriefDto> response = databaseEndpoint.create(containerId, data, principal);
-        assertEquals(HttpStatus.ACCEPTED, response.getStatusCode());
+        assertEquals(HttpStatus.CREATED, response.getStatusCode());
         assertNotNull(response.getBody());
     }
 
@@ -437,12 +484,16 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
             throws NotAllowedException, DatabaseNotFoundException, UserNotFoundException {
 
         /* mock */
-        when(containerRepository.findById(containerId))
-                .thenReturn(Optional.of(container));
-        when(databaseRepository.findById(databaseId))
-                .thenReturn(Optional.of(database));
-        when(databaseRepository.save(any(Database.class)))
-                .thenReturn(database);
+        if (database != null) {
+            when(databaseService.findById(containerId, databaseId))
+                    .thenReturn(database);
+            when(databaseService.visibility(containerId, databaseId, data))
+                    .thenReturn(database);
+        } else {
+            doThrow(DatabaseNotFoundException.class)
+                    .when(databaseService)
+                    .findById(containerId, databaseId);
+        }
         when(databaseIdxRepository.save(any(DatabaseDto.class)))
                 .thenReturn(dto);
 
@@ -452,29 +503,25 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
         assertNotNull(response.getBody());
     }
 
-    public void findById_generic(Long containerId, Container container, Long databaseId, Database database,
-                                 Principal principal) throws DatabaseNotFoundException, AccessDeniedException {
+    public DatabaseDto findById_generic(Long containerId, Container container, Long databaseId, Database database,
+                                        Principal principal) throws DatabaseNotFoundException, AccessDeniedException {
 
         /* mock */
-        if (container != null) {
-            when(containerRepository.findById(containerId))
-                    .thenReturn(Optional.of(container));
-        } else {
-            when(containerRepository.findById(containerId))
-                    .thenReturn(Optional.empty());
-        }
         if (database != null) {
-            when(databaseRepository.findById(databaseId))
-                    .thenReturn(Optional.of(database));
+            when(databaseService.findById(containerId, databaseId))
+                    .thenReturn(database);
         } else {
-            when(databaseRepository.findById(databaseId))
-                    .thenReturn(Optional.empty());
+            doThrow(DatabaseNotFoundException.class)
+                    .when(databaseService)
+                    .findById(containerId, databaseId);
         }
 
         /* test */
         final ResponseEntity<DatabaseDto> response = databaseEndpoint.findById(containerId, databaseId, principal);
         assertEquals(HttpStatus.OK, response.getStatusCode());
-        assertNotNull(response.getBody());
+        final DatabaseDto body = response.getBody();
+        assertNotNull(body);
+        return body;
     }
 
     public void delete_generic(Long containerId, Container container, Long databaseId, Database database,
@@ -483,13 +530,13 @@ public class DatabaseEndpointUnitTest extends BaseUnitTest {
             AmqpException, BrokerVirtualHostCreationException, ContainerNotFoundException, DatabaseMalformedException, BrokerVirtualHostGrantException {
 
         /* mock */
-        when(containerRepository.findById(containerId))
-                .thenReturn(Optional.of(container));
-        when(databaseRepository.findById(databaseId))
-                .thenReturn(Optional.of(database));
-        if (username != null) {
-            when(databaseRepository.findPublicOrMine(containerId, databaseId, username))
-                    .thenReturn(Optional.of(database));
+        if (database != null) {
+            when(databaseService.findById(containerId, databaseId))
+                    .thenReturn(database);
+        } else {
+            doThrow(DatabaseNotFoundException.class)
+                    .when(databaseService)
+                    .findById(containerId, databaseId);
         }
 
         /* test */
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java
index 866ae4ae48e69e2e46fb971aab55150af68f085d..4d920fbbbe30bb091672a3b349f6d9eb0d1886d0 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/gateway/BrokerServiceGatewayTest.java
@@ -102,6 +102,21 @@ public class BrokerServiceGatewayTest extends BaseUnitTest {
         brokerServiceGateway.grantPermission(USER_1_USERNAME, VIRTUAL_HOST_EXCHANGE_UPDATE_DTO);
     }
 
+    @Test
+    public void grantPermission_invalidResponseCode_fails() {
+        final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.UNAUTHORIZED)
+                .build();
+
+        /* mock */
+        when(restTemplate.exchange(any(URI.class), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)))
+                .thenReturn(mock);
+
+        /* test */
+        assertThrows(BrokerVirtualHostGrantException.class, () -> {
+            brokerServiceGateway.grantPermission(USER_1_USERNAME, VIRTUAL_HOST_EXCHANGE_UPDATE_DTO);
+        });
+    }
+
     @Test
     public void grantPermission_virtualHostNoRightsBefore_succeeds() throws BrokerVirtualHostGrantException {
         final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.CREATED)
@@ -128,4 +143,47 @@ public class BrokerServiceGatewayTest extends BaseUnitTest {
         brokerServiceGateway.grantPermission(USER_1_USERNAME, VIRTUAL_HOST_GRANT_DTO);
     }
 
+    @Test
+    public void grantPermission_invalidResponseCode2_fails() {
+        final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.ACCEPTED)
+                .build();
+
+        /* mock */
+        when(restTemplate.exchange(any(URI.class), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)))
+                .thenReturn(mock);
+
+        /* test */
+        assertThrows(BrokerVirtualHostGrantException.class, () -> {
+            brokerServiceGateway.grantPermission(USER_1_USERNAME, VIRTUAL_HOST_GRANT_DTO);
+        });
+    }
+
+    @Test
+    public void createUser_succeeds() throws BrokerVirtualHostCreationException {
+        final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.NO_CONTENT)
+                .build();
+
+        /* mock */
+        when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)))
+                .thenReturn(mock);
+
+        /* test */
+        brokerServiceGateway.createUser(USER_1_USERNAME);
+    }
+
+    @Test
+    public void createUser_invalidResponseCode_fails() {
+        final ResponseEntity<Void> mock = ResponseEntity.status(HttpStatus.ACCEPTED)
+                .build();
+
+        /* mock */
+        when(restTemplate.exchange(anyString(), eq(HttpMethod.PUT), any(HttpEntity.class), eq(Void.class)))
+                .thenReturn(mock);
+
+        /* test */
+        assertThrows(BrokerVirtualHostCreationException.class, () -> {
+            brokerServiceGateway.createUser(USER_1_USERNAME);
+        });
+    }
+
 }
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 85c0e90563f84b52898d42a6693f46b6ebc45542..dde3a3f802b268d79d5e9b9f3f2a2e3ce9ab085e 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
@@ -3,13 +3,15 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.api.database.DatabaseCreateDto;
 import at.tuwien.api.database.DatabaseDto;
+import at.tuwien.api.database.DatabaseModifyVisibilityDto;
+import at.tuwien.api.database.DatabaseTransferDto;
 import at.tuwien.config.DockerConfig;
 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.exception.*;
 import at.tuwien.repository.elastic.DatabaseIdxRepository;
 import at.tuwien.repository.jpa.*;
 import at.tuwien.service.impl.MariaDbServiceImpl;
@@ -73,8 +75,8 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
     @Autowired
     private MariaDbConfig mariaDbConfig;
 
+    private final static String BIND_WEATHER = new File("../../dbrepo-metadata-db/test/src/test/resources/weather").toPath().toAbsolutePath() + ":/docker-entrypoint-initdb.d";
     private final static String BIND_ZOO = new File("../../dbrepo-metadata-db/test/src/test/resources/zoo").toPath().toAbsolutePath() + ":/docker-entrypoint-initdb.d";
-
     private final static String BIND_MUSICOLOGY = new File("../../dbrepo-metadata-db/test/src/test/resources/musicology").toPath().toAbsolutePath() + ":/docker-entrypoint-initdb.d";
 
     @BeforeAll
@@ -96,9 +98,9 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         /* 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);
+        userRepository.save(USER_1);
+        userRepository.save(USER_2);
+        userRepository.save(USER_3);
     }
 
     @AfterEach
@@ -257,6 +259,51 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
         generic_user_insert("junit1", "junit1");
     }
 
+    @Test
+    public void delete_succeeds() throws InterruptedException, QueryMalformedException, UserNotFoundException,
+            DatabaseConnectionException, DatabaseNotFoundException, ImageNotSupportedException,
+            ContainerNotFoundException, DatabaseMalformedException {
+
+        /* mock */
+        DockerConfig.createContainer(BIND_WEATHER, CONTAINER_1_SIMPLE, CONTAINER_1_ENV);
+        DockerConfig.startContainer(CONTAINER_1_SIMPLE);
+        containerRepository.save(CONTAINER_1);
+        databaseRepository.save(DATABASE_1);
+
+        /* test */
+        databaseService.delete(CONTAINER_1_ID, DATABASE_1_ID, USER_1_PRINCIPAL);
+    }
+
+    @Test
+    public void visibility_succeeds() throws DatabaseNotFoundException {
+        final DatabaseModifyVisibilityDto request = DatabaseModifyVisibilityDto.builder()
+                .isPublic(true)
+                .build();
+
+        /* mock */
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1);
+
+        /* test */
+        final Database response = databaseService.visibility(CONTAINER_1_ID, DATABASE_1_ID, request);
+        assertTrue(response.getIsPublic());
+    }
+
+    @Test
+    public void transfer_succeeds() throws DatabaseNotFoundException, UserNotFoundException {
+        final DatabaseTransferDto request = DatabaseTransferDto.builder()
+                .username(USER_2_USERNAME)
+                .build();
+
+        /* mock */
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1);
+
+        /* test */
+        final Database response = databaseService.transfer(CONTAINER_1_ID, DATABASE_1_ID, request);
+        assertEquals(USER_2_ID, response.getOwnedBy());
+    }
+
     /* ################################################################################################### */
     /* ## GENERIC TEST CASES                                                                            ## */
     /* ################################################################################################### */
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d442fccb1bcfc13ad97ae50b8e48a699be9f4ca8
--- /dev/null
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
@@ -0,0 +1,98 @@
+package at.tuwien.service;
+
+import at.tuwien.BaseUnitTest;
+import at.tuwien.config.DockerConfig;
+import at.tuwien.config.IndexConfig;
+import at.tuwien.config.ReadyConfig;
+import at.tuwien.entities.identifier.Identifier;
+import at.tuwien.entities.identifier.IdentifierType;
+import at.tuwien.exception.AmqpException;
+import at.tuwien.exception.IdentifierNotFoundException;
+import at.tuwien.gateway.BrokerServiceGateway;
+import at.tuwien.repository.jpa.*;
+import at.tuwien.service.impl.RabbitMqServiceImpl;
+import at.tuwien.utils.AmqpUtils;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+import org.apache.http.auth.BasicUserPrincipal;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+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;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.security.Principal;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.when;
+
+@Log4j2
+@SpringBootTest
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
+@ExtendWith(SpringExtension.class)
+public class IdentifierServiceIntegrationTest extends BaseUnitTest {
+
+    @MockBean
+    private ReadyConfig readyConfig;
+
+    @MockBean
+    private IndexConfig indexConfig;
+
+    @MockBean
+    private Channel channel;
+
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private ContainerRepository containerRepository;
+
+    @Autowired
+    private ImageRepository imageRepository;
+
+    @Autowired
+    private DatabaseRepository databaseRepository;
+
+    @Autowired
+    private IdentifierRepository identifierRepository;
+
+    @Autowired
+    private IdentifierService identifierService;
+
+    @BeforeEach
+    public void beforeEach() {
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1);
+        imageRepository.save(IMAGE_1);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+        identifierRepository.save(IDENTIFIER_1);
+    }
+
+    @Test
+    public void findAll_succeeds() {
+
+        /* test */
+        final List<Identifier> response = identifierService.findAll(DATABASE_1_ID);
+        assertEquals(1, response.size());
+    }
+
+    @Test
+    public void find_notFound_fails() {
+
+        /* test */
+        final List<Identifier> response = identifierService.findAll(DATABASE_2_ID);
+        assertEquals(0, response.size());
+    }
+
+
+}
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..98ae89f24169005a2e0caa5cd9035351365b9d7b
--- /dev/null
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/LicenseServiceIntegrationTest.java
@@ -0,0 +1,76 @@
+package at.tuwien.service;
+
+import at.tuwien.BaseUnitTest;
+import at.tuwien.config.IndexConfig;
+import at.tuwien.config.ReadyConfig;
+import at.tuwien.entities.database.License;
+import at.tuwien.entities.identifier.Identifier;
+import at.tuwien.exception.LicenseNotFoundException;
+import at.tuwien.repository.jpa.*;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+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;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+@Log4j2
+@SpringBootTest
+@ExtendWith(SpringExtension.class)
+public class LicenseServiceIntegrationTest extends BaseUnitTest {
+
+    @MockBean
+    private ReadyConfig readyConfig;
+
+    @MockBean
+    private IndexConfig indexConfig;
+
+    @MockBean
+    private Channel channel;
+
+    @Autowired
+    private LicenseRepository licenseRepository;
+
+    @Autowired
+    private LicenseService licenseService;
+
+    @BeforeEach
+    public void beforeEach() {
+        licenseRepository.save(LICENSE_1);
+    }
+
+    @Test
+    public void findAll_succeeds() {
+
+        /* test */
+        final List<License> response = licenseService.findAll();
+        assertEquals(1, response.size());
+    }
+
+    @Test
+    public void find_succeeds() throws LicenseNotFoundException {
+
+        /* test */
+        final License response = licenseService.find(LICENSE_1_IDENTIFIER);
+        assertEquals(LICENSE_1_IDENTIFIER, response.getIdentifier());
+    }
+
+    @Test
+    public void find_fails() {
+
+        /* test */
+        assertThrows(LicenseNotFoundException.class, () -> {
+            licenseService.find("CC0");
+        });
+    }
+
+}
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
similarity index 75%
rename from dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java
rename to dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
index 5912c4ea9d8371a511ba7a0daa287ad309bbae86..17e63a0882420e21a3f84ce24b0f3e0851adaff6 100644
--- a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceIntegrationTest.java
@@ -5,6 +5,8 @@ import at.tuwien.config.DockerConfig;
 import at.tuwien.config.IndexConfig;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.AmqpException;
+import at.tuwien.exception.BrokerVirtualHostCreationException;
+import at.tuwien.exception.BrokerVirtualHostGrantException;
 import at.tuwien.gateway.BrokerServiceGateway;
 import at.tuwien.repository.jpa.DatabaseRepository;
 import at.tuwien.service.impl.RabbitMqServiceImpl;
@@ -24,14 +26,13 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 import java.security.Principal;
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
 
 @Log4j2
 @SpringBootTest
 @ExtendWith(SpringExtension.class)
-public class AmqpServiceIntegrationTest extends BaseUnitTest {
+public class MessageQueueServiceIntegrationTest extends BaseUnitTest {
 
     @MockBean
     private ReadyConfig readyConfig;
@@ -49,7 +50,7 @@ public class AmqpServiceIntegrationTest extends BaseUnitTest {
     private Channel channel;
 
     @Autowired
-    private RabbitMqServiceImpl amqpService;
+    private RabbitMqServiceImpl messageQueueService;
 
     @Autowired
     private AmqpUtils amqpUtils;
@@ -71,10 +72,9 @@ public class AmqpServiceIntegrationTest extends BaseUnitTest {
 
     @Test
     public void createExchange_succeeds() throws AmqpException {
-        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* test */
-        amqpService.createExchange(DATABASE_1, principal);
+        messageQueueService.createExchange(DATABASE_1, USER_1_PRINCIPAL);
         assertTrue(amqpUtils.exchangeExists(DATABASE_1_EXCHANGE));
     }
 
@@ -82,10 +82,24 @@ public class AmqpServiceIntegrationTest extends BaseUnitTest {
     public void deleteExchange_succeeds() throws AmqpException {
 
         /* test */
-        amqpService.deleteExchange(DATABASE_1);
+        messageQueueService.deleteExchange(DATABASE_1);
         assertFalse(amqpUtils.exchangeExists(DATABASE_1_EXCHANGE));
     }
 
+    @Test
+    public void createUser_succeeds() throws BrokerVirtualHostCreationException {
+
+        /* test */
+        messageQueueService.createUser(USER_1);
+    }
+
+    @Test
+    public void updatePermissions_succeeds() throws BrokerVirtualHostGrantException {
+
+        /* test */
+        messageQueueService.updatePermissions(USER_1_PRINCIPAL);
+    }
+
     @Test
     public void init_succeeds() throws AmqpException {
 
@@ -95,7 +109,7 @@ public class AmqpServiceIntegrationTest extends BaseUnitTest {
 
         /* test */
         assertFalse(amqpUtils.exchangeExists(DATABASE_1_EXCHANGE));
-        amqpService.init();
+        messageQueueService.init();
         assertTrue(amqpUtils.exchangeExists(DATABASE_1_EXCHANGE));
     }
 
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b01dcfbd68b57d4ee5271443a86633303b15f9a0
--- /dev/null
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/MessageQueueServiceUnitTest.java
@@ -0,0 +1,82 @@
+package at.tuwien.service;
+
+import at.tuwien.BaseUnitTest;
+import at.tuwien.config.DockerConfig;
+import at.tuwien.config.IndexConfig;
+import at.tuwien.config.ReadyConfig;
+import at.tuwien.exception.AmqpException;
+import at.tuwien.gateway.BrokerServiceGateway;
+import at.tuwien.repository.jpa.DatabaseRepository;
+import at.tuwien.service.impl.RabbitMqServiceImpl;
+import at.tuwien.utils.AmqpUtils;
+import com.rabbitmq.client.BuiltinExchangeType;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.when;
+
+@Log4j2
+@SpringBootTest
+@ExtendWith(SpringExtension.class)
+public class MessageQueueServiceUnitTest extends BaseUnitTest {
+
+    @MockBean
+    private ReadyConfig readyConfig;
+
+    @MockBean
+    private IndexConfig indexConfig;
+
+    @MockBean
+    private DatabaseRepository databaseRepository;
+
+    @MockBean
+    private BrokerServiceGateway brokerServiceGateway;
+
+    @MockBean
+    private Channel channel;
+
+    @Autowired
+    private RabbitMqServiceImpl messageQueueService;
+
+    @Test
+    public void createExchange_fails() throws IOException {
+
+        /* mock */
+        doThrow(IOException.class)
+                .when(channel)
+                .exchangeDeclare(DATABASE_1_EXCHANGE, BuiltinExchangeType.DIRECT, true);
+
+        /* test */
+        assertThrows(AmqpException.class, () -> {
+            messageQueueService.createExchange(DATABASE_1, USER_1_PRINCIPAL);
+        });
+    }
+
+    @Test
+    public void deleteExchange_fails() throws IOException {
+
+        /* mock */
+        doThrow(IOException.class)
+                .when(channel)
+                .exchangeDelete(DATABASE_1_EXCHANGE);
+
+        /* test */
+        assertThrows(AmqpException.class, () -> {
+            messageQueueService.deleteExchange(DATABASE_1);
+        });
+    }
+
+}
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..47b5ac1742adaf04da731f43e77edbef3d124476
--- /dev/null
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/QueryStoreServiceIntegrationTest.java
@@ -0,0 +1,111 @@
+package at.tuwien.service;
+
+import at.tuwien.BaseUnitTest;
+import at.tuwien.config.DockerConfig;
+import at.tuwien.config.IndexConfig;
+import at.tuwien.config.ReadyConfig;
+import at.tuwien.entities.user.User;
+import at.tuwien.exception.*;
+import at.tuwien.mapper.DatabaseMapper;
+import at.tuwien.repository.jpa.*;
+import at.tuwien.service.impl.HibernateConnector;
+import at.tuwien.service.impl.QueryStoreServiceImpl;
+import com.mchange.v2.c3p0.ComboPooledDataSource;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+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;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+@Log4j2
+@SpringBootTest
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
+@ExtendWith(SpringExtension.class)
+public class QueryStoreServiceIntegrationTest extends BaseUnitTest {
+
+    @MockBean
+    private ReadyConfig readyConfig;
+
+    @MockBean
+    private IndexConfig indexConfig;
+
+    @MockBean
+    private Channel channel;
+
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private ContainerRepository containerRepository;
+
+    @Autowired
+    private ImageRepository imageRepository;
+
+    @Autowired
+    private DatabaseRepository databaseRepository;
+
+    @Autowired
+    private QueryStoreServiceImpl queryStoreService;
+
+    @Autowired
+    private DatabaseMapper databaseMapper;
+
+    @BeforeAll
+    public static void beforeAll() throws InterruptedException {
+        /* create network */
+        DockerConfig.createAllNetworks();
+        /* create container */
+        DockerConfig.createContainer(null, CONTAINER_1, CONTAINER_1_ENV);
+        DockerConfig.startContainer(CONTAINER_1);
+    }
+
+    @BeforeEach
+    public void beforeEach() {
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1);
+        imageRepository.save(IMAGE_1);
+        containerRepository.save(CONTAINER_1_SIMPLE);
+        databaseRepository.save(DATABASE_1_SIMPLE);
+    }
+
+    @AfterAll
+    public static void afterAll() {
+        DockerConfig.removeAllContainers();
+        DockerConfig.removeAllNetworks();
+    }
+
+    @Test
+    public void create_succeeds() throws UserNotFoundException, QueryStoreException, DatabaseConnectionException,
+            DatabaseNotFoundException, DatabaseMalformedException {
+
+        /* test */
+        queryStoreService.create(CONTAINER_1_ID, DATABASE_1_ID, USER_1_PRINCIPAL);
+    }
+
+    @Test
+    public void executeQuery_succeeds() throws SQLException {
+        final User root = databaseMapper.containerToPrivilegedUser(CONTAINER_1);
+        final ComboPooledDataSource dataSource = HibernateConnector.getDataSource(CONTAINER_1_IMAGE, CONTAINER_1, DATABASE_1, root);
+
+        /* test */
+        try {
+            final Connection connection = dataSource.getConnection();
+            queryStoreService.executeQuery(connection, "SELECT 1");
+        } finally {
+            dataSource.close();
+        }
+    }
+}
diff --git a/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6c4c0d0b74bc6b2d2b414adfe87accd87f2c93b4
--- /dev/null
+++ b/dbrepo-database-service/rest-service/src/test/java/at/tuwien/service/UserServiceIntegrationTest.java
@@ -0,0 +1,92 @@
+package at.tuwien.service;
+
+import at.tuwien.BaseUnitTest;
+import at.tuwien.config.IndexConfig;
+import at.tuwien.config.ReadyConfig;
+import at.tuwien.entities.database.License;
+import at.tuwien.entities.user.User;
+import at.tuwien.exception.LicenseNotFoundException;
+import at.tuwien.exception.UserNotFoundException;
+import at.tuwien.repository.jpa.LicenseRepository;
+import at.tuwien.repository.jpa.RealmRepository;
+import at.tuwien.repository.jpa.UserRepository;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+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;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+@Log4j2
+@SpringBootTest
+@ExtendWith(SpringExtension.class)
+public class UserServiceIntegrationTest extends BaseUnitTest {
+
+    @MockBean
+    private ReadyConfig readyConfig;
+
+    @MockBean
+    private IndexConfig indexConfig;
+
+    @MockBean
+    private Channel channel;
+
+    @Autowired
+    private RealmRepository realmRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private UserService userService;
+
+    @BeforeEach
+    public void beforeEach() {
+        realmRepository.save(REALM_DBREPO);
+        userRepository.save(USER_1);
+    }
+
+    @Test
+    public void findByUsername_succeeds() throws UserNotFoundException {
+
+        /* test */
+        final User response = userService.findByUsername(USER_1_USERNAME);
+        assertEquals(USER_1_ID, response.getId());
+    }
+
+    @Test
+    public void findByUsername_fails() {
+
+        /* test */
+        assertThrows(UserNotFoundException.class, () -> {
+            userService.findByUsername("notexisting");
+        });
+    }
+
+    @Test
+    public void find_succeeds() throws UserNotFoundException {
+
+        /* test */
+        final User response = userService.find(USER_1_ID);
+        assertEquals(USER_1_ID, response.getId());
+    }
+
+    @Test
+    public void find_fails() {
+
+        /* test */
+        assertThrows(UserNotFoundException.class, () -> {
+            userService.find(UUID.fromString("deadbeef-20bc-4191-acb2-77a3afcae32f"));
+        });
+    }
+
+}
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/DatabaseService.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/DatabaseService.java
index 6b5efff253ed7d4ec815edbdc3ed8de6d7360746..e10324b97ac79ec7c69e15cf0b401fde75a36a7c 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/DatabaseService.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/DatabaseService.java
@@ -5,10 +5,12 @@ import at.tuwien.api.database.DatabaseModifyVisibilityDto;
 import at.tuwien.api.database.DatabaseTransferDto;
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.*;
+import org.springframework.stereotype.Service;
 
 import java.security.Principal;
 import java.util.List;
 
+@Service
 public interface DatabaseService {
 
     /**
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/IdentifierService.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/IdentifierService.java
index a60abddb2bf996f01c0aaf0b6ebe99e774775080..2059be0057c18c93df7843c7956ef3ff77abcffc 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/IdentifierService.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/IdentifierService.java
@@ -9,7 +9,12 @@ import java.util.List;
 
 @Service
 public interface IdentifierService {
-    List<Identifier> findAll(Long databaseId);
 
-    Identifier find(Long databaseId, IdentifierType type) throws IdentifierNotFoundException;
+    /**
+     * Finds all identifiers in the metadata database for a database with given id.
+     *
+     * @param databaseId The database id.
+     * @return The list of identifiers.
+     */
+    List<Identifier> findAll(Long databaseId);
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/QueryStoreService.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/QueryStoreService.java
index 4762de2c2443bf90bb5df04c3db4fc2e9b323899..308ebfed90037615d126f118d6f0c80c4595da12 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/QueryStoreService.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/QueryStoreService.java
@@ -6,5 +6,17 @@ import java.security.Principal;
 
 public interface QueryStoreService {
 
+    /**
+     * Creates the query store in the database with given container id.
+     *
+     * @param containerId The container id.
+     * @param databaseId  The database id.
+     * @param principal   The principal of the user.
+     * @throws DatabaseNotFoundException
+     * @throws DatabaseConnectionException
+     * @throws DatabaseMalformedException
+     * @throws UserNotFoundException
+     * @throws QueryStoreException
+     */
     void create(Long containerId, Long databaseId, Principal principal) throws DatabaseNotFoundException, DatabaseConnectionException, DatabaseMalformedException, UserNotFoundException, QueryStoreException;
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
index 39532d846313238c616c801c97aea666959ee4aa..b5629aa17ab6d341161598ce1fb02ec7285fcc36 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/HibernateConnector.java
@@ -12,11 +12,11 @@ import org.springframework.stereotype.Service;
 @Service
 public abstract class HibernateConnector {
 
-    protected static ComboPooledDataSource getDataSource(ContainerImage image, Container container, User user) {
+    public static ComboPooledDataSource getDataSource(ContainerImage image, Container container, User user) {
         return getDataSource(image, container, null, user);
     }
 
-    protected static ComboPooledDataSource getDataSource(ContainerImage image, Container container, Database database,
+    public static ComboPooledDataSource getDataSource(ContainerImage image, Container container, Database database,
                                                          User user) {
         final ComboPooledDataSource dataSource = new ComboPooledDataSource();
         dataSource.setJdbcUrl(url(image, container, database));
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 988e18fb8ccf2c55159d3c9cd3a4bb1ed34ce36d..687a630b49e1359158528685a0cae8e691b2fc5d 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -28,13 +28,4 @@ public class IdentifierServiceImpl implements IdentifierService {
         return identifierRepository.findByDatabaseId(databaseId);
     }
 
-    @Override
-    public Identifier find(Long databaseId, IdentifierType type) throws IdentifierNotFoundException {
-        final Optional<Identifier> optional = identifierRepository.findByDatabaseIdAndType(databaseId, type);
-        if (optional.isEmpty()) {
-            throw new IdentifierNotFoundException("Failed to find identifier");
-        }
-        return optional.get();
-    }
-
 }
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
index 69b821408c10d2cf1fe200ed8ca42805ce11fba5..3723ccaae88b0ad247a4be97e018962c48ae918e 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
@@ -65,8 +65,8 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
             database = databaseRepository.findPublicOrMine(containerId, databaseId, principal.getName());
         }
         if (database.isEmpty()) {
-            log.error("Failed to find database");
-            throw new DatabaseNotFoundException("Failed to find database");
+            log.error("Failed to find database with id {}", databaseId);
+            throw new DatabaseNotFoundException("Failed to find database with id "+ databaseId);
         }
         return database.get();
     }
@@ -77,7 +77,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
         final Optional<Database> database = databaseRepository.findById(databaseId);
         if (database.isEmpty()) {
             log.error("Failed to find database with id {}", databaseId);
-            throw new DatabaseNotFoundException("could not find database with this id");
+            throw new DatabaseNotFoundException("could not find database with id " + databaseId);
         }
         return database.get();
     }
@@ -180,6 +180,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
     }
 
     @Override
+    @Transactional
     public Database transfer(Long containerId, Long databaseId, DatabaseTransferDto transferDto)
             throws DatabaseNotFoundException, UserNotFoundException {
         /* check */
diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
index d0d8d1e78d110a289ab6173d9b229b9cb4c9b9ef..9c3eac20db9feb5617548c32190f845fabba156e 100644
--- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
+++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/QueryStoreServiceImpl.java
@@ -11,6 +11,7 @@ import com.mchange.v2.c3p0.ComboPooledDataSource;
 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.io.IOException;
 import java.security.Principal;
@@ -32,6 +33,7 @@ public class QueryStoreServiceImpl extends HibernateConnector implements QuerySt
     }
 
     @Override
+    @Transactional(rollbackFor = DatabaseMalformedException.class)
     public void create(Long containerId, Long databaseId, Principal principal) throws DatabaseNotFoundException,
             DatabaseConnectionException, DatabaseMalformedException, UserNotFoundException, QueryStoreException {
         final Database database = databaseService.findById(containerId, databaseId);
@@ -56,19 +58,10 @@ public class QueryStoreServiceImpl extends HibernateConnector implements QuerySt
         log.trace("created query store in database {}", database);
     }
 
-    private void executeQuery(Connection connection, String statement, String... data) throws SQLException {
+    public void executeQuery(Connection connection, String statement) throws SQLException {
         log.debug("execute query, statement={}", statement);
         final PreparedStatement pstmt = connection.prepareStatement(statement);
-        if (data.length > 0) {
-            for (int i = 0; i < data.length; i++) {
-                pstmt.setString(i, data[i]);
-            }
-        }
         pstmt.executeUpdate();
     }
 
-    private void executeQuery(Connection connection, String statement) throws SQLException {
-        executeQuery(connection, statement, new String[]{});
-    }
-
 }
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
index 9fb7d40bbf55889d576f4e526ea7a578b34e18fd..c2e510881d7cd71f7d2b342e55618bec9f797312 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
@@ -38,7 +38,7 @@ public class Container {
     @Type(type = "uuid-char")
     private UUID createdBy;
 
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "createdBy", referencedColumnName = "ID", insertable = false, updatable = false)
     })
@@ -49,7 +49,7 @@ public class Container {
     @Type(type = "uuid-char")
     private UUID ownedBy;
 
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "ownedBy", referencedColumnName = "ID", insertable = false, updatable = false)
     })
@@ -72,7 +72,7 @@ public class Container {
 
     @ToString.Exclude
     @org.springframework.data.annotation.Transient
-    @OneToOne(fetch = FetchType.LAZY)
+    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
     })
diff --git a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
index c02cf1a3ca0cc070d5ed0d1251b58e0e6eca440c..01c73861237606f8dacdd2af0a4206ac53c1ebb2 100644
--- a/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
+++ b/dbrepo-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
@@ -41,7 +41,7 @@ public class Database implements Serializable {
     private UUID createdBy;
 
     @Type(type = "uuid-char")
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "created_by", referencedColumnName = "ID", insertable = false, updatable = false)
     })
@@ -52,7 +52,7 @@ public class Database implements Serializable {
     @Type(type = "uuid-char")
     private UUID ownedBy;
 
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "owned_by", referencedColumnName = "ID", insertable = false, updatable = false)
     })
@@ -60,7 +60,7 @@ public class Database implements Serializable {
 
     @ToString.Exclude
     @org.springframework.data.annotation.Transient
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
     })
@@ -84,13 +84,13 @@ public class Database implements Serializable {
     private UUID contactPerson;
 
     @Type(type = "uuid-char")
-    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
     @JoinColumns({
             @JoinColumn(name = "contact_person", referencedColumnName = "ID", updatable = false, insertable = false)
     })
     private User contact;
 
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
     @JoinColumnsOrFormulas({
             @JoinColumnOrFormula(formula = @JoinFormula(value = "'DATABASE'", referencedColumnName = "identifier_type")),
             @JoinColumnOrFormula(column = @JoinColumn(name = "id", referencedColumnName = "dbid", insertable = false, updatable = false)),
@@ -99,7 +99,7 @@ public class Database implements Serializable {
 
     @ToString.Exclude
     @org.springframework.data.annotation.Transient
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "tdbid", referencedColumnName = "id", insertable = false, updatable = false)
     })
@@ -107,7 +107,7 @@ public class Database implements Serializable {
 
     @ToString.Exclude
     @org.springframework.data.annotation.Transient
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "vdbid", referencedColumnName = "id", insertable = false, updatable = false)
     })
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 a3284343c9d2086447f4cef505fc8c42138119e3..1442173ab7e65a82d6da4e77d2439e7891f0ff4f 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
@@ -4204,7 +4204,7 @@ public abstract class BaseTest {
     public final static String IDENTIFIER_1_NORMALIZED = QUERY_1_STATEMENT;
     public final static Long IDENTIFIER_1_RESULT_NUMBER = QUERY_1_RESULT_NUMBER;
     public final static String IDENTIFIER_1_PUBLISHER = "Austrian Government";
-    public final static IdentifierType IDENTIFIER_1_TYPE = IdentifierType.SUBSET;
+    public final static IdentifierType IDENTIFIER_1_TYPE = IdentifierType.DATABASE;
     public final static IdentifierTypeDto IDENTIFIER_1_TYPE_DTO = IdentifierTypeDto.DATABASE;
     public final static UUID IDENTIFIER_1_CREATED_BY = USER_1_ID;
     public final static User IDENTIFIER_1_CREATOR = USER_1;