diff --git a/Changes b/Changes
index 4c1e608..b2ca454 100644
--- a/Changes
+++ b/Changes
@@ -9,6 +9,9 @@
 - Add source to QueryReferenceRewrite (#783) and VirtualCorpusRewrite (#780)
 - Use operation:override in virtual corpus (reference) rewrite (#780)
 - Use operation:override in query reference rewrite (#783)
+- Fixed availability regex for all access in the config (important to correctly 
+  determine required access of stored VC)
+  
 
 # version 0.75
 
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!
