diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
index f6cf096499a014d5ebdb132ddb195c292da7747b..2c467ed63b48861da03bb1ec0298b8724a63d7e4 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java
@@ -65,8 +65,6 @@ public class AccessServiceImpl implements AccessService {
     public DatabaseAccess create(Database database, User user, AccessTypeDto type) throws DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException {
-        /* create in data database */
-        dataServiceGateway.createAccess(database.getId(), user.getId(), type);
         /* create in metadata database */
         final DatabaseAccess access = DatabaseAccess.builder()
                 .hdbid(database.getId())
@@ -78,6 +76,8 @@ public class AccessServiceImpl implements AccessService {
         database.getAccesses()
                 .add(access);
         database = databaseRepository.save(database);
+        /* create in data database */
+        dataServiceGateway.createAccess(database.getId(), user.getId(), type);
         /* create in search service */
         searchServiceGateway.update(database);
         log.info("Created access to database with id {}", database.getId());
@@ -89,23 +89,25 @@ public class AccessServiceImpl implements AccessService {
     public void update(Database database, User user, AccessTypeDto access) throws DataServiceException,
             DataServiceConnectionException, AccessNotFoundException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException {
-        /* update in data database */
-        dataServiceGateway.updateAccess(database.getId(), user.getId(), access);
         /* update in metadata database */
-        final DatabaseAccess entity = DatabaseAccess.builder()
+        final int idx = database.getAccesses().indexOf(DatabaseAccess.builder()
                 .hdbid(database.getId())
                 .database(database)
                 .huserid(user.getId())
                 .user(user)
                 .type(metadataMapper.accessTypeDtoToAccessType(access))
-                .build();
-        final int idx = database.getAccesses().indexOf(entity);
+                .build());
         if (idx == -1) {
             log.error("Failed to update access");
             throw new AccessNotFoundException("Failed to find update access");
         }
+        final DatabaseAccess entity = database.getAccesses()
+                .get(idx);
+        entity.setType(metadataMapper.accessTypeDtoToAccessType(access));
         database.getAccesses().set(idx, entity);
         database = databaseRepository.save(database);
+        /* update in data database */
+        dataServiceGateway.updateAccess(database.getId(), user.getId(), access);
         /* update in search service */
         searchServiceGateway.update(database);
         log.info("Updated access to database with id {}", database.getId());
@@ -116,11 +118,11 @@ public class AccessServiceImpl implements AccessService {
     public void delete(Database database, User user) throws AccessNotFoundException, DataServiceException,
             DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException,
             SearchServiceConnectionException {
-        /* delete in data database */
-        dataServiceGateway.deleteAccess(database.getId(), user.getId());
         /* delete in metadata database */
         database.getAccesses().remove(find(database, user));
         databaseRepository.save(database);
+        /* delete in data database */
+        dataServiceGateway.deleteAccess(database.getId(), user.getId());
         /* update in search service */
         searchServiceGateway.update(databaseService.findById(database.getId()));
         log.info("Deleted access to database with id {}", database.getId());
diff --git a/dbrepo-ui/components/dialogs/EditAccess.vue b/dbrepo-ui/components/dialogs/EditAccess.vue
index 97f5dff00329699a5bb1aa1888356d9e72bb2bae..fc3054e1ca41c2697e91c038338b018482ccd135 100644
--- a/dbrepo-ui/components/dialogs/EditAccess.vue
+++ b/dbrepo-ui/components/dialogs/EditAccess.vue
@@ -160,12 +160,12 @@ export default {
       this.loading = true
       if (this.isModification) {
         if (this.modify.type === 'revoke') {
-          await this.revokeAccess()
+          this.revokeAccess()
         } else {
-          await this.modifyAccess()
+          this.modifyAccess()
         }
       } else {
-        await this.giveAccess()
+        this.giveAccess()
       }
     },
     revokeAccess () {
@@ -190,7 +190,7 @@ export default {
     },
     modifyAccess () {
       const accessService = useAccessService()
-      accessService.modify(this.$route.params.database_id, this.localUserId, this.modify)
+      accessService.update(this.$route.params.database_id, this.localUserId, this.modify)
         .then(() => {
           const toast = useToastInstance()
           toast.success(this.$t('success.access.modified'))