diff --git a/sdks/java/src/main/java/org/apache/usergrid/java/client/query/UsergridQuery.java b/sdks/java/src/main/java/org/apache/usergrid/java/client/query/UsergridQuery.java
index f7c8430..e8c78c2 100644
--- a/sdks/java/src/main/java/org/apache/usergrid/java/client/query/UsergridQuery.java
+++ b/sdks/java/src/main/java/org/apache/usergrid/java/client/query/UsergridQuery.java
@@ -261,8 +261,10 @@
     }
 
     @NotNull
-    public UsergridQuery ql(@NotNull final String value) {
-        return this.addRequirement(value);
+    public UsergridQuery ql(final String value) {
+
+        return value != null && !value.isEmpty() ? this.addRequirement(value) : this;
+
     }
 
     @NotNull
diff --git a/stack/query-validator/src/main/java/org/apache/usergrid/query/validator/ApiServerRunner.java b/stack/query-validator/src/main/java/org/apache/usergrid/query/validator/ApiServerRunner.java
index ba62f55..922cd02 100644
--- a/stack/query-validator/src/main/java/org/apache/usergrid/query/validator/ApiServerRunner.java
+++ b/stack/query-validator/src/main/java/org/apache/usergrid/query/validator/ApiServerRunner.java
@@ -16,8 +16,6 @@
  */
 package org.apache.usergrid.query.validator;
 
-import com.fasterxml.jackson.databind.JsonNode;
-
 import java.util.*;
 import java.util.logging.Logger;
 import org.apache.usergrid.java.client.UsergridClient;
@@ -104,20 +102,10 @@
             Entity entity = new QueryEntity();
             entity.setUuid(UUID.fromString(clientEntity.getUuid()));
             entity.setType(clientEntity.getType());
-            Map<String, JsonNode> values = clientEntity.getProperties();
+            Map<String, ?> values = clientEntity.toMapValue();
             for( String key : values.keySet() ) {
-                JsonNode node = values.get(key);
-                if( node.isBoolean() ) {
-                    entity.setProperty(key, node.asBoolean());
-                } else if( node.isInt() ) {
-                    entity.setProperty(key, node.asInt());
-                } else if( node.isLong() ) {
-                    entity.setProperty(key, node.asLong());
-                } else if( node.isDouble() ) {
-                    entity.setProperty(key, node.asDouble());
-                } else {
-                    entity.setProperty(key, node.asText());
-                }
+                Object node = values.get(key);
+                entity.setProperty(key, node);
             }
             entities.add(entity);
         }
