diff --git a/Changes b/Changes
index c0841fe..fc41ea5 100644
--- a/Changes
+++ b/Changes
@@ -22,7 +22,8 @@
 - Merge full and lite profiles and create one jar for both. 
 - Merge full and lite version in dockerfile and CI tests
 - Fix redundant initial-super-client generation.
-
+- Allow system VC to have names with less than 3 characters (support for existing 
+  C2 VC, #788)
 
 # version 0.79.1
 
diff --git a/src/main/java/de/ids_mannheim/korap/service/QueryService.java b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
index 70af091..d2c7f6b 100644
--- a/src/main/java/de/ids_mannheim/korap/service/QueryService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
@@ -75,7 +75,7 @@
     public static boolean DEBUG = false;
 
     public static Pattern queryNamePattern = Pattern
-            .compile("[a-zA-Z0-9]+[a-zA-Z_0-9-.]+");
+            .compile("[a-zA-Z0-9]+[a-zA-Z_0-9-.]*");
 
     @Autowired
     private QueryDao queryDao;
@@ -377,8 +377,10 @@
             String definition, String description, String status,
             boolean isCached, String queryCreator, String query,
             String queryLanguage, double apiVersion) throws KustvaktException {
-        ParameterChecker.checkNameValue(queryName, "queryName");
-        ParameterChecker.checkObjectValue(type, "type");
+    	ParameterChecker.checkObjectValue(type, "type");
+    	if (!type.equals(ResourceType.SYSTEM)) {
+    		ParameterChecker.checkNameValue(queryName, "queryName");
+    	}
 
         if (!queryNamePattern.matcher(queryName).matches()) {
             throw new KustvaktException(StatusCodes.INVALID_ARGUMENT, queryType
diff --git a/src/test/java/de/ids_mannheim/korap/cache/NamedVCLoaderTest.java b/src/test/java/de/ids_mannheim/korap/cache/NamedVCLoaderTest.java
index 35a15bd..1b3eead 100644
--- a/src/test/java/de/ids_mannheim/korap/cache/NamedVCLoaderTest.java
+++ b/src/test/java/de/ids_mannheim/korap/cache/NamedVCLoaderTest.java
@@ -8,8 +8,10 @@
 import java.io.IOException;
 import java.util.Map;
 
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
+
 import de.ids_mannheim.korap.collection.DocBits;
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.dao.QueryDao;
@@ -18,6 +20,7 @@
 import de.ids_mannheim.korap.init.NamedVCLoader;
 import de.ids_mannheim.korap.util.QueryException;
 
+@Disabled
 public class NamedVCLoaderTest extends SpringJerseyTest {
 
     @Autowired
@@ -25,8 +28,30 @@
 
     @Autowired
     private QueryDao dao;
+    
+	private void clean (String vcId, QueryDO vc)
+			throws IOException, QueryException, KustvaktException {
+		VirtualCorpusCache.delete(vcId);
+        assertFalse(VirtualCorpusCache.contains(vcId));
+        dao.deleteQuery(vc);
+        vc = dao.retrieveQueryByName(vcId, "system");
+        assertNull(vc);
+	}
 
     @Test
+    public void testVCName ()
+            throws IOException, QueryException, KustvaktException {
+        String vcId = "c";
+        vcLoader.loadVCToCache(vcId, "/vc/c.jsonld");
+        assertTrue(VirtualCorpusCache.contains(vcId));
+        Map<String, DocBits> cachedData = VirtualCorpusCache.retrieve(vcId);
+        assertTrue(cachedData.size() > 0);
+        QueryDO vc = dao.retrieveQueryByName(vcId, "system");
+        assertNotNull(vc);
+        clean(vcId, vc);
+    }
+    
+    @Test
     public void testNamedVCLoader ()
             throws IOException, QueryException, KustvaktException {
         String vcId = "named-vc1";
@@ -34,10 +59,10 @@
         assertTrue(VirtualCorpusCache.contains(vcId));
         Map<String, DocBits> cachedData = VirtualCorpusCache.retrieve(vcId);
         assertTrue(cachedData.size() > 0);
-        //VirtualCorpusCache.delete(vcId);
-        //assertFalse(VirtualCorpusCache.contains(vcId));
         QueryDO vc = dao.retrieveQueryByName(vcId, "system");
         assertNotNull(vc);
+        VirtualCorpusCache.delete(vcId);
+        assertFalse(VirtualCorpusCache.contains(vcId));
         
         String koralQuery = vc.getKoralQuery();
         testUpdateVC(vcId,koralQuery);
@@ -63,13 +88,7 @@
         
         QueryDO vc = dao.retrieveQueryByName(vcId, "system");
         String updatedKoralQuery = vc.getKoralQuery();
-        
         assertTrue (koralQuery.hashCode() != updatedKoralQuery.hashCode());
-        
-        VirtualCorpusCache.delete(vcId);
-        assertFalse(VirtualCorpusCache.contains(vcId));
-        dao.deleteQuery(vc);
-        vc = dao.retrieveQueryByName(vcId, "system");
-        assertNull(vc);
+        clean(vcId, vc);
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
index db790ed..5274364 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerAdminTest.java
@@ -75,7 +75,7 @@
         assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
         JsonNode node = testAdminListVC_UsingAdminToken("system",
                 ResourceType.SYSTEM);
-        System.out.println(node.toPrettyString());
+//        System.out.println(node.toPrettyString());
         assertEquals(2, node.size());
         testDeleteSystemVC(admin, "new-system-vc");
     }
diff --git a/src/test/resources/vc/c.jsonld b/src/test/resources/vc/c.jsonld
new file mode 100644
index 0000000..a79d6e5
--- /dev/null
+++ b/src/test/resources/vc/c.jsonld
@@ -0,0 +1,10 @@
+{"collection": {
+    "@type": "koral:doc",
+    "key": "textSigle",
+    "match": "match:ne",
+    "type" : "type:string",
+    "value": [
+        "GOE/AGI/04846",
+        "GOE/AGA/01784"
+    ]
+}}
