diff --git a/full/Changes b/full/Changes
index 30c8dee..c27dcc5 100644
--- a/full/Changes
+++ b/full/Changes
@@ -1,3 +1,9 @@
+# version 0.61.6
+04/02/2019
+   - Fixed SQL data and merged oauth2_client_url and oauth2_client (margaretha)
+   - Updated client deregistration behavior (margaretha)
+ 
+
 # version 0.61.5
 17/12/2018
    - Added a search timeout test (margaretha)
diff --git a/full/pom.xml b/full/pom.xml
index c01f914..325dbfe 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>de.ids_mannheim.korap</groupId>
 	<artifactId>Kustvakt-full</artifactId>
-	<version>0.61.5</version>
+	<version>0.61.6</version>
 	<properties>
 		<java.version>1.8</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -253,7 +253,7 @@
 		<dependency>
 			<groupId>mysql</groupId>
 			<artifactId>mysql-connector-java</artifactId>
-			<version>6.0.6</version>
+			<version>8.0.14</version>
 		</dependency>
 
 		<!-- Jersey -->
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
index 7a8e295..2b1ea1e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
@@ -35,7 +35,7 @@
         AccessToken accessToken = accessDao.retrieveAccessToken(authToken);
         if (accessToken.isRevoked()) {
             throw new KustvaktException(StatusCodes.INVALID_ACCESS_TOKEN,
-                    "Access token has been revoked");
+                    "Access token is invalid");
         }
 
         String scopes = scopeService
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
index 3a9b585..da65ccd 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
@@ -115,7 +115,7 @@
         }
         catch (NoResultException e) {
             throw new KustvaktException(StatusCodes.INVALID_ACCESS_TOKEN,
-                    "Access token is not found", OAuth2Error.INVALID_TOKEN);
+                    "Access token is invalid", OAuth2Error.INVALID_TOKEN);
         }
     }
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
index a3507b7..896d77b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
@@ -23,7 +23,6 @@
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.oauth2.constant.OAuth2ClientType;
 import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
-import de.ids_mannheim.korap.oauth2.entity.OAuth2ClientUrl;
 import de.ids_mannheim.korap.oauth2.entity.OAuth2Client_;
 import de.ids_mannheim.korap.oauth2.entity.RefreshToken;
 import de.ids_mannheim.korap.oauth2.entity.RefreshToken_;
@@ -59,12 +58,8 @@
         client.setName(name);
         client.setSecret(secretHashcode);
         client.setType(type);
-        if (urlHashCode != 0) {
-            OAuth2ClientUrl clientUrl = new OAuth2ClientUrl();
-            clientUrl.setUrl(url);
-            clientUrl.setUrlHashCode(urlHashCode);
-            client.setClientUrl(clientUrl);
-        }
+        client.setUrl(url);
+        client.setUrlHashCode(urlHashCode);
         client.setRedirectURI(redirectURI);
         client.setRegisteredBy(registeredBy);
         client.setDescription(description);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
index 5e2c929..6db32b1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
@@ -2,16 +2,13 @@
 
 import java.util.List;
 
-import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.FetchType;
 import javax.persistence.Id;
-import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
 import javax.persistence.Table;
 
 import de.ids_mannheim.korap.oauth2.constant.OAuth2ClientType;
@@ -40,9 +37,9 @@
     private String registeredBy;
     private String description;
 
-    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-    @JoinColumn(name = "url_id")
-    private OAuth2ClientUrl clientUrl;
+    private String url;
+    @Column(name = "url_hashcode")
+    private int urlHashCode;
 
     @OneToMany(fetch = FetchType.LAZY, mappedBy = "client")
     private List<RefreshToken> refreshTokens;
@@ -55,6 +52,11 @@
                 + ", description=" + description;
     }
 
+    @Override
+    public int compareTo (OAuth2Client o) {
+        return this.getName().compareTo(o.getName());
+    }
+    
     public boolean isSuper () {
         return isSuper;
     }
@@ -119,16 +121,19 @@
         this.description = description;
     }
 
-    public OAuth2ClientUrl getClientUrl () {
-        return clientUrl;
+    public String getUrl () {
+        return url;
     }
 
-    public void setClientUrl (OAuth2ClientUrl clientUrl) {
-        this.clientUrl = clientUrl;
+    public void setUrl (String url) {
+        this.url = url;
     }
 
-    @Override
-    public int compareTo (OAuth2Client o) {
-        return this.getName().compareTo(o.getName());
+    public int getUrlHashCode () {
+        return urlHashCode;
+    }
+
+    public void setUrlHashCode (int urlHashCode) {
+        this.urlHashCode = urlHashCode;
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java
deleted file mode 100644
index 0ab27c1..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package de.ids_mannheim.korap.oauth2.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/** Describes oauth2_client_url database table mapping
- * 
- * @author margaretha
- *
- */
-@Getter
-@Setter
-@Entity
-@Table(name = "oauth2_client_url")
-public class OAuth2ClientUrl {
-
-    @Id
-    @Column(name = "url_hashcode")
-    private int urlHashCode;
-    private String url;
-
-    @Override
-    public String toString () {
-        return "url_hashcode="+urlHashCode+", url=" + url;
-    }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
index dbe097c..fb7e5ea 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
@@ -84,7 +84,7 @@
         int urlHashCode = 0;
         if (url != null && !url.isEmpty()) {
             urlHashCode = clientJson.getUrl().hashCode();
-            if (!redirectURIValidator.isValid(url)) {
+            if (!urlValidator.isValid(url)) {
                 throw new KustvaktException(StatusCodes.INVALID_ARGUMENT,
                         url + " is invalid.", OAuth2Error.INVALID_REQUEST);
             }
@@ -92,7 +92,7 @@
 
         String redirectURI = clientJson.getRedirectURI();
         if (redirectURI != null && !redirectURI.isEmpty()
-                && !urlValidator.isValid(redirectURI)) {
+                && !redirectURIValidator.isValid(redirectURI)) {
             throw new KustvaktException(StatusCodes.INVALID_ARGUMENT,
                     redirectURI + " is invalid.", OAuth2Error.INVALID_REQUEST);
         }
@@ -192,8 +192,8 @@
         if (adminDao.isAdmin(username)
                 || client.getRegisteredBy().equals(username)) {
 
-            clientDao.deregisterClient(client);
             revokeAllAuthorizationsByClientId(clientId);
+            clientDao.deregisterClient(client);
         }
         else {
             throw new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
diff --git a/full/src/main/resources/db/mysql/V1.4__oauth2_tables.sql b/full/src/main/resources/db/mysql/V1.4__oauth2_tables.sql
index 9469f8a..ff575ee 100644
--- a/full/src/main/resources/db/mysql/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/mysql/V1.4__oauth2_tables.sql
@@ -1,10 +1,5 @@
 -- EM: modified from Michael Hanl version
 
-CREATE TABLE IF NOT EXISTS oauth2_client_url (
-	url_hashcode INTEGER PRIMARY KEY NOT NULL,	
-	url TEXT DEFAULT NULL	
-);
-
 -- oauth2 db tables
 CREATE TABLE IF NOT EXISTS oauth2_client (
 	id VARCHAR(100) PRIMARY KEY NOT NULL,
@@ -15,9 +10,9 @@
 	redirect_uri TEXT DEFAULT NULL,
 	description VARCHAR(250) NOT NULL,
 	registered_by VARCHAR(100) NOT NULL,
-	url_id INTEGER,
-	FOREIGN KEY (url_id)
-	   REFERENCES oauth2_client_url(url_hashcode)
+	url_hashcode INTEGER NOT NULL,	
+	url TEXT DEFAULT NULL,
+	UNIQUE INDEX unique_url(url_hashcode)
 );
 
 CREATE TABLE IF NOT EXISTS oauth2_access_scope (
@@ -58,12 +53,15 @@
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
 	token VARCHAR(255) NOT NULL,
 	user_id VARCHAR(100) DEFAULT NULL,
-	client_id VARCHAR(100) DEFAULT NULL,
+	user_auth_time TIMESTAMP NOT NULL,
 	created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 	expiry_date TIMESTAMP NULL,
 	is_revoked BOOLEAN DEFAULT 0,
-	FOREIGN KEY (client_id)
+	client VARCHAR(100) NOT NULL,
+	FOREIGN KEY (client)
 	   REFERENCES oauth2_client(id)
+	   -- these will delete all refresh tokens related to the client
+	   ON DELETE CASCADE
 );
 
 CREATE TABLE oauth2_refresh_token_scope (
@@ -83,7 +81,9 @@
 	user_auth_time TIMESTAMP NULL,
     refresh_token INTEGER DEFAULT NULL,
 	FOREIGN KEY (client_id)
-	   REFERENCES oauth2_client(id),
+	   REFERENCES oauth2_client(id)
+	   -- these will delete all access tokens related to the client
+	   ON DELETE CASCADE,
 	FOREIGN KEY (refresh_token)
 	   REFERENCES oauth2_refresh_token(id)
 );
diff --git a/full/src/main/resources/db/mysql/V1.6__user_tables.sql b/full/src/main/resources/db/mysql/V1.6__user_tables.sql
new file mode 100644
index 0000000..9df4a20
--- /dev/null
+++ b/full/src/main/resources/db/mysql/V1.6__user_tables.sql
@@ -0,0 +1,4 @@
+CREATE TABLE IF NOT EXISTS default_setting (
+    username VARCHAR(100) PRIMARY KEY,
+    settings TEXT NOT NULL
+);
\ No newline at end of file
diff --git a/full/src/main/resources/db/mysql/V1__create_tables.sql b/full/src/main/resources/db/mysql/V1__create_tables.sql
index 8217c27..b4572ec 100644
--- a/full/src/main/resources/db/mysql/V1__create_tables.sql
+++ b/full/src/main/resources/db/mysql/V1__create_tables.sql
@@ -2,34 +2,48 @@
 CREATE TABLE IF NOT EXISTS annotation(
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
 	code VARCHAR(20) NOT NULL,
-	type VARCHAR(20) NOT NULL,	
+	type VARCHAR(20) NOT NULL,
+	text VARCHAR(20) NULL,
 	description VARCHAR(100) NOT NULL,
 	de_description VARCHAR(100),
 	UNIQUE INDEX unique_index (code, type)
 );
 
-CREATE TABLE IF NOT EXISTS annotation_pair(
+CREATE TABLE IF NOT EXISTS annotation_layer(
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
-	annotation1 INTEGER NOT NULL,
-	annotation2 INTEGER NOT NULL,
+	foundry_id INTEGER NOT NULL,
+	layer_id INTEGER NOT NULL,
 	description VARCHAR(300) NOT NULL,
-	UNIQUE INDEX unique_index (annotation1, annotation2),
-	FOREIGN KEY (annotation1)
+	UNIQUE INDEX unique_index (foundry_id, layer_id),
+	FOREIGN KEY (foundry_id)
 		REFERENCES annotation (id)
 		ON DELETE CASCADE,
-	FOREIGN KEY (annotation2)
+	FOREIGN KEY (layer_id)
 		REFERENCES annotation (id)
 		ON DELETE CASCADE
 	
 );
 
-CREATE TABLE IF NOT EXISTS annotation_pair_value(
+CREATE TABLE IF NOT EXISTS annotation_key(
 	id INTEGER PRIMARY KEY AUTO_INCREMENT,
-	pair_id INTEGER NOT NULL,
+	layer_id INTEGER NOT NULL,
+	key_id INTEGER NOT NULL,
+	UNIQUE INDEX unique_index (layer_id, key_id),
+	FOREIGN KEY (layer_id)
+		REFERENCES annotation_layer (id)
+		ON DELETE CASCADE,
+	FOREIGN KEY (key_id)
+		REFERENCES annotation (id)
+		ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS annotation_value(
+	id INTEGER PRIMARY KEY AUTO_INCREMENT,
+	key_id INTEGER NOT NULL,
 	value_id INTEGER NOT NULL,
-	UNIQUE INDEX unique_index (pair_id, value_id),
-	FOREIGN KEY (pair_id)
-		REFERENCES annotation_pair (id)
+	UNIQUE INDEX unique_index(key_id, value_id),
+	FOREIGN KEY (key_id)
+		REFERENCES annotation_key (id)
 		ON DELETE CASCADE,
 	FOREIGN KEY (value_id)
 		REFERENCES annotation (id)
@@ -52,7 +66,7 @@
 		REFERENCES resource (id)
 		ON DELETE CASCADE,
 	FOREIGN KEY (layer_id)
-		REFERENCES annotation_pair (id)
+		REFERENCES annotation_layer (id)
 		ON DELETE CASCADE	
 );
 
diff --git a/full/src/main/resources/db/sqlite/V1.4__oauth2_tables.sql b/full/src/main/resources/db/sqlite/V1.4__oauth2_tables.sql
index 863c31f..2b55824 100644
--- a/full/src/main/resources/db/sqlite/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/sqlite/V1.4__oauth2_tables.sql
@@ -1,10 +1,5 @@
 -- EM: modified from Michael Hanl version
 
-CREATE TABLE IF NOT EXISTS oauth2_client_url (
-	url_hashcode INTEGER PRIMARY KEY NOT NULL,	
-	url TEXT DEFAULT NULL	
-);
-
 -- oauth2 db tables
 CREATE TABLE IF NOT EXISTS oauth2_client (
 	id VARCHAR(100) PRIMARY KEY NOT NULL,
@@ -15,11 +10,12 @@
 	redirect_uri TEXT DEFAULT NULL,
 	description VARCHAR(255) NOT NULL,
 	registered_by VARCHAR(100) NOT NULL,
-	url_id INTEGER,
-	FOREIGN KEY (url_id)
-	   REFERENCES oauth2_client_url(url_hashcode)
+	url_hashcode INTEGER,	
+	url TEXT DEFAULT NULL
 );
 
+CREATE UNIQUE INDEX client_url_index on oauth2_client(url_hashcode);
+
 CREATE TABLE IF NOT EXISTS oauth2_access_scope (
 	id VARCHAR(255) PRIMARY KEY NOT NULL
 );
@@ -68,6 +64,7 @@
 	client VARCHAR(100) NOT NULL,
 	FOREIGN KEY (client)
 	   REFERENCES oauth2_client(id)
+	   ON DELETE CASCADE
 );
 
 CREATE TABLE oauth2_refresh_token_scope (
@@ -88,6 +85,7 @@
 	refresh_token INTEGER DEFAULT NULL,
 	FOREIGN KEY (client_id)
 	   REFERENCES oauth2_client(id)
+	   ON DELETE CASCADE
 	FOREIGN KEY (refresh_token)
 	   REFERENCES oauth2_refresh_token(id)
 );
diff --git a/full/src/main/resources/db/sqlite/V1__initial_version.sql b/full/src/main/resources/db/sqlite/V1__initial_version.sql
index af14f4f..7506679 100644
--- a/full/src/main/resources/db/sqlite/V1__initial_version.sql
+++ b/full/src/main/resources/db/sqlite/V1__initial_version.sql
@@ -45,7 +45,7 @@
 	FOREIGN KEY (key_id)
 		REFERENCES annotation_key (id)
 		ON DELETE CASCADE,
-	FOREIGN KEY (key_id)
+	FOREIGN KEY (value_id)
 		REFERENCES annotation (id)
 		ON DELETE CASCADE
 );
diff --git a/full/src/main/resources/db/test/V3.5__insert_oauth2_clients.sql b/full/src/main/resources/db/test/V3.5__insert_oauth2_clients.sql
index e6117a6..369b483 100644
--- a/full/src/main/resources/db/test/V3.5__insert_oauth2_clients.sql
+++ b/full/src/main/resources/db/test/V3.5__insert_oauth2_clients.sql
@@ -1,51 +1,44 @@
 -- test clients
 
-INSERT INTO oauth2_client_url(url,url_hashcode)
-VALUES("http://korap.ids-mannheim.de/confidential", 2087150261);
-
 -- plain secret value is "secret"
-INSERT INTO oauth2_client(id,name,secret,type,super,url_id,
-  redirect_uri,registered_by, description) 
+INSERT INTO oauth2_client(id,name,secret,type,super,
+  redirect_uri,registered_by, description, url, url_hashcode) 
 VALUES ("fCBbQkAyYzI4NzUxMg","super confidential client",
   "$2a$08$vi1FbuN3p6GcI1tSxMAoeuIYL8Yw3j6A8wJthaN8ZboVnrQaTwLPq",
-  "CONFIDENTIAL", 1, 2087150261,
+  "CONFIDENTIAL", 1, 
   "https://korap.ids-mannheim.de/confidential/redirect", "system",
-  "This is a test super confidential client.");
+  "This is a test super confidential client.", 
+  "http://korap.ids-mannheim.de/confidential", 2087150261);
 
   
-INSERT INTO oauth2_client_url(url,url_hashcode)
-VALUES("http://third.party.com/confidential", 1712550103);
-
 -- plain secret value is "secret"
-INSERT INTO oauth2_client(id,name,secret,type,super,url_id,
-  redirect_uri,registered_by, description) 
+INSERT INTO oauth2_client(id,name,secret,type,super,
+  redirect_uri,registered_by, description,url,url_hashcode) 
 VALUES ("9aHsGW6QflV13ixNpez","non super confidential client",
   "$2a$08$vi1FbuN3p6GcI1tSxMAoeuIYL8Yw3j6A8wJthaN8ZboVnrQaTwLPq",
-  "CONFIDENTIAL", 0, 1712550103,
+  "CONFIDENTIAL", 0,
   "https://third.party.com/confidential/redirect", "system",
-  "This is a test nonsuper confidential client.");
+  "This is a test nonsuper confidential client.",
+  "http://third.party.com/confidential", 1712550103);
 
   
-INSERT INTO oauth2_client_url(url,url_hashcode)
-VALUES("http://third.party.client.com", -2137275617);
-
-INSERT INTO oauth2_client(id,name,secret,type,super,url_id,
-  redirect_uri, registered_by, description) 
+INSERT INTO oauth2_client(id,name,secret,type,super,
+  redirect_uri, registered_by, description, url,url_hashcode) 
 VALUES ("8bIDtZnH6NvRkW2Fq","third party client",null,
-  "PUBLIC", 0, -2137275617,
+  "PUBLIC", 0,
   "https://third.party.client.com/redirect","system",
-  "This is a test public client.");
+  "This is a test public client.",
+  "http://third.party.client.com", -2137275617);
 
   
-INSERT INTO oauth2_client_url(url,url_hashcode)
-VALUES("http://korap.ids-mannheim.de/public", 1360724310); 
-  
-INSERT INTO oauth2_client(id,name,secret,type,super,url_id,
-  redirect_uri, registered_by, description) 
+INSERT INTO oauth2_client(id,name,secret,type,super,
+  redirect_uri, registered_by, description,url,url_hashcode) 
 VALUES ("nW5qM63Rb2a7KdT9L","test public client",null,
-  "PUBLIC", 0, 1360724310,
+  "PUBLIC", 0, 
   "https://korap.ids-mannheim.de/public/redirect","system", 
-  "This is a test super public client."); 
+  "This is a test super public client.",
+  "http://korap.ids-mannheim.de/public", 1360724310);
+  
 
 INSERT INTO oauth2_access_token(token,user_id,created_date, 
 expiry_date, user_auth_time)
@@ -55,4 +48,8 @@
 INSERT INTO oauth2_refresh_token(token,user_id,user_auth_time, 
 created_date, expiry_date, client)
 VALUES("js9iQ4lw1Ri7fz06l0dXl8fCVp3Yn7vmq8","pearl","2017-05-30 16:25:50", 
-"2017-05-31 16:26:35", "1527784020000", "nW5qM63Rb2a7KdT9L");
+"2017-05-31 16:26:35", 1527784020000, "nW5qM63Rb2a7KdT9L");
+
+-- EM: expiry date must be in epoch milis format for testing with sqlite,
+-- on the contrary, for testing using mysql use this format: "2018-05-31 16:27:00"
+-- otherwise criteria query using greaterThan does not work. 
diff --git a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
index 5b7c9d7..98bd936 100644
--- a/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/dao/VirtualCorpusDaoTest.java
@@ -10,19 +10,15 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
+import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.constant.VirtualCorpusType;
 import de.ids_mannheim.korap.entity.VirtualCorpus;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.user.User;
 
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:test-config.xml")
-public class VirtualCorpusDaoTest {
+public class VirtualCorpusDaoTest extends SpringJerseyTest{
 
     @Autowired
     private VirtualCorpusDao dao;
diff --git a/full/src/test/java/de/ids_mannheim/korap/service/VirtualCorpusServiceTest.java b/full/src/test/java/de/ids_mannheim/korap/service/VirtualCorpusServiceTest.java
index 6b9608b..a7f5df6 100644
--- a/full/src/test/java/de/ids_mannheim/korap/service/VirtualCorpusServiceTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/service/VirtualCorpusServiceTest.java
@@ -34,9 +34,11 @@
     @Test
     public void testCreateNonUniqueVC () throws KustvaktException {
         thrown.expect(KustvaktException.class);
-        thrown.expectMessage("A UNIQUE constraint failed "
-                + "(UNIQUE constraint failed: virtual_corpus.name, "
-                + "virtual_corpus.created_by)");
+        // EM: message differs depending on the database used
+        // for testing. The message below is from sqlite.
+//        thrown.expectMessage("A UNIQUE constraint failed "
+//                + "(UNIQUE constraint failed: virtual_corpus.name, "
+//                + "virtual_corpus.created_by)");
 
         VirtualCorpusJson vc = new VirtualCorpusJson();
         vc.setCorpusQuery("corpusSigle=GOE");
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2AccessTokenTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2AccessTokenTest.java
index 7697db7..0136868 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2AccessTokenTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2AccessTokenTest.java
@@ -152,7 +152,7 @@
         JsonNode node = JsonUtils.readTree(ent);
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Access token is not found",
+        assertEquals("Access token is invalid",
                 node.at("/errors/0/1").asText());
     }
 
@@ -190,7 +190,7 @@
         JsonNode node = JsonUtils.readTree(entity);
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Access token has been revoked",
+        assertEquals("Access token is invalid",
                 node.at("/errors/0/1").asText());
     }
 
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
index c0da3b3..2178de6 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/OAuth2ClientControllerTest.java
@@ -233,7 +233,7 @@
         node = JsonUtils.readTree(response.getEntity(String.class));
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Access token has been revoked",
+        assertEquals("Access token is invalid",
                 node.at("/errors/0/1").asText());
     }
 
@@ -465,11 +465,11 @@
         node = JsonUtils.readTree(entity);
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Access token has been revoked",
+        assertEquals("Access token is invalid",
                 node.at("/errors/0/1").asText());
     }
 
-    private void requestUserClientList () throws KustvaktException {
+    private void requestUserClientList (String userAuthHeader) throws KustvaktException {
         MultivaluedMap<String, String> form = new MultivaluedMapImpl();
         form.add("client_id", superClientId);
         form.add("client_secret", clientSecret);
@@ -519,7 +519,7 @@
                 confidentialClientId, clientSecret, code);
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
-        requestUserClientList();
+        requestUserClientList(userAuthHeader);
         testListClientWithMultipleRefreshTokens(userAuthHeader);
 
         testRequestTokenWithRevokedRefreshToken(publicClientId, clientSecret,
@@ -543,7 +543,7 @@
 
         assertEquals(Status.OK.getStatusCode(), response.getStatus());
 
-        requestUserClientList();
+        requestUserClientList(userAuthHeader);
 
         JsonNode node = JsonUtils.readTree(response.getEntity(String.class));
         String accessToken = node.at("/access_token").asText();
@@ -578,7 +578,7 @@
         node = JsonUtils.readTree(response.getEntity(String.class));
         assertEquals(StatusCodes.INVALID_ACCESS_TOKEN,
                 node.at("/errors/0/0").asInt());
-        assertEquals("Access token has been revoked",
+        assertEquals("Access token is invalid",
                 node.at("/errors/0/1").asText());
 
         testRequestTokenWithRevokedRefreshToken(clientId, clientSecret,
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
index f3723cc..a2dd94c 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/VirtualCorpusControllerTest.java
@@ -832,12 +832,14 @@
             KustvaktException {
         ClientResponse response = testShareVC(vcId);
         JsonNode node = JsonUtils.readTree(response.getEntity(String.class));
-        
         assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatus());
         assertEquals(StatusCodes.DB_INSERT_FAILED,
                 node.at("/errors/0/0").asInt());
-        assertTrue(node.at("/errors/0/1").asText()
-                .startsWith("[SQLITE_CONSTRAINT_UNIQUE]"));
+        
+        // EM: message differs depending on the database used
+        // for testing. The message below is from sqlite.
+//        assertTrue(node.at("/errors/0/1").asText()
+//                .startsWith("[SQLITE_CONSTRAINT_UNIQUE]"));
     }
 
     @Test
diff --git a/full/src/test/resources/kustvakt-test.conf b/full/src/test/resources/kustvakt-test.conf
index ce12cff..b3d2985 100644
--- a/full/src/test/resources/kustvakt-test.conf
+++ b/full/src/test/resources/kustvakt-test.conf
@@ -57,7 +57,7 @@
 oauth2.native.client.host = korap.ids-mannheim.de
 oauth2.max.attempts = 2
 # expiry in seconds (S), minutes (M), hours (H), days (D)
-oauth2.access.token.expiry = 3S
+oauth2.access.token.expiry = 3M
 oauth2.refresh.token.expiry = 90D
 oauth2.authorization.code.expiry = 10M
 # -- scopes separated by space
diff --git a/full/src/test/resources/test-hibernate.properties b/full/src/test/resources/test-hibernate.properties
index 199dc73..37b7ea7 100644
--- a/full/src/test/resources/test-hibernate.properties
+++ b/full/src/test/resources/test-hibernate.properties
@@ -1,4 +1,4 @@
-hibernate.dialect=org.hibernate.dialect.MySQLDialect
+hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect
 hibernate.hbm2ddl.auto=none
 hibernate.show_sql=false
 hibernate.cache.use_query_cache=false
