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"
+    ]
+}}
