From 7567efe01c202a2df47e27a631673c8edd2711db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 5 Nov 2012 14:10:30 +0100
Subject: [PATCH] Update functional tests after new folder workflow action
 behaviour

---
 .../testFolderWorkflowAction.xml              |  31 +-
 ...olderWorkflowActionCheckedUidSelection.xml |  27 +-
 ... testFolderWorkflowActionCustomDialog.xml} |  80 ++---
 .../testFolderWorkflowActionDomainTree.xml    |  23 +-
 ...tFolderWorkflowActionFilteredSelection.xml |  28 +-
 ...olderWorkflowActionInvertModeSelection.xml |  27 +-
 ...stFolderWorkflowActionNothingSelected.xml} | 168 +++-------
 .../testFolderWorkflowActionPagination.xml    |  49 +--
 .../Foo_viewCustomWorkflowActionDialog.xml    | 112 +++++++
 .../your_comment.xml                          | 310 ++++++++++++++++++
 .../your_custom_workflow_variable.xml         | 260 +++++++++++++++
 .../your_workflow_action.xml                  | 281 ++++++++++++++++
 ...ctionCheckCustomDialogWorkflowHistory.xml} |  22 +-
 .../foo_workflow/states/draft.xml             |   1 +
 .../transitions/custom_dialog_action.xml      | 103 ++++++
 .../variables/custom_workflow_variable.xml    |  48 +++
 bt5/erp5_ui_test/bt/revision                  |   2 +-
 17 files changed, 1303 insertions(+), 269 deletions(-)
 rename bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/{testFolderWorkflowActionMultipleActions.xml => testFolderWorkflowActionCustomDialog.xml} (74%)
 rename bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/{testFolderWorkflowActionInvertModeMultipleActions.xml => testFolderWorkflowActionNothingSelected.xml} (53%)
 create mode 100644 bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog.xml
 create mode 100644 bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_comment.xml
 create mode 100644 bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_custom_workflow_variable.xml
 create mode 100644 bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_workflow_action.xml
 rename bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/{Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory.xml => Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory.xml} (88%)
 create mode 100644 bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/transitions/custom_dialog_action.xml
 create mode 100644 bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/variables/custom_workflow_variable.xml

diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowAction.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowAction.xml
index bb5e28f1ed..8138ff55c5 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowAction.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowAction.xml
@@ -93,60 +93,60 @@
 Validated Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>2 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>2</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
 \n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[3]/a</td>\n
   <td>Validated</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 \n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
 \n
 <tr>\n
@@ -192,7 +192,7 @@ and the same columns. -->\n
 </tr>\n
 \n
 <tr>\n
-  <td>assertValue</td>\n
+  <td>type</td>\n
   <td>field_your_comment</td>\n
   <td>Comment !</td>\n
 </tr>\n
@@ -232,8 +232,7 @@ script. -->\n
 \n
 \n
 </body>\n
-</html>\n
-
+</html>
 
 ]]></unicode> </value>
         </item>
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCheckedUidSelection.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCheckedUidSelection.xml
index 7bf437e914..26b0844aa2 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCheckedUidSelection.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCheckedUidSelection.xml
@@ -98,47 +98,51 @@
 <!-- we have a listbox with 1 line, for 1 Draft Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>1 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
 \n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
-\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
   <td></td>\n
 </tr>\n
 \n
+<tr>\n
+  <td>type</td>\n
+  <td>field_your_comment</td>\n
+  <td>Comment !</td>\n
+</tr>\n
 <tr>\n
   <td>assertText</td>\n
   <td>//span[@class="listbox-current-page-total-number"]</td>\n
@@ -184,8 +188,7 @@ This is the same script as Filtered Selection\n
 \n
 \n
 </body>\n
-</html>\n
-
+</html>
 
 ]]></unicode> </value>
         </item>
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionMultipleActions.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCustomDialog.xml
similarity index 74%
rename from bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionMultipleActions.xml
rename to bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCustomDialog.xml
index 0d5940a88a..bd8701cda8 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionMultipleActions.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionCustomDialog.xml
@@ -40,12 +40,12 @@
       xmlns:metal="http://xml.zope.org/namespaces/metal">\n
 <head>\n
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
-<title>Test Folder Workflow Action, multiple actions</title>\n
+<title>Test Folder Workflow Action With a Custom Workflow Dialog</title>\n
 </head>\n
 <body>\n
 <table cellpadding="1" cellspacing="1" border="1">\n
 <thead>\n
-<tr><td rowspan="1" colspan="3">Test Folder Workflow Action, multiple actions</td></tr>\n
+<tr><td rowspan="1" colspan="3">Test Folder Workflow Action With a Custom Workflow Dialog</td></tr>\n
 </thead><tbody>\n
 <tal:block metal:use-macro="here/PTZuite_CommonTemplate/macros/init" />\n
 <tr>\n
@@ -93,65 +93,60 @@
 Validated Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>2 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>2</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
-  <td>label=Validate Action</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>label=Custom Dialog Action</td>\n
 </tr>\n
 \n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[3]/a</td>\n
   <td>Validated</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
-<tr>\n
-  <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[5]/select</td>\n
-  <td>label=Invalidate Action</td>\n
-</tr>\n
 \n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
 \n
 <tr>\n
@@ -160,16 +155,14 @@ Validated Foo -->\n
   <td></td>\n
 </tr>\n
 \n
-<!-- Now we are on a listbox showing *all* documents we are about to process.\n
-Note that if a document cannot be processed, it\'s not shown in this list\n
+<!-- Now we have the custom dialog, plus a listbox with the documents we are\n
+     modifying.\n
 -->\n
 <tr>\n
   <td>assertText</td>\n
   <td>//span[@class="listbox-current-page-total-number"]</td>\n
-  <td>3 records</td>\n
+  <td>2 records</td>\n
 </tr>\n
-<!-- This listbox is a proxy to the module listbox, so it has the same title\n
-and the same columns. -->\n
 <tr>\n
   <td>assertText</td>\n
   <td>//a[@class="listbox_title"]</td>\n
@@ -178,39 +171,37 @@ and the same columns. -->\n
 <tr>\n
   <td>assertText</td>\n
   <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]</td>\n
-  <td>Title 1</td>\n
+  <td>Title 2</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
   <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]</td>\n
-  <td>Invalidate Action</td>\n
+  <td>Custom Dialog Action</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
   <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[2]</td>\n
-  <td>Title 2</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]</td>\n
-  <td>Validate Action</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-2 DataA\']/td[2]</td>\n
   <td>Title 3</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-2 DataA\']/td[4]</td>\n
-  <td>Validate Action</td>\n
+  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]</td>\n
+  <td>Custom Dialog Action</td>\n
 </tr>\n
 \n
 <tr>\n
-  <td>assertValue</td>\n
+  <td>type</td>\n
   <td>field_your_comment</td>\n
   <td>Comment !</td>\n
 </tr>\n
+\n
+<!-- this field only exist in our custom dialog for this workflow action. -->\n
+<tr>\n
+  <td>type</td>\n
+  <td>field_your_custom_workflow_variable</td>\n
+  <td>Custom Workflow Variable</td>\n
+</tr>\n
+\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
@@ -236,7 +227,7 @@ and the same columns. -->\n
 script. -->\n
 <tr>\n
   <td>open</td>\n
-  <td>${base_url}/foo_module/Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory</td>\n
+  <td>${base_url}/foo_module/Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory</td>\n
   <td></td>\n
 </tr>\n
 <tr>\n
@@ -247,8 +238,7 @@ script. -->\n
 \n
 \n
 </body>\n
-</html>\n
-
+</html>
 
 ]]></unicode> </value>
         </item>
@@ -262,7 +252,7 @@ script. -->\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>testFolderWorkflowActionMultipleActions</string> </value>
+            <value> <string>testFolderWorkflowActionCustomDialog</string> </value>
         </item>
         <item>
             <key> <string>output_encoding</string> </key>
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionDomainTree.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionDomainTree.xml
index 2b3726166b..8912cba933 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionDomainTree.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionDomainTree.xml
@@ -133,7 +133,7 @@
   <td>2 records</td>\n
 </tr>\n
 \n
-<!-- Change Stat of this element list -->\n
+<!-- Change State of this element list -->\n
 <tr>\n
   <td>selectAndWait</td>\n
   <td>select_action</td>\n
@@ -143,40 +143,39 @@
 <!-- we have a listbox with 1 line for 2 Draft Foos -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>1 records</td>\n
 </tr>\n
 <!-- It\'s the number of element which will be validate -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>2</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
-\n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
 \n
 <tr>\n
@@ -222,7 +221,7 @@ and the same columns. -->\n
   <td>Validate Action</td>\n
 </tr>\n
 <tr>\n
-  <td>assertValue</td>\n
+  <td>type</td>\n
   <td>field_your_comment</td>\n
   <td>Comment !</td>\n
 </tr>\n
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionFilteredSelection.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionFilteredSelection.xml
index e14982c23d..87a2393528 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionFilteredSelection.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionFilteredSelection.xml
@@ -103,41 +103,35 @@
 <!-- we have a listbox with 1 line, for 1 Draft Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>1 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
 \n
-<tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
-</tr>\n
-\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
@@ -145,9 +139,15 @@
 </tr>\n
 \n
 <tr>\n
-  <td>assertText</td>\n
+  <td>type</td>\n
+  <td>field_your_comment</td>\n
+  <td>Comment !</td>\n
+</tr>\n
+\n
+<tr>\n
+  <td>assertElementNotPresent</td>\n
   <td>//span[@class="listbox-current-page-total-number"]</td>\n
-  <td>1 records</td>\n
+  <td>We did not check the "display detailed list" checkbox, so we don\'t have a listbox here</td>\n
 </tr>\n
 \n
 <tr>\n
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeSelection.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeSelection.xml
index 8a0ed92e6d..5bde62d9f6 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeSelection.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeSelection.xml
@@ -105,39 +105,39 @@
 <!-- we have a listbox with 1 line, for 1 Draft Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>1 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
 \n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
 \n
 <tr>\n
@@ -152,6 +152,12 @@
   <td>1 records</td>\n
 </tr>\n
 \n
+<tr>\n
+  <td>type</td>\n
+  <td>field_your_comment</td>\n
+  <td>Comment !</td>\n
+</tr>\n
+\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
@@ -191,8 +197,7 @@ This is the same script as Filtered Selection\n
 \n
 \n
 </body>\n
-</html>\n
-
+</html>
 
 ]]></unicode> </value>
         </item>
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeMultipleActions.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionNothingSelected.xml
similarity index 53%
rename from bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeMultipleActions.xml
rename to bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionNothingSelected.xml
index 34852e37d1..f9fcceb61c 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionInvertModeMultipleActions.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionNothingSelected.xml
@@ -40,12 +40,12 @@
       xmlns:metal="http://xml.zope.org/namespaces/metal">\n
 <head>\n
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
-<title>Test Folder Workflow Action, multiple actions in invert mode</title>\n
+<title>Test Folder Workflow Action With Nothing Selected</title>\n
 </head>\n
 <body>\n
 <table cellpadding="1" cellspacing="1" border="1">\n
 <thead>\n
-<tr><td rowspan="1" colspan="3">Test Folder Workflow Action, multiple actions in invert mode</td></tr>\n
+<tr><td rowspan="1" colspan="3">Test Folder Workflow Action With Nothing Selected</td></tr>\n
 </thead><tbody>\n
 <tal:block metal:use-macro="here/PTZuite_CommonTemplate/macros/init" />\n
 <tr>\n
@@ -84,158 +84,87 @@
   <td></td>\n
 </tr>\n
 \n
-<!--select everything, and then this test is the same that\n
-testFolderWorkflowActionInvertModeMultipleActions -->\n
-\n
+<!-- first case, the user select nothing -->\n
 <tr>\n
-  <td>click</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/input</td>\n
-  <td></td>\n
+  <td>selectAndWait</td>\n
+  <td>select_action</td>\n
+  <td>Change State</td>\n
 </tr>\n
 <tr>\n
-  <td>click</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[1]/input</td>\n
+  <td>clickAndWait</td>\n
+  <td>Base_callDialogMethod:method</td>\n
   <td></td>\n
 </tr>\n
 <tr>\n
-  <td>click</td>\n
-  <td>//tr[@class=\'listbox-data-line-2 DataA\']/td[1]/input</td>\n
+  <td>assertPortalStatusMessage</td>\n
+  <td>You must select one action.</td>\n
   <td></td>\n
 </tr>\n
+\n
+<!-- second case, the user select two actions, this is not possible -->\n
 <tr>\n
-  <td>clickAndWait</td>\n
-  <td>Folder_filter:method</td>\n
+  <td>open</td>\n
+  <td tal:content="string: ${here/portal_url}/foo_module/view">/erp5/foo_module/view</td>\n
   <td></td>\n
 </tr>\n
-\n
 <tr>\n
   <td>selectAndWait</td>\n
   <td>select_action</td>\n
   <td>Change State</td>\n
 </tr>\n
 \n
-<!-- we have a listbox with 2 lines, one for 2 Draft Foos, the other for 1\n
-Validated Foo -->\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
-  <td>2 records</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
-  <td>2</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
-  <td>Foo</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
-  <td>Draft</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
-  <td>Foo Workflow</td>\n
-</tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
-\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[1]/a</td>\n
-  <td>1</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[2]/a</td>\n
-  <td>Foo</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[3]/a</td>\n
-  <td>Validated</td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]/a</td>\n
-  <td>Foo Workflow</td>\n
-</tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-1 DataB\']/td[5]/select</td>\n
   <td>label=Invalidate Action</td>\n
 </tr>\n
 \n
-<tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
-</tr>\n
-\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
   <td></td>\n
 </tr>\n
-\n
-<!-- Now we are on a listbox showing *all* documents we are about to process.\n
-Note that if a document cannot be processed, it\'s not shown in this list\n
--->\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
-  <td>3 records</td>\n
-</tr>\n
-<!-- This listbox is a proxy to the module listbox, so it has the same title\n
-and the same columns. -->\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>//a[@class="listbox_title"]</td>\n
-  <td>exact:Foos</td>\n
-</tr>\n
 <tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]</td>\n
-  <td>Title 2</td>\n
+  <td>assertPortalStatusMessage</td>\n
+  <td>You must select one action.</td>\n
+  <td></td>\n
 </tr>\n
+\n
+<!-- third case, no document in selection -->\n
 <tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]</td>\n
-  <td>Validate Action</td>\n
+  <td>open</td>\n
+  <td tal:content="string: ${here/portal_url}/foo_module/view">/erp5/foo_module/view</td>\n
+  <td></td>\n
 </tr>\n
 <tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[2]</td>\n
-  <td>Title 3</td>\n
+  <td>type</td>\n
+  <td>listbox_title</td>\n
+  <td>THIS_TITLE_DOES_NOT_EXIST</td>\n
 </tr>\n
 <tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-1 DataB\']/td[4]</td>\n
-  <td>Validate Action</td>\n
+  <td>clickAndWait</td>\n
+  <td>Base_doSelect:method</td>\n
+  <td></td>\n
 </tr>\n
+\n
 <tr>\n
-  <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-2 DataA\']/td[2]</td>\n
-  <td>Title 1</td>\n
+  <td>selectAndWait</td>\n
+  <td>select_action</td>\n
+  <td>Change State</td>\n
 </tr>\n
+\n
+<!-- we have a listbox with 0 lines -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-2 DataA\']/td[4]</td>\n
-  <td>Invalidate Action</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
+  <td>0 records</td>\n
 </tr>\n
 \n
-<tr>\n
-  <td>assertValue</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
-</tr>\n
 <tr>\n
   <td>clickAndWait</td>\n
   <td>Base_callDialogMethod:method</td>\n
@@ -244,9 +173,10 @@ and the same columns. -->\n
 \n
 <tr>\n
   <td>assertPortalStatusMessage</td>\n
-  <td>Workflow modification in progress.</td>\n
+  <td>You must select one action.</td>\n
   <td></td>\n
 </tr>\n
+\n
 <tr>\n
   <td>open</td>\n
   <td>${base_url}/foo_module/Zuite_waitForActivities</td>\n
@@ -257,23 +187,9 @@ and the same columns. -->\n
   <td>Done.</td>\n
   <td></td>\n
 </tr>\n
-<!-- We\'ll check everything else (workflow history, comments, etc) in a python\n
-script. -->\n
-<tr>\n
-  <td>open</td>\n
-  <td>${base_url}/foo_module/Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory</td>\n
-  <td></td>\n
-</tr>\n
-<tr>\n
-  <td>assertText</td>\n
-  <td>result</td>\n
-  <td>OK</td>\n
-</tr>\n
-\n
 \n
 </body>\n
-</html>\n
-
+</html>
 
 ]]></unicode> </value>
         </item>
@@ -287,7 +203,7 @@ script. -->\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>testFolderWorkflowActionInvertModeMultipleActions</string> </value>
+            <value> <string>testFolderWorkflowActionNothingSelected</string> </value>
         </item>
         <item>
             <key> <string>output_encoding</string> </key>
diff --git a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionPagination.xml b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionPagination.xml
index 2b33e3632d..0aa6bbca64 100644
--- a/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionPagination.xml
+++ b/bt5/erp5_ui_test/PathTemplateItem/portal_tests/page_templates_zuite/testFolderWorkflowActionPagination.xml
@@ -45,7 +45,13 @@
 <body>\n
 <table cellpadding="1" cellspacing="1" border="1">\n
 <thead>\n
-<tr><td rowspan="1" colspan="3">Test Folder Workflow Action with pages (expected failure)</td></tr>\n
+<tr><td rowspan="1" colspan="3">Test Folder Workflow Action with pages (expected failure)\n
+\n
+This test check that in a listbox with multiple pages, one can set some values\n
+in listbox editable field on the first page, go to another page, and the values\n
+entered in the first page are not lost.\n
+This is currently an expected failure.\n
+</td></tr>\n
 </thead><tbody>\n
 <tal:block metal:use-macro="here/PTZuite_CommonTemplate/macros/init" />\n
 <tr>\n
@@ -100,81 +106,81 @@
 </tr>\n
 <tr>\n
   <td>type</td>\n
-  <td>//input[@class="listbox_set_page"]</td>\n
+  <td>//input[@class="listbox_set_page workflow_action_listbox_set_page"]</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>keyPressAndWait</td>\n
-  <td>//input[@class="listbox_set_page"]</td>\n
+  <td>//input[@class="listbox_set_page workflow_action_listbox_set_page"]</td>\n
   <td>\\13</td>\n
 </tr>\n
 <!-- we have a listbox with 2 lines, one for 2 Draft Foos, the other for 1\n
 Validated Foo -->\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//span[@class="listbox-current-page-total-number"]</td>\n
+  <td>//span[@class="listbox-current-page-total-number workflow_action_listbox-current-page-total-number"]</td>\n
   <td>2 records</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>2</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Draft</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 <tr>\n
   <td>select</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[5]/select</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[5]/select</td>\n
   <td>label=Validate Action</td>\n
 </tr>\n
 <tr>\n
   <td>type</td>\n
-  <td>//input[@class="listbox_set_page"]</td>\n
+  <td>//input[@class="listbox_set_page workflow_action_listbox_set_page"]</td>\n
   <td>2</td>\n
 </tr>\n
 <tr>\n
   <td>keyPressAndWait</td>\n
-  <td>//input[@class="listbox_set_page"]</td>\n
+  <td>//input[@class="listbox_set_page workflow_action_listbox_set_page"]</td>\n
   <td>\\13</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[1]/a</td>\n
   <td>1</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[2]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[2]/a</td>\n
   <td>Foo</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[3]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[3]/a</td>\n
   <td>Validated</td>\n
 </tr>\n
 <tr>\n
   <td>assertText</td>\n
-  <td>//tr[@class=\'listbox-data-line-0 DataA\']/td[4]/a</td>\n
+  <td>//tr[@class=\'workflow_action_listbox-data-line-0 DataA\']/td[4]/a</td>\n
   <td>Foo Workflow</td>\n
 </tr>\n
 \n
 <tr>\n
-  <td>type</td>\n
-  <td>field_your_comment</td>\n
-  <td>Comment !</td>\n
+  <td>click</td>\n
+  <td>field_your_enable_detail_list</td>\n
+  <td></td>\n
 </tr>\n
 \n
 <tr>\n
@@ -183,8 +189,13 @@ Validated Foo -->\n
   <td></td>\n
 </tr>\n
 \n
+<tr>\n
+  <td>type</td>\n
+  <td>field_your_comment</td>\n
+  <td>Comment !</td>\n
+</tr>\n
+\n
 <!-- Now we are on a listbox showing *all* documents we are about to process.\n
-Note that if a document cannot be processed, it\'s not shown in this list\n
 -->\n
 <tr>\n
   <td>assertText</td>\n
diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog.xml
new file mode 100644
index 0000000000..8b99e92c43
--- /dev/null
+++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ERP5Form" module="Products.ERP5Form.Form"/>
+    </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/>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>action</string> </key>
+            <value> <string>Workflow_statusModify</string> </value>
+        </item>
+        <item>
+            <key> <string>encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>enctype</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <list>
+                <string>left</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>groups</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>left</string> </key>
+                    <value>
+                      <list>
+                        <string>your_comment</string>
+                        <string>your_workflow_action</string>
+                        <string>your_custom_workflow_variable</string>
+                      </list>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Foo_viewCustomWorkflowActionDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>method</string> </key>
+            <value> <string>POST</string> </value>
+        </item>
+        <item>
+            <key> <string>name</string> </key>
+            <value> <string>Base_viewWorkflowActionDialog</string> </value>
+        </item>
+        <item>
+            <key> <string>pt</string> </key>
+            <value> <string>form_dialog</string> </value>
+        </item>
+        <item>
+            <key> <string>row_length</string> </key>
+            <value> <int>4</int> </value>
+        </item>
+        <item>
+            <key> <string>stored_encoding</string> </key>
+            <value> <string>UTF-8</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Validate Workflow Action</string> </value>
+        </item>
+        <item>
+            <key> <string>unicode_mode</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>update_action</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_comment.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_comment.xml
new file mode 100644
index 0000000000..361f05d8b7
--- /dev/null
+++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_comment.xml
@@ -0,0 +1,310 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="TextAreaField" module="Products.Formulator.StandardFields"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_comment</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>line_too_long</string> </key>
+                    <value> <string>A line was too long.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>You entered too many characters.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_many_lines</string> </key>
+                    <value> <string>You entered too many lines.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string>Comments will be stored in the workflow history of this document.</string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <int>10</int> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Comments</string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <int>80</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: \'\'</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>python: request.get(\'workflow_action\', request.get(\'field_your_workflow_action\')) in (\'cancel_action\', \'cancel_accounting_action\')</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_custom_workflow_variable.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_custom_workflow_variable.xml
new file mode 100644
index 0000000000..d13debcd80
--- /dev/null
+++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_custom_workflow_variable.xml
@@ -0,0 +1,260 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="StringField" module="Products.Formulator.StandardFields"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_custom_workflow_variable</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>Too much input was given.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Custom Workflow Variable</string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_workflow_action.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_workflow_action.xml
new file mode 100644
index 0000000000..32d041d52b
--- /dev/null
+++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Foo_viewCustomWorkflowActionDialog/your_workflow_action.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="StringField" module="Products.Formulator.StandardFields"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_workflow_action</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>Too much input was given.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_maxwidth</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>display_width</string> </key>
+                    <value> <int>20</int> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>truncate</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Products.Formulator.TALESField</string>
+          <string>TALESMethod</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>request/workflow_action | request/field_my_workflow_action | nothing</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory.xml b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory.xml
similarity index 88%
rename from bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory.xml
rename to bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory.xml
index 8604f3d131..56788dfa0e 100644
--- a/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory.xml
+++ b/bt5/erp5_ui_test/SkinTemplateItem/portal_skins/erp5_ui_test/Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory.xml
@@ -53,9 +53,8 @@
             <value> <string encoding="cdata"><![CDATA[
 
 """\n
-Check the workflow history for many foo objects\n
+Check the workflow history of several foo objects\n
 """\n
-\n
 from Products.CMFCore.utils import getToolByName\n
 \n
 foo_module = context.getPortalObject().foo_module\n
@@ -71,16 +70,6 @@ def assertEquals(a, b, msg=\'\'):\n
     else:\n
       error_list.append(\'%r != %r\' % (a, b))\n
 \n
-\n
-foo_1 = foo_module[\'1\']\n
-assertEquals(foo_1.getSimulationState(), \'invalidated\', \n
-             \'Foo 1 state is %s\' % foo_1.getSimulationState())\n
-if not error_list:\n
-  assertEquals(\n
-   wtool.getInfoFor(foo_1, \'history\', wf_id=\'foo_workflow\')[-2][\'comment\'],\n
-   \'Comment !\')\n
-\n
-\n
 foo_2 = foo_module[\'2\']\n
 assertEquals(foo_2.getSimulationState(), \'validated\', \n
              \'Foo 2 state is %s\' % foo_2.getSimulationState())\n
@@ -88,6 +77,10 @@ if not error_list:\n
   assertEquals(\n
    wtool.getInfoFor(foo_2, \'history\', wf_id=\'foo_workflow\')[-2][\'comment\'],\n
    \'Comment !\')\n
+  assertEquals(\n
+   wtool.getInfoFor(foo_2, \'history\', wf_id=\'foo_workflow\')[-2][\'custom_workflow_variable\'],\n
+   \'Custom Workflow Variable\')\n
+\n
 \n
 foo_3 = foo_module[\'3\']\n
 assertEquals(foo_3.getSimulationState(), \'validated\', \n
@@ -96,6 +89,9 @@ if not error_list:\n
   assertEquals(\n
    wtool.getInfoFor(foo_3, \'history\', wf_id=\'foo_workflow\')[-2][\'comment\'],\n
   \'Comment !\')\n
+  assertEquals(\n
+   wtool.getInfoFor(foo_2, \'history\', wf_id=\'foo_workflow\')[-2][\'custom_workflow_variable\'],\n
+   \'Custom Workflow Variable\')\n
 \n
 if error_list:\n
   result = \'\'.join(error_list)\n
@@ -111,7 +107,7 @@ return \'<html><body><span id="result">%s</span></body></html>\' % result\n
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>Zuite_testFolderWorkflowActionMultipleActionsCheckWorkflowHistory</string> </value>
+            <value> <string>Zuite_testFolderWorkflowActionCheckCustomDialogWorkflowHistory</string> </value>
         </item>
       </dictionary>
     </pickle>
diff --git a/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/states/draft.xml b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/states/draft.xml
index 563ddfc3a8..d949966926 100644
--- a/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/states/draft.xml
+++ b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/states/draft.xml
@@ -28,6 +28,7 @@
             <key> <string>transitions</string> </key>
             <value>
               <tuple>
+                <string>custom_dialog_action</string>
                 <string>delete</string>
                 <string>delete_action</string>
                 <string>display_status</string>
diff --git a/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/transitions/custom_dialog_action.xml b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/transitions/custom_dialog_action.xml
new file mode 100644
index 0000000000..94bf914fb4
--- /dev/null
+++ b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/transitions/custom_dialog_action.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="TransitionDefinition" module="Products.DCWorkflow.Transitions"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>actbox_category</string> </key>
+            <value> <string>workflow</string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_name</string> </key>
+            <value> <string>Custom Dialog Action</string> </value>
+        </item>
+        <item>
+            <key> <string>actbox_url</string> </key>
+            <value> <string>%(content_url)s/Foo_viewCustomWorkflowActionDialog?workflow_action=custom_dialog_action</string> </value>
+        </item>
+        <item>
+            <key> <string>after_script_name</string> </key>
+            <value> <string>validate</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>A workflow action with a custom dialog.</string> </value>
+        </item>
+        <item>
+            <key> <string>guard</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>custom_dialog_action</string> </value>
+        </item>
+        <item>
+            <key> <string>new_state_id</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>script_name</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Custom Dialog Action</string> </value>
+        </item>
+        <item>
+            <key> <string>trigger_type</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>var_exprs</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>custom_workflow_variable</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>state_change/kwargs/custom_workflow_variable | nothing</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/variables/custom_workflow_variable.xml b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/variables/custom_workflow_variable.xml
new file mode 100644
index 0000000000..12c773d119
--- /dev/null
+++ b/bt5/erp5_ui_test/WorkflowTemplateItem/portal_workflow/foo_workflow/variables/custom_workflow_variable.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="VariableDefinition" module="Products.DCWorkflow.Variables"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>default_expr</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_value</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>for_catalog</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>for_status</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>custom_workflow_variable</string> </value>
+        </item>
+        <item>
+            <key> <string>info_guard</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>update_always</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_ui_test/bt/revision b/bt5/erp5_ui_test/bt/revision
index 9c3167f28e..8d75cc7df7 100644
--- a/bt5/erp5_ui_test/bt/revision
+++ b/bt5/erp5_ui_test/bt/revision
@@ -1 +1 @@
-704
\ No newline at end of file
+705
\ No newline at end of file
-- 
2.30.9