diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/chart_min_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/chart_min_js.xml
index 78650c7894bfc39cd4e12c0e745e118839b4048d..2bd858f3d34586710f2aa6c68fcb7945087f1914 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/chart_min_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/chart_min_js.xml
@@ -128,216 +128,7 @@
             <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</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>1453903721.86</float>
-                        <string>UTC</string>
-                      </tuple>
-                    </state>
-                  </object>
-                </value>
-            </item>
-            <item>
-                <key> <string>validation_state</string> </key>
-                <value> <string>published</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>948.49040.9969.34065</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>1453903710.14</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>1453903603.56</float>
-                        <string>UTC</string>
-                      </tuple>
-                    </state>
-                  </object>
-                </value>
-            </item>
-          </dictionary>
-        </list>
-      </tuple>
-    </pickle>
-  </record>
 </ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_appcache.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_appcache.xml
index 23e6d033bf2d44e3b4ec1243f2ae1cd25474731c..7d2d450341e3b26afe7091a8911647c31b698576 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_appcache.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_appcache.xml
@@ -10,8 +10,11 @@
             <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>
@@ -21,10 +24,8 @@
             <key> <string>_Add_portal_content_Permission</string> </key>
             <value>
               <tuple>
-                <string>Assignee</string>
                 <string>Assignor</string>
                 <string>Manager</string>
-                <string>Owner</string>
               </tuple>
             </value>
         </item>
@@ -41,10 +42,7 @@
             <key> <string>_Modify_portal_content_Permission</string> </key>
             <value>
               <tuple>
-                <string>Assignee</string>
-                <string>Assignor</string>
                 <string>Manager</string>
-                <string>Owner</string>
               </tuple>
             </value>
         </item>
@@ -52,8 +50,11 @@
             <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>
@@ -106,7 +107,7 @@
             <value> <string encoding="cdata"><![CDATA[
 
 CACHE MANIFEST\n
-# generated on Fri, 26 Nov 2015 11:45:33 +0000\n
+# generated on Fri, 25 Mars 2016 11:45:33 +0000\n
 # XXX + fonts\n
 # images/ajax-loader.gif\n
 CACHE:\n
@@ -117,6 +118,7 @@ https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.wof
 https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf?v=4.2.0\n
 https://netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular\n
 URI.js\n
+Chart.min.js\n
 dygraph.js\n
 gadget_erp5.css\n
 gadget_global.js\n
@@ -128,48 +130,61 @@ handlebars.js\n
 i18next.js\n
 jiodev.js\n
 jquery.js\n
+jquery.magnific-popup.min.js\n
 jquerymobile.css\n
 jquerymobile.js\n
+jio_dev_rssfeed_storage.js\n
+magnific-popup.css\n
 renderjs.js\n
 rsvp.js\n
-gadget_officejs_header.html\n
-gadget_officejs_jio.html\n
-gadget_officejs_jio_web_page_view.html\n
-gadget_officejs_page_add_text_document.html\n
-gadget_officejs_page_jio_configurator.html\n
-gadget_officejs_page_jio_dav_configurator.html\n
-gadget_officejs_page_login.html\n
-gadget_officejs_page_logout.html\n
-gadget_officejs_page_share_webrtc_jio.html\n
-gadget_officejs_page_sync.html\n
-gadget_officejs_page_text_editor_list.html\n
-gadget_monitoring_router.html\n
+# gadget_officejs_page_sync.html\n
 gadget_monitoring_application_panel.html\n
-gadget_translation.html\n
-gadget_officejs_webrtc_jio.html\n
-gadget_officejs_widget_listbox.html\n
-gadget_officejs_header.js\n
-gadget_officejs_jio.js\n
-gadget_officejs_jio_web_page_view.js\n
-gadget_officejs_page_add_text_document.js\n
-gadget_officejs_page_jio_configurator.js\n
-gadget_officejs_page_jio_dav_configurator.js\n
-gadget_officejs_page_login.js\n
-gadget_officejs_page_logout.js\n
-gadget_officejs_page_share_webrtc_jio.js\n
-gadget_officejs_page_sync.js\n
-gadget_officejs_page_text_editor_list.js\n
-gadget_officejs_router.js\n
-gadget_officejs_text_editor_application.js\n
-gadget_officejs_text_editor_application_panel.js\n
+gadget_monitoring_chart.html\n
+gadget_monitoring_document_edit.html\n
+gadget_monitoring_header.html\n
+gadget_monitoring_hosting_overview.html\n
+gadget_monitoring_jio.html\n
+gadget_monitoring_login.html\n
+gadget_monitoring_login_widget.html\n
+gadget_monitoring_main.html\n
+gadget_monitoring_overview.html\n
+gadget_monitoring_process_view.html\n
+gadget_monitoring_promise_interface.html\n
+gadget_monitoring_resource_view.html\n
+gadget_monitoring_router.html\n
+gadget_monitoring_settings_configurator.html\n
+gadget_monitoring_status_grid.html\n
+gadget_monitoring_status_list.html\n
+gadget_monitoring_widget_listbox.html\n
+gadget_monitoring_widget_listview.html\n
+gadget_monitoring_widget_overview.html\n
+gadget_monitoring_custom.css\n
+gadget_monitoring_tooltipster.css\n
+gadget_monitoring_application_panel.js\n
+gadget_monitoring_chart.js\n
+gadget_monitoring_document_edit.js\n
+gadget_monitoring_header.js\n
+gadget_monitoring_hosting_overview.js\n
+gadget_monitoring_jio.js\n
+gadget_monitoring_login.js\n
+gadget_monitoring_login_widget.js\n
+gadget_monitoring_main.js\n
+gadget_monitoring_overview.js\n
+gadget_monitoring_process_view.js\n
+gadget_monitoring_promise_interface.js\n
+gadget_monitoring_resource_view.js\n
+gadget_monitoring_router.js\n
+gadget_monitoring_static.js\n
+gadget_monitoring_status_grid.js\n
+gadget_monitoring_status_list.js\n
+gadget_monitoring_tooltipster.min.js\n
+gadget_monitoring_widget_listbox.js\n
+gadget_monitoring_widget_listview.js\n
+gadget_monitoring_widget_overview.js\n
 gadget_translation.js\n
 gadget_translation_data.js\n
-gadget_officejs_webrtc_jio.js\n
-gadget_officejs_widget_listbox.js\n
 erp5_launcher.js\n
 erp5_launcher.html\n
-rjsunsafe/gadget_ckeditor.js\n
-rjsunsafe/gadget_ckeditor.html\n
 NETWORK:\n
 *
 
@@ -237,9 +252,7 @@ NETWORK:\n
           <dictionary>
             <item>
                 <key> <string>action</string> </key>
-                <value>
-                  <none/>
-                </value>
+                <value> <string>publish</string> </value>
             </item>
             <item>
                 <key> <string>actor</string> </key>
@@ -265,7 +278,7 @@ NETWORK:\n
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455289075.54</float>
+                        <float>1458647957.13</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
@@ -274,7 +287,7 @@ NETWORK:\n
             </item>
             <item>
                 <key> <string>validation_state</string> </key>
-                <value> <string>draft</string> </value>
+                <value> <string>published</string> </value>
             </item>
           </dictionary>
         </list>
@@ -310,7 +323,7 @@ NETWORK:\n
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6596.54736.51558</string> </value>
+                <value> <string>950.4056.16865.34099</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -328,7 +341,7 @@ NETWORK:\n
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455289277.29</float>
+                        <float>1458896288.17</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_html.xml
index df7dd5bdbccd257775387a9c011f788b10b85892..058fe0f11318ac9a015c6d3eb59d345cb97e6512 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_html.xml
@@ -117,6 +117,7 @@
 \n
     <link rel="stylesheet" href="magnific-popup.css">\n
     <link rel="stylesheet" href="gadget_monitoring_tooltipster.css">\n
+    <link href="gadget_monitoring_custom.css" rel="stylesheet" type="text/css"/>\n
     <!-- renderjs -->\n
     <script src="rsvp.js" type="text/javascript"></script>\n
     <script src="renderjs.js" type="text/javascript"></script>\n
@@ -150,15 +151,16 @@
     <script id="panel-template-body" type="text/x-handlebars-template">\n
       <div class="ui-content">\n
         <ul data-role="listview" class="ui-listview">\n
-          <li><a href="#page=status_list" data-i18n="Promises Overview">Promises Overview</a></li>\n
-          <li><a href="#page=overview" data-i18n="Instances Overview">Instances Overview</a></li>\n
-          <li><a href="#page=settings_configurator" data-i18n="Monitoring Configuration">Monitoring Configuration</a></li>\n
+          <li><a href="#page=status_list"><i class="fa fa-th-list"></i><span data-i18n="Promises Overview">Promises Overview</span></a></li>\n
+          <li><a href="#page=overview"><i class="fa fa-cube"></i><span data-i18n="Instances Overview">Instances Overview</span></a></li>\n
+          <li><a href="#page=hosting_overview"><i class="fa fa-globe"></i><span data-i18n="Applications Overview">Applications Overview</span></a></li>\n
+          <li><a href="#page=settings_configurator"><i class="fa fa-cog"></i><span data-i18n="Monitoring Configuration">Monitoring Configuration</span></a></li>\n
         </ul>\n
       </div>\n
     </script>\n
 \n
     <!-- custom script -->\n
-    <script src="gadget_officejs_text_editor_application_panel.js" type="text/javascript"></script>\n
+    <script src="gadget_monitoring_application_panel.js" type="text/javascript"></script>\n
 \n
   </head>\n
   <body>\n
@@ -301,7 +303,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.3550.20058.13789</string> </value>
+                <value> <string>949.63903.8246.8413</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -319,7 +321,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455194311.05</float>
+                        <float>1458554861.74</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..445aed2d774b688ad87233b50eb8ee43ffdc5836
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_application_panel_js.xml
@@ -0,0 +1,433 @@
+<?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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/team</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_monitoring_application_panel.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_monitoring_application_panel_js</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>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*jslint nomen: true, indent: 2, maxerr: 3 */\n
+/*global window, rJS, Handlebars, jQuery, RSVP, loopEventListener */\n
+(function (window, rJS, Handlebars, $, RSVP, loopEventListener) {\n
+  "use strict";\n
+\n
+  var gadget_klass = rJS(window),\n
+    source_header = gadget_klass.__template_element\n
+                         .getElementById("panel-template-header")\n
+                         .innerHTML,\n
+    panel_template_header = Handlebars.compile(source_header),\n
+    source_body = gadget_klass.__template_element\n
+                         .getElementById("panel-template-body")\n
+                         .innerHTML,\n
+    panel_template_body = Handlebars.compile(source_body);\n
+\n
+  gadget_klass\n
+\n
+    .declareAcquiredMethod("translateHtml", "translateHtml")\n
+\n
+    // Assign the element to a variable\n
+    // Init local properties\n
+    .ready(function (g) {\n
+      g.props = {};\n
+    })\n
+\n
+\n
+    .ready(function (g) {\n
+      return g.getElement()\n
+        .push(function (element) {\n
+          g.props.element = element;\n
+          g.props.jelement = $(element.querySelector("div"));\n
+        });\n
+    })\n
+\n
+    .ready(function (g) {\n
+      g.props.jelement.panel({\n
+        display: "overlay",\n
+        position: "left",\n
+        theme: "b"\n
+        // animate: false\n
+      });\n
+    })\n
+\n
+\n
+    .ready(function (g) {\n
+      return g.translateHtml(panel_template_header() + panel_template_body())\n
+        .push(function (my_translated_or_plain_html) {\n
+          g.props.jelement.html(my_translated_or_plain_html);\n
+          g.props.jelement.trigger("create");\n
+        });\n
+    })\n
+\n
+    .declareMethod(\'toggle\', function () {\n
+      this.props.jelement.panel("toggle");\n
+    })\n
+\n
+    .declareMethod(\'close\', function () {\n
+      this.props.jelement.panel("close");\n
+    })\n
+\n
+    .declareMethod(\'render\', function () {\n
+      return;\n
+    })\n
+\n
+    /////////////////////////////////////////////////////////////////\n
+    // declared services\n
+    /////////////////////////////////////////////////////////////////\n
+    .declareService(function () {\n
+      var panel_gadget,\n
+        form_list,\n
+        event_list,\n
+        i,\n
+        len;\n
+\n
+\n
+      function formSubmit() {\n
+        panel_gadget.toggle();\n
+      }\n
+\n
+      panel_gadget = this;\n
+      form_list = panel_gadget.props.element.querySelectorAll(\'form\');\n
+      event_list = [];\n
+\n
+      // XXX: not robust - Will break when search field is active\n
+      for (i = 0, len = form_list.length; i < len; i += 1) {\n
+        event_list[i] = loopEventListener(\n
+          form_list[i],\n
+          \'submit\',\n
+          false,\n
+          formSubmit\n
+        );\n
+      }\n
+\n
+      return new RSVP.Queue()\n
+        .push(function () {\n
+          return RSVP.all(event_list);\n
+        });\n
+    });\n
+\n
+\n
+}(window, rJS, Handlebars, jQuery, RSVP, loopEventListener));
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Monitoring Application Panel Gadget JS</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</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>1457543185.33</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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>949.47045.16188.28006</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>1457543391.78</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>1457543137.74</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_custom_css.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_custom_css.xml
index d45b9f52d40d13dc6f922597c2f01088b69248d9..07964b59821d602ecc6d203ee4a1ae119e1ff70c 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_custom_css.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_custom_css.xml
@@ -111,6 +111,33 @@
 html head + body.ui-overlay-a, html head + body.ui-overlay-a .ui-page, html head + body.ui-overlay-a .ui-page .ui-panel-wrapper {\n
   background: #FBFBFB; \n
 }\n
+\n
+html .ui-panel .ui-listview li a, html .ui-panel .ui-listview li div.ui-btn {\n
+    /* padding: .4em 2.75em .4em 1em; */\n
+    padding: .4em 0.75em !important;\n
+}\n
+html .ui-panel .ui-listview li a span, html .ui-panel .ui-listview li div.ui-btn span {\n
+    padding-left: 15px;\n
+}\n
+.ui-mobile .ui-page-active {\n
+    overflow-x: visible;\n
+}\n
+html div[role=\'main\'] > div.ui-content {\n
+  padding: 5px;\n
+}\n
+\n
+\n
+\n
+\n
+/*\n
+html .ui-bar-a, html .ui-bar-a .ui-bar-inherit, html body .ui-body-a .ui-bar-inherit, html body .ui-group-theme-a .ui-bar-inherit {\n
+  background-color: #49227D;\n
+}\n
+html head + body .ui-bar-a .ui-btn:hover, html head + body .ui-body-a .ui-btn:hover, html head + body .ui-btn.ui-btn-a:hover, html head + body .ui-group-theme-a .ui-btn:hover, html head + body .ui-group-theme-a .ui-btn.ui-btn-a:hover, html head + body .ui-group-theme-a .ui-btn.ui-btn-a:active, html head + body .ui-bar-a .ui-btn:active, html head + body .ui-body-a .ui-btn:active, html head + body .ui-btn.ui-btn-a:active, html head + body .ui-group-theme-a .ui-btn:active, html head + body .ui-group-theme-a .ui-btn-a:active, html head + body .ui-bar-a .ui-btn.ui-btn-active, html head + body .ui-body-a .ui-btn.ui-btn-active, html head + body .ui-btn.ui-btn-a.ui-btn-active, html head + body .ui-group-theme-a .ui-btn-active, html head + body .ui-group-theme-a .ui-btn-a.ui-btn-active {\n
+    background-color: #19023E;\n
+    background: #19023E;\n
+}\n
+*/\n
 .ui-grid-container > ul, .ui-grid-container > ul li {\n
   list-style: none outside none;\n
   margin-left: 0;\n
@@ -134,27 +161,31 @@ html .ui-grid-container > ul.ui-grid-column-5 > .ui-grid-span-1 {\n
   -ms-box-sizing: border-box;\n
   box-sizing: border-box;\n
 }\n
-.ui-grid-container .ui-grid-a .ui-block-a, .ui-grid-container .ui-grid-a .ui-block-a {\n
+/*.ui-grid-container .ui-grid-a .ui-block-a, .ui-grid-container .ui-grid-a .ui-block-a {\n
   padding: 10px 15px;\n
 }\n
 .ui-grid-container .ui-grid-b .ui-block-a, .ui-grid-container .ui-grid-b .ui-block-b {\n
   padding: 10px 15px;\n
-}\n
+}*/\n
 /*\n
 @media (max-width: 32em)\n
 html.ui-mobile .ui-grid-container.ui-responsive > ul > li, html.ui-mobile .ui-grid-container.ui-responsive > ul[class*="ui-grid-column"] > li {\n
   width: 100%;\n
 }*/\n
 \n
+.margin-0 {margin: 0}\n
 .padding-5 {padding: 5px;}\n
 .padding-10 {padding: 10px;}\n
 .padding-15 {padding: 15px;}\n
 .padding-20 {padding: 20px;}\n
+.padding-tb-5 {padding: 10px 0;}\n
 .padding-tb-10 {padding: 10px 0;}\n
 .padding-tb-20 {padding: 20px 0;}\n
+.padding-lr-5 {padding: 0 5px;}\n
 .padding-lr-10 {padding: 0 10px;}\n
 .padding-lr-20 {padding: 0 20px;}\n
 .padding-lrb-20 {padding: 0 20px 20px;}\n
+.border-gray {    border: 1px solid #C3C3C3; border-radius: 3px;}\n
 .ui-text{\n
   padding: 0 10px;\n
 }\n
@@ -166,10 +197,17 @@ html.ui-mobile .ui-grid-container.ui-responsive > ul > li, html.ui-mobile .ui-gr
 .ui-text-ERROR, .ui-text-error {\n
   color: #DC4343;\n
 }\n
+.ui-text-INFO, .ui-text-info {\n
+  color: #DC4343;\n
+}\n
 .ui-text-OK, .ui-text-ok {\n
   color: green;\n
 }\n
 \n
+.ui-text-desabled {\n
+  color: rgba(128, 128, 128, 0.66);\n
+}\n
+\n
 .text-overview {\n
   max-width: 200px;\n
   white-space: nowrap;\n
@@ -239,7 +277,6 @@ html.ui-mobile .ui-grid-container.ui-responsive > ul > li, html.ui-mobile .ui-gr
   font-weight: normal;\n
   padding: 5px;\n
   white-space: nowrap;\n
-  text-align: center;\n
 }\n
 \n
 html .ui-panel-overview table {\n
@@ -250,11 +287,22 @@ html .ui-panel-overview table {\n
 html .content-details table tr th, html .content-details table tr td {\n
   padding: 5px;\n
 }\n
+html .content-details .instances-parameters table tr td {\n
+  padding: 0 0 0 10px;\n
+}\n
+html .content-details .instances-parameters table tr td:last-child {\n
+  padding: 0;\n
+  width: 50px;\n
+}\n
 html .promise-list table tr {\n
   cursor: pointer;\n
 }\n
 .promise-list {\n
-  padding: 10px 20px;\n
+  padding: 10px;\n
+}\n
+\n
+table tr.line-edit {\n
+  cursor: pointer;\n
 }\n
 \n
 .header-form-overview {\n
@@ -274,6 +322,14 @@ html .promise-list table tr {\n
     margin-top: 0.1em;\n
 }\n
 \n
+.ui-content-sections {\n
+  margin-top: 1em;\n
+  padding: 1em;\n
+  -webkit-border-radius: .3125em;\n
+  border-radius: .3125em;\n
+  border: 1px solid #A2A2A2;\n
+}\n
+\n
 html head + body .ui-panel-overview > h2 {\n
   font-weight: bold;\n
   font-size: 105%;\n
@@ -346,6 +402,13 @@ html head + body .ui-panel-overview > h2 {\n
   vertical-align: baseline;\n
   border-radius: .25em;\n
 }\n
+.label-text {\n
+  display: block;\n
+  margin: .6em 0 .4em;\n
+  font-weight: 400;\n
+  font-size: 16px;\n
+  text-transform: capitalize;\n
+}\n
 \n
 .ui-content-hidden {\n
   display: none;\n
@@ -360,6 +423,12 @@ html head + body .ui-panel-overview > h2 {\n
 .ui-panel-overview .ui-listview-container {\n
   padding: 0;\n
 }\n
+.ui-listview-container ul {\n
+  padding: 0;\n
+}\n
+.ui-listview-container ul li a.ui-btn {\n
+  text-align: left;\n
+}\n
 ul li .ui-collapse-content {\n
   background-color: #fff;\n
   border-color: #ddd;\n
@@ -426,6 +495,11 @@ ul li .ui-collapse-content fieldset > div, ul li .ui-collapse-content fieldset >
   content: "\\f009";\n
 }\n
 \n
+.column-check {\n
+  width: 54px;\n
+  padding-top: 5px;\n
+}\n
+\n
 .listbox-filter-panel, .overview-filter-panel {\n
   padding: 1em;\n
   padding-top: .1em;\n
@@ -454,6 +528,9 @@ html .custom-grid-wrap table thead tr th {\n
   list-style: none;\n
   font-size: 12px;\n
 }\n
+.legend ul li {\n
+    list-style: none;\n
+}\n
 .legend:before {\n
   display: block;\n
   content: "";\n
@@ -479,10 +556,20 @@ html .custom-grid-wrap table thead tr th {\n
 .graph-label {\n
   font-size: 75%;\n
 }\n
+.dygraph-xlabel {\n
+  font-size: 110%;\n
+  color: #344558;\n
+  padding: 8px 0;\n
+}\n
 .graph-medium {\n
   height: 200px;\n
   width: 100%;\n
 }\n
+.graph-h-medium {\n
+  height: 230px;\n
+  width: 100%;\n
+  margin: 30px 0;\n
+}\n
 .ui-grid-column .graph-state-labels {\n
   margin: 10px;\n
 }\n
@@ -611,6 +698,7 @@ html .tooltipster-base table td, html .tooltipster-base table th {\n
 \n
 html table.instance-overview tr td > a.selected {\n
   border-left: 4px solid #93D2B8;\n
+  border-color: #93D2B8;\n
 }\n
 \n
 html table.instance-overview td:first-child > a, html table.instance-overview td:first-child > a:hover {\n
@@ -625,6 +713,105 @@ html table.instance-overview td:first-child > a, html table.instance-overview td
   margin-left: -150px;\n
   width: 320px;\n
 }\n
+\n
+/* Hpanel box for hosting subscription */\n
+.hpanel {\n
+  background-color: none;\n
+  border: none;\n
+  box-shadow: none;\n
+  margin-bottom: 25px;\n
+}\n
+\n
+.hpanel .panel-body {\n
+  min-height: 150px;\n
+  background: #fff;\n
+  border: 1px solid #e4e5e7;\n
+  color: #6a6c6f;\n
+  border-radius: 2px;\n
+  padding: 20px;\n
+  position: relative;\n
+}\n
+\n
+.hpanel > .panel-footer {\n
+  color: inherit;\n
+  border: 1px solid #e4e5e7;\n
+  border-top: none;\n
+  font-size: 90%;\n
+  background: #f7f9fa;\n
+  padding: 10px 15px;\n
+}\n
+\n
+.panel-header {\n
+  padding: 10px 5px;\n
+  color: #6a6c6f;\n
+  text-transform: uppercase;\n
+  font-weight: 600;\n
+}\n
+\n
+.panel-footer {\n
+  padding: 10px 15px;\n
+  background-color: #f5f5f5;\n
+  border-top: 1px solid #ddd;\n
+  border-bottom-right-radius: 3px;\n
+  border-bottom-left-radius: 3px;\n
+}\n
+\n
+.hpanel .panel-body > h2:first-child {\n
+  margin-top: 0;\n
+  color: #6a6c6f;\n
+  text-transform: uppercase;\n
+  font-weight: 600;\n
+  float: left;\n
+}\n
+\n
+.panel-body:before, .panel-body:after {\n
+  display: table;\n
+  content: " ";\n
+}\n
+\n
+.panel-body:after {\n
+  clear: both;\n
+}\n
+\n
+\n
+/* Magnific Popup */\n
+.white-popup {\n
+  position: relative;\n
+  background: #FFF;\n
+  padding: 20px;\n
+  width: auto;\n
+  max-width: 300px;\n
+  margin: 20px auto;\n
+}\n
+\n
+/************** Media @ **********************/\n
+@media all and (max-width: 62em) {\n
+  form.search .ui-block-a {\n
+    width: 60%;\n
+    float: left;\n
+  }\n
+  form.search .ui-block-b {\n
+    width: 40%;\n
+    float:left;\n
+  }\n
+  .ui-panel-overview {\n
+    margin: 15px 0 20px 0;\n
+  }\n
+  html table:not(.ui-responsive) tbody tr td:first-child a, html table:not(ui-responsive) tbody tr th:first-child a {\n
+    position: relative;\n
+  }\n
+  html .content-details .instances-parameters table tr td {\n
+    padding: 10px 0 10px 10px;\n
+  }\n
+  .content-details {\n
+    padding: 10px;\n
+  }\n
+  table td .prop-edit {\n
+    padding: 5px;\n
+    max-height: 2.05em;\n
+  }\n
+}\n
+\n
 
 
 ]]></string> </value>
@@ -764,7 +951,7 @@ html table.instance-overview td:first-child > a, html table.instance-overview td
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6362.31366.44049</string> </value>
+                <value> <string>949.64125.34749.34235</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -782,7 +969,7 @@ html table.instance-overview td:first-child > a, html table.instance-overview td
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455275197.77</float>
+                        <float>1458581200.97</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_html.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f084dd4cb64fc4ffa2ed6b9ae66f0cb1af34908a
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_html.xml
@@ -0,0 +1,381 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Page" 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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/team</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_monitoring_document_edit.html</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Document Edit widget</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_monitoring_document_edit_html</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 Page</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<!DOCTYPE html>\n
+<html>\n
+  <head>\n
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n
+    <meta name="viewport" content="width=device-width, user-scalable=no" />\n
+    <title>Monitoring Document Edit Page</title>\n
+\n
+    <link rel="stylesheet" href="magnific-popup.css">\n
+    <link href="gadget_monitoring_custom.css" rel="stylesheet" type="text/css"/>\n
+    <!-- renderjs -->\n
+    <script src="rsvp.js" type="text/javascript"></script>\n
+    <script src="renderjs.js" type="text/javascript"></script>\n
+\n
+    <script id="login-toltip-template" type="text/x-handlebars-template">\n
+    </script>\n
+\n
+    <!-- magnific-popup -->\n
+    <script src="jquery.magnific-popup.min.js" type="text/javascript"></script>\n
+    <!-- custom script -->\n
+    <script src="gadget_monitoring_document_edit.js" type="text/javascript"></script>\n
+\n
+  </head>\n
+  <body>\n
+    <div data-gadget-url="gadget_monitoring_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div>\n
+    <div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div>\n
+    <div class="white-popup mfp-hide">\n
+      <div class="ui-promise-title"><h2 style="font-size: 1.1em;"></h2></div>\n
+      <form>\n
+        <div data-role="content">\n
+          <div class="form-controlgroup">\n
+            \n
+          </div>\n
+        </div>\n
+        <div class="padding-5">\n
+          <span class="ui-text-error"></span>\n
+        </div>\n
+        <div>\n
+          <button type="button" class="ui-btn ui-corner-all ui-btn-inline cancel"><i class="fa fa-times"></i> Cancel</button>\n
+          <button type="submit" class="ui-btn ui-corner-all ui-btn-inline save"><i class="fa fa-floppy-o"></i> Save</button>\n
+          <div class="ui-content-hidden spinner">\n
+            <i class="fa fa-spinner fa-spin"></i>\n
+          </div>\n
+        </div>\n
+      </form>\n
+    </div>\n
+  </body>\n
+</html>
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Monitoring Document Edit widget</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</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>1457541237.88</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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>949.48450.25809.9642</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>1457629718.71</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>1457539323.65</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e86c232d4fc9c5960088ca44171ac6ed96b5c6b3
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_document_edit_js.xml
@@ -0,0 +1,536 @@
+<?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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/public</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_monitoring_document_edit.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_monitoring_document_edit_js</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>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*global document, window, rJS, $ */\n
+/*jslint nomen: true, indent: 2, maxerr: 3*/\n
+(function (window, document, rJS, $) {\n
+  "use strict";\n
+\n
+  var gadget_klass = rJS(window),\n
+    templater = gadget_klass.__template_element;\n
+\n
+  function getHtmlFromJson(parameter_list) {\n
+    var i,\n
+      html_content = \'\';\n
+\n
+    for (i = 0; i < parameter_list.length; i += 1) {\n
+      html_content += \'<span class="label-text">\' + parameter_list[i].title + \':</span>\\n\';\n
+      if (parameter_list[i].key) {\n
+        html_content += \'<input type="text" name="\' + parameter_list[i].key +\n
+          \'" placeholder="\' + parameter_list[i].title + \'" value="\' +\n
+          parameter_list[i].value +\'" data-mini="true">\\n\';\n
+      } else {\n
+        html_content += \'<input type="text" name="\' + parameter_list[i].key +\n
+          \'" placeholder="\' + parameter_list[i].title + \'" value="\'+\n
+          parameter_list[i].value +\'" data-mini="true" disabled="disabled">\\n\';\n
+      }\n
+    }\n
+    return html_content;\n
+  }\n
+\n
+  function getFormDataList(formElement, parameter_list) {\n
+    var i,\n
+      formData_list = [];\n
+    for (i = 0; i < parameter_list.length; i += 1) {\n
+      formData_list.push(parameter_list[i]);\n
+      if (parameter_list[i].key) {\n
+        // Editable fields\n
+        if (formElement.querySelector(\'input[name="\' + parameter_list[i].key + \'"]\').value !== undefined) {\n
+          formData_list[i].value = formElement.querySelector(\'input[name="\' + parameter_list[i].key + \'"]\').value;\n
+        }\n
+      }\n
+    }\n
+    return formData_list;\n
+  }\n
+\n
+  function saveDocument(gadget, jio_document) {\n
+    // Authenticate before save\n
+    // Normally password should already exists otherwise will redirect to login box and edited data will be lost!!!\n
+    return gadget.props.login_gadget.loginRedirect(\n
+        gadget.props.options.url,\n
+        gadget.props.options.page_options,\n
+        gadget.props.options.title,\n
+        gadget.props.options.root_title\n
+      )\n
+      .push(function (cred) {\n
+        var url = gadget.props.options.url;\n
+        if (gadget.props.options.path) {\n
+          url += (url.endsWith(\'/\') ? \'\':\'/\') + gadget.props.options.path;\n
+        }\n
+        gadget.props.jio_gadget.createJio({\n
+          type: "query",\n
+          sub_storage: {\n
+            type: "drivetojiomapping",\n
+            sub_storage: {\n
+              type: "dav",\n
+              url: url,\n
+              basic_login: cred.hash\n
+            }\n
+          }\n
+        });\n
+        return gadget.props.jio_gadget.put(gadget.props.options.key, jio_document);\n
+      })\n
+      .push(function (result) {\n
+        return {status: \'OK\'};\n
+      }, function (error) {\n
+        console.log(error);\n
+        return {status: \'ERROR\', code: error.target.status};\n
+      });\n
+    \n
+  }\n
+\n
+  gadget_klass\n
+    .ready(function (g) {\n
+      g.props = {};\n
+      \n
+      return g.getElement()\n
+        .push(function (element) {\n
+          g.props.element = element;\n
+          g.props.deferred = RSVP.defer();\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("jio_gadget")\n
+        .push(function (jio_gadget) {\n
+          gadget.props.jio_gadget = jio_gadget;\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("login_gadget")\n
+        .push(function (login_gadget) {\n
+          gadget.props.login_gadget = login_gadget;\n
+        });\n
+    })\n
+    .declareMethod("render", function (options) {\n
+      var gadget = this;\n
+      return new RSVP.Queue()\n
+      .push(function () {\n
+          return gadget.props.deferred.resolve();\n
+        });\n
+    })\n
+    .declareMethod("popupEdit", function (options, updateMethod) {\n
+      var gadget = this,\n
+        title = \'Edit \' + (options.title || \'Monitoring Parameters\'),\n
+        html_form = \'\';\n
+\n
+      gadget.props.options = options;\n
+      html_form = getHtmlFromJson(options.parameters || []);\n
+\n
+      gadget.props.element.querySelector(\'.form-controlgroup\')\n
+        .innerHTML = html_form;\n
+      gadget.props.element.querySelector(\'.ui-promise-title h2\')\n
+        .innerHTML = title;\n
+\n
+      return new RSVP.Queue()\n
+        .push(function () {\n
+          return $.magnificPopup.open({\n
+            items: {\n
+                src: \'.white-popup\',\n
+                type: \'inline\'\n
+            },\n
+            closeBtnInside: true,\n
+            callbacks: {\n
+              open: function() {\n
+                return new RSVP.Queue()\n
+                  .push(function () {\n
+                    return $(\'.white-popup form\').trigger("create");\n
+                  })\n
+                  .push(function () {\n
+                    var promise_list = [];\n
+\n
+                    promise_list.push(loopEventListener(\n
+                      document.querySelector(\'.mfp-content form .cancel\'),\n
+                      \'click\',\n
+                      false,\n
+                      function (evt) {\n
+                        return $.magnificPopup.close();\n
+                      }\n
+                    ));\n
+                    promise_list.push(loopEventListener(\n
+                      document.querySelector(\'.mfp-content form .save\'),\n
+                      \'click\',\n
+                      false,\n
+                      function (evt) {\n
+                        var data = getFormDataList(document.querySelector(\'.mfp-content form\'), options.parameters);\n
+                        return new RSVP.Queue()\n
+                          .push(function () {\n
+                            $(document.querySelector(\'.mfp-content spinner\')).toggleClass(\'ui-content-hidden\');\n
+                            return RSVP.all([saveDocument(gadget, data)]);\n
+                          })\n
+                          .push(function (result) {\n
+                            if (result[0].status === \'ERROR\') {\n
+                              document.querySelector(\'.mfp-content .ui-text-error\')\n
+                                .innerHTML = \'ERROR \' + result[0].code + \': Failed to save your document!\';\n
+                            } else {\n
+                              $.magnificPopup.close();\n
+                              return updateMethod(data);}\n
+                          })\n
+                          .push(function () {\n
+                            $(document.querySelector(\'.mfp-content spinner\')).toggleClass(\'ui-content-hidden\');\n
+                          });\n
+                      }\n
+                    ));\n
+                    return RSVP.all(promise_list);\n
+                  });\n
+              },\n
+              close: function() {\n
+                // Will fire when popup is closed\n
+                $(\'.white-popup\').remove();\n
+              }\n
+            }\n
+          });\n
+        })\n
+        .push(function () {\n
+          return gadget.props.deferred.resolve();\n
+        });\n
+    })\n
+\n
+\n
+    .declareService(function () {\n
+      var gadget = this;\n
+\n
+      return new RSVP.Queue()\n
+        .push(function () {\n
+          return gadget.props.deferred.promise;\n
+        })\n
+        .push(function () {\n
+\n
+        });\n
+    });\n
+\n
+}(window, document, rJS, $));\n
+\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Monitoring Document Edit Widget JS</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</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>1457541225.98</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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>949.49438.50290.39714</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>1458061223.97</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>1457541085.23</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_header_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_header_html.xml
index 6cf444976971a45fa138ad287ebc4647d859840b..908fdd354bad77de8217a56d34af1e5b1244f77d 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_header_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_header_html.xml
@@ -295,7 +295,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.59081.21048.55005</string> </value>
+                <value> <string>949.47051.37391.64290</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -313,7 +313,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1454506221.84</float>
+                        <float>1457543803.27</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_html.xml
new file mode 100644
index 0000000000000000000000000000000000000000..51413e6466025b0a6d77fb2359cb07d98e1c6af1
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_html.xml
@@ -0,0 +1,536 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Web Page" 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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/public</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_monitoring_hosting_overview.html</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_monitoring_hosting_overview_html</string> </value>
+        </item>
+        <item>
+            <key> <string>language</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Web Page</string> </value>
+        </item>
+        <item>
+            <key> <string>short_title</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<!doctype html>\n
+<html>\n
+  <head>\n
+    <meta charset="utf-8">\n
+    <meta name="viewport" content="width=device-width, initial-scale=1">\n
+\n
+    <title>Monitoring Hosting Subscription</title>\n
+\n
+    <link href="gadget_monitoring_custom.css" rel="stylesheet" type="text/css"/>\n
+\n
+    <script src="rsvp.js"></script>\n
+    <script src="renderjs.js"></script>\n
+\n
+    <script id="template-hostings-list" type="text/x-handlebars-template">\n
+      {{#each hosting_list}}\n
+      <tr rel={{index}}>\n
+        <td>\n
+          <a class="ui-link" href="#{{status}}"><span class="label label-{{status}}">{{status}}</span></a>\n
+        </td>\n
+        <td>\n
+          <a class="ui-link" href="">{{title}}</a>\n
+        </td>\n
+        <td>\n
+          <a class="ui-link" href="">{{date}}</a>\n
+        </td>\n
+      </tr>\n
+      {{/each}}\n
+    </script>\n
+\n
+    <script id="instance-details-widget-overview" type="text/x-handlebars-template">\n
+      {{#if status_list_url}}\n
+      <div data-role="controlgroup">\n
+        <a class="ui-btn ui-corner-all" href="{{status_list_url}}" title="Public"><i class="fa fa-check-square"></i> View Promises Status</a>\n
+      </div>\n
+      {{/if}}\n
+      <div class="ui-listview-container">\n
+        <ul data-role="listview" class="ui-listview-outer" data-inset="true">\n
+          {{#each instance_list}}\n
+            <li>\n
+              <a href="#" class="ui-btn ui-btn-icon-right ui-icon-plus">\n
+              <span class="ui-status-icon ui-status-{{status}}"></span>\n
+              <span class="ui-status-text">{{title}}</span>\n
+              </a>\n
+              <div class="ui-collapse-content ui-content-hidden">\n
+                <fieldset>\n
+                  <div class="ui-field-contain">\n
+                    <fieldset data-role="controlgroup" data-type="horizontal">\n
+                      {{#if resource_url }}\n
+                      <a href="{{resource_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-pie-chart"></i> Resources</a>\n
+                      {{/if}}\n
+                      {{#if process_url }}\n
+                      <a href="{{process_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-list-alt"></i> Processes</a>\n
+                      {{/if}}\n
+                      {{#if rss_url}}\n
+                      <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{rss_url}}" title="RSS"><i class="fa fa-rss-square"></i> RSS</a>\n
+                      {{/if}}\n
+                      <!--\n
+                      {{#if public_url}}\n
+                      <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{public_url}}" title="Public"><i class="fa fa-folder-open-o"></i> Public</a>\n
+                      {{/if}}\n
+                      {{#if private_url}}\n
+                      <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{private_url}}" title="Private"><i class="fa fa-lock"></i> Private</a>\n
+                      {{/if}}\n
+                      -->\n
+                    </fieldset>\n
+                  </div>\n
+                  <table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke">\n
+                    <tr>\n
+                      <th><i class="fa fa-tachometer"></i> <strong>Status</strong></th>\n
+                      <td><span class="label label-{{status}}">{{status}}</span></td>\n
+                      <td>{{date}}</td>\n
+                    </tr>\n
+                    \n
+                    {{#with instance}}\n
+                    <tr>\n
+                      <th><i class="fa fa-desktop"></i> <strong>Computer</strong></th>\n
+                      <td>{{computer}}</td>\n
+                      <td>{{partition}}</td>\n
+                    </tr>\n
+                    <tr>\n
+                      <th><i class="fa fa-globe"></i> <strong>IP Address</strong></th>\n
+                      <td>{{ipv4}}</td>\n
+                      <td>{{ipv6}}</td>\n
+                    </tr>\n
+                    {{/with}}\n
+                  </table>\n
+                </fieldset>\n
+              </div>\n
+            </li>\n
+          {{/each}}\n
+        </ul>\n
+      </div>\n
+    </script>\n
+\n
+    <script id="parameters-widget-template" type="text/x-handlebars-template">\n
+      {{#if parameter_list}}\n
+        {{#each parameter_list}}\n
+          {{#if parameters}}\n
+          <h3 class="margin-0 padding-tb-10">{{title}} <i class="fa fa-angle-up"></i></h3>\n
+          <table data-role="table" data-mode="columntoggle" class="table-stroke" title="{{title}}">\n
+            {{#each parameters}}\n
+              <tr {{#if key}} class="line-edit"  rel="{{../../index}}"{{/if}}>\n
+                <td><strong>{{title}}</strong></td>\n
+                {{#if key}}\n
+                  <td class="v-{{key}}">{{value}}</td>\n
+                {{else}}\n
+                  <td>{{value}}</td>\n
+                {{/if}}\n
+                <td class="ui-text-center">\n
+                  {{#if key}}\n
+                  <a rel="{{../../index}}" class="prop-edit" title=\'Edit this value\'><i class="fa fa-pencil"></i></a>\n
+                  {{else}}\n
+                  <a><span class="ui-text-desabled" title=\'Edit this value\'><i class="fa fa-pencil"></i></sapn></a>\n
+                  {{/if}}\n
+                </td>\n
+              </tr>\n
+            {{/each}}\n
+          </table>\n
+          {{/if}}\n
+        {{/each}}\n
+      {{else}}\n
+        <h2>No parameters.</h2>\n
+      {{/if}}\n
+    </script>\n
+    \n
+    <script src="gadget_monitoring_hosting_overview.js"></script>\n
+\n
+  </head>\n
+\n
+  <body>\n
+    <div data-gadget-url="gadget_monitoring_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div>\n
+    <div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div>\n
+    <!--<div data-gadget-url="gadget_monitoring_document_edit.html" data-gadget-scope="config_gadget" data-gadget-sandbox="public"></div>-->\n
+    <div class="ui-grid-a ui-responsive">\n
+      <div class="ui-block-a">\n
+        \n
+        <div class="ui-panel-overview" style="min-height: 450px;">\n
+          <div class="overview-header">\n
+            <div class=\'content-title ui-instance-title\'>\n
+              <div class="overview-title">\n
+                <i class="fa fa-globe"></i> <span>Monitoring Applications</span>\n
+              </div>\n
+              <div class="commands">\n
+              </div>\n
+            </div>\n
+          </div>\n
+          <div class="overview-content">\n
+          \n
+            <div class="ui-listview-container">\n
+              <table class="ui-responsive ui-body-c ui-table-inset instance-overview">\n
+                <thead class="ui-bar-inherit">\n
+                  <tr>\n
+                    <th class="padding-10"></th>\n
+                    <th>Name</th>\n
+                    <th>Status Date</th>\n
+                  </tr>\n
+                </thead>\n
+                <tbody>\n
+\n
+                </tbody>\n
+                <tfoot class="ui-bar-inherit"></tfoot>\n
+              </table>\n
+            </div>\n
+\n
+          </div>\n
+        </div>\n
+        \n
+      </div>\n
+      <div class="ui-block-b">\n
+        <div class="ui-panel-overview ui-content-hidden">\n
+          <div class="overview-header">\n
+            <div class=\'content-title ui-instance-title\'>\n
+              <div class="overview-title">\n
+                <i class="fa fa-share-alt"></i> <span></span>\n
+              </div>\n
+              <div class="commands">\n
+              </div>\n
+            </div>\n
+          </div>\n
+          <div class="content-details">\n
+            <h2><i class="fa fa-wrench"></i> <strong>Instances Parameters</strong></h2>\n
+            <div style="overflow: auto;" class="padding-lr-10 instances-parameters">\n
+            </div>\n
+            <div class="padding-5"></div>\n
+            <h2><i class="fa fa-cubes"></i> <strong>Instances State List</strong></h2>\n
+            <div class="instances-status">\n
+            </div>\n
+          </div>\n
+        </div>\n
+      </div>\n
+    </div>\n
+    \n
+    \n
+  </body>\n
+</html>\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Monitoring Hosting Subscription Overview</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value>
+              <none/>
+            </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</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>1457347252.5</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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>949.64120.38038.28552</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>1458568209.8</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>1457346986.01</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..080c2239c0ab0dea5d64eba9ddcab75e5e7e83f1
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_hosting_overview_js.xml
@@ -0,0 +1,831 @@
+<?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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/public</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>gadget_monitoring_hosting_overview.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>gadget_monitoring_hosting_overview_js</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>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*global window, rJS, btoa */\n
+/*jslint nomen: true, indent: 2, maxerr: 3*/\n
+(function (window, rJS) {\n
+  "use strict";\n
+\n
+  var gadget_klass = rJS(window),\n
+    templater = gadget_klass.__template_element,\n
+\n
+    hosting_widget_template = Handlebars.compile(\n
+      templater.getElementById("template-hostings-list").innerHTML\n
+    ),\n
+    parameters_widget_template = Handlebars.compile(\n
+      templater.getElementById("parameters-widget-template").innerHTML\n
+    ),\n
+    instance_widget_template = Handlebars.compile(\n
+      templater.getElementById("instance-details-widget-overview").innerHTML\n
+    );\n
+\n
+  function keysrt(key,desc) {\n
+    return function(a,b){\n
+     return desc ? ~~(a[key] < b[key]) : ~~(a[key] > b[key]);\n
+    };\n
+  }\n
+\n
+  function safeGet(gadget, url) {\n
+    var document_id = \'monitor.global\';\n
+    gadget.props.jio_gadget.createJio({\n
+      type: "query",\n
+      sub_storage: {\n
+        type: "drivetojiomapping",\n
+        sub_storage: {\n
+          type: "dav",\n
+          url: url\n
+        }\n
+      }\n
+    });\n
+    return gadget.props.jio_gadget.get(document_id)\n
+      .push(function (doc) {\n
+        return doc;\n
+      }, function (error) {\n
+        console.log(error);\n
+        return undefined;\n
+      });\n
+  }\n
+\n
+  function getHostingData(gadget, url_list) {\n
+    var promise_list = [],\n
+      i;\n
+    for (i = 0; i < url_list.length; i += 1) {\n
+      gadget.props.jio_gadget.createJio({\n
+        type: "query",\n
+        sub_storage: {\n
+          type: "drivetojiomapping",\n
+          sub_storage: {\n
+            type: "dav",\n
+            url: url_list[i]\n
+          }\n
+        }\n
+      });\n
+      promise_list.push(safeGet(gadget, url_list[i]));\n
+    }\n
+    return RSVP.all(promise_list);\n
+  }\n
+\n
+  gadget_klass\n
+    .ready(function (gadget) {\n
+      gadget.props = {};\n
+      gadget.props.hosting_list = [];\n
+      gadget.props.opml_key_list = [];\n
+      return gadget.getDeclaredGadget("login_gadget")\n
+        .push(function (login_gadget) {\n
+          gadget.props.login_gadget = login_gadget;\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getElement()\n
+        .push(function (element) {\n
+          gadget.props.element = element;\n
+          gadget.props.render_deferred = RSVP.defer();\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("jio_gadget")\n
+        .push(function (jio_gadget) {\n
+          gadget.props.jio_gadget = jio_gadget;\n
+        });\n
+    })\n
+    /*.ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("config_gadget")\n
+        .push(function (config_gadget) {\n
+          gadget.props.config_gadget = config_gadget;\n
+        });\n
+    })*/\n
+    .declareAcquiredMethod("redirect", "redirect")\n
+    .declareAcquiredMethod("getSetting", "getSetting")\n
+    .declareAcquiredMethod("setSetting", "setSetting")\n
+    .declareAcquiredMethod("updateHeader", "updateHeader")\n
+    .declareMethod("render", function (options) {\n
+      var gadget = this,\n
+        opml_tmp_key_list,\n
+        hosting_url_list;\n
+      //return gadget.props.jio_gadget.getMonitorUrlList()\n
+      gadget.props.options = options;\n
+      return gadget.updateHeader({\n
+          title: \'Monitoring Registered Applications\'\n
+        })\n
+        .push(function () {\n
+          return gadget.getSetting(\'monitor_url_description\');\n
+        })\n
+        .push(function (url_description_dict) {\n
+          var key,\n
+            promise_list = [];\n
+          gadget.props.opml_dict = url_description_dict;\n
+          opml_tmp_key_list = [];\n
+          console.log(url_description_dict);\n
+          for (key in url_description_dict) {\n
+            opml_tmp_key_list.push(key);\n
+            promise_list.push(gadget.props.jio_gadget.getMonitorUrlListFromOpml(\n
+              url_description_dict[key].href\n
+            ));\n
+          }\n
+          return RSVP.all(promise_list);\n
+        })\n
+        .push(function (url_list) {\n
+          var i,\n
+            j,\n
+            promise_list = [];\n
+          for (i = 0; i < url_list.length; i += 1) {\n
+            if (url_list[i]) {\n
+              promise_list.push(getHostingData(gadget, url_list[i]));\n
+            } else {\n
+              //This Feed is not available, remove from key_list\n
+              opml_tmp_key_list[i] = undefined;\n
+            }\n
+          }\n
+          return RSVP.all(promise_list);\n
+        })\n
+        .push(function (document_list) {\n
+          var i,\n
+            status,\n
+            hosting_dict,\n
+            hosting_title,\n
+            date,\n
+            content,\n
+            j;\n
+\n
+          for (i = 0; i < document_list.length; i += 1) {\n
+            hosting_dict = {};\n
+            status = \'OK\';\n
+            hosting_dict.instance_list = [];\n
+            date = \'\';\n
+            for (j = 0; j < document_list[i].length; j += 1) {\n
+              if (document_list[i][j] === undefined) {\n
+                continue;\n
+              }\n
+              hosting_dict.instance_list.push({\n
+                title: document_list[i][j].title,\n
+                status: document_list[i][j].status,\n
+                url: document_list[i][j]._links.monitor.href\n
+              });\n
+              if (document_list[i][j].status === \'ERROR\') {\n
+                if (status !== \'ERROR\') {\n
+                  status = \'ERROR\';\n
+                  date = document_list[i][j].date || \'\';\n
+                  hosting_title = document_list[i][j][\'hosting-title\'] || \'\';\n
+                }\n
+              } else if (document_list[i][j].status === \'WARNING\') {\n
+                if (status !== \'ERROR\' && status !== \'WARNING\') {\n
+                  status = \'WARNING\';\n
+                  date = document_list[i][j].date || \'\';\n
+                  hosting_title = document_list[i][j][\'hosting-title\'] || \'\';\n
+                }\n
+              } else if (date === \'\') {\n
+                date = document_list[i][j].date || \'\';\n
+                hosting_title = document_list[i][j][\'hosting-title\'] || \'\';\n
+              }\n
+            }\n
+            hosting_dict.status = status;\n
+            hosting_dict.title = hosting_title;\n
+            hosting_dict.date = date;\n
+            hosting_dict.index = i;\n
+            gadget.props.hosting_list.push(hosting_dict);\n
+          }\n
+          for (i = 0; i < opml_tmp_key_list.length; i += 1) {\n
+            if (opml_tmp_key_list[i] !== undefined)  {\n
+              gadget.props.opml_key_list.push(opml_tmp_key_list[i]);\n
+            }\n
+          }\n
+          content = hosting_widget_template({\n
+            hosting_list: gadget.props.hosting_list\n
+          });\n
+          gadget.props.element.querySelector(\'.ui-block-a table tbody\')\n
+            .innerHTML = content;\n
+\n
+          return gadget.props.render_deferred.resolve();\n
+        });\n
+    })\n
+\n
+\n
+    .declareService(function () {\n
+      var gadget = this;\n
+\n
+      function bindOnClick(element) {\n
+        var fieldset = $(element.parentNode.querySelector(\'.ui-collapse-content\')),\n
+            line = $(element);\n
+        if (line.hasClass(\'ui-icon-plus\')) {\n
+          line.removeClass(\'ui-icon-plus\');\n
+          line.addClass(\'ui-icon-minus\');\n
+        } else {\n
+          line.removeClass(\'ui-icon-minus\');\n
+          line.addClass(\'ui-icon-plus\');\n
+        }\n
+        if (fieldset !== undefined) {\n
+          fieldset.toggleClass(\'ui-content-hidden\');\n
+        }\n
+        return false;\n
+      }\n
+\n
+      function updateParameterBox(parameter_list, title) {\n
+        var element = gadget.props.element.querySelector(\'table[title="\' + title + \'"]\'),\n
+        tmp,\n
+          i;\n
+\n
+        if (!element) {\n
+          return;\n
+        }\n
+        for (i = 0; i < parameter_list.length; i += 1) {\n
+          if (!parameter_list[i].key) {\n
+            continue;\n
+          }\n
+          element.querySelector(\'.v-\' + parameter_list[i].key).innerHTML = parameter_list[i].value;\n
+        }\n
+      }\n
+\n
+      function editMonitorProps (element) {\n
+        var index = parseInt($(element).attr(\'rel\'), 10),\n
+          promise_list = [];\n
+\n
+        if (isNaN(index) || gadget.props.document_list.length < index) {\n
+          return;\n
+        }\n
+        \n
+        return new RSVP.Queue()\n
+          .push(function () {\n
+            if (gadget.props.config_gadget) {\n
+              return gadget.dropGadget(\'config_gadget\');\n
+            }\n
+            return false;\n
+          })\n
+          .push(function () {\n
+            gadget.props.config_gadget = null;\n
+            return gadget.declareGadget("gadget_monitoring_document_edit.html",\n
+              {\n
+                element: gadget.props.element,\n
+                scope: \'config_gadget\',\n
+                sandbox: "public"\n
+              }\n
+            );\n
+          })\n
+          .push(function (config_gadget) {\n
+            gadget.props.config_gadget = config_gadget;\n
+            return gadget.props.config_gadget.popupEdit({\n
+              url: gadget.props.document_list[index]._links.private_url.href,\n
+              parameters: gadget.props.document_list[index].parameters,\n
+              title: gadget.props.document_list[index].title,\n
+              root_title: gadget.props.document_list[index][\'hosting-title\'],\n
+              page_options: gadget.props.options,\n
+              path: \'config\',\n
+              key: \'config.tmp\'\n
+            }, function (data) {\n
+              var update_promise = [],\n
+                i,\n
+                monitor_user = \'\',\n
+                monitor_password = \'\';\n
+\n
+              // Try to save monitor credential if they are pres\n
+              for (i = 0; i < data.length; i += 1) {\n
+                if (data[i].key === \'monitor-password\') {\n
+                  monitor_password = data[i].value;\n
+                }\n
+                if ((data[i].key || data[i].title) === \'monitor-user\') {\n
+                  monitor_user = data[i].value;\n
+                }\n
+              }\n
+              if (monitor_password && monitor_user) {\n
+                update_promise.push(gadget.props.login_gadget.updateUrlValue(\n
+                  gadget.props.document_list[index]._links.private_url.href,\n
+                  monitor_user,\n
+                  monitor_password\n
+                ));\n
+              }\n
+              gadget.props.document_list[index].parameters = data;\n
+              updateParameterBox(data, gadget.props.document_list[index].title);\n
+              return RSVP.push(update_promise);\n
+            });\n
+          });\n
+      }\n
+\n
+      function getMonitorCredentials(monitor, hosting_title, index) {\n
+        return gadget.props.login_gadget.loginRedirect(\n
+          monitor.url,\n
+          {\n
+            page: \'hosting_overview\',\n
+            select: index\n
+          },\n
+          monitor.title,\n
+          hosting_title\n
+        );\n
+      }\n
+\n
+      function getSecureDocument(url, auth_login) {\n
+        var jio_options = {\n
+            type: "query",\n
+            sub_storage: {\n
+              type: "drivetojiomapping",\n
+              sub_storage: {\n
+                type: "dav",\n
+                url: url\n
+              }\n
+            }\n
+          },\n
+          document_id = \'monitor.global\';\n
+\n
+        jio_options.sub_storage.sub_storage.basic_login = auth_login;\n
+        gadget.props.jio_gadget.createJio(jio_options);\n
+        return gadget.props.jio_gadget.get(document_id);\n
+      }\n
+\n
+      function getInstanceDict(monitor_dict) {\n
+        var instance_dict,\n
+          tmp_url,\n
+          tmp_process_url;\n
+\n
+        // Resource view URLs\n
+        tmp_url = "#page=resource_view&title=" + monitor_dict.title +\n
+          "&root=" + monitor_dict[\'hosting-title\'] +\n
+          "&jio_for=" + monitor_dict._links.private_url.href;\n
+\n
+        tmp_process_url = "#page=process_view&title=" + monitor_dict.title +\n
+          "&root=" + monitor_dict[\'hosting-title\'] +\n
+          "&jio_for=" + monitor_dict._links.private_url.href;\n
+\n
+        instance_dict = {\n
+          title: monitor_dict.title,\n
+          root_title: monitor_dict[\'hosting-title\'],\n
+          date: monitor_dict.date,\n
+          status: monitor_dict.status,\n
+          instance: monitor_dict._embedded.instance || \'\',\n
+          public_url: monitor_dict._links.hasOwnProperty(\'public_url\') ? monitor_dict._links.public_url.href : \'\',\n
+          private_url: monitor_dict._links.hasOwnProperty(\'private_url\') ? monitor_dict._links.private_url.href : \'\',\n
+          rss_url: monitor_dict._links.hasOwnProperty(\'rss_url\') ? monitor_dict._links.rss_url.href : \'\',\n
+          resource_url: tmp_url,\n
+          process_url: tmp_process_url\n
+        };\n
+        return instance_dict;\n
+      }\n
+\n
+      function showHostingConfiguration(element) {\n
+        var index = parseInt($(element).attr(\'rel\'), 10);\n
+\n
+        if (isNaN(index) || gadget.props.hosting_list.length < index) {\n
+          return;\n
+        }\n
+        return new RSVP.Queue()\n
+          .push(function () {\n
+            return $(gadget.props.element.querySelectorAll(\'.ui-block-b .ui-listview-container li > a\')).unbind( "click" );\n
+          })\n
+          .push(function () {\n
+            return $(gadget.props.element.querySelectorAll(\'.ui-block-b .line-edit\')).unbind( "click" );\n
+          })\n
+          .push(function () {\n
+            var old_element = $(gadget.props.element.querySelector(\'.ui-listview-container table td > a.selected\'));\n
+\n
+            if (old_element) {\n
+              old_element.removeClass(\'selected\');\n
+            }\n
+            return $(element.querySelector(\'td:first-child > a\')).addClass(\'selected\');\n
+          })\n
+          .push(function () {\n
+            var i,\n
+              cred_promise_list = [];\n
+            for (i = 0; i < gadget.props.hosting_list[index].instance_list.length; i += 1) {\n
+              cred_promise_list.push(\n
+                getMonitorCredentials(gadget.props.hosting_list[index].instance_list[i],\n
+                gadget.props.hosting_list[index].title,\n
+                index\n
+              ));\n
+            }\n
+            return RSVP.all(cred_promise_list);\n
+          })\n
+          .push(function (cred_list) {\n
+            var i,\n
+              promise_list = [];\n
+            for (i = 0; i < gadget.props.hosting_list[index].instance_list.length; i += 1) {\n
+              promise_list.push(getSecureDocument(\n
+                gadget.props.hosting_list[index].instance_list[i].url,\n
+                cred_list[i].hash\n
+              ));\n
+            }\n
+            return RSVP.all(promise_list);\n
+          })\n
+          .push(function (document_list) {\n
+            var parameter_content,\n
+              instance_list = [],\n
+              parameter_list = [],\n
+              status_url = \'\',\n
+              i,\n
+              instance_content,\n
+              content_panel = $(gadget.props.element.querySelector(\'.ui-block-b .ui-panel-overview\'));\n
+\n
+            if (content_panel.hasClass(\'ui-content-hidden\')) {\n
+              content_panel.removeClass(\'ui-content-hidden\');\n
+            }\n
+            gadget.props.document_list = document_list;\n
+            gadget.props.element.querySelector(\'.ui-block-b .overview-title span\')\n
+              .innerHTML = gadget.props.hosting_list[index].title; // + \'<span class="label label-{{status}}">{{status}}</span>\';\n
+\n
+            for (i = 0; i < document_list.length; i += 1) {\n
+              instance_list.push(\n
+                getInstanceDict(document_list[i])\n
+              );\n
+              if (document_list[i].hasOwnProperty(\'parameters\')) {\n
+                parameter_list.push({\n
+                  title: document_list[i].title,\n
+                  parameters: document_list[i].parameters,\n
+                  base_url: document_list[i]._links.hasOwnProperty(\'private_url\') ? document_list[i]._links.private_url.href : \'\',\n
+                  index: i\n
+                });\n
+              }\n
+            }\n
+            if (gadget.props.opml_dict[gadget.props.opml_key_list[index]] !== undefined) {\n
+              status_url = "#page=status_list&opml_url=" + gadget.props.opml_dict[gadget.props.opml_key_list[index]].href;\n
+            }\n
+            parameter_content = parameters_widget_template({parameter_list: parameter_list});\n
+            instance_content = instance_widget_template({\n
+              instance_list: instance_list,\n
+              status_list_url: status_url\n
+            });\n
+\n
+            gadget.props.element.querySelector(\'.ui-block-b .instances-parameters\')\n
+              .innerHTML = parameter_content;\n
+            gadget.props.element.querySelector(\'.ui-block-b .instances-status\')\n
+              .innerHTML = instance_content;\n
+            return \'\';\n
+          })\n
+          .push(function () {\n
+            return $(gadget.props.element.querySelectorAll(\'.ui-block-b .ui-listview-outer\')).listview().listview("refresh");\n
+          })\n
+          .push(function () {\n
+            \n
+            var promise_list = [],\n
+              element_list = gadget.props.element.querySelectorAll(\'.ui-block-b .ui-listview-container li > a\'),\n
+              edit_list = gadget.props.element.querySelectorAll(\'.ui-block-b .line-edit\'),\n
+              i;\n
+            for (i = 0; i < element_list.length; i += 1) {\n
+              promise_list.push(loopEventListener(\n
+                element_list[i],\n
+                \'click\',\n
+                false,\n
+                bindOnClick.bind(gadget, element_list[i])\n
+              ));\n
+            }\n
+            for (i = 0; i < edit_list.length; i += 1) {\n
+              promise_list.push(loopEventListener(\n
+                edit_list[i],\n
+                \'click\',\n
+                false,\n
+                editMonitorProps.bind(gadget, edit_list[i])\n
+              ));\n
+            }\n
+            return RSVP.all(promise_list);\n
+          });\n
+      }\n
+\n
+      return new RSVP.Queue()\n
+        .push(function () {\n
+          return gadget.props.render_deferred.promise;\n
+        })\n
+        .push(function () {\n
+          var promise_list = [],\n
+            element_list = gadget.props.element.querySelectorAll(\'.ui-listview-container table tr\'),\n
+            i;\n
+          for (i = 0; i < element_list.length; i += 1) {\n
+            promise_list.push(loopEventListener(\n
+              element_list[i],\n
+              \'click\',\n
+              false,\n
+              showHostingConfiguration.bind(gadget, element_list[i])\n
+            ));\n
+          }\n
+          return RSVP.all(promise_list);\n
+        });\n
+    });\n
+\n
+}(window, rJS));
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Monitoring Hosting Subscription Overview Js</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</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>1457347208.26</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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.3039.1259.9813</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>1458835199.54</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>1457347073.74</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_html.xml
index a4a3862e7bf5dd6e0db901cdc07e256b338ec6e1..e5c56f0177dabfa76edaf54dc15d4a279cee72b4 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_html.xml
@@ -120,6 +120,7 @@
     <script src="renderjs.js" type="text/javascript"></script>\n
 \n
     <script src="jiodev.js" type="text/javascript"></script>\n
+    <script src="jio_dev_rssfeed_storage.js" type="text/javascript"></script>\n
 \n
     <!-- custom script -->\n
     <script src="gadget_monitoring_jio.js" type="text/javascript"></script>\n
@@ -264,7 +265,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.31896.5130.28535</string> </value>
+                <value> <string>949.6675.61849.23210</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -282,7 +283,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1452875060.05</float>
+                        <float>1456231972.65</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_js.xml
index a85f7419ad4dd02d2d1fc727b8e8920ceb2d9742..ba01d309902533ea68b21dd2913f7e65d05aba82 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_jio_js.xml
@@ -110,6 +110,71 @@
 /*jslint indent: 2, maxerr: 3 */\n
 (function (window, rJS, jIO) {\n
   "use strict";\n
+\n
+  function getOPMLUrlList(url, query) {\n
+    var jio_options = {\n
+        type: "query",\n
+        sub_storage: {\n
+          type: "feed",\n
+          feed_type: \'opml\',\n
+          url: url\n
+        }\n
+      },\n
+      jio_storage = jIO.createJIO(jio_options);\n
+    if (query === undefined) {\n
+      query = {};\n
+    }\n
+    return jio_storage.allDocs(query)\n
+      .push(function (url_list) {\n
+        var i,\n
+        feed_url = [];\n
+        for (i = 0; i < url_list.data.total_rows; i += 1) {\n
+          if (url_list.data.rows[i].value.htmlurl) { // || url_list.data.rows[i].value.xmlUrl\n
+            feed_url.push(url_list.data.rows[i].value.htmlurl); // || url_list.data.rows[i].value.xmlUrl\n
+          }\n
+        }\n
+        return feed_url;\n
+      }, function(error) {\n
+        console.log(error);\n
+      });\n
+  }\n
+\n
+  function getMonitorUrlList(url, query) {\n
+    var jio_options = {\n
+        type: "query",\n
+        sub_storage: {\n
+          type: "feed",\n
+          feed_type: \'opml\',\n
+          url: url\n
+        }\n
+      },\n
+      jio_storage = jIO.createJIO(jio_options);\n
+    if (query === undefined) {\n
+      query = {};\n
+    }\n
+    return jio_storage.allDocs(query)\n
+      .push(function (url_list) {\n
+        var i,\n
+        monitor_url = [];\n
+        for (i = 0; i < url_list.data.total_rows; i += 1) {\n
+          if (url_list.data.rows[i].value.url) {\n
+            monitor_url.push(url_list.data.rows[i].value.url);\n
+          }\n
+        }\n
+        return monitor_url;\n
+      }, function(error) {\n
+        console.log(error);\n
+      });\n
+  }\n
+\n
+  function concatArrayOfArray(arrayList) {\n
+    var all_list = [],\n
+      i;\n
+    for (i = 0; i < arrayList.length; i += 1) {\n
+      all_list = all_list.concat(arrayList[i]);\n
+    }\n
+    return all_list;\n
+  }\n
 \n
   rJS(window)\n
 \n
@@ -120,6 +185,7 @@
 \n
     .declareAcquiredMethod("redirect", "redirect")\n
     .declareAcquiredMethod("getSetting", "getSetting")\n
+    .declareAcquiredMethod("setSetting", "setSetting")\n
 \n
     .declareMethod(\'createJio\', function (jio_options) {\n
       var gadget = this;\n
@@ -141,9 +207,101 @@
           gadget.state_parameter_dict.jio_storage_name = jio_storage_name;\n
         });\n
     })\n
+    .declareMethod(\'createJioFromRssFeed\', function (feed_url, basic_login) {\n
+      var gadget = this,\n
+        jio_options = {\n
+          type: "query",\n
+          sub_storage: {\n
+            type: "feed",\n
+            feed_type: \'rss\',\n
+            url: opml_url\n
+          }\n
+        };\n
+      if (basic_login !== undefined) {\n
+        jio_options.sub_storage.basic_login = basic_login;\n
+      }\n
+      this.state_parameter_dict.jio_storage = jIO.createJIO(jio_options);\n
+      return jio_options;\n
+    })\n
+    .declareMethod(\'getUrlListFromOPML\', function (opml_url, query) {\n
+      return getOPMLUrlList(opml_url, query);\n
+    })\n
+    .declareMethod(\'getUrlDescriptionFromOPML\', function (opml_url, query) {\n
+      var jio_options = {\n
+          type: "query",\n
+          sub_storage: {\n
+            type: "feed",\n
+            feed_type: \'opml\',\n
+            url: opml_url\n
+          }\n
+        },\n
+        jio_storage = jIO.createJIO(jio_options);\n
+      if (query === undefined) {\n
+        query = {};\n
+      }\n
+      return jio_storage.allDocs(query)\n
+        .push(function (url_list) {\n
+          var i,\n
+          feed_url;\n
+          for (i = 0; i < url_list.data.total_rows; i += 1) {\n
+            if (url_list.data.rows[i].value.htmlurl || url_list.data.rows[i].value.xmlUrl) {\n
+              feed_url.push({\n
+                htmlurl: url_list.data.rows[i].value.htmlurl,\n
+                xmlUrl: url_list.data.rows[i].value.xmlUrl,\n
+                title: url_list.data.rows[i].value.title,\n
+                opml_title: url_list.data.rows[i].value.opml_title,\n
+                type: url_list.data.rows[i].value.type,\n
+                create_date: url_list.data.rows[i].value.create_date,\n
+                modified_date: url_list.data.rows[i].value.modified_date,\n
+                version: url_list.data.rows[i].value.version,\n
+                text: url_list.data.rows[i].value.text,\n
+              });\n
+            }\n
+          }\n
+          return feed_url;\n
+        });\n
+    })\n
+    .declareMethod(\'getUrlListFromFullOPML\', function (query) {\n
+      return this.getSetting(\'monitor_url_description\')\n
+        .push(function (url_description_dict) {\n
+          var promise_list = [],\n
+            key;\n
+          for (key in url_description_dict) {\n
+            promise_list.push(getOPMLUrlList(url_description_dict[key].href, query));\n
+          }\n
+          return RSVP.all(promise_list);\n
+        })\n
+        .push(function(url_list) {\n
+          return concatArrayOfArray(url_list);\n
+        });\n
+    })\n
+    .declareMethod(\'getMonitorUrlList\', function (query) {\n
+      return this.getSetting(\'monitor_url_description\')\n
+        .push(function (url_description_dict) {\n
+          var promise_list = [],\n
+            key;\n
+          for (key in url_description_dict) {\n
+            promise_list.push(getMonitorUrlList(url_description_dict[key].href, query));\n
+          }\n
+          return RSVP.all(promise_list);\n
+        })\n
+        .push(function(url_list) {\n
+          return concatArrayOfArray(url_list);\n
+        });\n
+    })\n
+    .declareMethod(\'getMonitorUrlListFromOpml\', function (url, query) {\n
+      return getMonitorUrlList(url, query);\n
+    })\n
     .declareMethod(\'allDocs\', function () {\n
       var storage = this.state_parameter_dict.jio_storage;\n
-      return storage.allDocs.apply(storage, arguments);\n
+      return storage.allDocs.apply(storage, arguments)\n
+        .push(function (doc) {\n
+          return doc;\n
+        }, function (error) {\n
+          console.log(error);\n
+          // XXX - We must do something here (try to get document from local ? or raise)\n
+          return undefined;\n
+        });\n
     })\n
     .declareMethod(\'allAttachments\', function () {\n
       var storage = this.state_parameter_dict.jio_storage;\n
@@ -332,7 +490,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.31893.52815.47769</string> </value>
+                <value> <string>949.59884.43592.12680</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -350,7 +508,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1452874919.27</float>
+                        <float>1458313807.96</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_html.xml
index e82e7114f0e5b22bee7dd15d8a94133b10df3957..2eef923c72ba59c11042545dda666c2f94d08131 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_html.xml
@@ -308,7 +308,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5203.64911.29252</string> </value>
+                <value> <string>949.21109.24288.21538</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -326,7 +326,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455205817.52</float>
+                        <float>1456234720.55</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_js.xml
index 057b9521364900dd92b8318df8040f29b87ffea6..0e7d31e7d11a88f5517f6f2224f7df62a34c2d40 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_js.xml
@@ -216,19 +216,23 @@
                         if (result.status === \'OK\') {\n
                           return gadget.setSetting(\'redirect_after_login\', \'\')\n
                             .push(function () {\n
-                              var credential = {\n
+                              /*var credential = {\n
                                   hash: hash,\n
                                   url: gadget.props.url\n
                                 },\n
                                 hash_url = hashCode(gadget.props.url) + \'\';\n
-                              return gadget.setSetting(hash_url, credential);\n
+                              return login_gadget.setUrlInfo(hash_url, credential);*/\n
+                              return login_gadget.updateUrlValue(\n
+                                gadget.props.url,\n
+                                username,\n
+                                password);\n
                             })\n
                             .push(function () {\n
                               return gadget.redirect(gadget.props.from);\n
                             });\n
                         } else {\n
                           gadget.props.element.querySelector(".msg")\n
-                            .innerHtml = \'<span class="ui-text-\' + error.status +\n
+                            .innerHtml = \'<span class="ui-text-\' + result.status +\n
                               \'">Invalid username or password.</span>\';\n
                         }\n
                       }, function(error) {\n
@@ -379,7 +383,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5199.35910.16827</string> </value>
+                <value> <string>949.54056.59252.46080</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -397,7 +401,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455205594.43</float>
+                        <float>1457966675.88</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_html.xml
index 3571e4a0d12d10ae464ee38be5b96e3fb6cba2bd..290329d2607659e4759c5dee8719a8623133c355 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_html.xml
@@ -124,6 +124,7 @@
 \n
   </head>\n
   <body>\n
+    <div data-gadget-url="gadget_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div>\n
   </body>\n
 </html>
 
@@ -262,7 +263,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.2228.14510.50124</string> </value>
+                <value> <string>949.39647.52503.63692</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -280,7 +281,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455027252.82</float>
+                        <float>1457099647.3</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_js.xml
index 0f2827a93d63116344237e3ce82bf836ddfc5572..705825ad09d6553455ce2b29bef2001269a45824 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_login_widget_js.xml
@@ -121,6 +121,117 @@
   hashCode = function (s) {\n
     return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0);              \n
   };\n
+\n
+\n
+  function getUrlInfo(gadget, key, default_value) {\n
+    return gadget.getDeclaredGadget("jio_gadget")\n
+      .push(function (jio_gadget) {\n
+        return jio_gadget.get("urls");\n
+      })\n
+      .push(function (doc) {\n
+        return doc[key] || default_value;\n
+      }, function (error) {\n
+        if (error.status_code === 404) {\n
+          return default_value;\n
+        }\n
+        throw error;\n
+      });\n
+  }\n
+\n
+  function setUrlInfo(gadget, key, value) {\n
+    var jio_gadget;\n
+    return gadget.getDeclaredGadget("jio_gadget")\n
+      .push(function (result) {\n
+        jio_gadget = result;\n
+        return jio_gadget.get("urls");\n
+      })\n
+      .push(undefined, function (error) {\n
+        if (error.status_code === 404) {\n
+          return {};\n
+        }\n
+        throw error;\n
+      })\n
+      .push(function (doc) {\n
+        doc[key] = value;\n
+        return jio_gadget.put(\'urls\', doc);\n
+      });\n
+  }\n
+\n
+  function updateUrlValue(gadget, url, login, password) {\n
+    var jio_gadget;\n
+    return gadget.getDeclaredGadget("jio_gadget")\n
+      .push(function (result) {\n
+        jio_gadget = result;\n
+        return jio_gadget.get("urls");\n
+      })\n
+      .push(undefined, function (error) {\n
+        if (error.status_code === 404) {\n
+          return {};\n
+        }\n
+        throw error;\n
+      })\n
+      .push(function (doc) {\n
+        var key = hashCode(url) + \'\';\n
+\n
+        if (doc.hasOwnProperty(key)) {\n
+          doc[key].hash = btoa(login + \':\' + password);\n
+          doc[key].url = url;\n
+        } else {\n
+          doc[key] = {\n
+            hash: btoa(login + \':\' + password),\n
+            url: url,\n
+            parent_url: \'\'};\n
+        }\n
+        return jio_gadget.put(\'urls\', doc);\n
+      });\n
+  }\n
+\n
+  function setUrlDict(gadget, url_dict) {\n
+    var jio_gadget;\n
+    return gadget.getDeclaredGadget("jio_gadget")\n
+      .push(function (result) {\n
+        jio_gadget = result;\n
+        return jio_gadget.get("urls");\n
+      })\n
+      .push(undefined, function (error) {\n
+        if (error.status_code === 404) {\n
+          return {};\n
+        }\n
+        throw error;\n
+      })\n
+      .push(function (doc) {\n
+        var key;\n
+        for (key in url_dict) {\n
+          doc[key] = url_dict[key];\n
+        }\n
+        return jio_gadget.put(\'urls\', doc);\n
+      });\n
+  }\n
+\n
+  function clearSettingFromParentUrl (gadget, parent_url) {\n
+    var jio_gadget;\n
+    return gadget.getDeclaredGadget("jio_gadget")\n
+      .push(function (result) {\n
+        jio_gadget = result;\n
+        return jio_gadget.get("urls");\n
+      })\n
+      .push(undefined, function (error) {\n
+        if (error.status_code === 404) {\n
+          return {};\n
+        }\n
+        throw error;\n
+      })\n
+      .push(function (doc) {\n
+        var hash;\n
+        for (hash in doc) {\n
+          if (doc[hash].parent_url === parent_url ) {\n
+            delete doc[hash];\n
+          }\n
+        }\n
+        return jio_gadget.put(\'urls\', doc);\n
+      });\n
+  }\n
+\n
 \n
   gadget_klass\n
     .ready(function (g) {\n
@@ -128,6 +239,15 @@
       g.props.from = {page: \'main\'};\n
       g.props.login = \'login\';\n
     })\n
+    .ready(function (g) {\n
+      return g.getDeclaredGadget("jio_gadget")\n
+        .push(function (jio_gadget) {\n
+          return jio_gadget.createJio({\n
+            type: "indexeddb",\n
+            database: "setting"\n
+          });\n
+        });\n
+    })\n
     .declareAcquiredMethod("redirect", "redirect")\n
     .declareAcquiredMethod(\'getUrlFor\', \'getUrlFor\')\n
     .declareAcquiredMethod("getSetting", "getSetting")\n
@@ -143,7 +263,7 @@
           if (response.status === 200) {\n
             resolve({status: \'OK\'});\n
           } else {\n
-            reject(new Error("XHR: " + response.status + ": " + response.statusText));\n
+            reject({status: \'ERROR\', msg: new Error("XHR: " + response.status + ": " + response.statusText)});\n
           }\n
         };\n
         xhr.onerror = function (e) {\n
@@ -176,7 +296,7 @@
           });\n
       };\n
 \n
-      return gadget.getSetting(hash_url)\n
+      return getUrlInfo(gadget, hash_url)\n
         .push(function (credential_dict) {\n
           if (!credential_dict) {\n
             credential_dict = {hash: btoa(\'no:password\'), url: url};\n
@@ -195,6 +315,26 @@
               return redirectWith(options_dict);\n
             });\n
         });\n
+    })\n
+    .declareMethod(\'setUrlDict\', function (url_dict) {\n
+      var gadget = this;\n
+      return setUrlDict(gadget, url_dict);\n
+    })\n
+    .declareMethod(\'clearSettingFromParentUrl\', function (parent_url) {\n
+      var gadget = this;\n
+      return clearSettingFromParentUrl(gadget, parent_url);\n
+    })\n
+    .declareMethod(\'setUrlInfo\', function (key, value) {\n
+      var gadget = this;\n
+      return setUrlInfo(gadget, key, value);\n
+    })\n
+    .declareMethod(\'getUrlInfo\', function (key, default_value) {\n
+      var gadget = this;\n
+      return getUrlInfo(gadget, key, default_value);\n
+    })\n
+    .declareMethod(\'updateUrlValue\', function (url, login, password) {\n
+      var gadget = this;\n
+      return updateUrlValue(gadget, url, login, password);\n
     });\n
 \n
 }(window, document, rJS));
@@ -334,7 +474,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5170.57497.38894</string> </value>
+                <value> <string>949.54052.60822.44663</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -352,7 +492,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455204244.68</float>
+                        <float>1457967142.65</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_main_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_main_js.xml
index 26fb1980a6a7ec38cd248087824fe8c80a3d85b1..a513af06c3b0d8ade06e90eb8fc25ff9c1b2859a 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_main_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_main_js.xml
@@ -125,9 +125,9 @@
     .declareMethod("render", function (options) {\n
       var gadget = this,\n
         current_display;\n
-      return gadget.getSetting(\'jio_storage_description\')\n
-      .push(function (jio_storage_description) {\n
-        if (!jio_storage_description) {\n
+      return gadget.getSetting(\'monitor_url_description\')\n
+      .push(function (monitor_url_description) {\n
+        if (!monitor_url_description) {\n
           return gadget.redirect({\n
             page: \'settings_configurator\'\n
           });\n
@@ -140,6 +140,7 @@
         if (current_display === undefined || current_display === \'\') {\n
           current_display = \'list\';\n
         }\n
+        current_display = \'list\';\n
         return gadget.setSetting(\'monitoring_display_style\', current_display);\n
       })\n
       .push(function () {\n
@@ -284,7 +285,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.31863.44261.14694</string> </value>
+                <value> <string>949.56645.25063.6451</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -302,7 +303,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1454930576.46</float>
+                        <float>1458320618.57</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_overview_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_overview_js.xml
index 85f576c41226df100bc34fcab9c4ec19ce2b5be7..50088277d669cefcbcda24f0566b62b9e27ceb52 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_overview_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_overview_js.xml
@@ -150,7 +150,7 @@
         },\n
         listview_options = {\n
           search_page: \'overview\',\n
-          //search: options.search,\n
+          search: options.search,\n
           selection: \'\',\n
           column: {\n
             select: \'title\',\n
@@ -158,32 +158,36 @@
           },\n
           data_id: \'monitor.global\',\n
           data_url: gadget.property_dict.listview_data_url,\n
-          search_column_list: [\'title\', \'status\', \'date\'],\n
-          \'sort_column_list\': [\n
-            {select: \'Status\', title: \'Status\'},\n
+          search_column_list: [\n
+            {select: \'status\', title: \'Status\'},\n
+            {select: \'hosting-title\', title: \'Date\'}\n
+          ],\n
+          sort_column_list: [\n
+            {select: \'status\', title: \'Status\'},\n
             {select: \'title\', title: \'Title\'},\n
-            {select: \'data\', title: \'Date\'}\n
+            {select: \'hosting-title\', title: \'Date\'}\n
           ],\n
           query: {\n
-            select_list: [\'title\', \'status\', \'date\', \'_embedded\', \'_links\', \'state\', \'data\'],\n
-            query: \'_id:"monitor%.global"\',\n
+            select_list: [\'title\', \'status\', \'date\', \'_links\', \'state\', \'hosting-title\'],\n
+            query: \'_id:"monitor.global"\',\n
             sort_on: [["status", "ascending"]]\n
           }\n
         };\n
 \n
       return gadget.updateHeader(header)\n
         .push(function () {\n
-          var filter_part_list = [];\n
+          var filter_part_list = [],\n
+            j;\n
 \n
           /*if (options.sort_on && options.sort_on !== \'status\') {\n
             listview_options.query.sort_on = [[options.sort_on, \'ascending\']];\n
-          }\n
+          }*/\n
           if (options.status && options.status !== \'\') {\n
             for (j = 0; j < options.status.split(\'+\').length; j += 1) {\n
               filter_part_list.push(\'(status:"\' + options.status.split(\'+\')[j].toUpperCase() + \'")\');\n
             }\n
             listview_options.query.query += \' AND (\' + filter_part_list.join(\' OR \') + \')\';\n
-          }*/\n
+          }\n
           return gadget.property_dict.listview.render(listview_options);\n
         });\n
     })\n
@@ -329,7 +333,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6325.29916.43946</string> </value>
+                <value> <string>949.23937.2972.5563</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -347,7 +351,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455274107.83</float>
+                        <float>1458226729.62</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_process_view_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_process_view_js.xml
index 0e613d65e926f41d4e497268a56d375e8ce4d723..9f7223e19ccb0db6f5a4614e276a10431d907c25 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_process_view_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_process_view_js.xml
@@ -162,13 +162,12 @@
           }\n
         };\n
 \n
-      //gadget.property_dict.url = options.jio_for;\n
       return gadget.property_dict.login_gadget.loginRedirect(options.jio_for, options, options.title, options.root)\n
         .push(function (cred) {\n
           jio_options.sub_storage.sub_storage.basic_login = cred.hash;\n
           gadget.property_dict.jio_gadget.createJio(jio_options);\n
           return gadget.updateHeader({\n
-            title: (options.title || \'Monitoring Instance\') + \' Processes\'\n
+            title: options.title + \' [\' + options.root + \'] Processes status\'\n
           });\n
         })\n
         .push(function () {\n
@@ -573,7 +572,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5282.9066.9386</string> </value>
+                <value> <string>949.59799.36045.13670</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -591,7 +590,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455210644.51</float>
+                        <float>1458308638.96</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_html.xml
index 681a026f20bf5b7c97ccdcf2ced67a2d9210e655..aff15371bb1eaa4e1e633b057c9b5250f5ae1089 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_html.xml
@@ -284,12 +284,12 @@
               <div class="ui-block-b">\n
               </div>\n
               <div class="ui-block-c">\n
-                <h2><i class="fa fa-bar-chart"></i> <strong>Instance Status Ratio</strong></h2>\n
-                <div style="max-width: 250px; heigth: 150px;">\n
+                <h2><i class="fa fa-bar-chart"></i> <strong>Instance Promises Status</strong></h2>\n
+                <div style="max-width: 300px; heigth: 150px;">\n
                   <div data-gadget-url="gadget_monitoring_chart.html" data-gadget-scope="chart0"></div>\n
                 </div>\n
                 <br/><br/>\n
-                <h2><i class="fa fa-line-chart"></i> <strong>Success and Failures Statistics</strong></h2>\n
+                <h2><i class="fa fa-line-chart"></i> <strong>Instance Promises Status History</strong></h2>\n
                 <div data-gadget-url="gadget_monitoring_chart.html" data-gadget-scope="chart1"></div>\n
               </div>\n
             </div>\n
@@ -438,7 +438,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5259.56104.14233</string> </value>
+                <value> <string>949.26772.37443.60825</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -456,7 +456,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455209074.82</float>
+                        <float>1456500574.55</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_js.xml
index c171dd33a363d0ec7063e05a8784c7dc7d48ecd5..8a7c19b75af0e47f691ace6da52c13d41776ac35 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_promise_interface_js.xml
@@ -183,7 +183,7 @@
           var back_url = \'#page=main&t=\' + (Date.now() / 1000 | 0);\n
           return RSVP.all([\n
             gadget.updateHeader({\n
-              title: options.jio_key,\n
+              title: \'Promise \' + options.jio_key,\n
               //back_url: back_url,\n
               //panel_action: false,\n
               refresh_url: refresh_url\n
@@ -191,6 +191,9 @@
           ]);\n
         })\n
         .push(function () {\n
+          if (!options.jio_key.endsWith(\'.status\')) {\n
+            options.jio_key +=  \'.status\';\n
+          }\n
           if (options.jio_for !== undefined && options.jio_for !== \'\') {\n
             // Load from defined url\n
             var jio_options = {\n
@@ -235,7 +238,7 @@
                   element: element\n
                 });\n
               gadget.property_dict.element.querySelector(".ui-promise-content .ui-promise-title h2")\n
-                .innerHTML += element.title;\n
+                .innerHTML += \'Promise \' + element.title;\n
               gadget.property_dict.element.querySelector("#promise-overview .ui-block-a")\n
                 .innerHTML += content;\n
               if (element.hasOwnProperty(\'_links\') && element._links.hasOwnProperty(\'monitor\') && element._links.monitor.href) {\n
@@ -466,7 +469,8 @@
               type: \'bar\',\n
               config: {\n
                 bezierCurve: false,\n
-                responsive: true\n
+                responsive: true,\n
+                barDatasetSpacing: 20\n
               },\n
               data: data\n
             });\n
@@ -618,7 +622,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5265.63409.53947</string> </value>
+                <value> <string>949.56728.21843.28501</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -636,7 +640,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455209893.65</float>
+                        <float>1458124466.18</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_html.xml
index 0d1c8fee335d15e8c19c113500d4f835b5b78512..7d9838974feda4e3c194a18cd50a0870ef56d8de 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_html.xml
@@ -155,7 +155,7 @@
       </div>\n
       <ul class="ui-grid-column ui-grid-column-5 graph_cpu">\n
         <li class="ui-grid-span-4 custom-grid-wrap graph-cell">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_cpu" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_cpu" class="graph graph-h-medium"></div>\n
         </li>\n
         <li class="ui-grid-span-1 custom-grid-wrap graph-cell">\n
           \n
@@ -163,21 +163,21 @@
       </ul>\n
       <div class="ui-grid-a ui-responsive">\n
         <div class="ui-block-a">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_memory_used" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_memory_used" class="graph graph-h-medium"></div>\n
         </div>\n
         <div class="ui-block-b">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_memory_percent" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_memory_percent" class="graph graph-h-medium"></div>\n
         </div>\n
       </div>\n
       <div class="ui-grid-b ui-responsive">\n
         <div class="ui-block-a">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_disk_used" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_disk_used" class="graph graph-h-medium"></div>\n
         </div>\n
         <div class="ui-block-b">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_io_rw" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_io_rw" class="graph graph-h-medium"></div>\n
         </div>\n
         <div class="ui-block-c">\n
-          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_io_counter" class="graph graph-medium"></div>\n
+          <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_io_counter" class="graph graph-h-medium"></div>\n
         </div>\n
       </div>\n
       <div class=\'graph-footer\'>\n
@@ -325,7 +325,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.58979.7424.11673</string> </value>
+                <value> <string>949.6675.61849.23210</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -343,7 +343,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455181931.75</float>
+                        <float>1458306392.07</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_js.xml
index 5add574c593a218c2fce496aac89e4e1960303af..d54ce7c3a43fcc352799152ce6a8e4c9aee463fa 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_resource_view_js.xml
@@ -271,7 +271,7 @@
         .push(function (cred) {\n
           var key;\n
           gadget.property_dict.element.querySelector(".ui-panel-overview .overview-title > span")\n
-            .innerHTML += options.title || \'Monitoring Instance Resource Status\';\n
+            .innerHTML += options.title + \' [\' + options.root + \']\';\n
 \n
           for (key in gadget.property_dict.ressource_dict) {\n
             promise_list.push(loadGraphData (options.jio_for + \'data/\', key, cred));\n
@@ -291,7 +291,8 @@
     // declared service\n
     /////////////////////////////////////////////////////////////////\n
     .declareService(function () {\n
-      var gadget = this;\n
+      var gadget = this,\n
+        date_window = [];\n
 \n
       function toggleSerieVisibility(evt) {\n
         var checkbox = evt.target.nextSibling,\n
@@ -307,6 +308,27 @@
             return evt;\n
           });\n
       }\n
+\n
+      function formatDateToString(d) {\n
+        return d.toISOString().slice(0,10) + \' \' + d.getHours() + \':\' + d.getMinutes() + \':\' + d.getSeconds();\n
+      }\n
+\n
+      function getDateWindonw(data) {\n
+        var max_date,\n
+          begin_date,\n
+          end_date,\n
+          date_window = [];\n
+        gadget.property_dict.timer = null;\n
+        gadget.property_dict.loading = false;\n
+        if (data.length > 0) {\n
+          max_date = data[data.length - 1].split(\',\')[0];\n
+          begin_date = new Date(max_date);\n
+          end_date = new Date(max_date);\n
+          begin_date.setHours(begin_date.getHours() -2);\n
+          date_window = [Date.parse(begin_date), Date.parse(end_date)];\n
+        }\n
+        return date_window;\n
+      }\n
 \n
       function updateGraphData (jio_url, key) {\n
         return gadget.property_dict.jio_gadget.get(gadget.property_dict.ressource_dict[key])\n
@@ -347,33 +369,40 @@
             return RSVP.all(promise_list);\n
           })\n
           .push(function () {\n
+            date_window = getDateWindonw(gadget.property_dict.mem_data.data);\n
             return gadget.property_dict.graph_mem_used.updateOptions({\n
-              file: gadget.property_dict.mem_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.mem_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           })\n
           .push(function () {\n
             return gadget.property_dict.graph_mem_percent.updateOptions({\n
-              file: gadget.property_dict.mem_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.mem_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           })\n
           .push(function () {\n
             return gadget.property_dict.graph_io_rw.updateOptions({\n
-              file: gadget.property_dict.io_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.io_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           })\n
           .push(function () {\n
             return gadget.property_dict.graph_io_counter.updateOptions({\n
-              file: gadget.property_dict.io_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.io_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           })\n
           .push(function () {\n
             return gadget.property_dict.graph_disk_used.updateOptions({\n
-              file: gadget.property_dict.io_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.io_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           })\n
           .push(function () {\n
             return gadget.property_dict.graph_cpu.updateOptions({\n
-              file: gadget.property_dict.process_data.data.join(\'\\n\')\n
+              file: gadget.property_dict.process_data.data.join(\'\\n\'),\n
+              dateWindow: date_window\n
             });\n
           });\n
       }\n
@@ -390,18 +419,18 @@
 \n
       return new RSVP.Queue()\n
         .push(function () {\n
-          gadget.property_dict.timer = null;\n
-          gadget.property_dict.loading = false;\n
+          date_window = getDateWindonw(gadget.property_dict.mem_data.data);\n
           return gadget.property_dict.render_deferred.promise;\n
         })\n
         .push(function () {\n
           return gadget.property_dict.graph_mem_used.render(\n
             gadget.property_dict.mem_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> Memory used (Mo)</span>\',\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-area-chart"></i> Memory used (Mo)</span>\',\n
               labelsDivStyles: { \'textAlign\': \'right\' },\n
               legend: \'always\',\n
               visibility: [false, true],\n
+              dateWindow: date_window,\n
               fillGraph: true\n
             },\n
             "customInteractionModel"\n
@@ -411,10 +440,11 @@
           return gadget.property_dict.graph_mem_percent.render(\n
             gadget.property_dict.mem_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> Memory used %</span>\',\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-area-chart"></i> Memory used %</span>\',\n
               labelsDivStyles: { \'textAlign\': \'right\' },\n
               legend: \'always\',\n
               visibility: [true, false],\n
+              dateWindow: date_window,\n
               fillGraph: true\n
             },\n
             "customInteractionModel"\n
@@ -424,10 +454,11 @@
           return gadget.property_dict.graph_io_rw.render(\n
             gadget.property_dict.io_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> IO RW Bytes</span>\',\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> IO RW Bytes</span>\',\n
               labelsDivStyles: { \'textAlign\': \'right\' },\n
               legend: \'always\',\n
               visibility: [true, false, false],\n
+              dateWindow: date_window,\n
               fillGraph: true\n
             },\n
             "customInteractionModel"\n
@@ -437,10 +468,11 @@
           return gadget.property_dict.graph_io_counter.render(\n
             gadget.property_dict.io_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> IO RW counter</span>\',\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> IO RW counter</span>\',\n
               labelsDivStyles: { \'textAlign\': \'right\' },\n
               legend: \'always\',\n
               visibility: [false, true, false],\n
+              dateWindow: date_window,\n
               fillGraph: true\n
             },\n
             "customInteractionModel"\n
@@ -450,10 +482,11 @@
           return gadget.property_dict.graph_disk_used.render(\n
             gadget.property_dict.io_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> Disk used (Mo)</span>\',\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-pie-chart"></i> Disk Used (Mo)</span>\',\n
               labelsDivStyles: { \'textAlign\': \'right\' },\n
               legend: \'always\',\n
               visibility: [false, false, true],\n
+              dateWindow: date_window,\n
               fillGraph: true\n
             },\n
             "customInteractionModel"\n
@@ -463,8 +496,9 @@
           return gadget.property_dict.graph_cpu.render(\n
             gadget.property_dict.process_data.data.join(\'\\n\'),\n
             {\n
-              ylabel: \'<span class="graph-label"><i class="fa fa-bar-chart"></i> Process resources</span>\',\n
-              labelsDivStyles: { \'textAlign\': \'right\' }\n
+              xlabel: \'<span class="graph-label"><i class="fa fa-line-chart"></i> Process resources usage</span>\',\n
+              labelsDivStyles: { \'textAlign\': \'right\' },\n
+              dateWindow: date_window,\n
             },\n
             "customInteractionModel"\n
           );\n
@@ -494,11 +528,11 @@
                 });\n
                 gadget.property_dict.element.querySelector(".ui-panel-overview ." + element + " .ui-grid-span-1")\n
                   .innerHTML = label_content;\n
-                return RSVP.all([\n
+                /*return RSVP.all([\n
                   $(gadget.property_dict.element.querySelectorAll("[type=checkbox]"))\n
-                  .checkboxradio()]);\n
-                  /*$(gadget.property_dict.element.querySelectorAll("[data-role=controlgroup]"))\n
-                  .controlgroup("refresh")]);*/\n
+                  .checkboxradio()]);*/\n
+                  return $(gadget.property_dict.element.querySelectorAll("[data-role=controlgroup]"))\n
+                    .controlgroup().controlgroup("refresh");\n
               });\n
           }\n
         })\n
@@ -515,7 +549,7 @@
                 toggleSerieVisibility\n
               )\n
             );\n
-            if ($(element_list[i]).attr(\'for\').toLowerCase() !== \'label_cpu_percent\') {\n
+            if ($(element_list[i]).attr(\'for\').toLowerCase() !== \'label_cpu_percent\' && $(element_list[i]).attr(\'for\').toLowerCase() !== \'label_total_process\') {\n
               promise_list.push(gadget.property_dict.graph_cpu.setVisibility(\n
                 parseInt($(element_list[i]).attr(\'rel\'), 10), false)\n
               );\n
@@ -664,7 +698,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.5267.64321.15581</string> </value>
+                <value> <string>949.64188.296.22835</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -682,7 +716,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455209635.58</float>
+                        <float>1458571980.17</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_settings_configurator_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_settings_configurator_html.xml
index 217f460fef287bff186e2541625dd215f9a8be5c..3cb04803ad0c2727430a480292317c4255107bb8 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_settings_configurator_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_settings_configurator_html.xml
@@ -120,48 +120,168 @@
     <!-- renderjs -->\n
     <script src="rsvp.js" type="text/javascript"></script>\n
     <script src="renderjs.js" type="text/javascript"></script>\n
+\n
+    <script id="template-opmlurl-list" type="text/x-handlebars-template">\n
+      {{#each opml_list}}\n
+      <tr>\n
+        <td class="column-check ui-text-center padding-10">\n
+          <input type="checkbox" name="opmlurl" value="{{key}}">\n
+        </td>\n
+        <td>\n
+          <a class="ui-link" href="{{href}}">{{link}}</a>\n
+        </td>\n
+        <td>\n
+          <a class="ui-link" href="{{href}}">{{title}}</a>\n
+        </td>\n
+      </tr>\n
+      {{/each}}\n
+    </script>\n
 \n
     <script src="gadget_monitoring_static.js" type="text/javascript"></script>\n
   </head>\n
   <body>\n
-    <article class="ui-content ui-body-c">\n
-      <section class="ui-content-header-plain">\n
-        <h3 class="ui-content-title ui-body-c">\n
-          <span class="ui-icon ui-icon-custom ui-icon-database">&nbsp;</span>\n
-          Monitor connection parameters\n
-        </h3>\n
-      </section>\n
-      <section class="ui-body-c ui-content-section">\n
-        <form class="dav-configuration-form">\n
-\n
-          <div class="ui-form">\n
-            <div class="ui-field-contain">\n
-              <label data-i18n="Connection URL:">Connection URL:</label>\n
-              <input type="url" name="dav_url" required value=""/>\n
-            </div>\n
-            <!--\n
-            <div class="ui-field-contain">\n
-              <label data-i18n="Username:">Username:</label>\n
-              <input type="hidde" name="dav_username" value=""/>\n
+    <div data-gadget-url="gadget_monitoring_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div>\n
+    <div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div>\n
+    <div data-role="tabs" class="config-tabs">\n
+      <div data-role="navbar">\n
+        <ul>\n
+          <li><a href="#config-add" data-ajax="false">Add Monitor Instance</a></li>\n
+          <li><a href="#config-manage" data-ajax="false">Manage Instances</a></li>\n
+        </ul>\n
+      </div>\n
+      <div id="config-add" class="ui-body-c ui-content">\n
+        <article class="ui-content ui-body-c">\n
+          <section class="ui-content-header-plain">\n
+            <h3 class="ui-content-title ui-body-c">\n
+              <span class="ui-icon ui-icon-custom ui-icon-database">&nbsp;</span>\n
+              Monitor connection parameters\n
+            </h3>\n
+          </section>\n
+          <section class="ui-body-c ui-content-sections">\n
+            <form class="opml">\n
+              <div class="ui-form">\n
+                <div class="ui-field-contain">\n
+                  <label data-i18n="OPML URL:">OPML URL:</label>\n
+                  <input type="url" name="url" required value=""/>\n
+                </div>\n
+              </div>\n
+              <div class="ui-text-center">\n
+                <span class="ui-text-error"></span>\n
+              </div>\n
+              <div class="select-storage ui-controlgroup ui-controlgroup-horizontal">\n
+                <div class="ui-grid-b ui-responsive">\n
+                  <div class="ui-block-a"></div>\n
+                  <div class="ui-block-b">\n
+                    <button data-i18n="Load URL" class="ui-btn-btn-right show">Load URL</button>\n
+                  </div>\n
+                  <div class="ui-block-c">\n
+                  </div>\n
+                </div>\n
+              </div>\n
+            </form>\n
+          </section>\n
+        </article>\n
+        <article class="ui-content ui-body-c configure-b ui-content-hidden">\n
+          <div data-gadget-url="gadget_monitoring_widget_listbox.html" data-gadget-scope="listbox"></div>\n
+          <form class="configure">\n
+            <label class="configure-auth">\n
+              <input type="checkbox" name="configure-auth">Set Authentication for these URLs\n
+            </label>\n
+            <div class="auth-block padding-lr-20 border-gray" style="display: none">\n
+              <div class="ui-form">\n
+                <div class="ui-field-contain">\n
+                  <label data-i18n="Username:">Username:</label>\n
+                  <input type="text" name="username" required value="-"/>\n
+                </div>\n
+              </div>\n
+              <div class="ui-form">\n
+                <div class="ui-field-contain">\n
+                  <label data-i18n="Password:">Password:</label>\n
+                  <input type="password" name="password" required value="-"/>\n
+                </div>\n
+              </div>\n
+              <label class="configure-auth">\n
+                <input type="checkbox" name="configure-newpwd">Configure new password now\n
+              </label>\n
+              <div class="new-password" style="display: none">\n
+                <div class="ui-form">\n
+                  <div class="ui-field-contain">\n
+                    <label data-i18n="New Password:">New Password:</label>\n
+                    <input type="password" name="new_password" required value="-"/>\n
+                  </div>\n
+                </div>\n
+                <div class="ui-form">\n
+                  <div class="ui-field-contain">\n
+                    <label data-i18n="Confirm New Password:">Confirm New Password:</label>\n
+                    <input type="password" name="new_password_confirm" required value="-"/>\n
+                  </div>\n
+                </div>\n
+              </div>\n
             </div>\n
-            <div class="ui-field-contain">\n
-              <label data-i18n="Password:">Password:</label>\n
-              <input type="password" name="dav_password" value=""/>\n
+            <div class="padding-5">\n
+              <span class="ui-text-error"></span>\n
             </div>\n
-          </div>\n
-          -->\n
-          <div class="select-storage ui-controlgroup ui-controlgroup-horizontal">\n
             <div class="ui-grid-b ui-responsive">\n
               <div class="ui-block-a"></div>\n
-              <div class="ui-block-b"></div>\n
+              <div class="ui-block-b">\n
+                <div class="ui-content-hidden ui-text-right padding-10 spinner">\n
+                  <i class="fa fa-spinner fa-2x fa-spin"></i>\n
+                </div>\n
+              </div>\n
               <div class="ui-block-c">\n
-                <button type="submit" data-i18n="Connect" class="ui-btn-btn-right">Connect</button>\n
+                <button type="submit" data-i18n="Configure" class="ui-btn-btn-right">Configure</button>\n
               </div>\n
             </div>\n
+          </form>\n
+        </article>\n
+      </div>\n
+      <div id="config-manage">\n
+        <div class="ui-grid-a ui-responsive custom-listbox">\n
+          <div class="ui-block-a">\n
+            <div class="ui-panel-overview" style="min-height: 450px;">\n
+              <div class="overview-header">\n
+                <div class=\'content-title ui-instance-title\'>\n
+                  <div class="overview-title">\n
+                    <i class="fa fa-link"></i><span>Monitoring OPML URL</span>\n
+                  </div>\n
+                  <div class="commands">\n
+                  </div>\n
+                </div>\n
+              </div>\n
+              <div class="overview-content">\n
+              \n
+                <div class="ui-listview-container">\n
+                  <table class="ui-responsive ui-body-c ui-table-inset opml-tablelinks">\n
+                    <thead class="ui-bar-inherit">\n
+                      <tr>\n
+                        <th class="padding-10"><input type="checkbox" name="opml-all" value="all"></th>\n
+                        <th>OPML URL</th>\n
+                        <th>Title</th>\n
+                      </tr>\n
+                    </thead>\n
+                    <tbody>\n
+                      \n
+                    </tbody>\n
+                    <tfoot class="ui-bar-inherit"></tfoot>\n
+                  </table>\n
+                </div>\n
+                <div class="padding-10 msgtext-box"></div>\n
+                <div class="">\n
+                  <a href="#" class="ui-btn ui-corner-all ui-btn-inline opml-delete"><i class="fa fa-trash"></i> Delete Selection</a>\n
+                  <a href="#" class="ui-btn ui-corner-all ui-btn-inline opml-test"><i class="fa fa-check-square-o"></i> Availability Test</a>\n
+                  <span class="ui-content-hidden padding-10 loadspinner">\n
+                    <i class="fa fa-spinner fa-2x fa-spin"></i>\n
+                  </span>\n
+                </div>\n
+              </div>\n
+            </div>\n
+          </div>\n
+          <div class="ui-block-b">\n
+            \n
           </div>\n
-        </form>\n
-      </section>\n
-    </article>\n
+        </div>\n
+      </div>\n
+    </div>\n
   </body>\n
 </html>
 
@@ -300,7 +420,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6589.26814.39133</string> </value>
+                <value> <string>949.65333.22535.21930</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -318,7 +438,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455288976.81</float>
+                        <float>1458641047.48</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_static_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_static_js.xml
index 34bf34ce648910f1e7aaea30b2c5556e3902e982..93fd25d07e2f3f12c6ee34c2da3b6c101fdd7736 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_static_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_static_js.xml
@@ -110,10 +110,17 @@
             <key> <string>text_content</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-/*global window, rJS, btoa */\n
+/*global window, rJS, btoa, RSVP, $ */\n
 /*jslint nomen: true, indent: 2, maxerr: 3*/\n
-(function (window, rJS) {\n
+(function (window, rJS, RSVP, $, btoa) {\n
   "use strict";\n
+\n
+  function validateHttpUrl(value) {\n
+    if (/\\(?(?:(http|https):\\/\\/)(?:((?:[^\\W\\s]|\\.|-|[:]{1})+)@{1})?((?:www.)?(?:[^\\W\\s]|\\.|-)+[\\.][^\\W\\s]{2,4}|localhost(?=\\/)|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\[[\\dabcedf:]+\\])(?::(\\d*))?([\\/]?[^\\s\\?]*[\\/]{1})*(?:\\/?([^\\s\\n\\?\\[\\]\\{\\}\\#]*(?:(?=\\.)){1}|[^\\s\\n\\?\\[\\]\\{\\}\\.\\#]*)?([\\.]{1}[^\\s\\?\\#]*)?)?(?:\\?{1}([^\\s\\n\\#\\[\\]]*))?([\\#][^\\s\\n]*)?\\)?/i.test(value)) {\n
+      return true;\n
+    }\n
+    return false;\n
+  }\n
 \n
   function setjIODAVConfiguration(gadget, options) {\n
     var url = "",\n
@@ -137,7 +144,7 @@
         configuration.sub_storage.sub_storage.basic_login = btoa(options.login + \':\' + options.password);\n
       }\n
     } else {\n
-      url = gadget.props.element.querySelector("input[name=\'dav_url\']").value;\n
+      url = gadget.props.element.querySelector("input[name=\'url\']").value;\n
       configuration.sub_storage.sub_storage.url = url;\n
       if (login_input !== \'\' && password_input !== \'\') {\n
         configuration.sub_storage.sub_storage.basic_login = btoa(login_input + \':\' + password_input);\n
@@ -162,7 +169,196 @@
       });\n
   }\n
 \n
-  var gadget_klass = rJS(window);\n
+  function hashCode (s) {\n
+    return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0);              \n
+  }\n
+\n
+  function setUrlConfiguration(gadget, url, title) {\n
+    return gadget.getSetting(\'monitor_url_description\')\n
+      .push(function (url_description_dict) {\n
+        var i,\n
+          tmp,\n
+          tmp_dict;\n
+\n
+        if (url_description_dict === undefined) {\n
+          url_description_dict = {};\n
+        }\n
+\n
+        // url will be saved by group (hosting subscription) identified by their id\n
+        tmp = hashCode(url) + \'\';\n
+        /*if (url_description_dict.hasOwnProperty(tmp)) {\n
+          // this entry will be overridden\n
+        }*/\n
+        url_description_dict[tmp] = {href: url, title: title};\n
+        /*\n
+        tmp_dict = {};\n
+        tmp_dict.root_title = group_name;\n
+        if (tmp_dict.urls === undefined) {\n
+          tmp_dict.urls = [];\n
+        }\n
+        for (i = 0; i < description_list.length; i += 1) {\n
+          \n
+          if (description_list[i].htmlurl) {\n
+            tmp_dict.urls.push({\n
+              url: description_list[i].htmlurl,\n
+              title: description_list[i].title,\n
+              root_title: description_list[i].opml_title\n
+            });\n
+          }\n
+        }\n
+        url_description_dict[tmp] = tmp_dict;*/\n
+        return gadget.setSetting(\'monitor_url_description\', url_description_dict);\n
+      });\n
+  }\n
+\n
+  function loadUrlFromOPML(gadget, url) {\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return $("article.configure-b").addClass("ui-content-hidden");\n
+      })\n
+      .push(function () {\n
+          var listbox_configuration = {\n
+            enable_search: false,\n
+            disable_href: true,\n
+            column_list: [{\n
+              title: \'Title\',\n
+              select: \'title\'\n
+            }, {\n
+              title: \'Hosting Subscription\',\n
+              select: \'opml_title\'\n
+            }, {\n
+              select: \'htmlurl\',\n
+              title: \'URL\'\n
+            }, {\n
+              select: \'type\',\n
+              title: \'Type\'\n
+            }],\n
+            query: {\n
+              select_list: [\'title\', \'opml_title\', \'htmlurl\', \'type\', \'url\'],\n
+              sort_on: [["opml_title", "ascending"]]\n
+            }\n
+          },\n
+          jio_options = {\n
+            type: "query",\n
+            sub_storage: {\n
+              type: "feed",\n
+                feed_type: \'opml\',\n
+                url: url\n
+            }\n
+          };\n
+          listbox_configuration.storage_list = [jio_options];\n
+          return gadget.props.listbox.render(listbox_configuration);\n
+        })\n
+        .push(function () {\n
+          if (gadget.props.listbox.property_dict.data_result.length > 0) {\n
+            return $("article.configure-b").removeClass("ui-content-hidden");\n
+          } else {\n
+            $(gadget.props.element.querySelector(\'.opml .ui-text-error\')).fadeIn(400);\n
+              gadget.props.element.querySelector(\'.opml .ui-text-error\')\n
+                .innerHTML = "ERROR: Failed to load URL!";\n
+          }\n
+          //return $(gadget.props.element.querySelector(".configure-b")).show();\n
+        }, function(error) {\n
+          $(gadget.props.element.querySelector(\'.opml .ui-text-error\')).fadeIn(400);\n
+          gadget.props.element.querySelector(\'.opml .ui-text-error\')\n
+            .innerHTML = "ERROR " + (error.target.status || \'\') + "Failed to load URL!";\n
+          console.log(error);\n
+        });\n
+  }\n
+\n
+  function checkCredential(gadget, url, hash) {\n
+    // Verify if login and password are correct for this URL\n
+    return gadget.props.login_gadget.login(url, hash)\n
+      .then(function(result) {\n
+        if (result.status === \'OK\') {\n
+          return {status: \'OK\'};\n
+        } else {\n
+          return {status: \'KO\', msg: error.msg + \' (\' + url + \')\'};\n
+        }\n
+      }, function(error) {\n
+        return {status: \'KO\', msg: error.msg + \'(\' + url + \')\'};\n
+      });\n
+  }\n
+\n
+\n
+  function changeMonitorPassword(gadget, url, password, hash) {\n
+    var jio_gadget,\n
+      jio_options;\n
+\n
+    url += (url.endsWith(\'/\') ? \'\':\'/\') + \'config/\';\n
+    jio_options = {\n
+      type: "query",\n
+      sub_storage: {\n
+        type: "drivetojiomapping",\n
+        sub_storage: {\n
+          type: "dav",\n
+          url: url,\n
+          basic_login: hash\n
+        }\n
+      }\n
+    };\n
+    gadget.props.gindex += 1;\n
+    return gadget.declareGadget("gadget_monitoring_jio.html",\n
+        {\n
+          element: gadget.props.element,\n
+          scope: \'jio_gadget\' + gadget.props.gindex,\n
+          sandbox: "public"\n
+        }\n
+      ).push(function(new_gadget) {\n
+        jio_gadget = new_gadget;\n
+        jio_gadget.createJio(jio_options);\n
+        return jio_gadget.get(\'config\');\n
+      })\n
+      .push(function (doc) {\n
+        var i;\n
+        if (doc) {\n
+          for (i  = 0; i < doc.length; i += 1) {\n
+            if (doc[i].key === \'monitor-password\') {\n
+              doc[i].value = password;\n
+              return jio_gadget.put(\'config.tmp\', doc);\n
+            }\n
+          }\n
+        }\n
+        return new Error("Cannot get document at : " % url);\n
+      })\n
+      .push(function (result) {\n
+        return {status: \'OK\'};\n
+      }, function (error) {\n
+        console.log(error);\n
+        return {status: \'ERROR\', code: error.target.status};\n
+      });\n
+    \n
+  }\n
+\n
+  function testOPmlUrl(gadget, url, title) {\n
+    var jio_options = {\n
+        type: "query",\n
+        sub_storage: {\n
+          type: "feed",\n
+          feed_type: \'opml\',\n
+          url: url\n
+        }\n
+      };\n
+    gadget.props.jio_gadget.createJio(jio_options);\n
+    return gadget.props.jio_gadget.allDocs({})\n
+      .push(function (doc) {\n
+        if (!doc) {\n
+          console.log(doc);\n
+          gadget.props.element.querySelector(\'.msgtext-box\')\n
+            .innerHTML += "<span class=\'ui-text-error\'>" + url + " [ " + title + " ] is not reachable!</span><br/>";\n
+          return false;\n
+        } else {\n
+          return true;\n
+        }\n
+      });\n
+  }\n
+\n
+  var gadget_klass = rJS(window),\n
+    templater = gadget_klass.__template_element,\n
+\n
+    opml_url_template = Handlebars.compile(\n
+      templater.getElementById("template-opmlurl-list").innerHTML\n
+    );\n
 \n
   gadget_klass\n
     .ready(function (g) {\n
@@ -172,9 +368,29 @@
         .push(function (element) {\n
           g.props.element = element;\n
           g.props.deferred = RSVP.defer();\n
+          g.props.urls = [];\n
+          g.props.gindex = 0;\n
           return g.getSetting(\'jio_storage_name\');\n
         });\n
     })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("login_gadget")\n
+        .push(function (login_gadget) {\n
+          gadget.props.login_gadget = login_gadget;\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("listbox")\n
+        .push(function (listbox_gadget) {\n
+          gadget.props.listbox = listbox_gadget;\n
+        });\n
+    })\n
+    .ready(function (gadget) {\n
+      return gadget.getDeclaredGadget("jio_gadget")\n
+        .push(function (jio_gadget) {\n
+          gadget.props.jio_gadget = jio_gadget;\n
+        });\n
+    })\n
     .declareAcquiredMethod("updateHeader", "updateHeader")\n
     .declareAcquiredMethod("redirect", "redirect")\n
     .declareAcquiredMethod("reload", "reload")\n
@@ -183,29 +399,42 @@
     .declareMethod("render", function (options) {\n
       var gadget = this;\n
       return gadget.updateHeader({\n
-        title: "Connect to Monitor WebDAV",\n
+        title: "Configure monitoring instances URLs"/*,\n
         back_url: "#page=main",\n
-        panel_action: false\n
+        panel_action: false*/\n
       })\n
       .push(function () {\n
         if (options.url !== undefined && options.url !== \'\') {\n
-          return setjIODAVConfiguration(gadget, options);\n
-        } else {\n
-          return gadget.getSetting(\'jio_storage_name\')\n
-          .push(function (jio_storage_name) {\n
-            if (jio_storage_name === "DAV") {\n
-              return gadget.getSetting(\'jio_storage_description\')\n
-                .push(function (jio_storage_description) {\n
-                  if (jio_storage_description !== undefined) {\n
-                    gadget.props.element.querySelector("input[name=\'dav_url\']").value =\n
-                      jio_storage_description.sub_storage.sub_storage.url;\n
-                  }\n
-                });\n
-            }\n
-          });\n
+          gadget.props.element.querySelector("input[name=\'url\']").value = options.url;\n
         }\n
+        return;\n
       })\n
       .push(function () {\n
+        return gadget.getSetting(\'monitor_url_description\');\n
+      })\n
+      .push(function (url_description_dict) {\n
+        var opml_list = [],\n
+          content,\n
+          key;\n
+        if (url_description_dict !== undefined) {\n
+          for (key in url_description_dict) {\n
+            opml_list.push({\n
+              key: key,\n
+              href: "#page=settings_configurator&url=" + url_description_dict[key].href,\n
+              link: url_description_dict[key].href,\n
+              title: url_description_dict[key].title || \'\'\n
+            });\n
+          }\n
+        }\n
+        content = opml_url_template({opml_list: opml_list});\n
+        gadget.props.element.querySelector("#config-manage .opml-tablelinks > tbody")\n
+          .innerHTML = content;\n
+      })\n
+      .push(function () {\n
+        if (!options.tab || options.tab !== \'manage\') {\n
+          options.tab = \'add\';\n
+        }\n
+        gadget.props.selected = options.tab;\n
         return gadget.props.deferred.resolve();\n
       });\n
     })\n
@@ -221,18 +450,336 @@
           return gadget.props.deferred.promise;\n
         })\n
         .push(function () {\n
-          return loopEventListener(\n
-            gadget.props.element.querySelector(\'form\'),\n
-            \'submit\',\n
+          return $(gadget.props.element.querySelector("a[href=\'#config-" + gadget.props.selected + "\']")).trigger(\'click\');\n
+        })\n
+        .push(function () {\n
+          var promise_list = [];\n
+          promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector(\'form.opml button.show\'),\n
+            \'click\',\n
             true,\n
             function () {\n
-              return setjIODAVConfiguration(gadget);\n
+              var url = gadget.props.element.querySelector("input[name=\'url\']").value;\n
+              gadget.props.element.querySelector(\'.opml .ui-text-error\')\n
+                .innerHTML = "";\n
+              $(gadget.props.element.querySelector(\'.opml .ui-text-error\')).fadeOut(400);\n
+              if (url && validateHttpUrl(url)) {\n
+                gadget.props.opml_url = url;\n
+                return loadUrlFromOPML(gadget, url);\n
+              } else {\n
+                $(gadget.props.element.querySelector(\'.opml .ui-text-error\')).fadeIn(400);\n
+                gadget.props.element.querySelector(\'.opml .ui-text-error\')\n
+                  .innerHTML = "\'" + url + "\' is not a valid URL";\n
+              }\n
+              return false;\n
             }\n
+          ));\n
+\n
+          promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector("table th input[name=\'opml-all\']"),\n
+            \'change\',\n
+            false,\n
+            function (element) {\n
+              if ($(element.target).prop(\'checked\')) {\n
+                return $(".opml-tablelinks tr td input[type=\'checkbox\']").prop(\'checked\', true);\n
+              } else {\n
+                return $(".opml-tablelinks tr td input[type=\'checkbox\']").prop(\'checked\', false);\n
+              }\n
+            }\n
+          ));\n
+\n
+          /*promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector("input[name=\'configure-auth\']"),\n
+            \'change\',\n
+            false,\n
+            function (element) {\n
+              if ($(element.target).prop(\'checked\')) {\n
+                gadget.props.element.querySelector(".configure input[name=\'username\']").value = "";\n
+                gadget.props.element.querySelector(".configure input[name=\'password\']").value = "";\n
+                return $(gadget.props.element.querySelector(".configure .auth-block")).slideDown();\n
+              } else {\n
+                return $(gadget.props.element.querySelector(".configure .auth-block")).slideUp();\n
+              }\n
+            }\n
+          ));*/\n
+          promise_list.push(\n
+            $(gadget.props.element.querySelector("input[name=\'configure-auth\']")).bind( "change", function(event, ui) {\n
+              var input_login = gadget.props.element.querySelector(".configure input[name=\'username\']"),\n
+                input_pwd = gadget.props.element.querySelector(".configure input[name=\'password\']");\n
+              if ($(this).prop(\'checked\')) {\n
+                input_login.value = "";\n
+                input_pwd.value = "";\n
+                return $(gadget.props.element.querySelector(".configure .auth-block")).slideDown();\n
+              } else {\n
+                input_login.value = "-";\n
+                input_pwd.value = "-";\n
+                return $(gadget.props.element.querySelector(".configure .auth-block")).slideUp();\n
+              }\n
+            })\n
+          );\n
+\n
+          promise_list.push(\n
+            $(gadget.props.element.querySelector("input[name=\'configure-newpwd\']")).bind( "change", function(event, ui) {\n
+              var confirm_pwd = gadget.props.element.querySelector(".configure input[name=\'new_password_confirm\']"),\n
+                new_pwd = gadget.props.element.querySelector(".configure input[name=\'new_password\']");\n
+              if ($(this).prop(\'checked\')) {\n
+                confirm_pwd.value = "";\n
+                new_pwd.value = "";\n
+                return $(gadget.props.element.querySelector(".configure .new-password")).slideDown();\n
+              } else {\n
+                confirm_pwd.value = "-";\n
+                new_pwd.value = "-";\n
+                return $(gadget.props.element.querySelector(".configure .new-password")).slideUp();\n
+              }\n
+            })\n
           );\n
+\n
+          promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector("a.opml-delete"),\n
+            \'click\',\n
+            true,\n
+            function (element) {\n
+              var key_list = [],\n
+                check_list = gadget.props.element.querySelectorAll(".opml-tablelinks tr td input[type=\'checkbox\']"),\n
+                i;\n
+              gadget.props.element.querySelector(\'.msgtext-box\')\n
+                  .innerHTML = "";\n
+              if (!check_list) {\n
+                return false;\n
+              }\n
+              for (i = 0; i < check_list.length; i += 1) {\n
+                if ($(check_list[i]).prop(\'checked\')) {\n
+                  key_list.push($(check_list[i]).prop(\'value\'));\n
+                }\n
+              }\n
+              if (key_list.length > 0) {\n
+                return gadget.getSetting(\'monitor_url_description\')\n
+                  .push(function (url_description_dict) {\n
+                    var i,\n
+                      promise_list = [];\n
+                    if(url_description_dict === undefined) {\n
+                      url_description_dict = {};\n
+                    }\n
+                    for (i = 0; i < key_list.length; i += 1) {\n
+                      if (url_description_dict.hasOwnProperty(key_list[i])) {\n
+                        promise_list.push(\n
+                          gadget.props.login_gadget.clearSettingFromParentUrl(url_description_dict[key_list[i]].href)\n
+                        );\n
+                        delete url_description_dict[key_list[i]];\n
+                      }\n
+                    }\n
+                    return gadget.setSetting(\'monitor_url_description\', url_description_dict)\n
+                      .push(function () {\n
+                        return RSVP.all(promise_list);\n
+                      })\n
+                      .push(function () {\n
+                        return gadget.reload();\n
+                      });\n
+                  });\n
+              }\n
+            }\n
+          ));\n
+\n
+          promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector("a.opml-test"),\n
+            \'click\',\n
+            true,\n
+            function (element) {\n
+              var key_list = [],\n
+                check_list = gadget.props.element.querySelectorAll(".opml-tablelinks tr td input[type=\'checkbox\']"),\n
+                i;\n
+              if (!check_list) {\n
+                gadget.props.element.querySelector(\'.msgtext-box\')\n
+                  .innerHTML = "<span class=\'ui-text-info\'>No URL selected!</span>";\n
+              }\n
+              for (i = 0; i < check_list.length; i += 1) {\n
+                if ($(check_list[i]).prop(\'checked\')) {\n
+                  key_list.push($(check_list[i]).prop(\'value\'));\n
+                }\n
+              }\n
+              if (key_list.length <= 0) {\n
+                gadget.props.element.querySelector(\'.msgtext-box\')\n
+                  .innerHTML = "<span class=\'ui-text-info\'>No URL selected!</span>";\n
+                return;\n
+              }\n
+              gadget.props.element.querySelector(\'.msgtext-box\')\n
+                  .innerHTML = "";\n
+              return gadget.getSetting(\'monitor_url_description\')\n
+                .push(function (url_description_dict) {\n
+                  var i,\n
+                    promise_list = [];\n
+                  if(url_description_dict === undefined) {\n
+                    url_description_dict = {};\n
+                  }\n
+                  $(gadget.props.element.querySelector(\'.loadspinner\')).removeClass(\'ui-content-hidden\');\n
+                  for (i = 0; i < key_list.length; i += 1) {\n
+                    if (url_description_dict.hasOwnProperty(key_list[i])) {\n
+                      promise_list.push(testOPmlUrl(gadget, url_description_dict[key_list[i]].href, url_description_dict[key_list[i]].title));\n
+                    }\n
+                  }\n
+                  return RSVP.all(promise_list);\n
+                })\n
+                .push(function (result) {\n
+                  var i,\n
+                    state = true;\n
+                  for (i = 0; i < result.length; i += 1) {\n
+                    if (! result[i]) {\n
+                      state = false;\n
+                      break;\n
+                    }\n
+                  }\n
+                  if (state) {\n
+                    gadget.props.element.querySelector(\'.msgtext-box\')\n
+                      .innerHTML = "<span class=\'ui-text-o\'>All OPML URLs was successfully tested.</span>";\n
+                  }\n
+                  $(gadget.props.element.querySelector(\'.loadspinner\')).addClass(\'ui-content-hidden\');\n
+                });\n
+            }\n
+          ));\n
+\n
+          promise_list.push(loopEventListener(\n
+            gadget.props.element.querySelector(\'form.configure\'),\n
+            \'submit\',\n
+            true,\n
+            function () {\n
+              var root_name = \'\',\n
+                credential_dict = {},\n
+                username = \'\',\n
+                password = \'\',\n
+                old_password,\n
+                new_password = \'\',\n
+                cnew_password = \'\',\n
+                reload = true,\n
+                rows_list = gadget.props.listbox.property_dict.data_result,\n
+                config_promise_list = [];\n
+\n
+              if (rows_list.length > 0) {\n
+                root_name = rows_list[0].opml_title;\n
+              }\n
+              gadget.props.element.querySelector(\'.configure .ui-text-error\')\n
+                .innerHTML = \'\';\n
+              if ($(gadget.props.element.querySelector("input[name=\'configure-newpwd\']")).prop(\'checked\')) {\n
+                new_password = gadget.props.element.querySelector("input[name=\'new_password\']").value;\n
+                cnew_password = gadget.props.element.querySelector("input[name=\'new_password_confirm\']").value;\n
+                if (new_password !== cnew_password) {\n
+                  gadget.props.element.querySelector(\'.configure .ui-text-error\')\n
+                  .innerHTML = \'The new password and it confirmation are differents!\';\n
+                  return false;\n
+                }\n
+              }\n
+              return new RSVP.Queue()\n
+                .push(function () {\n
+                  var promise_list = [],\n
+                    i;\n
+                  if ($(gadget.props.element.querySelector("input[name=\'configure-auth\']")).prop(\'checked\')) {\n
+                    username = gadget.props.element.querySelector("input[name=\'username\']").value;\n
+                    password = gadget.props.element.querySelector("input[name=\'password\']").value;\n
+                    for (i = 0; i < rows_list.length; i += 1) {\n
+                      if (rows_list[i].htmlurl) {\n
+                        promise_list.push(checkCredential(\n
+                          gadget,\n
+                          rows_list[i].url.replace(\'public\', \'private\'),\n
+                          btoa(username + \':\' + password)\n
+                        ));\n
+                      }\n
+                    }\n
+                  }\n
+                  return RSVP.all(promise_list);\n
+                })\n
+                .push(function (status_list) {\n
+                  var i,\n
+                    error_msg = \'\';\n
+                  for (i = 0; i < status_list.length; i += 1) {\n
+                    if (status_list[i].status !== \'OK\') {\n
+                      error_msg += \'Login/password invalid for: \' + rows_list[i].title + \'. \' + status_list[i].msg + \'<br/>\';\n
+                    }\n
+                  }\n
+                  return error_msg;\n
+                })\n
+                .push(function (error_msg) {\n
+                  var tmp,\n
+                    i;\n
+                  if (error_msg !== \'\') {\n
+                    gadget.props.element.querySelector(\'.configure .ui-text-error\')\n
+                      .innerHTML = error_msg;\n
+                    new_password = \'\';\n
+                    reload = false;\n
+                    return error_msg;\n
+                  }\n
+                  if (username !== \'\' && password !== \'\') {\n
+\n
+                    if (new_password !== \'\') {\n
+                      old_password = password;\n
+                      password = new_password;\n
+                    }\n
+                    for (i = 0; i < rows_list.length; i += 1) {\n
+                      if (validateHttpUrl(rows_list[i].url)) {\n
+                        tmp = {\n
+                          hash: btoa(username + \':\' + password),\n
+                          url: rows_list[i].url.replace(\'public\', \'private\'), // XXX - Need to fix this (replace())\n
+                          parent_url: gadget.props.opml_url\n
+                          //parent_title: root_name\n
+                        };\n
+                        credential_dict[ hashCode( tmp.url ) + \'\' ] = tmp;\n
+                      }\n
+                    }\n
+                    if (credential_dict) {\n
+                      config_promise_list.push(\n
+                        gadget.props.login_gadget.setUrlDict(credential_dict)\n
+                      );\n
+                    }\n
+                  }\n
+                  config_promise_list.push(\n
+                    setUrlConfiguration(gadget, gadget.props.opml_url, root_name)\n
+                  );\n
+                  return RSVP.all(config_promise_list);\n
+                })\n
+                .push(function (result) {\n
+                  // change password if needed\n
+                  var key,\n
+                    promise_list = [];\n
+                  if (new_password !== \'\') {\n
+                    for (key in credential_dict) {\n
+                      promise_list.push(\n
+                        changeMonitorPassword(\n
+                          gadget,\n
+                          credential_dict[key].url,\n
+                          new_password,\n
+                          btoa(username + \':\' + old_password))\n
+                      );\n
+                    }\n
+                  }\n
+                  return RSVP.all(promise_list);\n
+                })\n
+                .push(function (result_list) {\n
+                  var i,\n
+                    has_error = false;\n
+                  for (i = 0; i < result_list.length; i += 1) {\n
+                    if (result_list[i].status === \'ERROR\') {\n
+                      gadget.props.element.querySelector(\'.configure .ui-text-error\')\n
+                        .innerHTML += \'ERROR \' + result_list[i].code + \': Failed to save new password!\';\n
+                      has_error = true;\n
+                    }\n
+                  }\n
+                  if (! has_error && reload) {\n
+                    if (gadget.props.selected !== "manage") {\n
+                      return gadget.redirect({\n
+                          page: \'settings_configurator\',\n
+                          tab: \'manage\'\n
+                        });\n
+                    } else {\n
+                      return gadget.reload();\n
+                    }\n
+                  }\n
+                });\n
+            }\n
+          ));\n
+\n
+          return RSVP.all(promise_list);\n
         });\n
     });\n
 \n
-}(window, rJS));
+}(window, rJS, RSVP, $, btoa));
 
 ]]></string> </value>
         </item>
@@ -369,7 +916,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6590.62764.8652</string> </value>
+                <value> <string>949.65344.30338.29747</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -387,7 +934,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455288950.05</float>
+                        <float>1458641325.56</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_status_list_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_status_list_js.xml
index e2080d8973badacc2412b37c7cedc62ba2a45515..25018a6afa7316087445bda88418dc7ebe8376cf 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_status_list_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_status_list_js.xml
@@ -140,9 +140,6 @@
     })\n
     .declareMethod(\'render\', function (options) {\n
       var gadget = this,\n
-        jio_gadget,\n
-        listbox,\n
-        monitor_id = \'monitor.hal\',\n
         header = {\n
           "title": \'Monitoring Promise Status\'\n
         },\n
@@ -150,46 +147,39 @@
           search_page: \'status_list\',\n
           search: options.search,\n
           filter: options.filter || \'\',\n
+          column_link: {select: \'source\'},\n
+          column_id: {select: \'title\'},\n
           column_list: [{\n
             title: \'Title\',\n
             select: \'title\'\n
           }, {\n
             title: \'Instance\',\n
-            select: \'instance\'\n
+            select: \'siteTitle\'\n
           }, {\n
             title: \'Hosting Subscription\',\n
-            select: \'hosting_subscription\'\n
+            select: \'reference\'\n
           }, {\n
-            select: \'start-date\',\n
+            select: \'date\',\n
             title: \'Date\'\n
           }, {\n
             select: \'message\',\n
             title: \'Output\',\n
             css_class: \'text-overview\'\n
           }, {\n
-            select: \'status\',\n
+            select: \'category\',\n
             title: \'Status\',\n
             template: \' <span> <i class="ui-status-icon ui-status-{{value}}"></i></span>\',\n
             css_class: \'ui-text-center\'\n
           }],\n
-          \'sort_column_list\': [\n
-            {select: \'status\', title: \'Status\'},\n
+          sort_column_list: [\n
+            {select: \'category\', title: \'Status\'},\n
             {select: \'title\', title: \'Title\'}\n
           ],\n
           query: {\n
-            select_list: [\'title\', \'instance\', \'hosting_subscription\', \'status\',\n
-              \'start-date\', \'message\'],\n
-            query: \'_id:(NOT "monitor.hal") AND _id:(NOT "monitor.global")\',\n
-            sort_on: [["status", "ascending"]]\n
-          }\n
-        },\n
-        jio_options = {\n
-          type: "query",\n
-          sub_storage: {\n
-            type: "drivetojiomapping",\n
-            sub_storage: {\n
-              type: "dav"\n
-            }\n
+            select_list: [\'title\', \'siteTitle\', \'reference\', \'category\',\n
+              \'date\', \'message\', \'link\', \'source\'],\n
+            //query: \'_id:(NOT "monitor.hal") AND _id:(NOT "monitor.global")\',\n
+            sort_on: [["category", "ascending"]]\n
           }\n
         };\n
 \n
@@ -200,60 +190,30 @@
       }\n
       return gadget.updateHeader(header)\n
         .push(function () {\n
-          return gadget.jio_get(monitor_id);\n
+          if (options.opml_url) {\n
+            return gadget.property_dict.jio_gadget.getUrlListFromOPML(options.opml_url);\n
+          }\n
+          else {\n
+            return gadget.property_dict.jio_gadget.getUrlListFromFullOPML();\n
+          }\n
         })\n
-        .push(function (collection_dict) {\n
-          var url_promise_list = [],\n
-            listbox_storage_list = [],\n
-            related_monitor_url,\n
+        .push(function (url_list) {\n
+          var listbox_storage_list = [],\n
             i;\n
-\n
-          related_monitor_url = function (storage_url) {\n
-            var jio_config = $.extend(true, {}, jio_options);\n
-            jio_config.sub_storage.sub_storage.url = storage_url;\n
-            gadget.property_dict.jio_gadget.createJio(jio_config);\n
-            return gadget.property_dict.jio_gadget.get(monitor_id)\n
-              .push(function (collection_dict) {\n
-                // XX Using public URL here!!\n
-                var public_storage_url = collection_dict._links.jio_public.href;\n
-\n
-                if (public_storage_url !== undefined && public_storage_url !== \'\') {\n
-                  listbox_storage_list.push({type: \'dav\', url: public_storage_url});\n
+          for (i = 0; i < url_list.length; i++) {\n
+            if (url_list[i]) {\n
+              listbox_storage_list.push({\n
+                type: "query",\n
+                sub_storage: {\n
+                  type: "feed",\n
+                  feed_type: \'rss\',\n
+                  url: url_list[i]\n
                 }\n
-                return public_storage_url;\n
               });\n
-          };\n
-\n
-          listbox_storage_list.push({\n
-            url: collection_dict._links.jio_public.href,\n
-            type: \'dav\'\n
-          });\n
-          /*listbox_options.header = {\n
-            title: collection_dict.title,\n
-            public_url: collection_dict._links.public.href || \'\',\n
-            private_url: collection_dict._links.private.href || \'\',\n
-            rss_url: collection_dict._links.rss.href || \'\'\n
-          };*/\n
-\n
-          if (collection_dict._links.related_monitor !== undefined &&\n
-                  collection_dict._links.related_monitor !== []) {\n
-            for (i = 0; i< collection_dict._links.related_monitor.length; i += 1) {\n
-              if (collection_dict._links.related_monitor[i].href !== undefined) {\n
-                url_promise_list.push(\n
-                  related_monitor_url(collection_dict._links.related_monitor[i].href)\n
-                );\n
-              }\n
             }\n
           }\n
-          return new RSVP.Queue()\n
-            .push(function () {\n
-              return RSVP.all(url_promise_list);\n
-            })\n
-            .push(function () {\n
-              listbox_configuration.storage_list = listbox_storage_list;\n
-              return gadget.property_dict.listbox.render(listbox_configuration);\n
-            });\n
-          \n
+          listbox_configuration.storage_list = listbox_storage_list;\n
+          return gadget.property_dict.listbox.render(listbox_configuration);\n
         });\n
     })\n
     .declareAcquiredMethod("getSetting", "getSetting")\n
@@ -399,7 +359,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.953.1113.62702</string> </value>
+                <value> <string>949.58584.63587.19677</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -417,7 +377,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1454950900.5</float>
+                        <float>1458314108.86</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_listbox_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_listbox_js.xml
index 507c1aeea1a96634127c0063d87f0ee52ef446d1..bcea3a36812590dbd5f32fb7500ffae34b40c775 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_listbox_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_listbox_js.xml
@@ -130,6 +130,18 @@
   /////////////////////////////////////////////////////////////////\n
   // some methods\n
   /////////////////////////////////////////////////////////////////\n
+  function getJioAllDocument(gadget, scope, jio_options, query) {\n
+    return gadget.declareGadget("gadget_monitoring_jio.html",\n
+        {\n
+          scope: scope,\n
+          sandbox: "public"\n
+        }\n
+      )\n
+      .push(function(new_gadget) {\n
+        new_gadget.createJio(jio_options);\n
+        return new_gadget.allDocs(query);\n
+      });\n
+  }\n
 \n
   gadget_klass\n
 \n
@@ -138,7 +150,8 @@
     /////////////////////////////////////////////////////////////////\n
     .ready(function (gadget) {\n
       gadget.property_dict = {\n
-        render_deferred: RSVP.defer()\n
+        render_deferred: RSVP.defer(),\n
+        data_result: []\n
       };\n
     })\n
 \n
@@ -192,30 +205,28 @@
         search_list = [],\n
         translated_column_list = [],\n
         all_docs_result_list = [],\n
-        use_storage_list = false,\n
-        jio_options = {},\n
         all_docs = function (query, storage_list) {\n
           var promise_list = [],\n
             i;\n
           if (storage_list === undefined) {\n
             return [gadget.jio_allDocs(query)];\n
+          } else if (storage_list === []) {\n
+            return [];\n
           }\n
-          use_storage_list = true;\n
           for (i = 0; i < storage_list.length; i += 1) {\n
-            jio_options = {\n
-              type: "query",\n
-              sub_storage: {\n
-                type: "drivetojiomapping",\n
-                sub_storage: {\n
-                  type: "dav",\n
-                  url: storage_list[i].url\n
-                }\n
-              }\n
-            };\n
-            gadget.property_dict.jio_gadget.createJio(jio_options);\n
+            gadget.property_dict.jio_gadget.createJio(storage_list[i]);\n
+            /*promise_list.push(\n
+              getJioAllDocument(gadget, \'jio_gadget\' + i, storage_list[i], query)\n
+            );*/\n
             promise_list.push(gadget.property_dict.jio_gadget.allDocs(query));\n
           }\n
-          \n
+          if (! option_dict.column_link) {\n
+            option_dict.column_link = {};\n
+          }\n
+          if (!option_dict.column_id) {\n
+            option_dict.column_id = {};\n
+          }\n
+\n
           return new RSVP.Queue()\n
             .push(function () {\n
               return RSVP.all(promise_list);\n
@@ -228,16 +239,24 @@
       // filter query\n
       if (option_dict.filter && option_dict.filter !== \'\') {\n
         for (j = 0; j < option_dict.filter.split(\'+\').length; j += 1) {\n
-          filter_part_list.push(\'(status:"\' + option_dict.filter.split(\'+\')[j].toUpperCase() + \'")\');\n
+          filter_part_list.push(\'(category:"\' + option_dict.filter.split(\'+\')[j].toUpperCase() + \'")\');\n
+        }\n
+        if (option_dict.query.query) {\n
+          option_dict.query.query += \' AND (\' + filter_part_list.join(\' OR \') + \')\';\n
+        } else {\n
+          option_dict.query.query = \'(\' + filter_part_list.join(\' OR \') + \')\';\n
         }\n
-        option_dict.query.query += \' AND (\' + filter_part_list.join(\' OR \') + \')\';\n
       }\n
       // Create the search query\n
       if (option_dict.search) {\n
         for (k = 0, k_len = option_dict.column_list.length; k < k_len; k += 1) {\n
           search_list.push(option_dict.column_list[k].select + \':"%\' + option_dict.search + \'%"\');\n
         }\n
-        option_dict.query.query = \'(\' + search_list.join(\' OR \') + \') AND \' + option_dict.query.query;\n
+        if (option_dict.query.query) {\n
+          option_dict.query.query = \'(\' + search_list.join(\' OR \') + \') AND \' + option_dict.query.query;\n
+        } else {\n
+          option_dict.query.query = \'(\' + search_list.join(\' OR \') + \')\';\n
+        }\n
       }\n
       //return gadget.jio_allDocs(option_dict.query)\n
       return all_docs(option_dict.query, option_dict.storage_list)\n
@@ -247,17 +266,32 @@
             i_len,\n
             i,\n
             j,\n
-            j_len;\n
+            j_len,\n
+            getUrlDict = function (row) {\n
+              var link = option_dict.column_link.select || \'\',\n
+                id = option_dict.column_id.select || \'\',\n
+                result;\n
+              \n
+              result = {\n
+                jio_key: (id !== \'\' && row.value.hasOwnProperty(id)) ? row.value[id] : row.id,\n
+                page: \'view\'\n
+              };\n
+              if (link && row.value.hasOwnProperty(link)) {\n
+                result.jio_for = row.value[link];\n
+              }\n
+              return result;\n
+            };\n
 \n
           for (j = 0, j_len = result_list.length; j < j_len; j += 1) {\n
+            if (! result_list[j]) {\n
+              continue;\n
+            }\n
             all_docs_result_list.push(result_list[j]);\n
             promise_url_list = [];\n
             for (i = 0, i_len = result_list[j].data.total_rows; i < i_len; i += 1) {\n
-              promise_url_list.push(gadget.getUrlFor({\n
-                jio_key: result_list[j].data.rows[i].id,\n
-                jio_for: (!use_storage_list) ? \'\' : option_dict.storage_list[j].url, // XXX To check!!\n
-                page: \'view\'\n
-              }));\n
+              promise_url_list.push(gadget.getUrlFor(\n
+                getUrlDict(result_list[j].data.rows[i])\n
+              ));\n
             }\n
             promise_list.push(RSVP.all(promise_url_list));\n
           }\n
@@ -274,9 +308,11 @@
             j,\n
             k;\n
 \n
+          gadget.property_dict.data_result = [];\n
           // build handlebars object\n
           for (k = 0; k < all_docs_result_list.length; k += 1) {\n
             for (j = 0, j_len = all_docs_result_list[k].data.total_rows; j < j_len; j += 1) {\n
+              gadget.property_dict.data_result.push(all_docs_result_list[k].data.rows[j].value);\n
               cell_list = [];\n
               for (i = 0, i_len = option_dict.column_list.length; i < i_len; i += 1) {\n
                 current_value = all_docs_result_list[k].data.rows[j].value[option_dict.column_list[i].select];\n
@@ -305,6 +341,10 @@
           if (option_dict.enable_search !== undefined) {\n
             enable_search = option_dict.enable_search;\n
           }\n
+          if (!enable_search) {\n
+            $(gadget.property_dict.element.querySelector(".custom-grid"))\n
+              .removeClass(\'ui-shadow\').css(\'padding\', \'0\');\n
+          }\n
           content += listbox_widget_table({\n
             widget_theme : option_dict.widget_theme,\n
             search: option_dict.search,\n
@@ -546,7 +586,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>948.59182.37059.53913</string> </value>
+                <value> <string>949.59889.7208.51251</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -564,7 +604,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1454512378.26</float>
+                        <float>1458314048.86</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_html.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_html.xml
index c62e355bfae5cd731ba8020735098fb6f2a1bab5..2949a9f3c3bfb8c21bacb169d45867f289ad4826 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_html.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_html.xml
@@ -180,7 +180,12 @@
       <div class="overview-header">\n
         <div class=\'content-title ui-instance-title\'>\n
           <div class="overview-title">\n
-            <i class="fa fa-cubes"></i><span>{{title}}</span>\n
+            <i class="fa fa-cubes"></i><span>\n
+              {{title}}\n
+              {{#if root_title}}\n
+              &nbsp; [{{root_title}}]\n
+              {{/if}}\n
+              </span>\n
           </div>\n
           <div class="commands">\n
             \n
@@ -190,25 +195,31 @@
       <div class="content-details">\n
         <div class="ui-text-left" style="padding-bottom: 15px;">\n
           <h2><i class="fa fa-info-circle"></i> <strong>Instance Current State</strong></h2>\n
-          <div class="padding-lr-10">\n
-            <div class="ui-field-contain">\n
-              <fieldset data-role="controlgroup" data-type="horizontal">\n
-                {{#if resource_url }}\n
-                <a href="{{resource_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-pie-chart"></i> Resources</a>\n
-                {{/if}}\n
-                {{#if process_url }}\n
-                <a href="{{process_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-list-alt"></i> Processes</a>\n
-                {{/if}}\n
-                {{#if public_url}}\n
-                <!--<a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{public_url}}" title="Public"><i class="fa fa-folder-open-o"></i> Public</a>-->\n
-                {{/if}}\n
-                {{#if private_url}}\n
-                <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{private_url}}" title="Private"><i class="fa fa-lock"></i> Private</a>\n
-                {{/if}}\n
-                {{#if rss_url}}\n
-                <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{rss_url}}" title="RSS"><i class="fa fa-rss-square"></i> RSS</a>\n
-                {{/if}}\n
-              </fieldset>\n
+          <div class="padding-10">\n
+            <div class="ui-grid-a ui-responsive">\n
+              <div class="ui-block-a">\n
+                <fieldset data-role="controlgroup" data-type="horizontal">\n
+                  {{#if resource_url }}\n
+                  <a href="{{resource_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-pie-chart"></i> Resources</a>\n
+                  {{/if}}\n
+                  {{#if process_url }}\n
+                  <a href="{{process_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini"><i class="fa fa-list-alt"></i> Processes</a>\n
+                  {{/if}}\n
+                </fieldset>\n
+              </div>\n
+              <div class="ui-block-b">\n
+                <fieldset data-role="controlgroup" data-type="horizontal">\n
+                  {{#if public_url}}\n
+                  <!--<a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{public_url}}" title="Public"><i class="fa fa-folder-open-o"></i> Public</a>-->\n
+                  {{/if}}\n
+                  {{#if private_url}}\n
+                  <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{private_url}}" title="Private"><i class="fa fa-lock"></i> Private</a>\n
+                  {{/if}}\n
+                  {{#if rss_url}}\n
+                  <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target=\'_blank\' href="{{rss_url}}" title="RSS"><i class="fa fa-rss-square"></i> RSS</a>\n
+                  {{/if}}\n
+                </fieldset>\n
+              </div>\n
             </div>\n
             <table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke">\n
               <tr>\n
@@ -241,7 +252,7 @@
       <div style="overflow: auto;" class="padding-lr-10">\n
         <table data-role="table" data-mode="columntoggle" class="table-stroke">\n
           {{#each promise_list}}\n
-          <tr title="{{message}}">\n
+          <tr>\n
             <td><a href="{{href}}">{{title}}</a></td>\n
             <td style="text-align: center;">{{time}}</td>\n
             <td style="text-align: center;"><span class="label label-{{status}}">{{status}}</span></td>\n
@@ -446,7 +457,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6292.13164.54971</string> </value>
+                <value> <string>949.64074.33189.21691</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -464,7 +475,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455272629.34</float>
+                        <float>1458566491.46</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_js.xml
index 0c93fc7877b9a732e46157029710e309284b02f8..0bc8677fd455a863e4281321665576da7ede2138 100644
--- a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_js.xml
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/gadget_monitoring_widget_overview_js.xml
@@ -221,7 +221,7 @@
           search_string  += \' OR (\' + option_dict.search_column_list[k].select +\n
             \':"%\' + option_dict.search + \'%"\' + \')\';\n
         }\n
-        option_dict.query.query = search_string + \' AND \' + option_dict.query.query;\n
+        option_dict.query.query = \'(\' + search_string + \') AND \' + option_dict.query.query;\n
       }\n
 \n
       getPartialData = function(dav_url, key) {\n
@@ -236,65 +236,38 @@
             }\n
           };\n
         gadget.property_dict.jio_gadget.createJio(jio_options);\n
-        return gadget.property_dict.jio_gadget.get(key)\n
+        return gadget.property_dict.jio_gadget.allDocs(option_dict.query)\n
           .push(function (monitor_dict) {\n
-            if (monitor_dict.title && monitor_dict._links.monitor && monitor_dict._links.monitor.href) {\n
-              all_document_list.push(monitor_dict);\n
-              monitor_url_list.push(monitor_dict._links.monitor.href);\n
+            var i;\n
+            if (monitor_dict && monitor_dict.data.total_rows > 0) {\n
+              for (i = 0; i < monitor_dict.data.total_rows; i += 1) {\n
+                all_document_list.push(monitor_dict.data.rows[i].value);\n
+              }\n
+            } else {\n
+              // XXX\n
+              console.log("Failed to get monitor.global at " + dav_url);\n
             }\n
             return;\n
           });\n
       };\n
+      \n
 \n
       // store initial configuration\n
       gadget.property_dict.option_dict = option_dict;\n
 \n
       return new RSVP.Queue()\n
       .push(function () {\n
-        var jio_options;\n
-        if (option_dict.data_url !== undefined && option_dict.data_url !== \'\') {\n
-          jio_options = {\n
-            type: "query",\n
-            sub_storage: {\n
-              type: "drivetojiomapping",\n
-              sub_storage: {\n
-                type: "dav",\n
-                url: option_dict.data_url\n
-              }\n
-            }\n
-          };\n
-          gadget.property_dict.jio_gadget.createJio(jio_options);\n
-          //jio_getdocs = gadget.property_dict.jio_gadget.allDocs;\n
-        } else {\n
-          jio_getdocs = gadget.jio_allDocs;\n
+        return gadget.property_dict.jio_gadget.getMonitorUrlList();\n
+      })\n
+      .push(function (url_list) {\n
+        var i,\n
+          promise_list = [];\n
+        for (i = 0; i < url_list.length; i += 1) {\n
+          if (url_list[i]) {\n
+            promise_list.push(getPartialData(url_list[i], option_dict.data_id));\n
+          }\n
         }\n
-        return gadget.property_dict.jio_gadget.get(option_dict.data_id)\n
-          .push(function (monitor_dict) {\n
-            var promise_list = [],\n
-              j;\n
-\n
-            /* Filter this result here !! */\n
-\n
-            if (monitor_dict.title && monitor_dict._links.monitor && monitor_dict._links.monitor.href) {\n
-              all_document_list.push(monitor_dict);\n
-              monitor_url_list.push(monitor_dict._links.monitor.href);\n
-            }\n
-            if (monitor_dict._links.related_monitor !== undefined &&\n
-                monitor_dict._links.related_monitor !== []) {\n
-              for (j = 0; j < monitor_dict._links.related_monitor.length; j += 1) {\n
-                promise_list.push(\n
-                  getPartialData(\n
-                    monitor_dict._links.related_monitor[j].href,\n
-                    option_dict.data_id\n
-                  )\n
-                );\n
-              }\n
-            }\n
-            return new RSVP.Queue()\n
-              .push(function () {\n
-                return RSVP.all(promise_list);\n
-              });\n
-          });\n
+        return RSVP.all(promise_list);\n
       })\n
       .push(function () {\n
         var promise_list = [],\n
@@ -387,7 +360,7 @@
           index = parseInt($(element).attr(\'rel\'), 10),\n
           private_link;\n
 \n
-        if (index !== isNaN && (gadget.property_dict.document_list.length > index)) {\n
+        if (!isNaN(index) && (gadget.property_dict.document_list.length > index)) {\n
           private_link = gadget.property_dict.document_list[index]._links.monitor.href;\n
         } else {\n
           return;\n
@@ -502,6 +475,8 @@
                   .innerHTML = content;\n
                 gadget.property_dict.element.querySelector(".promise-list")\n
                   .innerHTML = promise_content;\n
+                return $(element.querySelectorAll(\'fieldset[data-role="controlgroup"]\'))\n
+                  .controlgroup().controlgroup(\'refresh\');\n
               });\n
           }\n
           return false;\n
@@ -737,7 +712,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>949.6359.56330.33331</string> </value>
+                <value> <string>949.64078.48455.55876</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -755,7 +730,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1455275625.09</float>
+                        <float>1458566498.07</float>
                         <string>UTC</string>
                       </tuple>
                     </state>
diff --git a/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/jio_dev_rssfeed_storage_js.xml b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/jio_dev_rssfeed_storage_js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aebc424e7a657f4905c6110cbff0d085bca22db4
--- /dev/null
+++ b/master/bt5/slapos_monitoring/PathTemplateItem/web_page_module/jio_dev_rssfeed_storage_js.xml
@@ -0,0 +1,708 @@
+<?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>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>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>categories</string> </key>
+            <value>
+              <tuple>
+                <string>classification/collaborative/public</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_md5</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>jio_dev_rssfeed_storage.js</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>jio_dev_rssfeed_storage_js</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>text_content</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*\n
+ * Copyright 2013, Nexedi SA\n
+ * Released under the LGPL license.\n
+ * http://www.gnu.org/licenses/lgpl.html\n
+ */\n
+\n
+/*jslint nomen: true*/\n
+/*global jIO, RSVP, DOMParser, Blob */\n
+\n
+// JIO Rss feed Description :\n
+// {\n
+//   type: "rss",\n
+//   url: {string},\n
+//   basic_login: {string} // Basic authentication\n
+// }\n
+\n
+// NOTE: to get the authentication type ->\n
+// curl --verbose  -X OPTION http://domain/\n
+// In the headers: "WWW-Authenticate: Basic realm="DAV-upload"\n
+\n
+(function (jIO, RSVP, DOMParser, Blob) {\n
+  "use strict";\n
+\n
+  function ajax(storage, options) {\n
+    if (options === undefined) {\n
+      options = {};\n
+    }\n
+    if (storage._authorization !== undefined) {\n
+      if (options.headers === undefined) {\n
+        options.headers = {};\n
+      }\n
+      options.headers.Authorization = storage._authorization;\n
+    }\n
+\n
+    if (storage._with_credentials !== undefined) {\n
+      if (options.xhrFields === undefined) {\n
+        options.xhrFields = {};\n
+      }\n
+      options.xhrFields.withCredentials = storage._with_credentials;\n
+    }\n
+//       if (start !== undefined) {\n
+//         if (end !== undefined) {\n
+//           headers.Range = "bytes=" + start + "-" + end;\n
+//         } else {\n
+//           headers.Range = "bytes=" + start + "-";\n
+//         }\n
+//       }\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return jIO.util.ajax(options);\n
+      });\n
+  }\n
+\n
+  function restrictDocumentId(id) {\n
+    if (id.indexOf("/") !== 0) {\n
+      throw new jIO.util.jIOError("id " + id + " is forbidden (no begin /)",\n
+                                  400);\n
+    }\n
+    if (id.lastIndexOf("/") !== (id.length - 1)) {\n
+      throw new jIO.util.jIOError("id " + id + " is forbidden (no end /)",\n
+                                  400);\n
+    }\n
+    return id;\n
+  }\n
+\n
+  function restrictAttachmentId(id) {\n
+    if (id.indexOf("/") !== -1) {\n
+      throw new jIO.util.jIOError("attachment " + id + " is forbidden",\n
+                                  400);\n
+    }\n
+  }\n
+\n
+  function getFeedEntry (element, entry) {\n
+    var dummy = {getAttribute: function () { return; }},\n
+      item = {};\n
+\n
+    item.link = (entry.querySelector("item > link") || dummy).textContent;\n
+    item.date = (entry.querySelector("item > pubDate") || dummy).textContent;\n
+    item.subject = (entry.querySelector("item > title") || dummy).textContent;\n
+    item.author = (entry.querySelector("item > author") || dummy).textContent;\n
+    item.category = (entry.querySelector("item > category") || dummy).textContent;\n
+    item.message = (entry.querySelector("item > comments") || dummy).textContent;\n
+    item.source = (entry.querySelector("item > source") || dummy).getAttribute(\'url\');\n
+    item.title = (entry.querySelector("item > source") || dummy).textContent;\n
+    item.description = (entry.querySelector("item > description") || dummy).textContent;\n
+    item.guid = (entry.querySelector("item > guid") || dummy).textContent || (entry.querySelector("item > link") || dummy).textContent;\n
+    return item;\n
+  }\n
+\n
+  function parseRssFeedEntry (element, id) {\n
+    var dummy = {getAttribute: function () { return; }},\n
+      item = {},\n
+      rss_items,\n
+      tmp;\n
+\n
+    rss_items = element.querySelectorAll("rss>channel>item");\n
+\n
+    if (id !== undefined || id !== null) {\n
+      [].forEach.call(rss_items, function(entry) {\n
+        tmp = (entry.querySelector("item > guid") || dummy).textContent || (entry.querySelector("item > link") || dummy).textContent;\n
+        if (tmp === id) {\n
+          item = getFeedEntry(element, entry);\n
+          item.siteTitle = (element.querySelector("rss > channel > title") || dummy).textContent;\n
+          item.reference = (element.querySelector("rss > channel > description") || dummy).textContent;\n
+          item.siteLink = (element.querySelector("rss > channel > link") || dummy).textContent;\n
+          item.lastBuildDate = (element.querySelector("rss > channel > lastBuildDate") || dummy).textContent;\n
+        }\n
+      });\n
+    } else {\n
+      return {};\n
+    }\n
+    return item;\n
+  }\n
+  \n
+  function parseRssFeedEntryList (element) {\n
+    var dummy = {getAttribute: function () { return; }},\n
+      items = [];\n
+\n
+    [].forEach.call(element.querySelectorAll("rss > channel > item"), function (entry) {\n
+      var item = {};\n
+\n
+      item = getFeedEntry(element, entry);\n
+      item.siteTitle = (element.querySelector("rss > channel > title") || dummy).textContent;\n
+      item.siteLink = (element.querySelector("rss > channel > link") || dummy).textContent;\n
+      item.reference = (element.querySelector("rss > channel > description") || dummy).textContent;\n
+      item.lastBuildDate = (element.querySelector("rss > channel > lastBuildDate") || dummy).textContent;\n
+      if (item.guid !== undefined && item.guid !== "") {\n
+        items.push({\n
+          id: item.guid,\n
+          value: item\n
+        });\n
+      }\n
+    });\n
+    //items.reverse();\n
+    return items;\n
+  }\n
+\n
+  function getOpmlFeedEntryAsDict(outline) {\n
+    var entry_dict = {};\n
+    entry_dict.title = outline.getAttribute(\'title\') || \'\';\n
+    entry_dict.htmlurl = outline.getAttribute(\'htmlUrl\') || \'\';\n
+    entry_dict.xmlurl = outline.getAttribute(\'xmlUrl\') || \'\';\n
+    entry_dict.url = outline.getAttribute(\'url\') || \'\';\n
+    entry_dict.text = outline.getAttribute(\'text\') || \'\';\n
+    entry_dict.type = outline.getAttribute(\'type\') || \'\';\n
+    entry_dict.version = outline.getAttribute(\'version\') || \'\';\n
+    return entry_dict;\n
+  }\n
+\n
+  function parseOpmlFeedEntryList (doc, id) {\n
+    var outlines = doc.getElementsByTagName(\'outline\'),\n
+      dummy = {getAttribute: function () { return; }},\n
+      i,\n
+      max,\n
+      tmp = {},\n
+      opml_title,\n
+      create_date,\n
+      modified_date,\n
+      feeds = [];\n
+\n
+    opml_title = (doc.getElementsByTagName(\'title\')[0] || dummy).textContent;\n
+    create_date = (doc.getElementsByTagName(\'dateCreated\')[0] || dummy).textContent;\n
+    modified_date = (doc.getElementsByTagName(\'dateModified\')[0] || dummy).textContent;\n
+    if (id !== undefined) {\n
+      for (i = 0, max = outlines.length; i < max; i += 1) {\n
+        if (outlines[i].getAttribute(\'htmlUrl\') === id || outlines[i].getAttribute(\'xmlUrl\') === id) {\n
+          tmp = getOpmlFeedEntryAsDict(outlines[i]);\n
+          tmp.opml_title = opml_title;\n
+          tmp.create_date = create_date;\n
+          tmp.modified_date = modified_date;\n
+        }\n
+      }\n
+      return tmp;\n
+    }\n
+    for (i = 0, max = outlines.length; i < max; i += 1) {\n
+\n
+      if (!outlines[i].hasChildNodes()) {\n
+        tmp = getOpmlFeedEntryAsDict(outlines[i]);\n
+\n
+        tmp.opml_title = opml_title;\n
+        tmp.create_date = create_date;\n
+        tmp.modified_date = modified_date;\n
+        if (tmp.htmlurl !== \'\' || tmp.xmlurl !== \'\') {\n
+          feeds.push({\n
+            id: tmp.htmlurl || tmp.xmlurl,\n
+            value: tmp\n
+          });\n
+        }\n
+      }\n
+    }\n
+    return feeds;\n
+  }\n
+\n
+  /**\n
+   * The JIO RssFeed Storage extension\n
+   *\n
+   * @class RssFeed\n
+   * @constructor\n
+   */\n
+  function RssFeed(spec) {\n
+    if (typeof spec.url !== \'string\') {\n
+      throw new TypeError("RssFeed \'url\' is not of type string");\n
+    }\n
+    this._url = spec.url;\n
+    if (typeof spec.feed_type !== \'string\') {\n
+      throw new TypeError("RssFeed \'feed_type\' is not of type string. Should be \'rss\', \'atom\' or \'opml\'");\n
+    }\n
+    this._type = spec.feed_type;\n
+    // XXX digest login\n
+    if (typeof spec.basic_login === \'string\') {\n
+      this._authorization = "Basic " + spec.basic_login;\n
+    }\n
+    this._with_credentials = spec.with_credentials;\n
+  }\n
+\n
+  RssFeed.prototype.get = function (id) {\n
+    var context = this;\n
+    //id = restrictDocumentId(id);\n
+\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return ajax(context, {\n
+          type: "GET",\n
+          url: context._url,\n
+          dataType: "text"\n
+        });\n
+      })\n
+      .push(function (response) {\n
+        var element;\n
+        element =  new DOMParser().parseFromString(\n
+          response.target.responseText,\n
+          "text/xml"\n
+        );\n
+        if (context._type == \'rss\') {\n
+          return parseRssFeedEntry(element, id);\n
+        } else if (context._type === \'opml\') {\n
+          return parseOpmlFeedEntryList(element, id);\n
+        } else {\n
+          throw new jIO.util.jIOError("Cannot parse document", 501);\n
+        }\n
+      }, function (error) {\n
+        if ((error.target !== undefined) &&\n
+            (error.target.status === 404)) {\n
+          throw new jIO.util.jIOError("Cannot find document", 404);\n
+        }\n
+        throw error;\n
+      });\n
+  };\n
+\n
+  RssFeed.prototype.hasCapacity = function (capacity) {\n
+    return (capacity === "list");\n
+  };\n
+\n
+  RssFeed.prototype.buildQuery = function () {\n
+    var context = this;\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return ajax(context, {\n
+          type: "GET",\n
+          url: context._url,\n
+          dataType: "text"\n
+        });\n
+      })\n
+      .push(function (response) {\n
+        var element,\n
+          result_dict;\n
+        element =  new DOMParser().parseFromString(\n
+          response.target.responseText,\n
+          "text/xml"\n
+        );\n
+        if (context._type == \'rss\') {\n
+          result_dict = parseRssFeedEntryList(element);\n
+        } else if (context._type === \'opml\') {\n
+          result_dict = parseOpmlFeedEntryList(element);\n
+        } else {\n
+          throw new jIO.util.jIOError("Cannot parse document", 501);\n
+        }\n
+        return result_dict;\n
+      }, function (error) {\n
+        if ((error.target !== undefined) &&\n
+            (error.target.status === 404)) {\n
+          throw new jIO.util.jIOError("Cannot find document", 404);\n
+        }\n
+        throw error;\n
+      });\n
+\n
+  };\n
+\n
+  RssFeed.prototype.allAttachments = function (id) {\n
+\n
+    var context = this;\n
+    id = restrictDocumentId(id);\n
+\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return ajax(context, {\n
+          type: "GET",\n
+          url: context._url + id,\n
+          dataType: "text"\n
+        });\n
+      })\n
+\n
+\n
+      .push(function (response) {\n
+        // Extract all meta informations and return them to JSON\n
+\n
+        var i,\n
+          attachment = {},\n
+          id,\n
+          attachment_list = new DOMParser().parseFromString(\n
+            response.target.responseText,\n
+            "text/xml"\n
+          ).querySelectorAll(\n
+            "D\\\\:response, response"\n
+          );\n
+\n
+        // exclude parent folder and browse\n
+        for (i = 1; i < attachment_list.length; i += 1) {\n
+          // XXX Only get files for now\n
+          id = attachment_list[i].querySelector("D\\\\:href, href").\n
+            textContent.split(\'/\').slice(-1)[0];\n
+          // XXX Ugly\n
+          if ((id !== undefined) && (id !== "")) {\n
+            attachment[id] = {};\n
+          }\n
+        }\n
+        return attachment;\n
+\n
+      }, function (error) {\n
+        if ((error.target !== undefined) &&\n
+            (error.target.status === 404)) {\n
+          throw new jIO.util.jIOError("Cannot find document", 404);\n
+        }\n
+        throw error;\n
+      });\n
+\n
+  };\n
+\n
+  RssFeed.prototype.getAttachment = function (id, name) {\n
+    var context = this;\n
+    id = restrictDocumentId(id);\n
+    restrictAttachmentId(name);\n
+\n
+    return new RSVP.Queue()\n
+      .push(function () {\n
+        return ajax(context, {\n
+          type: "GET",\n
+          url: context._url + id + name,\n
+          dataType: "blob"\n
+        });\n
+      })\n
+      .push(function (response) {\n
+        return new Blob(\n
+          [response.target.response || response.target.responseText],\n
+          {"type": response.target.getResponseHeader(\'Content-Type\') ||\n
+                   "application/octet-stream"}\n
+        );\n
+      }, function (error) {\n
+        if ((error.target !== undefined) &&\n
+            (error.target.status === 404)) {\n
+          throw new jIO.util.jIOError("Cannot find attachment: "\n
+                                      + id + " , " + name,\n
+                                      404);\n
+        }\n
+        throw error;\n
+      });\n
+\n
+  };\n
+\n
+  jIO.addStorage(\'feed\', RssFeed);\n
+\n
+}(jIO, RSVP, DOMParser, Blob));
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Jio Rss Feed Storage</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</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>1456160046.44</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>published</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>949.23984.20073.16930</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>1457363302.84</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>1456157682.63</float>
+                        <string>UTC</string>
+                      </tuple>
+                    </state>
+                  </object>
+                </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/slapos_monitoring/bt/template_keep_last_workflow_history_only_path_list b/master/bt5/slapos_monitoring/bt/template_keep_last_workflow_history_only_path_list
index 49c43b67b801ea473e8fe3deca9105576eda5208..d7114561d7ccb422a3833a3ab8946715c670e41c 100644
--- a/master/bt5/slapos_monitoring/bt/template_keep_last_workflow_history_only_path_list
+++ b/master/bt5/slapos_monitoring/bt/template_keep_last_workflow_history_only_path_list
@@ -1,7 +1,8 @@
 web_page_module/gadget_monitoring_*
 web_site_module/monitoring_render_js
+web_page_module/jio_dev_rssfeed_storage_js
 web_site_module/monitoring_render_js/**
 web_page_module/gadget_erp5_graph_*
-web_page_module/chart_min_js
+web_page_module/Chart.min.js
 web_page_module/jquery.magnific-popup.min.js
 web_page_module/magnific-popup.css
\ No newline at end of file
diff --git a/master/bt5/slapos_monitoring/bt/template_keep_workflow_path_list b/master/bt5/slapos_monitoring/bt/template_keep_workflow_path_list
index 49c43b67b801ea473e8fe3deca9105576eda5208..d7114561d7ccb422a3833a3ab8946715c670e41c 100644
--- a/master/bt5/slapos_monitoring/bt/template_keep_workflow_path_list
+++ b/master/bt5/slapos_monitoring/bt/template_keep_workflow_path_list
@@ -1,7 +1,8 @@
 web_page_module/gadget_monitoring_*
 web_site_module/monitoring_render_js
+web_page_module/jio_dev_rssfeed_storage_js
 web_site_module/monitoring_render_js/**
 web_page_module/gadget_erp5_graph_*
-web_page_module/chart_min_js
+web_page_module/Chart.min.js
 web_page_module/jquery.magnific-popup.min.js
 web_page_module/magnific-popup.css
\ No newline at end of file
diff --git a/master/bt5/slapos_monitoring/bt/template_path_list b/master/bt5/slapos_monitoring/bt/template_path_list
index 25cf863849cd497beb28b28b98177ef789841c0a..8efdcc73385843169691433315a4dd43de8c2634 100644
--- a/master/bt5/slapos_monitoring/bt/template_path_list
+++ b/master/bt5/slapos_monitoring/bt/template_path_list
@@ -1,6 +1,7 @@
 web_page_module/chart_min_js
 web_page_module/gadget_erp5_graph_*
 web_page_module/gadget_monitoring_*
+web_page_module/jio_dev_rssfeed_storage_js
 web_page_module/jquery.magnific-popup.min.js
 web_page_module/magnific-popup.css
 web_site_module/monitoring_render_js