diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
index 4cc98b0..8cf0b2b 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/AvailabilityTest.java
@@ -5,6 +5,8 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.net.HttpHeaders;
 import jakarta.ws.rs.ProcessingException;
@@ -13,11 +15,15 @@
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
 import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
 public class AvailabilityTest extends SpringJerseyTest {
+    
+    @Autowired
+    public FullConfiguration config;    
 
     private void checkAndFree (String json) throws KustvaktException {
         JsonNode node = JsonUtils.readTree(json);
@@ -100,37 +106,34 @@
 
     private void checkAndAllWithACA (String json) throws KustvaktException {
         JsonNode node = JsonUtils.readTree(json);
-        assertNotNull(node);
-        assertEquals(node.at("/collection/operation").asText(),
-                "operation:and");
-        assertEquals(node.at("/collection/rewrites/0/operation").asText(),
-                "operation:injection");
-        assertEquals(node.at("/collection/rewrites/0/scope").asText(),
-                "availability(ALL)");
-        assertEquals(node.at("/collection/operands/1/match").asText(),
-                "match:eq");
-        assertEquals(node.at("/collection/operands/1/type").asText(),
-                "type:regex");
-        assertEquals(node.at("/collection/operands/1/key").asText(),
-                "availability");
-        assertEquals(node.at("/collection/operands/1/value").asText(), "ACA.*");
+        System.out.println(node.toPrettyString());
+        assertEquals("operation:and",
+                node.at("/collection/operation").asText());
+        assertEquals("operation:injection",
+                node.at("/collection/rewrites/0/operation").asText());
+        assertEquals("availability(ALL)",
+                node.at("/collection/rewrites/0/scope").asText());
+        assertEquals("match:eq",
+                node.at("/collection/operands/1/match").asText());
+        assertEquals("type:regex",
+                node.at("/collection/operands/1/type").asText());
+        assertEquals("availability",
+                node.at("/collection/operands/1/key").asText());
+        assertEquals("ACA.*", node.at("/collection/operands/1/value").asText());
         node = node.at("/collection/operands/0");
-        assertEquals(node.at("/operands/0/match").asText(), "match:eq");
-        assertEquals(node.at("/operands/0/type").asText(), "type:regex");
-        assertEquals(node.at("/operands/0/key").asText(), "availability");
-        assertEquals(node.at("/operands/0/value").asText(), "CC.*");
-        assertEquals(
-                node.at("/operands/1/operands/1/operands/0/match").asText(),
-                "match:eq");
-        assertEquals(
-                node.at("/operands/1/operands/1/operands/0/value").asText(),
-                "QAO-NC");
-        assertEquals(
-                node.at("/operands/1/operands/1/operands/1/match").asText(),
-                "match:eq");
-        assertEquals(
-                node.at("/operands/1/operands/1/operands/1/value").asText(),
-                "QAO.*");
+        assertEquals("match:eq", node.at("/operands/0/match").asText());
+        assertEquals("type:regex", node.at("/operands/0/type").asText());
+        assertEquals("availability", node.at("/operands/0/key").asText());
+        assertEquals(config.getFreeOnlyRegex(),
+                node.at("/operands/0/value").asText());
+        assertEquals("match:eq",
+                node.at("/operands/1/operands/1/operands/0/match").asText());
+        assertEquals("QAO-NC",
+                node.at("/operands/1/operands/1/operands/0/value").asText());
+        assertEquals("match:eq",
+                node.at("/operands/1/operands/1/operands/1/match").asText());
+        assertEquals(config.getAllOnlyRegex(),
+                node.at("/operands/1/operands/1/operands/1/value").asText());
     }
 
     private Response searchQuery (String collectionQuery) {
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
index 132f6b0..796dc14 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
@@ -19,6 +19,7 @@
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
 import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -33,7 +34,7 @@
 public class SearchControllerTest extends SpringJerseyTest {
 
     @Autowired
-    private KustvaktConfiguration config;
+    private FullConfiguration config;
 
     private JsonNode requestSearchWithFields (String fields)
             throws KustvaktException {
@@ -252,13 +253,14 @@
         assertNotNull(node);
         assertNotEquals(0, node.path("matches").size());
         assertEquals("koral:docGroup", node.at("/collection/@type").asText());
-        assertEquals("CC.*", node.at("/collection/operands/0/value").asText());
+        assertEquals(config.getFreeOnlyRegex(),
+                node.at("/collection/operands/0/value").asText());
         assertEquals("ACA.*",
                 node.at("/collection/operands/1/operands/0/value").asText());
         assertEquals("QAO-NC",
                 node.at("/collection/operands/1/operands/1/operands/0/value")
                         .asText());
-        assertEquals("QAO.*",
+        assertEquals(config.getAllOnlyRegex(),
                 node.at("/collection/operands/1/operands/1/operands/1/value")
                         .asText());
         assertEquals("operation:or", node.at("/collection/operation").asText());
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
index b4c44d8..fad276a 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
@@ -322,6 +322,53 @@
     }
 
     @Test
+    public void testDetermineCorpusAccess () throws KustvaktException {
+        String vcName = "vc-all";
+        createPrivateVC(testUser, vcName);
+        JsonNode node = listVC(testUser);
+        assertEquals(2, node.size());
+        
+        node = node.get(1);
+        assertEquals(vcName, node.get("name").asText());
+        assertEquals("ALL", node.get("requiredAccess").asText());
+        deleteVC(vcName, testUser, testUser);
+        
+
+        vcName = "vc-pub-1";
+        String vcJson = "{\"type\": \"PRIVATE\""
+                + ",\"queryType\": \"VIRTUAL_CORPUS\""
+                + ",\"corpusQuery\": \"availability=/ACA.*/\"}";
+
+        createVC(authHeader, testUser, vcName, vcJson);
+        node = listVC(testUser).get(1);
+        assertEquals(vcName, node.get("name").asText());
+        assertEquals("PUB", node.get("requiredAccess").asText());
+        deleteVC(vcName, testUser, testUser);
+        
+        vcName = "vc-pub-2";
+        vcJson = "{\"type\": \"PRIVATE\""
+                + ",\"queryType\": \"VIRTUAL_CORPUS\""
+                + ",\"corpusQuery\": \"availability=QAO-NC\"}";
+
+        createVC(authHeader, testUser, vcName, vcJson);
+        node = listVC(testUser).get(1);
+        assertEquals(vcName, node.get("name").asText());
+        assertEquals("PUB", node.get("requiredAccess").asText());
+        deleteVC(vcName, testUser, testUser);
+        
+        vcName = "vc-free";
+        vcJson = "{\"type\": \"PRIVATE\""
+                + ",\"queryType\": \"VIRTUAL_CORPUS\""
+                + ",\"corpusQuery\": \"availability=/CC.*/\"}";
+
+        createVC(authHeader, testUser, vcName, vcJson);
+        node = listVC(testUser).get(1);
+        assertEquals(vcName, node.get("name").asText());
+        assertEquals("FREE", node.get("requiredAccess").asText());
+        deleteVC(vcName, testUser, testUser);
+    }
+    
+    @Test
     public void testMaxNumberOfVC () throws KustvaktException {
         String json = "{\"type\": \"PRIVATE\""
                 + ",\"queryType\": \"VIRTUAL_CORPUS\""
diff --git a/src/test/resources/kustvakt-test.conf b/src/test/resources/kustvakt-test.conf
index ddc8512..d40c39f 100644
--- a/src/test/resources/kustvakt-test.conf
+++ b/src/test/resources/kustvakt-test.conf
@@ -56,7 +56,9 @@
 # 
 availability.regex.free = CC.*
 availability.regex.public = ACA.*|QAO-NC
-availability.regex.all = QAO.*
+# The regex should be specific and make the access distinguishable 
+# availability.regex.all = QAO.*
+availability.regex.all = QAO-NC-LOC:ids.*
 
 
 # options referring to the security module!
