diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -1822,7 +1822,7 @@
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <VALUE><![CDATA[OBMOBC_OnlineConnectionHasReturned]]></VALUE>
-<!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <MSGTEXT><![CDATA[The connection was restored. However, in the meantime, your session timed out. You must login again now to ensure proper synchronization. Your pending tickets will be saved.]]></MSGTEXT>
+<!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <MSGTEXT><![CDATA[The connection was restored. However, in the meantime, your session timed out. You must login again now to ensure proper synchronization. Your pending tickets will be saved ONLY after you do Login again.]]></MSGTEXT>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
 <!--CC9FB6E6597A466E8B11684FF30C3EA3-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
@@ -1900,6 +1900,18 @@
 <!--D05E4639FF9047308378499422EDE5AD-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--D05E4639FF9047308378499422EDE5AD--></AD_MESSAGE>
 
+<!--D10EFD4CB2BE4ECF819A639355A08E75--><AD_MESSAGE>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <AD_MESSAGE_ID><![CDATA[D10EFD4CB2BE4ECF819A639355A08E75]]></AD_MESSAGE_ID>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <VALUE><![CDATA[OBMOBC_KeepWorking]]></VALUE>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <MSGTEXT><![CDATA[Keep Working]]></MSGTEXT>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--D10EFD4CB2BE4ECF819A639355A08E75-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--D10EFD4CB2BE4ECF819A639355A08E75--></AD_MESSAGE>
+
 <!--D22F7DC0C242404F9F93EEBA99BB172B--><AD_MESSAGE>
 <!--D22F7DC0C242404F9F93EEBA99BB172B-->  <AD_MESSAGE_ID><![CDATA[D22F7DC0C242404F9F93EEBA99BB172B]]></AD_MESSAGE_ID>
 <!--D22F7DC0C242404F9F93EEBA99BB172B-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/web/org.openbravo.mobile.core/source/component/dialog/ob-modalonline.js b/web/org.openbravo.mobile.core/source/component/dialog/ob-modalonline.js
--- a/web/org.openbravo.mobile.core/source/component/dialog/ob-modalonline.js
+++ b/web/org.openbravo.mobile.core/source/component/dialog/ob-modalonline.js
@@ -12,6 +12,9 @@
 enyo.kind({
   kind: 'OB.UI.ModalAction',
   name: 'OB.UI.ModalOnline',
+  autoDismiss: false,
+  closeOnEscKey: false,
+  hideCloseButton: true,
   bodyContent: {
     content: ''
   },
@@ -19,15 +22,17 @@
     components: [{
       kind: 'OB.UI.ModalDialogButton',
       content: '',
-      isDefaultAction: true,
       tap: function () {
+        OB.MobileApp.model.keepWorking();
         this.doHideThisPopup();
-        OB.MobileApp.model.lock();
       }
     }, {
       kind: 'OB.UI.ModalDialogButton',
       content: '',
+      isDefaultAction: true,
       tap: function () {
+        OB.UTIL.showLoading(true);
+        OB.MobileApp.model.lock();
         this.doHideThisPopup();
       }
     }]
@@ -35,8 +40,8 @@
   initComponents: function () {
     this.header = OB.I18N.getLabel('OBMOBC_Online');
     this.bodyContent.content = OB.I18N.getLabel('OBMOBC_OnlineConnectionHasReturned');
-    this.bodyButtons.components[0].content = OB.I18N.getLabel('OBMOBC_LblLoginAgain');
-    this.bodyButtons.components[1].content = OB.I18N.getLabel('OBMOBC_LblCancel');
+    this.bodyButtons.components[0].content = OB.I18N.getLabel('OBMOBC_KeepWorking');
+    this.bodyButtons.components[1].content = OB.I18N.getLabel('OBMOBC_LblLoginAgain');
     this.inherited(arguments);
   }
 });
\ No newline at end of file
diff --git a/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js b/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js
--- a/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js
+++ b/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js
@@ -502,20 +502,7 @@
                         OB.warn('Connection came back. Session no longer valid, so relogin required');
                         model.set('reloginMessageShown', true);
                       }
-                      OB.UTIL.showConfirmation.display(
-                      OB.I18N.getLabel('OBMOBC_Online'), OB.I18N.getLabel('OBMOBC_OnlineConnectionHasReturned'), [{
-                        label: OB.I18N.getLabel('OBMOBC_LblLoginAgain'),
-                        action: function () {
-                          OB.MobileApp.model.lock();
-                          OB.UTIL.showLoading(true);
-                        }
-                      }], {
-                        autoDismiss: false,
-                        onHideFunction: function () {
-                          OB.MobileApp.model.lock();
-                          OB.UTIL.showLoading(true);
-                        }
-                      });
+                      OB.MobileApp.view.$.dialogsContainer.$.loginAgainDialog.show()
                     } else {
 
                       if (inResponse && 'invalidRequestOrigin' === inResponse.exception) {
@@ -578,6 +565,12 @@
           name: 'logoutDialog'
         });
       }
+      if (OB.UI.ModalOnline) {
+        this.$.dialogsContainer.createComponent({
+          kind: 'OB.UI.ModalOnline',
+          name: 'loginAgainDialog'
+        });
+      }
 
       this.render();
       this.resizeWindow();
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
@@ -588,20 +588,7 @@
         //do relogin
         OB.MobileApp.model.set('sessionLost', true);
         OB.UTIL.stopLogClient();
-        OB.UTIL.showConfirmation.display(
-        OB.I18N.getLabel('OBMOBC_Online'), OB.I18N.getLabel('OBMOBC_OnlineConnectionHasReturned'), [{
-          label: OB.I18N.getLabel('OBMOBC_LblLoginAgain'),
-          action: function () {
-            OB.MobileApp.model.lock();
-            OB.UTIL.showLoading(true);
-          }
-        }], {
-          autoDismiss: false,
-          onHideFunction: function () {
-            OB.MobileApp.model.lock();
-            OB.UTIL.showLoading(true);
-          }
-        });
+        OB.MobileApp.view.$.dialogsContainer.$.loginAgainDialog.show();
       }
     },
     reconnect: undefined,
@@ -664,7 +651,7 @@
             } else {
               requestValidationCounter--;
               if (parseInt(OB.UTIL.localStorage.getItem('nextTimeToGoOnline'), 10) <= new Date().getTime()) {
-                if (requestValidationCounter === 0) {
+                if (requestValidationCounter === 0 && !OB.MobileApp.model.isKeepWorking()) {
                   OB.info('[ConnectionStatus] Go to Online');
                   OB.MobileApp.model.triggerOnLine();
                   clearInterval(me.reconnect);
@@ -672,6 +659,9 @@
                     OB.RR.ServTypeTransaction.sendMessages();
                   }, 10000);
                 } else {
+                  if (level === 0 || level >= 3) {
+                    OB.MobileApp.view.$.dialogsContainer.$.loginAgainDialog.show();
+                  }
                   me.shouldTransitionToOnline(level >= 3 ? level : level + 1);
                 }
               }
diff --git a/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js b/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
--- a/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
+++ b/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
@@ -2211,6 +2211,13 @@
     });
     rr.exec(ajaxRequest.url);
   },
+  keepWorking: function () {
+    this.set('keepWorking', true);
+  },
+
+  isKeepWorking: function () {
+    return this.get('keepWorking');
+  },
 
   triggerLogout: function () {
     // deactivate the loginfail trigger
