diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js
index 1e55ebfc0139f60ebe7dba63e046bbad16ff5f48..1f0b49ac88737837424911a338a9405696729cfe 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.js
@@ -67,25 +67,45 @@
     /////////////////////////////////////////////////////////////////
 
     .declareMethod('render', function (options) {
+      var group_list = options.form_definition.group_list,
+        rendered_form = options.erp5_document._embedded._view,
+        i,
+        j,
+        hash = "";
+
+      // Check the list of field to render
+      // If the list is different, DOM content will be dropped
+      // and recreated
+      for (i = 0; i < group_list.length; i += 1) {
+        hash += group_list[i][0];
+        for (j = 0; j < group_list[i][1].length; j += 1) {
+          if (rendered_form.hasOwnProperty(group_list[i][1][j][0])) {
+            hash += group_list[i][1][j][0];
+          }
+        }
+      }
+
+      return this.changeState({
+        erp5_document: options.erp5_document,
+        form_definition: options.form_definition,
+        hash: hash,
+        view: options.view
+      });
+    })
+
+    .declareMethod('updateDOM', function (modification_dict) {
       var i,
-        erp5_document = options.erp5_document,
-        form_definition = options.form_definition,
+        erp5_document = this.state.erp5_document,
+        form_definition = this.state.form_definition,
         rendered_form = erp5_document._embedded._view,
         group_list = form_definition.group_list,
         queue = new RSVP.Queue(),
         form_gadget = this,
-        suboption_dict = {},
         parent_element = document.createElement("div");
 
-      form_gadget.state_parameter_dict = options.form_gadget || {};
-      // XXX Hardcoded for searchfield - remove later!
-      if (form_definition.extended_search) {
-        suboption_dict.extended_search = form_definition.extended_search;
+      if (modification_dict.hasOwnProperty('hash')) {
+        form_gadget.props.gadget_list = [];
       }
-      // XXX Hardcoded for listbox's hide functionality
-      suboption_dict.hide_enabled = form_definition.hide_enabled;
-
-      form_gadget.props.gadget_list = [];
 
       function addGroup(group) {
         queue
@@ -104,11 +124,20 @@
                     sandbox = "public",
                     field_element = document.createElement("div"),
                     renderered_field = rendered_form[field[0]],
-                    suboptions = options[renderered_field.key] || suboption_dict;
+                    // suboptions = options[renderered_field.key] || suboption_dict;
+                    suboptions = {};
+
+                  // XXX Hardcoded for searchfield - remove later!
+                  if (form_definition.extended_search) {
+                    suboptions.extended_search = form_definition.extended_search;
+                  }
+                  // XXX Hardcoded for listbox's hide functionality
+                  suboptions.hide_enabled = form_definition.hide_enabled;
+
                   suboptions.field_url = getFieldTypeGadgetUrl(renderered_field.type);
                   suboptions.label = false;
                   suboptions.field_json = renderered_field;
-                  suboptions.field_json.view = options.view;
+                  suboptions.field_json.view = form_gadget.state.view;
 
                   if (group[0] !== "bottom") {
                     suboptions.label = true;
@@ -116,20 +145,26 @@
 
                   return field_queue
                     .push(function () {
-                      return form_gadget.declareGadget('gadget_erp5_label_field.html', {
-                        scope: renderered_field.key,
-                        element: field_element,
-                        sandbox: sandbox
-                      });
+                      if (modification_dict.hasOwnProperty('hash')) {
+                        return form_gadget.declareGadget('gadget_erp5_label_field.html', {
+                          scope: renderered_field.key,
+                          element: field_element,
+                          sandbox: sandbox
+                        });
+                      }
+                      return form_gadget.getDeclaredGadget(renderered_field.key);
                     })
                     .push(function (label_gadget) {
-                      //XXXXX Hardcoded to get one listbox gadget
-                      //pt form list gadget will get this listbox's info
-                      //then pass to search field gadget
-                      if (suboptions.field_url === "gadget_erp5_field_listbox.html") {
-                        form_gadget.props.listbox_gadget = label_gadget;
+                      if (modification_dict.hasOwnProperty('hash')) {
+
+                        //XXXXX Hardcoded to get one listbox gadget
+                        //pt form list gadget will get this listbox's info
+                        //then pass to search field gadget
+                        if (suboptions.field_url === "gadget_erp5_field_listbox.html") {
+                          form_gadget.props.listbox_gadget = label_gadget;
+                        }
+                        form_gadget.props.gadget_list.push(label_gadget);
                       }
-                      form_gadget.props.gadget_list.push(label_gadget);
                       return label_gadget.render(suboptions);
                     })
                     .push(function () {
@@ -155,19 +190,17 @@
 
       return queue
         .push(function () {
-          var dom_element = form_gadget.element
-            .querySelector(".field_container");
-          while (dom_element.firstChild) {
-            dom_element.removeChild(dom_element.firstChild);
+          if (modification_dict.hasOwnProperty('hash')) {
+            var dom_element = form_gadget.element
+              .querySelector(".field_container");
+            while (dom_element.firstChild) {
+              dom_element.removeChild(dom_element.firstChild);
+            }
+            dom_element.appendChild(parent_element);
           }
-          dom_element.appendChild(parent_element);
-          // return $(parent_element).trigger("create");
-
         });
     })
 
-
-
     .declareMethod("getListboxInfo", function () {
       //XXXXX get listbox gadget's info
       var gadget = this;
diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml
index 3942b9aa2a383aae843a7d2037c001f2c9204f5d..ad3096876e3ca5abc7d301a15ef7ca39e135039b 100644
--- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml
+++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_form_js.xml
@@ -230,7 +230,7 @@
             </item>
             <item>
                 <key> <string>serial</string> </key>
-                <value> <string>954.24492.61471.3703</string> </value>
+                <value> <string>954.27320.12986.51029</string> </value>
             </item>
             <item>
                 <key> <string>state</string> </key>
@@ -248,7 +248,7 @@
                     </tuple>
                     <state>
                       <tuple>
-                        <float>1475681076.93</float>
+                        <float>1475762090.29</float>
                         <string>UTC</string>
                       </tuple>
                     </state>