diff --git a/bt5/erp5_crm/ActionTemplateItem/portal_types/Note/create_response.xml b/bt5/erp5_crm/ActionTemplateItem/portal_types/Note/create_response.xml
index 41432c2e820d32555ebb5af19c530533b97a5e3e..08e9453b6e44fa8cead558b9b7e9df0f20b63fa4 100644
--- a/bt5/erp5_crm/ActionTemplateItem/portal_types/Note/create_response.xml
+++ b/bt5/erp5_crm/ActionTemplateItem/portal_types/Note/create_response.xml
@@ -16,13 +16,13 @@
             <key> <string>categories</string> </key>
             <value>
               <tuple>
-                <string>action_type/object_action</string>
+                <string>action_type/object_jio_action</string>
               </tuple>
             </value>
         </item>
         <item>
             <key> <string>category</string> </key>
-            <value> <string>object_action</string> </value>
+            <value> <string>object_jio_action</string> </value>
         </item>
         <item>
             <key> <string>condition</string> </key>
diff --git a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_updateCreateResponse.py b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_updateCreateResponse.py
index 59948cd16eb6f5e86314520b2838b9c56d35f7e8..d96103432f912fa91dd0db6c9bfe244513bbbd5f 100644
--- a/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_updateCreateResponse.py
+++ b/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_updateCreateResponse.py
@@ -20,9 +20,9 @@ if response_event_notification_message:
   # XXX this relies on formulator internals, we force the variables in request and
   # re-render the form.
   request = container.REQUEST
-  request.set('your_response_event_notification_message', '')
-  request.set('your_response_event_title', temp_event.getTitle())
-  request.set('your_response_event_text_content', temp_event.getTextContent())
-  request.set('your_response_event_resource', temp_event.getResource())
-  
-return context.Event_viewCreateResponseDialog()
+  request.form['your_response_event_notification_message'] = ''
+  request.form['your_response_event_title'] = temp_event.getTitle()
+  request.form['your_response_event_text_content'] = temp_event.getTextContent()
+  request.form['your_response_event_resource'] = temp_event.getResource()
+
+return context.Base_renderForm('Event_viewCreateResponseDialog')
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite.xml b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9eee4d75191d1cda14f3c0f9443df9897f2435f1
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Zuite" module="Products.Zelenium.zuite"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>renderjs_ui_crm_action_zuite</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.xml b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4bbbfcef8112bcaea52e32ca433ff6c3cda73009
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>testCRMCreateResponse</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>utf-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <unicode></unicode> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.zpt b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.zpt
new file mode 100644
index 0000000000000000000000000000000000000000..ad3653401b8cb6aa737c8a968274ad642f7e78a1
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponse.zpt
@@ -0,0 +1,60 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Test Form View Editable Save Action</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test Default Module View</td></tr>
+</thead><tbody>
+
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/init" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/prepare_data" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/view_create_response_dialog" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'Re: erp5_crm_renderjs_ui_test_event_title',
+                                                             'field_your_response_event_portal_type': 'Note',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'send',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p><br></p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/fill_create_response_dialog_content" />
+</tal:block>
+
+<!-- Header has a save button -->
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog" />
+
+<tal:block tal:define="notification_configuration python: {'class': 'success',
+                                                           'text': 'Response Created.'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification" />
+</tal:block>
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" />
+
+<tal:block tal:define="response_configuration python: {'field_my_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                       'field_my_portal_type': 'Letter',
+                                                       'field_my_resource': '',
+                                                       'field_my_start_date': '2010-01-01T00:00:00',
+                                                       'simulation_state': 'Draft',
+                                                       'field_my_source_title': 'erp5_crm_renderjs_ui_test_agent_title',
+                                                       'field_my_destination_title': 'erp5_crm_renderjs_ui_test_customer_title',
+                                                       'field_my_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_response_content" />
+</tal:block>
+
+</tbody></table>
+</body>
+</html>
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.xml b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f73727a3c69f8d161e8d56517d752595a06687a7
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>testCRMCreateResponseFromNotificationMessage</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>utf-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <unicode></unicode> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.zpt b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.zpt
new file mode 100644
index 0000000000000000000000000000000000000000..6f20dd29c9f0eb389e1fae93abe3582cace04b6e
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMCreateResponseFromNotificationMessage.zpt
@@ -0,0 +1,60 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Test Form View Editable Save Action</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test Default Module View</td></tr>
+</thead><tbody>
+
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/init" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/prepare_data" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/view_create_response_dialog" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'Re: erp5_crm_renderjs_ui_test_event_title',
+                                                             'field_your_response_event_portal_type': 'Note',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'send',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p><br></p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': 'erp5_crm_renderjs_ui_test_notification_reference',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/fill_create_response_dialog_content" />
+</tal:block>
+
+<!-- Header has a save button -->
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog" />
+
+<tal:block tal:define="notification_configuration python: {'class': 'success',
+                                                           'text': 'Response Created.'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification" />
+</tal:block>
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" />
+
+<tal:block tal:define="response_configuration python: {'field_my_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                       'field_my_portal_type': 'Letter',
+                                                       'field_my_resource': '',
+                                                       'field_my_start_date': '2010-01-01T00:00:00',
+                                                       'simulation_state': 'Draft',
+                                                       'field_my_source_title': 'erp5_crm_renderjs_ui_test_agent_title',
+                                                       'field_my_destination_title': 'erp5_crm_renderjs_ui_test_customer_title',
+                                                       'field_my_text_content': '<p>No pbl. We will solve your issue.</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_response_content" />
+</tal:block>
+
+</tbody></table>
+</body>
+</html>
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.xml b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c7cf41f0615be0c1f7a88c87ae03e4d768d1e60
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>testCRMUpdateCreateResponseDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>utf-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <unicode></unicode> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.zpt b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.zpt
new file mode 100644
index 0000000000000000000000000000000000000000..695f394c3783acb77c0ad15d9b256fe1762720dc
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialog.zpt
@@ -0,0 +1,60 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Test Form View Editable Save Action</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test Default Module View</td></tr>
+</thead><tbody>
+
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/init" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/prepare_data" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/view_create_response_dialog" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'Re: erp5_crm_renderjs_ui_test_event_title',
+                                                             'field_your_response_event_portal_type': 'Note',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'send',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p><br></p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/fill_create_response_dialog_content" />
+</tal:block>
+
+<!-- Header has a save button -->
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/update_dialog" />
+
+<tal:block tal:define="notification_configuration python: {'class': 'success',
+                                                           'text': 'Data received'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification" />
+</tal:block>
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+</tbody></table>
+</body>
+</html>
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.xml b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6fcd1de2638013ff9e58d44163021c4042cd1dd4
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>testCRMUpdateCreateResponseDialogFromNotificationMessage</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>utf-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <unicode></unicode> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.zpt b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.zpt
new file mode 100644
index 0000000000000000000000000000000000000000..8929534d83f701b2f032b5d81a91c8b17f27a432
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_crm_action_zuite/testCRMUpdateCreateResponseDialogFromNotificationMessage.zpt
@@ -0,0 +1,60 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Test Form View Editable Save Action</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Test Default Module View</td></tr>
+</thead><tbody>
+
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/init" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/prepare_data" />
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/view_create_response_dialog" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'Re: erp5_crm_renderjs_ui_test_event_title',
+                                                             'field_your_response_event_portal_type': 'Note',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'send',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p><br></p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_response_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': 'erp5_crm_renderjs_ui_test_notification_reference',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>Foo<br>Bar</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/fill_create_response_dialog_content" />
+</tal:block>
+
+<!-- Header has a save button -->
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/update_dialog" />
+
+<tal:block tal:define="notification_configuration python: {'class': 'success',
+                                                           'text': 'Data received'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification" />
+</tal:block>
+<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" />
+
+<tal:block tal:define="dialog_content_configuration python: {'field_your_response_event_title': 'erp5_crm_renderjs_ui_test_notification_title',
+                                                             'field_your_response_event_portal_type': 'Letter',
+                                                             'field_your_response_event_resource': '',
+                                                             'field_your_response_event_start_date': '2010-01-01T00:00:00',
+                                                             'field_your_response_event_notification_message': '',
+                                                             'field_your_response_workflow_action': 'draft',
+                                                             'field_my_default_destination': 'person_module/erp5_crm_renderjs_ui_test_agent',
+                                                             'field_your_response_event_text_content': '<p>No pbl. We will solve your issue.</p>'}">
+  <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/check_create_response_dialog_content" />
+</tal:block>
+
+</tbody></table>
+</body>
+</html>
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test.xml b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test.xml
new file mode 100644
index 0000000000000000000000000000000000000000..87a8dbafb2f878287a613851947a4ebe6cc607cd
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>erp5_crm_renderjs_ui_test</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.py b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b5e9d9a29b58b73c8290da2ceb1ee598b9ee3a2
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.py
@@ -0,0 +1,59 @@
+from DateTime import DateTime
+
+portal = context.getPortalObject()
+
+person_portal_type = "Person"
+customer_id = "erp5_crm_renderjs_ui_test_customer"
+customer_title = "erp5_crm_renderjs_ui_test_customer_title"
+agent_id = "erp5_crm_renderjs_ui_test_agent"
+agent_title = "erp5_crm_renderjs_ui_test_agent_title"
+
+module = portal.getDefaultModule(person_portal_type)
+customer = module.newContent(
+  portal_type=person_portal_type,
+  id=customer_id,
+  title=customer_title
+)
+agent = module.newContent(
+  portal_type=person_portal_type,
+  id=agent_id,
+  title=agent_title
+)
+
+notification_message_portal_type = "Notification Message"
+notification_message_id = "erp5_crm_renderjs_ui_test_notification"
+notification_message_title = "erp5_crm_renderjs_ui_test_notification_title"
+notification_message_reference = "erp5_crm_renderjs_ui_test_notification_reference"
+notification_message_text_content = """No pbl.
+We will solve your issue.
+"""
+
+module = portal.getDefaultModule(notification_message_portal_type)
+notification_message = module.newContent(
+  portal_type=notification_message_portal_type,
+  id=notification_message_id,
+  title=notification_message_title,
+  reference=notification_message_reference,
+  text_content=notification_message_text_content
+)
+notification_message.validate()
+
+event_portal_type = "Note"
+event_id = "erp5_crm_renderjs_ui_test_event"
+event_title = "erp5_crm_renderjs_ui_test_event_title"
+event_text_content = """Hello,
+I have an issue
+"""
+
+module = portal.getDefaultModule(event_portal_type)
+event = module.newContent(
+  portal_type=event_portal_type,
+  id=event_id,
+  title=event_title,
+  text_content=event_text_content,
+  source_value=customer,
+  destination_value=agent,
+)
+portal.portal_workflow.doActionFor(event, 'initial_stop_action')
+
+return "Event Created."
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.xml b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95e038f699fd3875363098bd0b2405863ce56f61
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_createEvent.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>CRMRJSZuite_createEvent</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.py b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.py
new file mode 100644
index 0000000000000000000000000000000000000000..785bfb681b64b51c4610b6db119996cb274b8ef2
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.py
@@ -0,0 +1,28 @@
+portal = context.getPortalObject()
+
+event_portal_type = "Note"
+event_id = "erp5_crm_renderjs_ui_test_event"
+
+# Delete event
+module = portal.getDefaultModule(event_portal_type)
+if getattr(module, event_id, None) is not None:
+  module.manage_delObjects([event_id])
+
+notification_message_portal_type = "Notification Message"
+notification_message_id = "erp5_crm_renderjs_ui_test_notification"
+# Delete Notification Message
+module = portal.getDefaultModule(notification_message_portal_type)
+if getattr(module, notification_message_id, None) is not None:
+  module.manage_delObjects([notification_message_id])
+
+person_portal_type = "Person"
+customer_id = "erp5_crm_renderjs_ui_test_customer"
+agent_id = "erp5_crm_renderjs_ui_test_agent"
+
+# Delete person
+module = portal.getDefaultModule(person_portal_type)
+for person_id in (customer_id, agent_id):
+  if getattr(module, person_id, None) is not None:
+    module.manage_delObjects([person_id])
+
+return "Deleted Successfully."
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.xml b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0c1939d27f67f687527ce40b8c499142d75dbc15
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_deleteData.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>CRMRJSZuite_deleteData</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.py b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f88a8d33277d0eedfaff31910dd985d74d59007
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.py
@@ -0,0 +1,12 @@
+"""Set subversion working copy list and enable preference.
+
+This script is called by Products.ERP5Type.tests.runFunctionalTest to set
+subversion working copy paths and conversion server address.
+It's not meant to be called by zelenium tests directly.
+"""
+context.Zuite_setPreference('')
+pref = context.portal_preferences.erp5_ui_test_preference
+
+pref.setPreferredTextEditor('fck_editor')
+
+return 'Set CRM Preference Successfully.'
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.xml b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1ef7eaa0cca99dc6b118bf5faa04bb60aec185a
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/CRMRJSZuite_setPreference.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>CRMRJSZuite_setPreference</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Set Test Runner Preferences</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.xml b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a7842b7ebd343ac1c8ef8a8661a43909516d2d20
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_local_properties</string> </key>
+            <value>
+              <tuple>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>description</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>text</string> </value>
+                  </item>
+                </dictionary>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Common Template for PTZuite, it will reuse parts of the Listbox Zuite</string> </value>
+        </item>
+        <item>
+            <key> <string>expand</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Zuite_CommonTemplateForCRMRenderjsUi</string> </value>
+        </item>
+        <item>
+            <key> <string>output_encoding</string> </key>
+            <value> <string>utf-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <unicode>Common Template for All CRM Renderjs ui Zuite</unicode> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.zpt b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.zpt
new file mode 100644
index 0000000000000000000000000000000000000000..477ae8a5552af50f2a4099f37283278bf18762e1
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_crm_renderjs_ui_test/Zuite_CommonTemplateForCRMRenderjsUi.zpt
@@ -0,0 +1,306 @@
+<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"
+           xmlns:metal="http://xml.zope.org/namespaces/metal">
+
+  <tal:block metal:define-macro="init">
+    <tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
+    <tr>
+      <td>open</td>
+      <td>${base_url}/portal_preferences/CRMRJSZuite_setPreference</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td>Set CRM Preference Successfully.</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>store</td>
+      <td>${base_url}/web_site_module/renderjs_runner/#</td>
+      <td>renderjs_url</td>
+    </tr>
+  </tal:block>
+
+  <tal:block metal:define-macro="delete_data">
+    <tr>
+      <td colspan="3"><b>Delete CRM Test Data</b></td>
+    </tr>
+    <tr>
+      <td>open</td>
+      <td>${base_url}/CRMRJSZuite_deleteData</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td>Deleted Successfully.</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+  <tal:block metal:define-macro="prepare_data">
+    <tal:block metal:use-macro="here/Zuite_CommonTemplateForCRMRenderjsUi/macros/delete_data" />
+    <tr>
+      <td colspan="3"><b>Create CRM Test Data</b></td>
+    </tr>
+    <tr>
+      <td>open</td>
+      <td>${base_url}/CRMRJSZuite_createEvent</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td>Event Created.</td>
+      <td></td>
+    </tr>
+    <tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+  <tal:block metal:define-macro="view_create_response_dialog">
+    <tr>
+      <td colspan="3"><b>Display the create response dialog</b></td>
+    </tr>
+    <tr>
+      <td>open</td>
+      <td>${renderjs_url}/event_module/erp5_crm_renderjs_ui_test_event?editable=1</td>
+      <td></td>
+    </tr>
+    <!-- Wait for gadget to be loaded -->
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_pt_form_view_editable.html']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>waitForTextPresent</td>
+      <td>Actions</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertElementPresent</td>
+      <td>//div[@data-gadget-scope='header']//a[text()='Actions' and contains(@href, '#!change') and contains(@href, 'n.page=action')]</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>click</td>
+      <td>//div[@data-gadget-scope='header']//a[text()='Actions' and contains(@href, '#!change') and contains(@href, 'n.page=action')]</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_page_action.html']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td>Create Response</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertElementPresent</td>
+      <td>//div[@data-gadget-scope='m']//a[text()='Create Response' and contains(@href, '#!change') and contains(@href, 'create_response') and contains(@href, 'u.page=')]</td>
+      <td></td>
+    </tr>
+    <!-- Follow one link -->
+    <tr>
+      <td>click</td>
+      <td>//div[@data-gadget-scope='m']//a[text()='Create Response' and contains(@href, '#!change') and contains(@href, 'create_response') and contains(@href, 'u.page=')]</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_pt_form_dialog.html']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td>Create Response</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+  <tal:block metal:define-macro="check_create_response_dialog_content">
+    <tr>
+      <td colspan="3"><b tal:content="python: 'Check the create response dialog content'"></b></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_your_response_event_title</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_title']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_your_response_event_portal_type</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_portal_type']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_your_response_event_resource</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_resource']"></td>
+    </tr>
+    <tr tal:condition="python: 'field_your_response_event_start_date' in dialog_content_configuration">
+      <td>verifyValue</td>
+      <td>field_your_response_event_start_date</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_start_date']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_your_response_event_notification_message</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_notification_message']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td tal:content="python: '//input[@name=\'field_your_response_workflow_action\' and @type=\'radio\' and @value=\'%s\']' % dialog_content_configuration['field_your_response_workflow_action']"></td>
+      <td>on</td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_default_destination</td>
+      <td tal:content="python: dialog_content_configuration['field_my_default_destination']"></td>
+    </tr>
+    <!-- Wait for ckeditor to be loaded :/ How to inspect inside another iframe? -->
+    <tr>
+      <td>pause</td>
+      <td>5000</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>storeEval</td>
+            <td>document.querySelector('#selenium_myiframe').contentWindow.document.querySelector('iframe').contentWindow.document.querySelector('iframe').contentWindow.document.body.innerHTML</td>
+      <td>field_your_response_event_text_content</td>
+    </tr>
+    <tr>
+      <td>verifyEval</td>
+      <td>storedVars['field_your_response_event_text_content']</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_text_content']"></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+
+  <tal:block metal:define-macro="fill_create_response_dialog_content">
+    <tr>
+      <td colspan="3"><b tal:content="python: 'Fill the create response dialog content'"></b></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_event_title</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_title']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_event_portal_type</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_portal_type']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_event_resource</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_resource']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_event_start_date</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_start_date']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_event_notification_message</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_event_notification_message']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_your_response_workflow_action</td>
+      <td tal:content="python: dialog_content_configuration['field_your_response_workflow_action']"></td>
+    </tr>
+    <tr>
+      <td>type</td>
+      <td>field_my_default_destination</td>
+      <td tal:content="python: dialog_content_configuration['field_my_default_destination']"></td>
+    </tr>
+    <tr>
+      <td>storeEval</td>
+      <td tal:content="python: 'document.querySelector(\'#selenium_myiframe\').contentWindow.document.querySelector(\'iframe\').contentWindow.document.querySelector(\'iframe\').contentWindow.document.body.innerHTML = \'%s\'' % dialog_content_configuration['field_your_response_event_text_content']"></td>
+      <td>field_my_text_content</td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+
+  <tal:block metal:define-macro="check_response_content">
+    <tr>
+      <td colspan="3"><b tal:content="python: 'Check the response content'"></b></td>
+    </tr>
+    <!-- Wait for gadget to be loaded -->
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[@data-gadget-url='${base_url}/web_site_module/renderjs_runner/gadget_erp5_pt_form_view_editable.html']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_title</td>
+      <td tal:content="python: response_configuration['field_my_title']"></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td tal:content="python: response_configuration['field_my_portal_type']"></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_resource</td>
+      <td tal:content="python: response_configuration['field_my_resource']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_start_date</td>
+      <td tal:content="python: response_configuration['field_my_start_date']"></td>
+    </tr>
+    <tr>
+      <td>assertTextPresent</td>
+      <td tal:content="python: response_configuration['simulation_state']"></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_source_title</td>
+      <td tal:content="python: response_configuration['field_my_source_title']"></td>
+    </tr>
+    <tr>
+      <td>verifyValue</td>
+      <td>field_my_destination_title_list</td>
+      <td tal:content="python: response_configuration['field_my_destination_title']"></td>
+    </tr>
+    <!-- Wait for ckeditor to be loaded :/ How to inspect inside another iframe? -->
+    <tr>
+      <td>pause</td>
+      <td>5000</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>storeEval</td>
+            <td>document.querySelector('#selenium_myiframe').contentWindow.document.querySelector('iframe').contentWindow.document.querySelector('iframe').contentWindow.document.body.innerHTML</td>
+      <td>field_my_text_content</td>
+    </tr>
+    <tr>
+      <td>verifyEval</td>
+      <td>storedVars['field_my_text_content']</td>
+      <td tal:content="python: response_configuration['field_my_text_content']"></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
+</tal:block>
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.py b/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.py
new file mode 100644
index 0000000000000000000000000000000000000000..12f218c7a4867f3ebe6c72b4551d336169278e0f
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.py
@@ -0,0 +1,50 @@
+##############################################################################
+#
+# Copyright (c) 2011 Nexedi SARL and Contributors. All Rights Reserved.
+#                     Kazuhiko <kazuhiko@nexedi.com>
+#                     Rafael Monnerat <rafael@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+import unittest
+
+from Products.ERP5Type.tests.ERP5TypeFunctionalTestCase import ERP5TypeFunctionalTestCase
+
+class TestRenderJSUICRMAction(ERP5TypeFunctionalTestCase):
+  foreground = 0
+  run_only = "renderjs_ui_crm_action_zuite"
+
+  def getBusinessTemplateList(self):
+    return (
+      'erp5_crm_renderjs_ui_test',
+      'erp5_crm',
+      'erp5_web_renderjs_ui',
+      'erp5_web_renderjs_ui_test',
+      'erp5_ui_test_core',
+      'erp5_test_result',
+    )
+
+def test_suite():
+  suite = unittest.TestSuite()
+  suite.addTest(unittest.makeSuite(TestRenderJSUICRMAction))
+  return suite
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.xml b/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d001e1c8d75fac3f35c246ca455b0e1077672fa
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSCRMAction.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Test Component" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>testFunctionalRJSCRMAction</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>test.erp5.testFunctionalRJSCRMAction</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Test Component</string> </value>
+        </item>
+        <item>
+            <key> <string>sid</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>erp5</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</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/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>component_validation_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </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>validate</string> </value>
+            </item>
+            <item>
+                <key> <string>validation_state</string> </key>
+                <value> <string>validated</string> </value>
+            </item>
+          </dictionary>
+        </list>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/comment b/bt5/erp5_crm_renderjs_ui_test/bt/comment
new file mode 100644
index 0000000000000000000000000000000000000000..8503c7f59aeb51a12903a84fc84aae369d92c39e
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/comment
@@ -0,0 +1 @@
+RenderJS UI tests for Event Module.
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/copyright_list b/bt5/erp5_crm_renderjs_ui_test/bt/copyright_list
new file mode 100644
index 0000000000000000000000000000000000000000..4eb1d620d1a513587d2e69a0650eb687f419ac4d
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/copyright_list
@@ -0,0 +1 @@
+Copyright (C) 2018 Nexedi SA
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/dependency_list b/bt5/erp5_crm_renderjs_ui_test/bt/dependency_list
new file mode 100644
index 0000000000000000000000000000000000000000..6ef5e108d4ef981a14667e45c1a405aad5f1a6a3
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/dependency_list
@@ -0,0 +1,2 @@
+erp5_crm
+erp5_web_renderjs_ui_test
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/license b/bt5/erp5_crm_renderjs_ui_test/bt/license
new file mode 100644
index 0000000000000000000000000000000000000000..3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/license
@@ -0,0 +1 @@
+GPL
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/template_format_version b/bt5/erp5_crm_renderjs_ui_test/bt/template_format_version
new file mode 100644
index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/template_format_version
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/template_path_list b/bt5/erp5_crm_renderjs_ui_test/bt/template_path_list
new file mode 100644
index 0000000000000000000000000000000000000000..c19b3c8de968631bd6c3e4b59f4bbd24fc5d99c0
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/template_path_list
@@ -0,0 +1,2 @@
+portal_tests/renderjs_ui_crm_action_zuite
+portal_tests/renderjs_ui_crm_action_zuite/**
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/template_skin_id_list b/bt5/erp5_crm_renderjs_ui_test/bt/template_skin_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..df5f8f58be8d9a3461154f590ee03ed577e89ff2
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/template_skin_id_list
@@ -0,0 +1 @@
+erp5_crm_renderjs_ui_test
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/template_test_id_list b/bt5/erp5_crm_renderjs_ui_test/bt/template_test_id_list
new file mode 100644
index 0000000000000000000000000000000000000000..850547a0aea94370b1a017fe9fd6d1714defd8a5
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/template_test_id_list
@@ -0,0 +1 @@
+test.erp5.testFunctionalRJSCRMAction
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/test_dependency_list b/bt5/erp5_crm_renderjs_ui_test/bt/test_dependency_list
new file mode 100644
index 0000000000000000000000000000000000000000..bff77e32d84989312efdf3b2caed2e39f9a513ed
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/test_dependency_list
@@ -0,0 +1 @@
+erp5_full_text_mroonga_catalog
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/title b/bt5/erp5_crm_renderjs_ui_test/bt/title
new file mode 100644
index 0000000000000000000000000000000000000000..df5f8f58be8d9a3461154f590ee03ed577e89ff2
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/title
@@ -0,0 +1 @@
+erp5_crm_renderjs_ui_test
\ No newline at end of file
diff --git a/bt5/erp5_crm_renderjs_ui_test/bt/version b/bt5/erp5_crm_renderjs_ui_test/bt/version
new file mode 100644
index 0000000000000000000000000000000000000000..ceab6e11ece0bcec917c12e11d350946f085d549
--- /dev/null
+++ b/bt5/erp5_crm_renderjs_ui_test/bt/version
@@ -0,0 +1 @@
+0.1
\ No newline at end of file
diff --git a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.py b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.py
new file mode 100644
index 0000000000000000000000000000000000000000..5093a1ab9a89e2a31b61448513230646902165f0
--- /dev/null
+++ b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.py
@@ -0,0 +1,3 @@
+# request.RESPONSE.setStatus(200)
+form = getattr(context, form_id)
+return context.ERP5Document_getHateoas(form=form, mode='form')
diff --git a/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.xml b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e1e14e9bd773c3bb32819968f3519efd1e8a1135
--- /dev/null
+++ b/bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/Base_renderForm.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>form_id</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_renderForm</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Zuite_CommonTemplateForRenderjsUi.zpt b/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Zuite_CommonTemplateForRenderjsUi.zpt
index ca8bb820e419ba8252614d2bfbe29a14cedeecd4..a3614f9b934927086dfa960021653dadf500b347 100644
--- a/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Zuite_CommonTemplateForRenderjsUi.zpt
+++ b/bt5/erp5_web_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui_test/Zuite_CommonTemplateForRenderjsUi.zpt
@@ -153,6 +153,30 @@
     </tr>
   </tal:block>
 
+  <tal:block metal:define-macro="update_dialog">
+    <tr>
+      <td colspan="3"><b>Update the dialog</b></td>
+    </tr>
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_dialog.html')]</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>waitForElementPresent</td>
+      <td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_dialog.html')]//button[@name='action_update' and @type='submit']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>click</td>
+      <td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_dialog.html')]//button[@name='action_update' and @type='submit']</td>
+      <td></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
   <tal:block metal:define-macro="search_in_form_list">
     <tr>
       <td colspan="3"><b tal:content="python: 'Submit a form list search: %s' % search_query"></b></td>
@@ -842,4 +866,23 @@
     </tr>
   </tal:block>
 
+  <tal:block metal:define-macro="wait_for_notification">
+    <tr>
+      <td colspan="3"><b>Wait for the notification message</b></td>
+    </tr>
+    <tr>
+      <td>waitForElementPresent</td>
+      <td tal:content="python: '//div[@data-gadget-scope=\'notification\']//button[@class=\'%(class)s\' and text()=\'%(text)s\']' % notification_configuration"></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td>assertElementPresent</td>
+      <td tal:content="python: '//div[@data-gadget-scope=\'notification\']//button[@class=\'%(class)s\' and text()=\'%(text)s\']' % notification_configuration"></td>
+      <td></td>
+    </tr>
+    <tr>
+      <td colspan="3"><p></p></td>
+    </tr>
+  </tal:block>
+
 </tal:block>
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.py b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c2a28ee71c244e1429d82149e4a71e43a7725cd
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.py
@@ -0,0 +1 @@
+return getattr(context, form_id)()
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e1e14e9bd773c3bb32819968f3519efd1e8a1135
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_renderForm.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>form_id</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_renderForm</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>