diff --git a/core/Changes b/core/Changes
index 038b9ce..c35049b 100644
--- a/core/Changes
+++ b/core/Changes
@@ -5,7 +5,9 @@
    - Disabled some unused web-services: search post, query serialization, 
      collocation base (margaretha)
 11/07/2019
-   - Added cq parameter to VC statistics API and deprecate corpusQuery (margaretha) 
+   - Added cq parameter to VC statistics API and deprecate corpusQuery (margaretha)
+15/07/2019
+   - Added backward compatibility support for corpusQuery parameter (margaretha)    
 
 # version 0.62
 18/03/2019
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java b/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
index 66eb27a..84c4bb8 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
@@ -79,20 +79,17 @@
         String stats;
         String json = null;
         boolean isDeprecated = false;
-        boolean hasCq = false;
         try {
             if (cq != null && !cq.isEmpty()) {
                 builder.with(cq);
                 json = builder.toJSON();
-                hasCq = true;
             }
-            if (corpusQuery != null && !corpusQuery.isEmpty()) {
+            else if (corpusQuery != null && !corpusQuery.isEmpty()) {
+                builder.with(corpusQuery);
+                json = builder.toJSON();
                 isDeprecated = true;
-                if (!hasCq) {
-                    builder.with(corpusQuery);
-                    json = builder.toJSON();
-                }
             }
+            
             stats = searchKrill.getStatistics(json);
             
             if (isDeprecated){
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
index f0d2bd1..b0d16cf 100644
--- a/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/StatisticsControllerTest.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.web.controller;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 
@@ -56,6 +57,8 @@
         assertEquals(138180, node.at("/tokens").asInt());
         assertEquals(5687, node.at("/sentences").asInt());
         assertEquals(258, node.at("/paragraphs").asInt());
+        
+        assertTrue(node.at("/warnings").isMissingNode());
     }
     
     @Test
@@ -73,6 +76,8 @@
         assertEquals(138180, node.at("/tokens").asInt());
         assertEquals(5687, node.at("/sentences").asInt());
         assertEquals(258, node.at("/paragraphs").asInt());
+        
+        assertTrue(node.at("/warnings").isMissingNode());
     }
 
     @Test
diff --git a/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteStatisticControllerTest.java b/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteStatisticControllerTest.java
index b03e28d..8f41b8a 100644
--- a/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteStatisticControllerTest.java
+++ b/lite/src/test/java/de/ids_mannheim/korap/web/service/LiteStatisticControllerTest.java
@@ -1,6 +1,7 @@
 package de.ids_mannheim.korap.web.service;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
 
@@ -28,6 +29,8 @@
         assertEquals(138180, node.at("/tokens").asInt());
         assertEquals(5687, node.at("/sentences").asInt());
         assertEquals(258, node.at("/paragraphs").asInt());
+        
+        assertTrue(node.at("/warnings").isMissingNode());
     }
     
     @Test
@@ -46,14 +49,11 @@
         assertEquals(5687, node.at("/sentences").asInt());
         assertEquals(258, node.at("/paragraphs").asInt());
         
-        assertEquals(StatusCodes.DEPRECATED_PARAMETER,
-                node.at("/warnings/0/0").asInt());
-        assertEquals("Parameter corpusQuery is deprecated in favor of cq.",
-                node.at("/warnings/0/1").asText());
+        assertTrue(node.at("/warnings").isMissingNode());
     }
     
     @Test
-    public void testStatistics () throws KustvaktException{
+    public void testStatisticsWithCorpusQuery () throws KustvaktException{
         ClientResponse response = resource().path(API_VERSION)
                 .path("statistics")
                 .queryParam("corpusQuery", "textType=Autobiographie & corpusSigle=GOE")
@@ -66,6 +66,11 @@
         assertEquals(527662, node.at("/tokens").asInt());
         assertEquals(19387, node.at("/sentences").asInt());
         assertEquals(514, node.at("/paragraphs").asInt());
+        
+        assertEquals(StatusCodes.DEPRECATED_PARAMETER,
+                node.at("/warnings/0/0").asInt());
+        assertEquals("Parameter corpusQuery is deprecated in favor of cq.",
+                node.at("/warnings/0/1").asText());
     }
 
     @Test
