diff --git a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
index fc0121845fd712d227f0a36edbf28d02a263b2fd..abaa70eb63a6a4ed741dfebefd5f1503682fd450 100644
--- a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
+++ b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
@@ -1,5 +1,3 @@
-#return "fake hateoas return!!!"
-
 """Hello. This will be long because this godly script does almost everything.
 
 It **always** return a JSON reponse in HATEOAS format specification.
@@ -66,9 +64,6 @@ from Products.ERP5Type.Utils import UpperCase
 from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
 from collections import OrderedDict
 
-log("################################################################")
-log("[DEBUG] ERP5Document_getHateoas script was called!!!!!!")
-
 MARKER = []
 COUNT_LIMIT = 1000
 
@@ -770,7 +765,6 @@ def renderField(traversed_document, field, form, value=MARKER, meta_type=None, k
     # get embedded form definition
     embedded_form = getattr(formbox_context, field.get_value('formbox_target_id'))
     # renderForm mutates `embedded_document` therefor no return/assignment
-    log("[DEBUG] calling renderForm from renderField")
     renderForm(formbox_context, embedded_form, embedded_document, key_prefix=key)
     # fix editability which is hard-coded to 0 in `renderForm` implementation
     embedded_document['form_id']['editable'] = field.get_value("editable")
@@ -891,7 +885,6 @@ def renderForm(traversed_document, form, response_dict, key_prefix=None, selecti
     'name': form.id
   }
 
-  log("[DEBUG] calling calculateHateoas method from renderForm")
   response_dict['_embedded'] = {
     'form_definition': calculateHateoas(
       traversed_document=form,
@@ -954,12 +947,7 @@ def renderForm(traversed_document, form, response_dict, key_prefix=None, selecti
 
   # Go through all groups ("left", "bottom", "hidden" etc.) and add fields from
   # them into form.
-  group_list = []
-  try:
-    form_groups = form.Form_getGroupTitleAndId()
-  except:
-    form_groups = []
-  for group in form_groups: #form.Form_getGroupTitleAndId():
+  for group in form.Form_getGroupTitleAndId():
     # Skipping hidden group could be problematic but see MatrixBox Field above
     if 'hidden' in group['gid']:
       continue
@@ -1066,7 +1054,6 @@ def renderForm(traversed_document, form, response_dict, key_prefix=None, selecti
       # addressable by the user = have actions (object_view) attached to it
       # BUT! when Report Section defines `path` that is the new context for
       # form rendering and subsequent searches...
-      log("[DEBUG] calling renderForm recursively from renderForm")
       renderForm(traversed_document if not report_item.path else report_context,
                  report_form,
                  report_result,
@@ -1097,11 +1084,7 @@ def renderFormDefinition(form, response_dict):
   Dialog Form such as dialog_id.
   """
   group_list = []
-  try:
-    form_groups = form.Form_getGroupTitleAndId()
-  except:
-    form_groups = []
-  for group in form_groups: #form.Form_getGroupTitleAndId():
+  for group in form.Form_getGroupTitleAndId():
 
     if group['gid'].find('hidden') < 0:
       field_list = []
@@ -1168,20 +1151,13 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
   if extra_param_json is None:
     extra_param_json = {}
 
-  is_context_appcache = False
-  try:
-    href = traversed_document.Base_getRequestUrl()
-  except:
-    is_context_appcache = True
-    href = "https://softinst112382.host.vifib.net/erp5/web_site_module/officejs_discussion_tool/portal_skins/erp5_officejs_jio_connector/HTMLPost_viewAsJio/ERP5Form_viewAsJio"
-
   result_dict = {
     '_debug': mode,
     '_links': {
       "self": {
         # XXX Include query parameters
         # FIXME does not work in case of bulk queries
-        "href": href #traversed_document.Base_getRequestUrl()
+        "href": traversed_document.Base_getRequestUrl()
       },
       # Always inform about site root
       "site_root": {
@@ -1216,7 +1192,10 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
       'status': statusLevelToString(portal_status_level)
     }
 
+
   if (restricted == 1) and (portal.portal_membership.isAnonymousUser()):
+  #if False:
+  #when appcache tries to call this script it fails due unauthorized if not logged in
     login_relative_url = site_root.getLayoutProperty("configuration_login", default="")
     if (login_relative_url):
       response.setHeader(
@@ -1229,7 +1208,7 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
     response.setStatus(401)
     return ""
 
-  elif not is_context_appcache and mime_type != traversed_document.Base_handleAcceptHeader([mime_type]):
+  elif mime_type != traversed_document.Base_handleAcceptHeader([mime_type]):
       response.setStatus(406)
       return ""
 
@@ -1293,37 +1272,20 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
         }
 
     # Find current action URL and extract embedded view
-    try:
-      erp5_action_dict = portal.Base_filterDuplicateActions(
-        portal.portal_actions.listFilteredActionsFor(traversed_document))
-    except AttributeError as error:
-      erp5_action_dict = {}
+    erp5_action_dict = portal.Base_filterDuplicateActions(
+      portal.portal_actions.listFilteredActionsFor(traversed_document))
     for erp5_action_key in erp5_action_dict.keys():
       for view_action in erp5_action_dict[erp5_action_key]:
         # Try to embed the form in the result
         if (view == view_action['id']):
           current_action = parseActionUrl('%s' % view_action['url'])  # current action/view being rendered
 
-    log("[DEBUG] current_action and view_id stuff with current_action: ")
-    log(current_action)
-
-    #if is_context_appcache:
-    #  current_action['url'] = 'https://softinst112382.host.vifib.net/erp5/web_site_module/officejs_discussion_tool/portal_skins/erp5_officejs_jio_connector/HTMLPost_viewAsJio/ERP5Form_viewAsJio'
-    #  current_action['view_id'] = "ERP5Form_viewAsJio"
-    #  current_action['params'] = {}
-
     if view and (view != 'view') and (current_action.get('view_id', None) is None):
       # XXX Allow to directly render a form
       current_action['view_id'] = view
       current_action['url'] = '%s/%s' % (traversed_document.getRelativeUrl(), view)
       current_action['params'] = {}
 
-    if current_action.get('view_id', None) is not None:
-      if is_context_appcache:
-        current_action['view_id'] = "ERP5Form_viewAsJio"
-      log("[DEBUG] FINAL current_action['view_id']: " + str(current_action['view_id']))
-      log("")
-
     # If we have current action definition we are able to render embedded view
     # which should be a "ERP5 Form" but in reality can be anything
     if current_action.get('view_id', ''):
@@ -1367,7 +1329,6 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
         # REQUEST but expect all (formerly) URL query parameters to appear in their **kw
         # thus we send extra_param_json (=rjs way of passing parameters to REQUEST) as
         # selection_params so they get into callable's **kw.
-        log("[DEBUG] calling renderForm from calculateHateoas -core-")
         renderForm(traversed_document, view_instance, embedded_dict,
                    selection_params=extra_param_json, extra_param_json=extra_param_json)
 
@@ -2031,7 +1992,6 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
       response.setStatus(405)
       return ""
 
-    log("[DEBUG] calling renderForm from calculateHateoas - mode 'search'")
     renderForm(traversed_document, form, result_dict, extra_param_json=extra_param_json)
 
   elif mode == 'newContent':
@@ -2127,7 +2087,6 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
         result_dict["_embedded"]["_view"]["my_form_definition"]["default"] = result_dict["_embedded"]["_view"]["_embedded"]["form_definition"].copy()
         result_dict["_embedded"]["_view"]["my_form_definition"]["default"]["group_list"] = result_dict["group_list"]
         result_dict["_embedded"]["_view"]["my_form_definition"]["default"]["_actions"] = result_dict["_embedded"]["_view"]["_actions"]
-
         # [HARDCODED] the form definition must contain a field_info_dict with all the rendered fields
         # for now is hardcoded only for "HTML Post"
         # TODO: achieve this iterating the group_list fields and calling renderField
@@ -2181,6 +2140,7 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
               "title": "form id",
               "default": "Undefined form id",
               "editable": 0,
+              "hidden": 1,
               "key": "form_id",
               "type": "StringField"
             }
@@ -2218,14 +2178,6 @@ temp_is_portal = (temp_traversed_document.getPath() == portal.getPath())
 
 response.setHeader('Content-Type', mime_type)
 
-log("  ")
-log("[DEBUG] relative_url: " + str(relative_url))
-log("[DEBUG] temp_traversed_document: " + str(temp_traversed_document))
-log("[DEBUG] temp_traversed_document.getPath(): " + temp_traversed_document.getPath())
-log("[DEBUG] site_root.getPath(): " + site_root.getPath())
-log("[DEBUG] portal.getPath(): " + portal.getPath())
-log("[DEBUG] calling calculateHateoas method from beggining")
-log("  ")
 hateoas = calculateHateoas(is_portal=temp_is_portal, is_site_root=temp_is_site_root,
                            traversed_document=temp_traversed_document,
                            relative_url=relative_url,
@@ -2236,10 +2188,6 @@ hateoas = calculateHateoas(is_portal=temp_is_portal, is_site_root=temp_is_site_r
                            form_relative_url=form_relative_url,
                            extra_param_json=extra_param_json)
 
-log("  ")
-log("[DEBUG] returning final hateoas dict!!!")
-log("  ")
-
 if hateoas == "":
   return hateoas
 else:
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js
index 1779f721f1823ecd301e0fb7453e5d554fb11c8f..e5e595aa07b9637ca2f9ad5d3dc32e3ed68997b0 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.js
@@ -1,6 +1,6 @@
 /*global document, window, rJS, RSVP, jIO */
 /*jslint nomen: true, indent: 2, maxerr: 3 */
-(function (document, window, rJS, RSVP, jIO) {
+(function (document, window, rJS, RSVP, jIO, console, XMLHttpRequest) {
   "use strict";
 
   rJS(window)
@@ -37,36 +37,6 @@
             url: setting_list[0],
             default_view_reference: setting_list[1]
           },
-          jio_options_indexdb = {
-            type: "replicate",
-            check_remote_deletion: true,
-            check_local_creation: true,
-            check_local_deletion: false,
-            check_local_modification: true,
-            signature_sub_storage: {
-              type: "query",
-              sub_storage: {
-                type: "indexeddb",
-                database: "officejs-hash"
-              }
-            },
-            local_sub_storage: {
-              type: "query",
-              sub_storage: {
-                type: "uuid",
-                sub_storage: {
-                  type: "indexeddb",
-                  database: "ojs_source_code"
-                }
-              }
-            },
-            remote_sub_storage: {
-              type: "appcache",
-              manifest: "gadget_officejs_discussion_tool.appcache",
-              version: "app/",
-              take_installer: true
-            }
-          },
           jio_storage = jIO.createJIO(jio_options),
           //jio_storage = jIO.createJIO(jio_options_indexdb),
           form_path = 'portal_skins/erp5_officejs_jio_connector/' +
@@ -74,61 +44,24 @@
             '_viewAsJio';
           return new RSVP.Queue()
             .push(function () {
+              // manual request to hateoas script to test if the script json dict result is correctly cached
               var xmlHttp = new XMLHttpRequest(),
-              url = "https://softinst112382.host.vifib.net/erp5/web_site_module/officejs_discussion_tool/app/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas?mode=traverse&relative_url=portal_skins%2Ferp5_officejs_jio_connector%2FHTMLPost_viewAsJio&view=jio_view";
+              url = "https://softinst112382.host.vifib.net/erp5/web_site_module/officejs_discussion_tool/hateoas/ERP5Document_getHateoas?mode=traverse&relative_url=portal_skins%2Ferp5_officejs_jio_connector%2FHTMLPost_viewAsJio&view=jio_view";
               xmlHttp.open("GET", url, false); // false for synchronous request
               xmlHttp.send(null);
-              return xmlHttp.responseText;
+              return JSON.parse(xmlHttp.responseText);
             })
             .push(function (result) {
-              console.log("XMLHttpRequest result:");
-              console.log(result);
+              //return result._embedded._view.my_form_definition["default"];
+              // jio.get ends up calling hateoas script
               return jio_storage.get(form_path)
                 .push(function (result) {
-                  console.log("jio_storage.get(" + form_path + ") RESULT:");
-                  console.log(result);
+                  //console.log("jio_storage.get(" + form_path + ") RESULT:");
+                  //console.log(result);
                   return result.form_definition;
                 });
             });
         });
-      //somehow the form_definition should come from the erp5-doc/form (jio?)
-      //for now, hardcoded form_definition for POST VIEW
-      return {
-        _debug: "traverse",
-        pt: "form_view",
-        title: "Post",
-        group_list: [[
-          "left",
-          [["my_title", {meta_type: "StringField"}]]
-        ], [
-          "bottom",
-          [["my_text_content", {meta_type: "ProxyField"}]]
-        ]],
-        //this field_info is totally made up, but somewhere in the definition there must be
-        //information about the fields. So, foreach field: key->info
-        field_info_dict: {
-          "my_title": {
-            "title": "Title",
-            "default": "Undefined title",
-            "editable": 1,
-            "key": "title",
-            "type": "StringField"
-          },
-          "my_text_content": {
-            "editable": 1,
-            "key": "text_content",
-            "renderjs_extra": '{"editor": "fck_editor",' +
-              '"maximize": true}',
-            "type": "GadgetField",
-            "url": "gadget_editor.html",
-            "sandbox": "public"
-          }
-        },
-        action: "Base_edit",
-        update_action: "",
-        _links: { "type": { name: "" } },
-        _actions: { "put": true }
-      };
     })
 
     .declareMethod("generateJsonRenderForm", function (form_definition, document) {
@@ -271,4 +204,4 @@
         });
     });
 
-}(document, window, rJS, RSVP, jIO));
\ No newline at end of file
+}(document, window, rJS, RSVP, jIO, console, XMLHttpRequest));
\ No newline at end of file
diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml
index 66df47c86dfe6e05f25b781a82230943df40a637..cb252c18b098f59771669c0ac9c474b7b4569012 100644
--- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml
+++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_controller_page_controller_js.xml
@@ -225,7 +225,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>973.62473.36343.1126</string> </value>
+                <value> <string>973.64002.24510.31556</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -243,7 +243,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1551285840.61</float>
+                        <float>1551377466.25</float>
                         <string>UTC</string>
                       </tuple>
                     </state>