diff --git a/fda-database-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/fda-database-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
index 72decb4b524d3f3ebb7fd78449316b341a1db7f5..028a2326f6d74fa205e138ce828da4d0c225be88 100644
--- a/fda-database-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
+++ b/fda-database-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java
@@ -1,11 +1,18 @@
 package at.tuwien;
 
+import at.tuwien.api.database.DatabaseCreateDto;
+import at.tuwien.api.database.DatabaseModifyDto;
+import at.tuwien.api.database.LanguageTypeDto;
+import at.tuwien.api.database.LicenseDto;
 import at.tuwien.entities.container.Container;
 import at.tuwien.entities.container.image.ContainerImage;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
 import at.tuwien.entities.container.image.ContainerImageEnvironmentItemType;
 import at.tuwien.entities.database.Database;
+import at.tuwien.entities.database.License;
 import at.tuwien.entities.database.table.Table;
+import at.tuwien.entities.user.User;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.test.context.TestPropertySource;
 
 import java.time.Instant;
@@ -22,7 +29,26 @@ public abstract class BaseUnitTest {
     public final static String BROKER_IMAGE = "rabbitmq";
     public final static String BROKER_TAG = "3-alpine";
 
+    public final static String SEARCH_NAME = "fda-search-mock-service";
+    public final static String SEARCH_IP = "172.29.0.3";
+    public final static String SEARCH_HOSTNAME = "fda-search-mock-service";
+    public final static String SEARCH_IMAGE = "elasticsearch";
+    public final static String SEARCH_TAG = "7.13.4";
+
+    public final static Long USER_1_ID = 1L;
     public final static String USER_1_USERNAME = "junit";
+    public final static String USER_1_PASSWORD = "junit";
+    public final static String USER_1_EMAIL = "junit@ossdip.at";
+    public final static Boolean USER_1_VERIFIED = true;
+    public final static Boolean USER_1_THEME = false;
+
+    public final static User USER_1 = User.builder()
+            .id(USER_1_ID)
+            .username(USER_1_USERNAME)
+            .email(USER_1_EMAIL)
+            .emailVerified(USER_1_VERIFIED)
+            .themeDark(USER_1_THEME)
+            .build();
 
     public final static Long IMAGE_1_ID = 1L;
     public final static String IMAGE_1_REPOSITORY = "mariadb";
@@ -61,15 +87,50 @@ public abstract class BaseUnitTest {
                     .value("mariadb")
                     .build());
 
+    public final static String LICENSE_1_IDENTIFIER = "MIT";
+    public final static String LICENSE_1_URI = "https://opensource.org/licenses/MIT";
+
+    public final static License LICENSE_1 = License.builder()
+            .identifier(LICENSE_1_IDENTIFIER)
+            .uri(LICENSE_1_URI)
+            .build();
+
+    public final static LicenseDto LICENSE_1_DTO = LicenseDto.builder()
+            .identifier(LICENSE_1_IDENTIFIER)
+            .uri(LICENSE_1_URI)
+            .build();
+
     public final static Long DATABASE_1_ID = 1L;
     public final static String DATABASE_1_NAME = "Weather";
     public final static String DATABASE_1_DESCRIPTION = "Weather somewhere in the world";
+    public final static String DATABASE_1_PUBLISHER = "TU Wien";
     public final static Boolean DATABASE_1_PUBLIC = false;
     public final static String DATABASE_1_INTERNALNAME = "weather";
     public final static String DATABASE_1_EXCHANGE = "fda." + DATABASE_1_INTERNALNAME;
     public final static Instant DATABASE_1_CREATED = Instant.now().minus(1, HOURS);
     public final static Instant DATABASE_1_UPDATED = Instant.now();
 
+    public final static DatabaseCreateDto DATABASE_1_CREATE = DatabaseCreateDto.builder()
+            .name(DATABASE_1_NAME)
+            .isPublic(DATABASE_1_PUBLIC)
+            .description(DATABASE_1_DESCRIPTION)
+            .build();
+
+    public final static DatabaseModifyDto DATABASE_1_UPDATE1 = DatabaseModifyDto.builder()
+            .isPublic(DATABASE_1_PUBLIC)
+            .description(DATABASE_1_DESCRIPTION)
+            .language(LanguageTypeDto.EN)
+            .build();
+
+    public final static DatabaseModifyDto DATABASE_1_UPDATE2 = DatabaseModifyDto.builder()
+            .isPublic(DATABASE_1_PUBLIC)
+            .description(DATABASE_1_DESCRIPTION)
+            .language(LanguageTypeDto.EN)
+            .license(LICENSE_1_DTO)
+            .publication("2022-08-01")
+            .publisher(DATABASE_1_PUBLISHER)
+            .build();
+
     public final static Long DATABASE_2_ID = 2L;
     public final static String DATABASE_2_NAME = "Weather AT";
     public final static Boolean DATABASE_2_PUBLIC = false;
diff --git a/fda-database-service/rest-service/src/test/java/at/tuwien/config/DockerConfig.java b/fda-database-service/rest-service/src/test/java/at/tuwien/config/DockerConfig.java
index 24b6552decfef3ba6b4e7b4ef784fdff1f36b72c..5f06edcf8b7df9ce02bef91462a96a4fc3feb368 100644
--- a/fda-database-service/rest-service/src/test/java/at/tuwien/config/DockerConfig.java
+++ b/fda-database-service/rest-service/src/test/java/at/tuwien/config/DockerConfig.java
@@ -35,7 +35,7 @@ public class DockerConfig {
             .withDockerHttpClient(dockerHttpClient)
             .build();
 
-    public static void startContainer(Container container) throws InterruptedException {
+    public static void startContainer(Container container, Integer seconds) throws InterruptedException {
         final InspectContainerResponse inspect = dockerClient.inspectContainerCmd(container.getHash())
                 .exec();
         log.trace("container {} state {}", container.getHash(), inspect.getState().getStatus());
@@ -45,10 +45,14 @@ public class DockerConfig {
         log.trace("container {} needs to be started", container.getHash());
         dockerClient.startContainerCmd(container.getHash())
                 .exec();
-        Thread.sleep(12 * 1000L);
+        Thread.sleep(seconds * 1000L);
         log.debug("container {} was started", container.getHash());
     }
 
+    public static void startContainer(Container container) throws InterruptedException {
+        startContainer(container, 15);
+    }
+
     public static void createContainer(Container container) {
         final CreateContainerResponse response = dockerClient.createContainerCmd(container.getImage().getRepository() + ":" + container.getImage().getTag())
                 .withHostConfig(hostConfig.withNetworkMode("fda-userdb"))
@@ -73,4 +77,14 @@ public class DockerConfig {
         log.debug("container {} was stopped", container.getHash());
     }
 
+    public static void removeContainer(Container container) {
+        final InspectContainerResponse inspect = dockerClient.inspectContainerCmd(container.getHash())
+                .exec();
+        log.trace("container {} state {}", container.getHash(), inspect.getState().getStatus());
+        log.trace("container {} needs to be removed", container.getHash());
+        dockerClient.removeContainerCmd(container.getHash())
+                .exec();
+        log.debug("container {} was removed", container.getHash());
+    }
+
 }
diff --git a/fda-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java b/fda-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
index 5aba295e74ec5eab859e4a99b26ff9061d871b85..92867bd77b71ca49651213c39de5fdf087ebef46 100644
--- a/fda-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
+++ b/fda-database-service/rest-service/src/test/java/at/tuwien/service/DatabaseServiceIntegrationTest.java
@@ -8,13 +8,14 @@ import at.tuwien.entities.container.Container;
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.*;
 import at.tuwien.repository.elastic.DatabaseidxRepository;
-import at.tuwien.repository.jpa.ContainerRepository;
-import at.tuwien.repository.jpa.DatabaseRepository;
-import at.tuwien.repository.jpa.ImageRepository;
+import at.tuwien.repository.jpa.*;
 import at.tuwien.service.impl.HibernateConnector;
 import at.tuwien.service.impl.MariaDbServiceImpl;
 import com.github.dockerjava.api.command.CreateContainerResponse;
 import com.github.dockerjava.api.exception.NotModifiedException;
+import com.github.dockerjava.api.model.Bind;
+import com.github.dockerjava.api.model.ExposedPort;
+import com.github.dockerjava.api.model.HostConfig;
 import com.github.dockerjava.api.model.Network;
 import com.rabbitmq.client.Channel;
 import lombok.extern.log4j.Log4j2;
@@ -24,6 +25,7 @@ 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.security.crypto.password.PasswordEncoder;
 import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,8 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.security.Principal;
 import java.util.Optional;
 
-import static at.tuwien.config.DockerConfig.dockerClient;
-import static at.tuwien.config.DockerConfig.hostConfig;
+import static at.tuwien.config.DockerConfig.*;
 import static org.junit.jupiter.api.Assertions.*;
 
 @Log4j2
@@ -47,25 +48,28 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
     @MockBean
     private Channel channel;
 
-    @MockBean
-    private DatabaseidxRepository databaseidxRepository;
-
     @Autowired
     private ImageRepository imageRepository;
 
     @Autowired
-    private DatabaseRepository databaseRepository;
+    private MariaDbServiceImpl databaseService;
 
     @Autowired
-    private ContainerRepository containerRepository;
+    private UserRepository userRepository;
 
     @Autowired
-    private MariaDbServiceImpl databaseService;
+    private LicenseRepository licenseRepository;
+
+    @Autowired
+    private ContainerRepository containerRepository;
 
     @Autowired
-    private HibernateConnector hibernateConnector;
+    private PasswordEncoder passwordEncoder;
 
-    private static Container CONTAINER_BROKER;
+    private static final Container CONTAINER_SEARCH = Container.builder()
+            .name(SEARCH_NAME)
+            .internalName(SEARCH_NAME)
+            .build();
 
     @BeforeAll
     public static void beforeAll() throws InterruptedException {
@@ -86,46 +90,47 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
                 .withEnableIpv6(false)
                 .exec();
 
-        /* create amqp */
-        final CreateContainerResponse broker = dockerClient.createContainerCmd(BROKER_IMAGE + ":" + BROKER_TAG)
+        /* create elastic search */
+        final CreateContainerResponse search = dockerClient.createContainerCmd(SEARCH_IMAGE + ":" + SEARCH_TAG)
                 .withHostConfig(hostConfig.withNetworkMode("fda-public"))
-                .withName(BROKER_NAME)
-                .withIpv4Address(BROKER_IP)
-                .withHostName(BROKER_HOSTNAME)
+                .withName(SEARCH_NAME)
+                .withIpv4Address(SEARCH_IP)
+                .withHostName(SEARCH_HOSTNAME)
+                .withHostConfig(new HostConfig()
+                        .withPortBindings())
+                .withEnv("discovery.type=single-node", "ES_JAVA_OPTS=-Xms512m -Xmx512m", "logger.level=WARN")
                 .exec();
+        CONTAINER_SEARCH.setHash(search.getId());
+        /* start elastic search */
+        startContainer(CONTAINER_SEARCH, 30);
+    }
 
-        /* create mariadb */
-        final CreateContainerResponse container1 = dockerClient.createContainerCmd(IMAGE_1_REPOSITORY + ":" + IMAGE_1_TAG)
-                .withEnv(IMAGE_1_ENV)
+    @Transactional
+    @BeforeEach
+    public void beforeEach() throws InterruptedException {
+        /* create fda-userdb-u01 */
+        final CreateContainerResponse response1 = dockerClient.createContainerCmd(IMAGE_1_REPOSITORY + ":" + IMAGE_1_TAG)
                 .withHostConfig(hostConfig.withNetworkMode("fda-userdb"))
                 .withName(CONTAINER_1_NAME)
                 .withIpv4Address(CONTAINER_1_IP)
                 .withHostName(CONTAINER_1_INTERNALNAME)
+                .withEnv("MARIADB_ROOT_PASSWORD=mariadb", "MARIADB_USER=mariadb", "MARIADB_PASSWORD=mariadb")
                 .exec();
-        final CreateContainerResponse container2 = dockerClient.createContainerCmd(IMAGE_1_REPOSITORY + ":" + IMAGE_1_TAG)
-                .withEnv(IMAGE_2_ENV)
-                .withHostConfig(hostConfig.withNetworkMode("fda-userdb"))
-                .withName(CONTAINER_2_NAME)
-                .withIpv4Address(CONTAINER_2_IP)
-                .withHostName(CONTAINER_2_INTERNALNAME)
-                .exec();
-
-        /* start container */
-        CONTAINER_1.setHash(container1.getId());
-        CONTAINER_2.setHash(container2.getId());
-        CONTAINER_BROKER = Container.builder()
-                .hash(broker.getId())
-                .build();
+        CONTAINER_1.setHash(response1.getId());
+        /* start fda-userdb-u01 */
+        startContainer(CONTAINER_1);
+        /* metadata db */
+        licenseRepository.save(LICENSE_1);
+        containerRepository.save(CONTAINER_1);
+        USER_1.setPassword(passwordEncoder.encode(USER_1_PASSWORD));
+        userRepository.save(USER_1);
+        imageRepository.save(IMAGE_1);
     }
 
-    @Transactional
-    @BeforeEach
-    public void beforeEach() {
-        imageRepository.save(IMAGE_1);
-        DATABASE_1.setContainer(CONTAINER_1);
-        DATABASE_2.setContainer(CONTAINER_2);
-        databaseRepository.save(DATABASE_1);
-        databaseRepository.save(DATABASE_2);
+    @AfterEach
+    public void afterEach() {
+        stopContainer(CONTAINER_1);
+        removeContainer(CONTAINER_1);
     }
 
     @AfterAll
@@ -155,161 +160,46 @@ public class DatabaseServiceIntegrationTest extends BaseUnitTest {
                 });
     }
 
-//    @Transactional
-//    @Test
-//    public void create_succeeds() throws ImageNotSupportedException, ContainerNotFoundException,
-//            DatabaseMalformedException, AmqpException, ContainerConnectionException, InterruptedException,
-//            UserNotFoundException {
-//        final DatabaseCreateDto request = DatabaseCreateDto.builder()
-//                .name(DATABASE_1_NAME)
-//                .isPublic(DATABASE_1_PUBLIC)
-//                .build();
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_1);
-//
-//        /* test */
-//        final Database response = databaseService.create(CONTAINER_1_ID, request, principal);
-//        assertEquals(DATABASE_1_NAME, response.getName());
-//        assertEquals(DATABASE_1_PUBLIC, response.getIsPublic());
-//        assertEquals(CONTAINER_1_ID, response.getContainer().getId());
-//    }
-//
-//    @Test
-//    public void create_notFound_fails() throws InterruptedException {
-//        final DatabaseCreateDto request = DatabaseCreateDto.builder()
-//                .name(DATABASE_1_NAME)
-//                .isPublic(DATABASE_1_PUBLIC)
-//                .build();
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_1);
-//
-//        /* test */
-//        assertThrows(ContainerNotFoundException.class, () -> {
-//            databaseService.create(9999L, request, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void create_duplicate_fails() throws InterruptedException {
-//        final DatabaseCreateDto request = DatabaseCreateDto.builder()
-//                .name(DATABASE_1_NAME)
-//                .isPublic(DATABASE_1_PUBLIC)
-//                .build();
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_1);
-//
-//        /* test */
-//        assertThrows(DatabaseMalformedException.class, () -> {
-//            databaseService.create(CONTAINER_1_ID, request, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void create_notRunning_fails() throws InterruptedException {
-//        final DatabaseCreateDto request = DatabaseCreateDto.builder()
-//                .name(DATABASE_1_NAME)
-//                .isPublic(DATABASE_1_PUBLIC)
-//                .build();
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.stopContainer(CONTAINER_1);
-//
-//        /* test */
-//        assertThrows(ContainerConnectionException.class, () -> {
-//            databaseService.create(CONTAINER_1_ID, request, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void delete_succeeds() throws DatabaseNotFoundException, ImageNotSupportedException,
-//            DatabaseMalformedException, AmqpException, InterruptedException, ContainerConnectionException {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_2);
-//
-//        /* test */
-//        databaseService.delete(CONTAINER_2_ID, DATABASE_2_ID, principal);
-//        final Optional<Database> response = databaseRepository.findById(DATABASE_2_ID);
-//        assertTrue(response.isEmpty());
-//    }
-//
-//    @Test
-//    public void delete_notFound_fails() throws InterruptedException {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//
-//        /* test */
-//        assertThrows(DatabaseNotFoundException.class, () -> {
-//            databaseService.delete(CONTAINER_1_ID, 9999L, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void delete_notRunning_fails() throws InterruptedException {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.stopContainer(CONTAINER_1);
-//
-//        /* test */
-//        assertThrows(ContainerConnectionException.class, () -> {
-//            databaseService.delete(CONTAINER_1_ID, DATABASE_1_ID, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void modify_notFound_fails() {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* test */
-//        assertThrows(DatabaseNotFoundException.class, () -> {
-//            databaseService.delete(CONTAINER_1_ID, 9999L, principal);
-//        });
-//    }
-//
-//    @Test
-//    public void find_succeeds() throws DatabaseNotFoundException, InterruptedException {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_1);
-//
-//        /* test */
-//        final Database response = databaseService.findById(CONTAINER_1_ID, DATABASE_1_ID, principal);
-//        assertEquals(DATABASE_1_ID, response.getId());
-//        assertEquals(DATABASE_1_NAME, response.getName());
-//        assertEquals(DATABASE_1_PUBLIC, response.getIsPublic());
-//    }
-//
-//    @Test
-//    public void find_notFound_fails() throws InterruptedException {
-//        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
-//
-//        /* mock */
-//        DockerConfig.startContainer(CONTAINER_BROKER);
-//        DockerConfig.startContainer(CONTAINER_1);
-//
-//        /* test */
-//        assertThrows(DatabaseNotFoundException.class, () -> {
-//            databaseService.findById(CONTAINER_1_ID, 9999L, principal);
-//        });
-//    }
+    @Test
+    public void create_succeeds() throws UserNotFoundException, DatabaseNameExistsException,
+            DatabaseConnectionException, QueryMalformedException, ImageNotSupportedException, AmqpException,
+            ContainerNotFoundException, ContainerConnectionException, DatabaseMalformedException {
+        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
+
+        /* test */
+        databaseService.create(CONTAINER_1_ID, DATABASE_1_CREATE, principal);
+    }
+
+    @Test
+    public void update_succeeds() throws UserNotFoundException, DatabaseNameExistsException,
+            DatabaseConnectionException, QueryMalformedException, ImageNotSupportedException, AmqpException,
+            ContainerNotFoundException, ContainerConnectionException, DatabaseMalformedException,
+            LicenseNotFoundException, DatabaseNotFoundException {
+
+        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
+
+        /* mock */
+        databaseService.create(CONTAINER_1_ID, DATABASE_1_CREATE, principal);
+
+        /* test */
+        databaseService.modify(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_UPDATE1);
+    }
+
+    @Test
+    public void update_license_succeeds() throws UserNotFoundException, DatabaseNameExistsException,
+            DatabaseConnectionException, QueryMalformedException, ImageNotSupportedException, AmqpException,
+            ContainerNotFoundException, ContainerConnectionException, DatabaseMalformedException,
+            LicenseNotFoundException, DatabaseNotFoundException {
+
+        final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
+
+        /* mock */
+        databaseService.create(CONTAINER_1_ID, DATABASE_1_CREATE, principal);
+
+        /* test */
+        databaseService.modify(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_UPDATE1);
+        databaseService.modify(CONTAINER_1_ID, DATABASE_1_ID, DATABASE_1_UPDATE2);
+        log.trace("");
+    }
 
 }
diff --git a/fda-database-service/rest-service/src/test/resources/application.properties b/fda-database-service/rest-service/src/test/resources/application.properties
index c62372cb85f685babd35737f4b0e26aa8d7a1dcc..7676dffdf898557eec4630f71def8b976a3779c4 100644
--- a/fda-database-service/rest-service/src/test/resources/application.properties
+++ b/fda-database-service/rest-service/src/test/resources/application.properties
@@ -1,5 +1,3 @@
-spring.profiles.active=test-noelastic
-
 # disable discovery
 spring.cloud.discovery.enabled = false
 
diff --git a/fda-database-service/services/src/main/java/at/tuwien/config/SecurityConfig.java b/fda-database-service/services/src/main/java/at/tuwien/config/SecurityConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..03be90470ff1e54aef7a608f89490f45b9736f17
--- /dev/null
+++ b/fda-database-service/services/src/main/java/at/tuwien/config/SecurityConfig.java
@@ -0,0 +1,16 @@
+package at.tuwien.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+@Configuration
+public class SecurityConfig {
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
+    }
+
+}
diff --git a/fda-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/fda-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
index d0a8ffabbc84c3ff9bc2807cace12da272f3f84d..bcf28c23b44a07dabcfd299e16f5728f4a529066 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
@@ -130,6 +130,10 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
         databaseRepository.deleteById(databaseId);
         log.info("Deleted database with id {}", databaseId);
         log.debug("deleted database {}", database);
+        // delete in database_index - elastic search
+        databaseidxRepository.delete(database);
+        log.info("Deleted database in elastic search with id {}", databaseId);
+        log.debug("deleted database in elastic search {}", database);
     }
 
     @Override
@@ -158,9 +162,9 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
             final PreparedStatement preparedStatement1 = databaseMapper.imageToRawGrantReadonlyAccessQuery(connection);
             preparedStatement1.executeUpdate();
         } catch (SQLException e) {
-            log.error("Failed to delete database");
-            log.debug("failed to delete database {}, reason: {}", database, e.getMessage());
-            throw new DatabaseMalformedException("Failed to execute and map time-versioned query", e);
+            log.error("Failed to create database");
+            log.debug("failed to create database {}, reason: {}", database, e.getMessage());
+            throw new DatabaseMalformedException("Failed to execute query", e);
         } finally {
             dataSource.close();
         }
@@ -170,12 +174,14 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
         database.setIsPublic(createDto.getIsPublic());
         final User creator = userService.findByUsername(principal.getName());
         database.setCreator(creator);
-        final Database out = databaseRepository.save(database);
-        log.info("Created database with id {}", out.getId());
-        log.debug("created database {}", out);
+        final Database dbdb = databaseRepository.save(database);
+        log.info("Created database with id {}", dbdb.getId());
+        log.debug("created database {}", dbdb);
         // save in database_index - elastic search
-//        databaseidxRepository.save(database);
-        return out;
+        final Database edb = databaseidxRepository.save(database);
+        log.info("Saved database in elastic search with id {}", edb.getId());
+        log.debug("saved database in elastic search {}", edb);
+        return dbdb;
     }
 
     @Override
@@ -186,20 +192,27 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
         if (modifyDto.getContactPerson() != null) {
             database.setContact(userService.findByUsername(modifyDto.getContactPerson()));
         }
-        final License license = licenseService.find(modifyDto.getLicense().getIdentifier());
+        if (modifyDto.getLicense() != null) {
+            final License license = licenseService.find(modifyDto.getLicense().getIdentifier());
+            log.info("Found license with identifier {}", modifyDto.getLicense().getIdentifier());
+            log.debug("found license {}", license);
+            database.setLicense(license);
+        }
         database.setIsPublic(modifyDto.getIsPublic());
         database.setDescription(modifyDto.getDescription());
         database.setPublisher(modifyDto.getPublisher());
         database.setPublication(modifyDto.getPublication());
         database.setLanguage(databaseMapper.languageTypeDtoToLanguageType(modifyDto.getLanguage()));
-        database.setLicense(license);
-        final Database out = databaseRepository.save(database);
+
+        final Database dbdb = databaseRepository.save(database);
         /* update entity in metadata database */
-        log.info("Updated database with id {}", out.getId());
-        log.debug("updated database {}", out);
+        log.info("Updated database with id {}", dbdb.getId());
+        log.debug("updated database {}", dbdb);
         // save in database_index - elastic search
-//        databaseidxRepository.save(database);
-        return out;
+        final Database edb = databaseidxRepository.save(database);
+        log.info("Updated database in elastic search with id {}", edb.getId());
+        log.debug("updated database in elastic search {}", edb);
+        return dbdb;
     }
 
 }
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
index 3eaeab9814cbb17c46ec5f49413c3d7955dfa40c..b19146c73198e458bfb3ed9fa0cd1db0e16aef8a 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/Container.java
@@ -57,6 +57,7 @@ public class Container {
     @Column
     private Integer port;
 
+    @org.springframework.data.annotation.Transient
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
             @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
index 074e85b93deb629da3319d7fbc5efb58f2b61672..7fc86a733a46b644b11dae20ed8fe573e4a195d8 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImage.java
@@ -72,6 +72,7 @@ public class ContainerImage {
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "image")
     private List<ContainerImageDate> dateFormats;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE, mappedBy = "image")
     private List<Container> containers;
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
index 291dfba76472f352c966b655c21ac2c4b89b3500..48a8d47a4b3e23756fdf49ae3160bc0b45d16aba 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/container/image/ContainerImageDate.java
@@ -34,6 +34,7 @@ public class ContainerImageDate {
     @Column(name = "iid")
     private Long iid;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumn(name = "iid", insertable = false, updatable = false)
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
index eb2762de3534dd5baed3b1ee376ae28e95becf49..e14ed74682e8cd73824ee343d5970ce2e8c096b9 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/Database.java
@@ -10,8 +10,6 @@ import org.hibernate.annotations.Where;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.elasticsearch.annotations.Document;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
@@ -33,7 +31,6 @@ import java.util.List;
 })
 public class Database {
 
-    @Field(type = FieldType.Integer)
     @Id
     @EqualsAndHashCode.Include
     @GeneratedValue(generator = "database-sequence")
@@ -44,14 +41,12 @@ public class Database {
     )
     private Long id;
 
-    @Field(index = false)
     @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "Creator", referencedColumnName = "UserID")
     })
     private User creator;
 
-    @Field(index = false)
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
@@ -59,61 +54,49 @@ public class Database {
     })
     private Container container;
 
-    @Field(type = FieldType.Text)
     @Column(nullable = false)
     private String name;
 
-    @Field(index = false)
     @ElementCollection
     @CollectionTable(name = "mdb_databases_subjects", joinColumns = {
             @JoinColumn(name = "dbid", referencedColumnName = "id")
     })
     private List<String> subjects;
 
-    @Field(type = FieldType.Text)
     @Column(nullable = false)
     private String internalName;
 
-    @Field(type = FieldType.Text)
     @Column(nullable = false)
     private String exchange;
 
-    @Field(type = FieldType.Text)
     @Column
     private String description;
 
-    @Field(type = FieldType.Text)
     @Column
     private String publisher;
 
-    @Field(type = FieldType.Text)
     @Column
     private String publication;
 
-    @Field(index = false)
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
             @JoinColumn(name = "contactperson", referencedColumnName = "UserID", insertable = false, updatable = false)
     })
     private User contact;
 
-    @Field(index = false)
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "tdbid", referencedColumnName = "id", insertable = false, updatable = false)
     })
     private List<Table> tables;
 
-    @Field(type = FieldType.Boolean)
     @Column(nullable = false)
     private Boolean isPublic;
 
-    @Field(index = false)
     @Column(columnDefinition = "enum('EN', 'DE', 'OTHER')")
     @Enumerated(EnumType.STRING)
     private LanguageType language;
 
-    @Field(index = false)
     @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
             @JoinColumn(name = "License", referencedColumnName = "identifier")
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
index 0f4d7fc31f6c456cbd7425362d6230c5c45569ad..e1bccd77dd8780b48210c3aefd4e636fa3590a79 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/Table.java
@@ -66,6 +66,7 @@ public class Table {
     @Column(name = "tdescription")
     private String description;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumn(name = "tdbid", insertable = false, updatable = false)
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
index 24addcc85b0d5943e7696529baf88cde84898515..ead88b6854c5955496c3f3b67f296d7e8f4a60b0 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/TableColumn.java
@@ -60,6 +60,7 @@ public class TableColumn implements Comparable<TableColumn> {
     @JoinColumn(name = "dfid", referencedColumnName = "id", insertable = false, updatable = false)
     private ContainerImageDate dateFormat;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinColumns({
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
index e77679a8d1069880edab878d53b79a8a1174666f..733b2c6b146340798d87381f979cc8e433c715b5 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/database/table/columns/concepts/Concept.java
@@ -27,6 +27,7 @@ public class Concept {
     @Column(name = "name", nullable = false)
     private String name;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
     @JoinTable(name = "mdb_columns_concepts",
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
index bb1ff1819109bcb24f9976b8d8c75ef9b2a57688..16f1a6385885b7978c1154ffab1436c05a1c1d08 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Creator.java
@@ -45,6 +45,7 @@ public class Creator {
     @Column
     private String orcid;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
     @JoinColumn(name = "pid", referencedColumnName = "id", insertable = false, updatable = false)
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/Token.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/Token.java
index 4c596a3aa67b5692c9c0ae753c03e3753b1b118e..55c5b25aadc4ffc82c43b1b1f08344cc4f6385a3 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/Token.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/Token.java
@@ -42,6 +42,7 @@ public class Token {
     @Column(nullable = false)
     private Boolean processed;
 
+    @org.springframework.data.annotation.Transient
     @ToString.Exclude
     @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
     @JoinColumns({
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
index 3dab1dcf848da3d5b51f9a2d163285318d682e84..ed8e20acddbe5d9b7129c35840afddac493dd2d5 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
@@ -1,6 +1,7 @@
 package at.tuwien.entities.user;
 
 import lombok.*;
+import org.hibernate.annotations.ColumnDefault;
 import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.annotation.CreatedDate;
 import org.springframework.data.annotation.LastModifiedDate;
diff --git a/fda-ui/layouts/default.vue b/fda-ui/layouts/default.vue
index 132f3ead0c48c307d6a029fe67fabcd2809bae20..9f186cbe423dd59ab2c484ec05938ce3463060c9 100644
--- a/fda-ui/layouts/default.vue
+++ b/fda-ui/layouts/default.vue
@@ -223,9 +223,15 @@ export default {
         console.debug('user data', res.data)
         this.user = res.data
       } catch (err) {
-        console.error('user data', err)
-        this.$toast.error('Failed to load user')
-        this.error = true
+        const { status } = err.response
+        if (status === 401) {
+          console.error('Token expired', err)
+          this.logout()
+        } else {
+          console.error('user data', err)
+          this.$toast.error('Failed to load user')
+          this.error = true
+        }
       }
       this.loadingUser = false
     },