diff --git a/web/org.openbravo.mobile.core/source/data/ob-requestrouter.js b/web/org.openbravo.mobile.core/source/data/ob-requestrouter.js
--- a/web/org.openbravo.mobile.core/source/data/ob-requestrouter.js
+++ b/web/org.openbravo.mobile.core/source/data/ob-requestrouter.js
@@ -197,11 +197,24 @@
         ajaxRequest.url = ajaxRequest.origUrl.replace('../../', server.get('address'));
       }
 
+      var tmpFail = ajaxRequest.fail;
+      var tmpSuccess = ajaxRequest.success;
+
+      if (!server.get('online')) {
+        // do not call fail/success on an offline server
+        ajaxRequest.fail = function (inSender, inResponse) {};
+        ajaxRequest.success = function (inSender, inResponse) {};
+      } else {
+        // online server, after the call do not re-use success or fail on a next 
+        // online server
+        tmpFail = function (inSender, inResponse) {};
+        tmpSuccess = function (inSender, inResponse) {};
+      }
       OB.RR.RequestRouter.execAjax(ajaxRequest);
 
-      // do nothing on fail/success for next requests
-      ajaxRequest.fail = function (inSender, inResponse) {};
-      ajaxRequest.success = function (inSender, inResponse) {};
+      // restore the function after the call (only relevant for non-online server)
+      ajaxRequest.fail = tmpFail;
+      ajaxRequest.success = tmpSuccess;
     },
 
     implementation: function (service, ajaxRequest) {
