diff --git a/full/Changes b/full/Changes
index bf6739c..b6613e7 100644
--- a/full/Changes
+++ b/full/Changes
@@ -24,6 +24,9 @@
     - Improved and added OAuth2 tests (margaretha)
 21/08/2018
     - Added VC name pattern check (margaretha)
+22/08/2018
+    - Implemented loading VC from gz files (margaretha)
+    - Updated OAuth2 authorization codes' & access tokens' expiry check (margaretha)
 
 # version 0.60.5
 
diff --git a/full/pom.xml b/full/pom.xml
index 4dac5d4..557b114 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -214,24 +214,6 @@
 			<version>${jersey.version}</version>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-		    <groupId>com.sun.jersey.jersey-test-framework</groupId>
-		    <artifactId>jersey-test-framework-embedded-glassfish</artifactId>
-		    <version>${jersey.version}</version>
-		    <scope>test</scope>
-		</dependency>
-		<dependency>
-		    <groupId>com.sun.jersey.jersey-test-framework</groupId>
-		    <artifactId>jersey-test-framework-external</artifactId>
-		    <version>${jersey.version}</version>
-		    <scope>test</scope>
-		</dependency>
-		<dependency>
-		    <groupId>com.sun.jersey.jersey-test-framework</groupId>
-		    <artifactId>jersey-test-framework-grizzly2</artifactId>
-		    <version>1.19.4</version>
-		    <scope>test</scope>
-		</dependency>
 		
 		<dependency>
 			<groupId>com.sun.jersey</groupId>
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 1b42d3e..d203b51 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
@@ -1,13 +1,11 @@
 package de.ids_mannheim.korap.authentication;
 
-import java.time.ZonedDateTime;
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.constant.TokenType;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -25,8 +23,6 @@
     private AccessTokenDao accessDao;
     @Autowired
     private OAuth2ScopeService scopeService;
-    @Autowired
-    private FullConfiguration config;
 
     @Override
     public TokenContext getTokenContext (String authToken)
@@ -38,14 +34,12 @@
                     "Access token has been revoked");
         }
 
-        ZonedDateTime expiry = accessToken.getCreatedDate()
-                .plusSeconds(config.getAccessTokenExpiry());
         String scopes = scopeService
                 .convertAccessScopesToString(accessToken.getScopes());
 
         TokenContext c = new TokenContext();
         c.setUsername(accessToken.getUserId());
-        c.setExpirationTime(expiry.toInstant().toEpochMilli());
+        c.setExpirationTime(accessToken.getExpiryDate().toInstant().toEpochMilli());
         c.setToken(authToken);
         c.setTokenType(TokenType.BEARER);
         c.addContextParameter(Attributes.SCOPE, scopes);
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
index 043f77e..0549106 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
+++ b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
@@ -1,9 +1,12 @@
 package de.ids_mannheim.korap.config;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.util.zip.GZIPInputStream;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,11 +21,10 @@
     private FullConfiguration config;
     @Autowired
     private SearchKrill searchKrill;
-    
+
     private static Logger jlog = LogManager.getLogger(NamedVCLoader.class);
 
-    public void loadVCToCache ()
-            throws IOException {
+    public void loadVCToCache () throws IOException {
 
         String dir = config.getNamedVCPath();
         File d = new File(dir);
@@ -34,23 +36,45 @@
             if (!file.exists()) {
                 throw new IOException("File " + file + " is not found.");
             }
-            else if (!file.getName().endsWith(".jsonld")) {
-                throw new IOException("File " + file
-                        + " is not allowed. Filename must ends with .jsonld");
-            }
 
-            long start = System.currentTimeMillis();
-            String json = FileUtils.readFileToString(file, "utf-8");
+            long start, end;
+            String json;
+            String filename = file.getName();
+
+            if (file.getName().endsWith(".jsonld")) {
+                filename = filename.substring(0, filename.length() - 7);
+                start = System.currentTimeMillis();
+                json = FileUtils.readFileToString(file, "utf-8");
+                end = System.currentTimeMillis();
+            }
+            else if (filename.endsWith(".jsonld.gz")) {
+                filename = filename.substring(0, filename.length() - 10);
+                start = System.currentTimeMillis();
+
+                GZIPInputStream gzipInputStream =
+                        new GZIPInputStream(new FileInputStream(file));
+                ByteArrayOutputStream bos = new ByteArrayOutputStream(512);
+                bos.write(gzipInputStream);
+                json = bos.toString("utf-8");
+                bos.close();
+                end = System.currentTimeMillis();
+            }
+            else {
+                System.err.println("File " + filename
+                        + " is not allowed. Filename must ends with .jsonld or .jsonld.gz");
+                continue;
+            }
+            jlog.debug(
+                    "READ " + file.getName() + " duration: " + (end - start));
+
             KrillCollection collection = new KrillCollection(json);
             collection.setIndex(searchKrill.getIndex());
-            
-            String filename = file.getName();
-            filename = filename.substring(0,filename.length()-7);
+
             if (collection != null) {
                 collection.storeInCache(filename);
             }
-            long end = System.currentTimeMillis();
-            jlog.debug(filename + " duration: " + (end - start));
+            end = System.currentTimeMillis();
+            jlog.debug(filename + "caching duration: " + (end - start));
             jlog.debug("memory cache: "
                     + KrillCollection.cache.calculateInMemorySize());
         }
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 5564ee7..f701777 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
@@ -1,5 +1,6 @@
 package de.ids_mannheim.korap.oauth2.dao;
 
+import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.List;
 import java.util.Set;
@@ -13,9 +14,12 @@
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.config.KustvaktCacheable;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -30,13 +34,15 @@
 @Transactional
 public class AccessTokenDao extends KustvaktCacheable {
 
+    @PersistenceContext
+    private EntityManager entityManager;
+    @Autowired
+    private FullConfiguration config;
+
     public AccessTokenDao () {
         super("access_token", "key:access_token");
     }
 
-    @PersistenceContext
-    private EntityManager entityManager;
-
     @Deprecated
     public void storeAccessToken (Authorization authorization, String token)
             throws KustvaktException {
@@ -64,7 +70,15 @@
         ParameterChecker.checkObjectValue(authenticationTime,
                 "authentication time");
 
+        ZonedDateTime now =
+                ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
+        
         AccessToken accessToken = new AccessToken();
+        accessToken.setCreatedDate(now);
+        accessToken
+                .setExpiryDate(now.plusSeconds(config.getAccessTokenExpiry()));
+        accessToken.setRefreshTokenExpiryDate(
+                now.plusSeconds(config.getRefreshTokenExpiry()));
         accessToken.setToken(token);
         accessToken.setRefreshToken(refreshToken);
         accessToken.setScopes(scopes);
@@ -150,7 +164,6 @@
                 builder.equal(root.get(AccessToken_.token), token),
                 builder.equal(root.get(AccessToken_.refreshToken), token));
 
-
         query.select(root);
         query.where(condition);
         Query q = entityManager.createQuery(query);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java
index af83e16..ee2b130 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java
@@ -1,11 +1,16 @@
 package de.ids_mannheim.korap.oauth2.dao;
 
+import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.config.KustvaktCacheable;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -19,6 +24,9 @@
 public class AuthorizationCacheDao extends KustvaktCacheable
         implements AuthorizationDaoInterface {
 
+    @Autowired
+    private FullConfiguration config;
+
     public AuthorizationCacheDao () {
         super("authorization", "key:authorization");
     }
@@ -43,7 +51,12 @@
         authorization.setRedirectURI(redirectURI);
         authorization.setUserAuthenticationTime(authenticationTime);
         authorization.setNonce(nonce);
-        authorization.setCreatedDate(ZonedDateTime.now());
+
+        ZonedDateTime now =
+                ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
+        authorization.setCreatedDate(now);
+        authorization.setExpiryDate(
+                now.plusSeconds(config.getAuthorizationCodeExpiry()));
 
         this.storeInCache(code, authorization);
         return authorization;
@@ -77,11 +90,11 @@
     public List<Authorization> retrieveAuthorizationsByClientId (
             String clientId) {
         List<Authorization> authList = new ArrayList<>();
-        
+
         Map<Object, Element> map = getAllCacheElements();
-        for (Object key : map.keySet()){
-            Authorization auth =  (Authorization) map.get(key).getObjectValue();
-            if (auth.getClientId().equals(clientId)){
+        for (Object key : map.keySet()) {
+            Authorization auth = (Authorization) map.get(key).getObjectValue();
+            if (auth.getClientId().equals(clientId)) {
                 authList.add(auth);
             }
         }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
index ff82d9c..4abb92b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
@@ -1,5 +1,6 @@
 package de.ids_mannheim.korap.oauth2.dao;
 
+import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.List;
 import java.util.Set;
@@ -12,9 +13,12 @@
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
@@ -30,7 +34,9 @@
 
     @PersistenceContext
     private EntityManager entityManager;
-
+    @Autowired
+    private FullConfiguration config;
+    
     public Authorization storeAuthorizationCode (String clientId, String userId,
             String code, Set<AccessScope> scopes, String redirectURI,
             ZonedDateTime authenticationTime, String nonce)
@@ -50,6 +56,12 @@
         authorization.setRedirectURI(redirectURI);
         authorization.setUserAuthenticationTime(authenticationTime);
         authorization.setNonce(nonce);
+        
+        ZonedDateTime now =
+                ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
+        authorization.setCreatedDate(now);
+        authorization.setExpiryDate(
+                now.plusSeconds(config.getAuthorizationCodeExpiry()));
 
         entityManager.persist(authorization);
         // what if unique fails
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
index e9aa596..e7509d0 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
@@ -31,8 +31,10 @@
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private int id;
     private String token;
-    @Column(name = "created_date")
+    @Column(name = "created_date", updatable = false)
     private ZonedDateTime createdDate;
+    @Column(name = "expiry_date", updatable = false)
+    private ZonedDateTime expiryDate;
     @Column(name = "user_id")
     private String userId;
     @Column(name = "client_id")
@@ -43,6 +45,8 @@
     private ZonedDateTime userAuthenticationTime;
     @Column(name = "refresh_token", updatable = false)
     private String refreshToken;
+    @Column(name = "refresh_expiry_date", updatable = false)
+    private ZonedDateTime refreshTokenExpiryDate;
     @Column(name = "is_refresh_revoked")
     private boolean isRefreshTokenRevoked;
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
index bbd954b..bb38fb5 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
@@ -35,6 +35,8 @@
     private String redirectURI;
     @Column(name = "created_date", updatable = false)
     private ZonedDateTime createdDate;
+    @Column(name = "expiry_date")
+    private ZonedDateTime expiryDate;
     @Column(name = "is_revoked")
     private boolean isRevoked;
     @Column(name = "total_attempts")
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
index 1aba796..7730b1e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
@@ -124,8 +124,7 @@
                     OAuth2Error.INVALID_GRANT);
         }
         else if (ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE))
-                .isAfter(origin.getCreatedDate()
-                        .plusSeconds(config.getRefreshTokenExpiry()))) {
+                .isAfter(origin.getRefreshTokenExpiryDate())) {
             throw new KustvaktException(StatusCodes.INVALID_REFRESH_TOKEN,
                     "Refresh token is expired.", OAuth2Error.INVALID_GRANT);
         }
@@ -221,7 +220,7 @@
         if (scopes == null || scopes.isEmpty()) {
             scopes = new HashSet<String>(1);
             scopes.add("all");
-//            scopes = config.getDefaultAccessScopes();
+            // scopes = config.getDefaultAccessScopes();
         }
 
         ZonedDateTime authenticationTime =
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
index ae29e4c..a8e7106 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
@@ -1,5 +1,6 @@
 package de.ids_mannheim.korap.oauth2.service;
 
+import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.util.Set;
 
@@ -8,6 +9,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -123,7 +125,6 @@
         return redirectUri;
     }
 
-
     public Authorization retrieveAuthorization (String code)
             throws KustvaktException {
         return authorizationDao.retrieveAuthorizationCode(code);
@@ -143,7 +144,7 @@
                     "Invalid authorization", OAuth2Error.INVALID_GRANT);
         }
 
-        if (isExpired(authorization.getCreatedDate())) {
+        if (isExpired(authorization.getExpiryDate())) {
             throw new KustvaktException(StatusCodes.INVALID_AUTHORIZATION,
                     "Authorization expired", OAuth2Error.INVALID_GRANT);
         }
@@ -175,14 +176,13 @@
         authorizationDao.updateAuthorization(authorization);
     }
 
-    private boolean isExpired (ZonedDateTime createdDate) {
-        jlog.debug("createdDate: " + createdDate);
-        ZonedDateTime expiration =
-                createdDate.plusSeconds(config.getAuthorizationCodeExpiry());
-        ZonedDateTime now = ZonedDateTime.now();
-        jlog.debug("expiration: " + expiration + ", now: " + now);
+    private boolean isExpired (ZonedDateTime expiryDate) {
+        ZonedDateTime now =
+                ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
+        jlog.debug("createdDate: " + expiryDate);
+        jlog.debug("expiration: " + expiryDate + ", now: " + now);
 
-        if (expiration.isAfter(now)) {
+        if (expiryDate.isAfter(now)) {
             return false;
         }
         return true;
diff --git a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
index 68bbfa7..0d518a3 100644
--- a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
+++ b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
@@ -47,6 +47,7 @@
 --  "https://korap.ids-mannheim.de/public/redirect","system", 
 --  "This is a test super public client."); 
 
-INSERT INTO oauth2_access_token(token,user_id,created_date, user_auth_time)
-VALUES("fia0123ikBWn931470H8s5gRqx7Moc4p","marlin","2018-05-30 16:25:50",
-"2018-05-30 16:23:10");
\ No newline at end of file
+INSERT INTO oauth2_access_token(token,user_id,created_date, 
+expiry_date, refresh_expiry_date, user_auth_time)
+VALUES("fia0123ikBWn931470H8s5gRqx7Moc4p","marlin","2018-05-30 16:25:50", 
+"2018-05-31 16:25:50", "2018-08-30 16:25:50", "2018-05-30 16:23:10");
diff --git a/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql b/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
index 4c35fca..10e069d 100644
--- a/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/new-mysql/V1.4__oauth2_tables.sql
@@ -11,7 +11,7 @@
 	name VARCHAR(200) NOT NULL,
 	secret VARCHAR(200) DEFAULT NULL,
 	type VARCHAR(200) NOT NULL,
-	native BOOLEAN DEFAULT FALSE,
+	super BOOLEAN DEFAULT FALSE,
 	redirect_uri TEXT DEFAULT NULL,
 	description VARCHAR(250) NOT NULL,
 	registered_by VARCHAR(100) NOT NULL,
@@ -27,6 +27,7 @@
 	user_id VARCHAR(100) NOT NULL,
 	redirect_uri TEXT DEFAULT NULL,
 	created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	expiry_date TIMESTAMP NULL,
 	is_revoked BOOLEAN DEFAULT 0,
 	total_attempts INTEGER DEFAULT 0,
 	user_auth_time TIMESTAMP NULL,
@@ -57,9 +58,11 @@
 	user_id VARCHAR(100) DEFAULT NULL,
 	client_id VARCHAR(100) DEFAULT NULL,
 	created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+	expiry_date TIMESTAMP NULL,
 	is_revoked BOOLEAN DEFAULT 0,
 	user_auth_time TIMESTAMP NULL,
     refresh_token VARCHAR(255) DEFAULT NULL,
+    refresh_expiry_date TIMESTAMP NULL,
 	is_refresh_revoked BOOLEAN DEFAULT 0,
 	FOREIGN KEY (client_id)
 	   REFERENCES oauth2_client(id)
diff --git a/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql b/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
index 47f0a0f..45fa1f4 100644
--- a/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
+++ b/full/src/main/resources/db/new-sqlite/V1.4__oauth2_tables.sql
@@ -28,7 +28,8 @@
 	client_id VARCHAR(100) NOT NULL,
 	user_id VARCHAR(100) NOT NULL,
 	redirect_uri TEXT DEFAULT NULL,
-	created_date TIMESTAMP DEFAULT (datetime('now','localtime')),
+	created_date TIMESTAMP NOT NULL,
+	expiry_date TIMESTAMP NOT NULL,
 	is_revoked BOOLEAN DEFAULT 0,
 	total_attempts INTEGER DEFAULT 0,
 	user_auth_time TIMESTAMP NOT NULL,
@@ -61,10 +62,12 @@
 	token VARCHAR(255) NOT NULL,
 	user_id VARCHAR(100) DEFAULT NULL,
 	client_id VARCHAR(100) DEFAULT NULL,
-	created_date TIMESTAMP DEFAULT (datetime('now','localtime')),
+	created_date TIMESTAMP NOT NULL,
+	expiry_date TIMESTAMP NOT NULL,
 	is_revoked BOOLEAN DEFAULT 0,
 	user_auth_time TIMESTAMP NOT NULL,
 	refresh_token VARCHAR(255) DEFAULT NULL,
+	refresh_expiry_date TIMESTAMP NOT NULL,
 	is_refresh_revoked BOOLEAN DEFAULT 0,
 	FOREIGN KEY (client_id)
 	   REFERENCES oauth2_client(id)
diff --git a/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql b/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
index d62e4df..96329af 100644
--- a/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
+++ b/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
@@ -1,14 +1,15 @@
-CREATE TRIGGER insert_authorization_date AFTER INSERT ON oauth2_authorization
-     BEGIN
-      UPDATE oauth2_authorization
-      SET created_date = DATETIME('now', 'localtime')  
-      WHERE rowid = new.rowid;
-     END;
-
-CREATE TRIGGER insert_access_token_date AFTER INSERT ON oauth2_access_token
-     BEGIN
-      UPDATE oauth2_access_token
-      SET created_date = DATETIME('now', 'localtime')  
-      WHERE rowid = new.rowid;
-     END;
+--CREATE TRIGGER insert_authorization_date AFTER INSERT ON oauth2_authorization
+--     BEGIN
+--      UPDATE oauth2_authorization
+--      SET created_date = DATETIME('now', 'localtime')  
+--      WHERE rowid = new.rowid;
+--     END;
+--     
+--
+--CREATE TRIGGER insert_access_token_date AFTER INSERT ON oauth2_access_token
+--     BEGIN
+--      UPDATE oauth2_access_token
+--      SET created_date = DATETIME('now', 'localtime')  
+--      WHERE rowid = new.rowid;
+--     END;
      
\ No newline at end of file
diff --git a/full/src/main/resources/default-config.xml b/full/src/main/resources/default-config.xml
index 32ebb35..f9ce666 100644
--- a/full/src/main/resources/default-config.xml
+++ b/full/src/main/resources/default-config.xml
@@ -139,6 +139,7 @@
 				</prop>
 				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider}</prop>
 				<prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory}</prop>
+				<prop key="hibernate.jdbc.time_zone">${hibernate.jdbc.time_zone}</prop>
 				<!-- <prop key="net.sf.ehcache.configurationResourceName">classpath:ehcache.xml</prop> -->
 			</props>
 		</property>
diff --git a/full/src/main/resources/properties/hibernate.properties b/full/src/main/resources/properties/hibernate.properties
index 161b737..199dc73 100644
--- a/full/src/main/resources/properties/hibernate.properties
+++ b/full/src/main/resources/properties/hibernate.properties
@@ -4,4 +4,5 @@
 hibernate.cache.use_query_cache=false
 hibernate.cache.use_second_level_cache=false
 hibernate.cache.provider=org.hibernate.cache.EhCacheProvider
-hibernate.cache.region.factory=org.hibernate.cache.ehcache.EhCacheRegionFactory
\ No newline at end of file
+hibernate.cache.region.factory=org.hibernate.cache.ehcache.EhCacheRegionFactory
+hibernate.jdbc.time_zone=UTC
\ No newline at end of file
diff --git a/full/src/main/resources/properties/jdbc.properties b/full/src/main/resources/properties/jdbc.properties
index 1afe44b..1f5e8ab 100644
--- a/full/src/main/resources/properties/jdbc.properties
+++ b/full/src/main/resources/properties/jdbc.properties
@@ -4,7 +4,7 @@
 
 #jdbc.database=mysql
 #jdbc.driverClassName=com.mysql.jdbc.Driver
-#jdbc.url=jdbc:mysql://localhost:3306/kustvakt?autoReconnect=true&useLegacyDatetimeCode=false
+#jdbc.url=jdbc:mysql://localhost:3306/kustvakt?autoReconnect=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
 #jdbc.username=korap
 #jdbc.password=password
 
diff --git a/full/src/test/resources/test-config.xml b/full/src/test/resources/test-config.xml
index f438fd2..945720b 100644
--- a/full/src/test/resources/test-config.xml
+++ b/full/src/test/resources/test-config.xml
@@ -140,6 +140,7 @@
 				</prop>
 				<prop key="hibernate.cache.provider_class">${hibernate.cache.provider}</prop>
 				<prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory}</prop>
+				<prop key="hibernate.jdbc.time_zone">${hibernate.jdbc.time_zone}</prop>
 				<!-- <prop key="net.sf.ehcache.configurationResourceName">classpath:ehcache.xml</prop> -->
 			</props>
 		</property>
diff --git a/full/src/test/resources/test-hibernate.properties b/full/src/test/resources/test-hibernate.properties
index 161b737..199dc73 100644
--- a/full/src/test/resources/test-hibernate.properties
+++ b/full/src/test/resources/test-hibernate.properties
@@ -4,4 +4,5 @@
 hibernate.cache.use_query_cache=false
 hibernate.cache.use_second_level_cache=false
 hibernate.cache.provider=org.hibernate.cache.EhCacheProvider
-hibernate.cache.region.factory=org.hibernate.cache.ehcache.EhCacheRegionFactory
\ No newline at end of file
+hibernate.cache.region.factory=org.hibernate.cache.ehcache.EhCacheRegionFactory
+hibernate.jdbc.time_zone=UTC
\ No newline at end of file
