diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_doDialog.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_doDialog.xml
index e7fa4a12633923df6f5be6497997e350f293e7a1..f66051948848207c615ce0c3f42ae8614c2fa656 100644
--- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_doDialog.xml
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Base_doDialog.xml
@@ -68,7 +68,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>return context.ERP5XhtmlStyle_redirect(select_dialog.split()[0], **kw)\n
+            <value> <string>return context.ERP5XhtmlStyle_redirect(select_dialog.split()[0], keep_items={\'dialog_category\': dialog_category}, **kw)\n
 </string> </value>
         </item>
         <item>
@@ -91,7 +91,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>select_dialog, **kw</string> </value>
+            <value> <string>select_dialog, dialog_category, **kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -111,13 +111,14 @@
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>1</int> </value>
+                        <value> <int>2</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
                             <string>select_dialog</string>
+                            <string>dialog_category</string>
                             <string>kw</string>
                             <string>_apply_</string>
                             <string>_getattr_</string>
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5XhtmlStyle_filterParameterList.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5XhtmlStyle_filterParameterList.xml
index 90dd5133d11123d8cbfd4a75d757c182f81664e1..70aba0d1927b2ae3b6045253535fb2e056216012 100644
--- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5XhtmlStyle_filterParameterList.xml
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5XhtmlStyle_filterParameterList.xml
@@ -68,50 +68,30 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string># XXX: This file contains many duplicated loops when filtering, this is done on purpose :\n
-# Each loop contains variable names which concern a certain hidden field generator (listbox, xhtml style,...).\n
-# Above each loop is said wether it is normal or shoul dbe fixed.\n
+            <value> <string>kept_names = (\'editable_mode\', \'ignore_layout\',            # erp5_web\n
+              \'selection_name\', \'selection_index\',         # list mode\n
+              \'form_id\',                                   # list mode and view mode\n
+              \'object_uid\', \'object_path\',                 # view mode\n
+              \'field_id\', \'form_pickle\', \'form_signature\', # related string field\n
+              \'bt_list\',                                   # business template installation system\n
+              \'cancel_url\',\n
+             )\n
+# Dialog mode is absent from the kept_name list on purpose :\n
+# none of its variable should ever get transmited because\n
+# it\'s the deepest level of navigation.\n
+# Cancel url is always overwritten, except when rendering\n
+# a dialog. So this is safe to propagate it.\n
+\n
+kept_names = dict([(key, None) for key in kept_names])\n
 \n
 def isValid(value_name):\n
   """\n
     Return true when the given field name can be propagated, false otherwise.\n
-\n
-    FIXME: _select should be a prefix, not a sufix, to avoid potential collisions with property names.\n
   """\n
-  prefix = value_name.split(\'_\')[0]\n
-  if value_name == \'field_id\' \\\n
-     or prefix not in (\'field\', \'subfield\', \'default\', \'select\', \'search\'):\n
+  if kept_names.has_key(value_name):\n
     return True\n
   return False\n
 \n
-# Remove a strange value. No idea on its meaning nor what it does here.\n
-if parameter_list.has_key(\'-C\'):\n
-  del parameter_list[\'-C\']\n
-\n
-# erp5_xhtml_style special fields.\n
-# This is normal.\n
-for k in (\'came_from\', \'SearchableText\', \'workflow_action\', \'portal_status_message\', \'reset\', \'dialog_id\', \'update_method\', \'dialog_method\', \'cancel_method\'):\n
-  if parameter_list.has_key(k):\n
-    del parameter_list[k]\n
-\n
-# Listbox search fields special values\n
-# XXX: This should not be needed.\n
-# for k in (\'id\', \'title\', \'description\', \'reporter\'):\n
-#   if parameter_list.has_key(k):\n
-#     del parameter_list[k]\n
-\n
-# Listbox special fields.\n
-# XXX: This should not be needed.\n
-for k in (\'listbox\', \'list_start\', \'uids\', \'listbox_uid\', \'list_selection_name\', \'md5_object_uid_list\'):\n
-  if parameter_list.has_key(k):\n
-    del parameter_list[k]\n
-\n
-# Subversion special fields\n
-# XXX: This should not be needed.\n
-for k in (\'changelog\', \'added\', \'removed\', \'modified\'):\n
-  if parameter_list.has_key(k):\n
-    del parameter_list[k]\n
-\n
 for k in parameter_list.keys():\n
   if not isValid(k):\n
     del parameter_list[k]\n
@@ -160,11 +140,17 @@ return parameter_list\n
                         <value>
                           <tuple>
                             <string>parameter_list</string>
+                            <string>kept_names</string>
+                            <string>dict</string>
+                            <string>append</string>
+                            <string>$append0</string>
+                            <string>_getiter_</string>
+                            <string>key</string>
+                            <string>None</string>
                             <string>isValid</string>
                             <string>_getattr_</string>
-                            <string>_write_</string>
-                            <string>_getiter_</string>
                             <string>k</string>
+                            <string>_write_</string>
                           </tuple>
                         </value>
                     </item>
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/TemplateTool_callViewInstallRepositoryBusinessTemplateListDialog.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/TemplateTool_callViewInstallRepositoryBusinessTemplateListDialog.xml
index d7099876713169aec05d6fd09b1cf260e3b3ce1c..3a462af1a22d8bdf9518c36289a936c00795e7d8 100644
--- a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/TemplateTool_callViewInstallRepositoryBusinessTemplateListDialog.xml
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/TemplateTool_callViewInstallRepositoryBusinessTemplateListDialog.xml
@@ -68,10 +68,11 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string># Clear selection\n
+            <value> <string>kw.update(context.REQUEST.form)\n
+# Clear selection\n
 context.portal_selections.setSelectionCheckedUidsFor(\'template_tool_install_selection\', [])\n
 # Then call the listbox\n
-return context.ERP5XhtmlStyle_redirect("%s/%s" % (context.absolute_url(), \'TemplateTool_viewInstallRepositoryBusinessTemplateListDialog\'))\n
+return context.ERP5XhtmlStyle_redirect("%s/%s" % (context.absolute_url(), \'TemplateTool_viewInstallRepositoryBusinessTemplateListDialog\'), keep_items={\'dialog_category\': dialog_category}, **kw)\n
 </string> </value>
         </item>
         <item>
@@ -94,7 +95,7 @@ return context.ERP5XhtmlStyle_redirect("%s/%s" % (context.absolute_url(), \'Temp
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>**kw</string> </value>
+            <value> <string>dialog_category=None, **kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -114,15 +115,17 @@ return context.ERP5XhtmlStyle_redirect("%s/%s" % (context.absolute_url(), \'Temp
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>0</int> </value>
+                        <value> <int>1</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
+                            <string>dialog_category</string>
                             <string>kw</string>
                             <string>_getattr_</string>
                             <string>context</string>
+                            <string>_apply_</string>
                           </tuple>
                         </value>
                     </item>
@@ -134,7 +137,9 @@ return context.ERP5XhtmlStyle_redirect("%s/%s" % (context.absolute_url(), \'Temp
         <item>
             <key> <string>func_defaults</string> </key>
             <value>
-              <none/>
+              <tuple>
+                <none/>
+              </tuple>
             </value>
         </item>
         <item>
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
index 58e77f35150112bd116c971f0a16e4c29e23433e..6dd90d24d319b452859920bf74120405fcdaa017 100644
--- a/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
@@ -1 +1 @@
-215
\ No newline at end of file
+222
\ No newline at end of file