diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.js
index 53e9ce253fb2f513816b724d8eac0f6ea79fc878..84be8fd9261a71126e09059af072f9197f28caf8 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.js
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.js
@@ -13,6 +13,15 @@
   $.mobile.hashListeningEnabled = false;
   $.mobile.pushStateEnabled = false;
 
+  /*
+  if (navigator.hasOwnProperty('serviceWorker')) {
+    // Check if a ServiceWorker already controls the site on load
+    if (!navigator.serviceWorker.controller) {
+      // Register the ServiceWorker
+      navigator.serviceWorker.register('gadget_erp5_serviceworker.js');
+    }
+  }
+  */
   var MAIN_SCOPE = "m";
 
   function renderMainGadget(gadget, url, options) {
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
index d37ac35657d1d7bfed106c584bccf9a166e4c24f..51090454fbe30e2e686416deef6219a9df33bf30 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
@@ -230,7 +230,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.35490.40299.23381</string> </value>
+                <value> <string>950.1266.16388.62907</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -248,7 +248,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1456908114.56</float>
+                        <float>1458731136.97</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.js
new file mode 100644
index 0000000000000000000000000000000000000000..30da01ad221fbb6020df167fda92ac6ccb0c1b3b
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.js
@@ -0,0 +1,192 @@
+/*jslint indent: 2*/
+/*global self, caches, fetch*/
+(function (self, caches, fetch) {
+  "use strict";
+
+  var CACHE_NAME = 'Mon, 23 Mar 2016 08:35:00 GMT',
+    // Files required to make this app work offline
+    REQUIRED_FILES = [
+      './',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?v=4.2.0',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.woff?v=4.2.0',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf?v=4.2.0',
+      'https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular',
+      'URI.js',
+      'erp5_launcher.html',
+      'erp5_launcher.js',
+      'gadget_erp5.css',
+      'gadget_erp5_editor_panel.html',
+      'gadget_erp5_editor_panel.js',
+      'gadget_erp5_field_checkbox.html',
+      'gadget_erp5_field_checkbox.js',
+      'gadget_erp5_field_datetime.html',
+      'gadget_erp5_field_datetime.js',
+      'gadget_erp5_field_email.html',
+      'gadget_erp5_field_email.js',
+      'gadget_erp5_field_file.html',
+      'gadget_erp5_field_file.js',
+      'gadget_erp5_field_float.html',
+      'gadget_erp5_field_float.js',
+      'gadget_erp5_field_gadget.html',
+      'gadget_erp5_field_gadget.js',
+      'gadget_erp5_field_image.html',
+      'gadget_erp5_field_image.js',
+      'gadget_erp5_field_integer.html',
+      'gadget_erp5_field_integer.js',
+      'gadget_erp5_field_list.html',
+      'gadget_erp5_field_list.js',
+      'gadget_erp5_field_listbox.html',
+      'gadget_erp5_field_listbox.js',
+      'gadget_erp5_field_multicheckbox.html',
+      'gadget_erp5_field_multicheckbox.js',
+      'gadget_erp5_field_multilist.html',
+      'gadget_erp5_field_multilist.js',
+      'gadget_erp5_field_multirelationstring.html',
+      'gadget_erp5_field_multirelationstring.js',
+      'gadget_erp5_field_radio.html',
+      'gadget_erp5_field_radio.js',
+      'gadget_erp5_field_readonly.html',
+      'gadget_erp5_field_readonly.js',
+      'gadget_erp5_field_relationstring.html',
+      'gadget_erp5_field_relationstring.js',
+      'gadget_erp5_field_string.html',
+      'gadget_erp5_field_string.js',
+      'gadget_erp5_field_password.html',
+      'gadget_erp5_field_password.js',
+      'gadget_erp5_field_textarea.html',
+      'gadget_erp5_field_textarea.js',
+      'gadget_erp5_form.html',
+      'gadget_erp5_form.js',
+      'gadget_erp5_header.html',
+      'gadget_erp5_header.js',
+      'gadget_erp5_jio.html',
+      'gadget_erp5_jio.js',
+      'gadget_erp5_latest.css',
+      'gadget_erp5_page_action.html',
+      'gadget_erp5_page_action.js',
+      'gadget_erp5_page_breadcrumb.html',
+      'gadget_erp5_page_breadcrumb.js',
+      'gadget_erp5_page_form.html',
+      'gadget_erp5_page_form.js',
+      'gadget_erp5_page_front.html',
+      'gadget_erp5_page_front.js',
+      'gadget_erp5_page_history.html',
+      'gadget_erp5_page_history.js',
+      'gadget_erp5_page_jump.html',
+      'gadget_erp5_page_jump.js',
+      'gadget_erp5_page_logout.html',
+      'gadget_erp5_page_logout.js',
+      'gadget_erp5_page_preference.html',
+      'gadget_erp5_page_preference.js',
+      'gadget_erp5_page_search.html',
+      'gadget_erp5_page_search.js',
+      'gadget_erp5_page_tab.html',
+      'gadget_erp5_page_tab.js',
+      'gadget_erp5_page_worklist.html',
+      'gadget_erp5_page_worklist.js',
+      'gadget_erp5_panel.html',
+      'gadget_erp5_panel.js',
+      'gadget_erp5_panel_configuration.html',
+      'gadget_erp5_pt_form_dialog.html',
+      'gadget_erp5_pt_form_dialog.js',
+      'gadget_erp5_pt_form_list.html',
+      'gadget_erp5_pt_form_list.js',
+      'gadget_erp5_pt_form_view.html',
+      'gadget_erp5_pt_form_view.js',
+      'gadget_erp5_pt_form_view_editable.html',
+      'gadget_erp5_pt_form_view_editable.js',
+      'gadget_erp5_pt_report_view.html',
+      'gadget_erp5_pt_report_view.js',
+      'gadget_erp5_router.html',
+      'gadget_erp5_router.js',
+      'gadget_erp5_search_editor.html',
+      'gadget_erp5_search_editor.js',
+      'gadget_erp5_searchfield.html',
+      'gadget_erp5_searchfield.js',
+      'gadget_erp5_sort_editor.html',
+      'gadget_erp5_sort_editor.js',
+      'gadget_global.js',
+      'gadget_jio.html',
+      'gadget_jio.js',
+      'gadget_translation.html',
+      'gadget_translation.js',
+      'gadget_translation_data.js',
+      'handlebars.js',
+      'i18next.js',
+      'jiodev.js',
+      'jquery.js',
+      'jquerymobile.css',
+      'jquerymobile.js',
+      'renderjs.js',
+      'rsvp.js'
+    ];
+
+  self.addEventListener('install', function (event) {
+    // Perform install step:  loading each required file into cache
+    event.waitUntil(
+      caches.open(CACHE_NAME)
+        .then(function (cache) {
+          // Add all offline dependencies to the cache
+          return cache.addAll(REQUIRED_FILES);
+        })
+        .then(function () {
+          // At this point everything has been cached
+          return self.skipWaiting();
+        })
+    );
+  });
+
+  self.addEventListener('fetch', function (event) {
+    event.respondWith(
+      caches.match(event.request)
+        .then(function (response) {
+          // Cache hit - return the response from the cached version
+          if (response) {
+            return response;
+          }
+
+          // Not in cache - return the result from the live server
+          // `fetch` is essentially a "fallback"
+          return fetch(event.request);
+        })
+    );
+  });
+
+  self.addEventListener("activate", function (event) {
+    /* Just like with the install event, event.waitUntil blocks activate on a promise.
+     Activation will fail unless the promise is fulfilled.
+    */
+    event.waitUntil(
+      caches
+        /* This method returns a promise which will resolve to an array of available
+           cache keys.
+        */
+        .keys()
+        .then(function (keys) {
+          // We return a promise that settles when all outdated caches are deleted.
+          return Promise.all(
+            keys
+              .filter(function (key) {
+                // Filter by keys that don't start with the latest version prefix.
+                // return !key.startsWith(version);
+                return key !== CACHE_NAME;
+              })
+              .map(function (key) {
+                /* Return a promise that's fulfilled
+                   when each outdated cache is deleted.
+                */
+                return caches.delete(key);
+              })
+          );
+        })
+        .then(function () {
+          self.clients.claim();
+        })
+    );
+  });
+
+
+
+}(self, caches, fetch));
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..994f91daeb7af00517ca10f2ba7ecb8da1f05af3
--- /dev/null
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_serviceworker.xml
@@ -0,0 +1,320 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Script" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Access_contents_information_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+                <string>Owner</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Add_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Change_local_roles_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_Modify_portal_content_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Manager</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_View_Permission</string> </key>
+            <value>
+              <tuple>
+                <string>Anonymous</string>
+                <string>Assignee</string>
+                <string>Assignor</string>
+                <string>Associate</string>
+                <string>Auditor</string>
+                <string>Manager</string>
+                <string>Owner</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_erp5_serviceworker.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>rjs_gadget_erp5_serviceworker</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value> <string>en</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Script</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>ERP5 ServiceWorker</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>001</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>document_publication_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>edit_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>processing_status_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <none/>
+        <list>
+          <dictionary>
+            <item>
+                <key> <string>action</string> </key>
+                <value> <string>publish_alive</string> </value>
+            </item>
+            <item>
+                <key> <string>actor</string> </key>
+                <value> <string>zope</string> </value>
+            </item>
+            <item>
+                <key> <string>comment</string> </key>
+                <value> <string></string> </value>
+            </item>
+            <item>
+                <key> <string>error_message</string> </key>
+                <value> <string></string> </value>
+            </item>
+            <item>
+                <key> <string>time</string> </key>
+                <value>
+                  <object>
+                    <klass>
+                      <global name="DateTime" module="DateTime.DateTime"/>
+                    </klass>
+                    <tuple>
+                      <none/>
+                    </tuple>
+                    <state>
+                      <tuple>
+                        <float>1458658259.73</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published_alive</string> </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <none/>
+        <list>
+          <dictionary>
+            <item>
+                <key> <string>action</string> </key>
+                <value> <string>edit</string> </value>
+            </item>
+            <item>
+                <key> <string>actor</string> </key>
+                <value> <string>zope</string> </value>
+            </item>
+            <item>
+                <key> <string>comment</string> </key>
+                <value>
+                  <none/>
+                </value>
+            </item>
+            <item>
+                <key> <string>error_message</string> </key>
+                <value> <string></string> </value>
+            </item>
+            <item>
+                <key> <string>serial</string> </key>
+                <value> <string>950.1305.47246.56337</string> </value>
+            </item>
+            <item>
+                <key> <string>state</string> </key>
+                <value> <string>current</string> </value>
+            </item>
+            <item>
+                <key> <string>time</string> </key>
+                <value>
+                  <object>
+                    <klass>
+                      <global name="DateTime" module="DateTime.DateTime"/>
+                    </klass>
+                    <tuple>
+                      <none/>
+                    </tuple>
+                    <state>
+                      <tuple>
+                        <float>1458731244.21</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <none/>
+        <list>
+          <dictionary>
+            <item>
+                <key> <string>action</string> </key>
+                <value> <string>detect_converted_file</string> </value>
+            </item>
+            <item>
+                <key> <string>actor</string> </key>
+                <value> <string>zope</string> </value>
+            </item>
+            <item>
+                <key> <string>comment</string> </key>
+                <value> <string></string> </value>
+            </item>
+            <item>
+                <key> <string>error_message</string> </key>
+                <value> <string></string> </value>
+            </item>
+            <item>
+                <key> <string>external_processing_state</string> </key>
+                <value> <string>converted</string> </value>
+            </item>
+            <item>
+                <key> <string>serial</string> </key>
+                <value> <string>0.0.0.0</string> </value>
+            </item>
+            <item>
+                <key> <string>time</string> </key>
+                <value>
+                  <object>
+                    <klass>
+                      <global name="DateTime" module="DateTime.DateTime"/>
+                    </klass>
+                    <tuple>
+                      <none/>
+                    </tuple>
+                    <state>
+                      <tuple>
+                        <float>1458654672.71</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>