diff -r 7eea47ac0a15 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml	Tue Feb 28 16:17:07 2017 +0100
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml	Mon Mar 06 11:54:34 2017 +0100
@@ -1744,6 +1744,18 @@
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3--></AD_MESSAGE>
 
+<!--CD56517EFD8D47F69219C1C25247506A--><AD_MESSAGE>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <AD_MESSAGE_ID><![CDATA[CD56517EFD8D47F69219C1C25247506A]]></AD_MESSAGE_ID>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <VALUE><![CDATA[OBMOBC_RemoteSearchWithoutFilters]]></VALUE>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <MSGTEXT><![CDATA[Remote query called without filters, please narrow your search]]></MSGTEXT>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--CD56517EFD8D47F69219C1C25247506A-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--CD56517EFD8D47F69219C1C25247506A--></AD_MESSAGE>
+
 <!--CD9685F4E4F1407999D69700DCD5E8A0--><AD_MESSAGE>
 <!--CD9685F4E4F1407999D69700DCD5E8A0-->  <AD_MESSAGE_ID><![CDATA[CD9685F4E4F1407999D69700DCD5E8A0]]></AD_MESSAGE_ID>
 <!--CD9685F4E4F1407999D69700DCD5E8A0-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 7eea47ac0a15 src/org/openbravo/mobile/core/process/ProcessHQLQuery.java
--- a/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java	Tue Feb 28 16:17:07 2017 +0100
+++ b/src/org/openbravo/mobile/core/process/ProcessHQLQuery.java	Mon Mar 06 11:54:34 2017 +0100
@@ -62,6 +62,24 @@
     return null;
   }
 
+  /**
+   * If true, the query will not be executed if significant filters are not provided
+   * 
+   * @return
+   */
+  protected boolean mustHaveRemoteFilters() {
+    return false;
+  }
+
+  /**
+   * Provides the message which should be used when not enough filters are provided
+   * 
+   * @return
+   */
+  protected String messageWhenNoFilters() {
+    return "OBMOBC_RemoteSearchWithoutFilters";
+  }
+
   @Inject
   @Any
   private Instance<HQLCriteriaProcess> hqlCriterias;
@@ -104,6 +122,13 @@
       JSONArray remoteFilters = jsonsent.has("remoteFilters") && !jsonsent.isNull("remoteFilters") ? jsonsent
           .getJSONArray("remoteFilters") : null;
 
+      if (jsonsent.has("parameters") && jsonsent.getJSONObject("parameters").has("remoteModel")
+          && jsonsent.getJSONObject("parameters").getBoolean("remoteModel")
+          && mustHaveRemoteFilters()
+          && (remoteFilters == null || !hasRelevantRemoteFilters(remoteFilters))) {
+        throw new OBException(messageWhenNoFilters());
+      }
+
       String orderByClause = jsonsent.has("orderByClause") && !jsonsent.isNull("orderByClause") ? jsonsent
           .getString("orderByClause") : null;
 
@@ -302,6 +327,26 @@
     }
   }
 
+  private boolean hasRelevantRemoteFilters(JSONArray remoteFilters) {
+    boolean hasFilters = false;
+    try {
+      for (int i = 0; i < remoteFilters.length() && !hasFilters; i++) {
+        JSONObject objFilter;
+        objFilter = (JSONObject) remoteFilters.get(i);
+        if (objFilter.getString("value").equals("__all__")
+            || ((!objFilter.has("fieldType") || !objFilter.getString("fieldType").equals("Number")) && objFilter
+                .getString("value").length() < 3)) {
+          continue;
+        }
+        hasFilters = true;
+      }
+      return hasFilters;
+    } catch (JSONException e) {
+      throw new OBException("Unable to read remote filters");
+    }
+
+  }
+
   public interface StrategyQuery {
     public int buildResponse(Writer w, Query query, boolean firstQuery) throws JSONException,
         IOException;
diff -r 7eea47ac0a15 web/org.openbravo.mobile.core/source/data/ob-dal.js
--- a/web/org.openbravo.mobile.core/source/data/ob-dal.js	Tue Feb 28 16:17:07 2017 +0100
+++ b/web/org.openbravo.mobile.core/source/data/ob-dal.js	Mon Mar 06 11:54:34 2017 +0100
@@ -434,6 +434,7 @@
         data.parameters = {};
       }
       data.parameters.forceRemote = whereClause && whereClause.forceRemote;
+      data.parameters.remoteModel = true;
 
       //replace _filter column with all columns marked as filterable
       if (whereClause && whereClause.remoteFilters) {
