diff --git a/src/test/java/de/ids_mannheim/korap/scenario/DNBTest.java b/src/test/java/de/ids_mannheim/korap/scenario/DNBTest.java
index 03bcb5c..3595049 100644
--- a/src/test/java/de/ids_mannheim/korap/scenario/DNBTest.java
+++ b/src/test/java/de/ids_mannheim/korap/scenario/DNBTest.java
@@ -3,7 +3,9 @@
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Isolated;
 import org.springframework.test.context.ContextConfiguration;
 
 import com.fasterxml.jackson.databind.JsonNode;
@@ -15,13 +17,14 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.Response.Status;
 
+@Isolated
 @ContextConfiguration(
 		locations = "classpath:test-config-dnb.xml", 
 		inheritLocations = false
 )		
 public class DNBTest extends SpringJerseyTest {
 
-    public final static String API_VERSION = "v1.0";
+    public final static String API_VERSION = "v1.1";
 
     private JsonNode sendQuery (String query) throws KustvaktException {
         Response r = target().path(API_VERSION).path("search")
@@ -35,24 +38,28 @@
 
     }
     
+    @BeforeAll
+    public static void loadDnbProperties() {
+        KrillProperties.loadProperties("kustvakt-dnb.conf");
+    }
+
     @AfterAll
     public static void resetKrillProperties() {
         KrillProperties.loadProperties("kustvakt-test.conf");
     }
 
-    @Test
-    public void testTokenMatchSize () throws KustvaktException {
-        assertEquals(1, KrillProperties.maxTokenMatchSize);
-        assertEquals(25, KrillProperties.maxTokenContextSize);
+	@Test
+	public void testTokenMatchSize () throws KustvaktException {
+		assertEquals(12, KrillProperties.maxTokenMatchSize);
+		assertEquals(25, KrillProperties.maxTokenContextSize);
 
-        JsonNode node = sendQuery("[orth=das]");
-        assertEquals(KrillProperties.maxTokenMatchSize,
-                node.at("/matches/0/tokens/match").size());
+		JsonNode node = sendQuery("[orth=das]");
+		assertEquals(1, node.at("/matches/0/tokens/match").size());
 
-        node = sendQuery("[orth=das][orth=Glück]");
-        assertEquals(KrillProperties.maxTokenMatchSize,
-                node.at("/matches/0/tokens/match").size());
-    }
+		node = sendQuery("[orth=das][orth=Glück]");
+		assertEquals(6, node.at("/matches/0/context/left/1").asInt());
+		assertEquals(6, node.at("/matches/0/context/right/1").asInt());
+	}
 
     @Test
     public void testTokenContextMatchSize () throws KustvaktException {
@@ -62,6 +69,7 @@
                 .queryParam("context", "30-token,30-token").request().get();
         assertEquals(Status.OK.getStatusCode(), r.getStatus());
         String entity = r.readEntity(String.class);
+        System.out.println(entity);
         JsonNode node = JsonUtils.readTree(entity);
 
         assertEquals(KrillProperties.maxTokenContextSize,
@@ -69,13 +77,11 @@
         assertEquals(KrillProperties.maxTokenContextSize,
                 node.at("/meta/context/right/1").asInt());
         
-        assertEquals(KrillProperties.maxTokenContextSize,
+        assertEquals(24, // using kwic
                 node.at("/matches/0/tokens/left").size());
         
-        // There is a bug in Krill (https://github.com/KorAP/Krill/issues/141)
-        // So the following test fails
-//        assertEquals(KrillProperties.maxTokenContextSize,
-//                node.at("/matches/0/tokens/right").size());
+        assertEquals(24,
+                node.at("/matches/0/tokens/right").size());
     }
 
 }
diff --git a/src/test/resources/kustvakt-dnb.conf b/src/test/resources/kustvakt-dnb.conf
index c807080..a7b338e 100644
--- a/src/test/resources/kustvakt-dnb.conf
+++ b/src/test/resources/kustvakt-dnb.conf
@@ -27,8 +27,8 @@
 # Kustvakt versions
 #
 # multiple versions comma separated
-current.api.version = v1.0
-supported.api.versions = v1.0
+current.api.version = v1.1
+supported.api.versions = v1.0, v1.1
 
 # Server
 #
diff --git a/src/test/resources/test-config-dnb.xml b/src/test/resources/test-config-dnb.xml
index 138d52e..9ef746d 100644
--- a/src/test/resources/test-config-dnb.xml
+++ b/src/test/resources/test-config-dnb.xml
@@ -159,9 +159,8 @@
 
 	<!-- <bean id="initializator"
 		class="de.ids_mannheim.korap.init.Initializator"
-		init-method="initTestWithoutAvailability">
-	</bean>
-    -->
+		init-method="initTest">
+	</bean> -->
     
 	<!-- Krill -->
 	<bean id="search_krill"
