diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.xml
index 2f1d6691b1d8c5838935e631fc7331204d99b0a6..c878d60136bc9ae6c744f4c469d30bb37e576fb2 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.xml
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_callDialogMethod.xml
@@ -125,8 +125,7 @@ if dialog_method == \'Base_editRelation\':\n
                                    selection_index=kw[\'selection_index\'],\n
                                    uids=kw.get(\'uids\', ()),\n
                                    listbox_uid=kw.get(\'listbox_uid\', None),\n
-                                   form_pickle=kw[\'form_pickle\'],\n
-                                   form_signature=kw[\'form_signature\'])\n
+                                   saved_form_data=kw[\'saved_form_data\'])\n
 # Exception for create relation\n
 if dialog_method == \'Base_createRelation\':\n
   return context.Base_createRelation(form_id=kw[\'form_id\'],\n
@@ -146,16 +145,8 @@ if dialog_method == \'Folder_delete\':\n
                                uids=kw[\'listbox_uid\'],\n
                                md5_object_uid_list=kw[\'md5_object_uid_list\'])\n
 \n
-# If the request came with a pickled form, use it as context for form object search.\n
-if kw.has_key(\'pickle_string\'):\n
-  form_context = context.asContext(context=None,\n
-                                   portal_type=context.getPortalType(),\n
-                                   **(context.portal_selections.getObjectFromPickle(kw[\'pickle_string\']))\n
-                                  )\n
-else:\n
-  form_context = context\n
-form = getattr(form_context, dialog_id)\n
 \n
+form = getattr(context, dialog_id)\n
 # form can be a python script that returns the form\n
 if not hasattr(form, \'validate_all_to_request\'):\n
   form = form()\n
@@ -217,16 +208,6 @@ if len(listbox_id_list):\n
     listbox_line_list = tuple(listbox_line_list)\n
     kw[listbox_id] = request_form[listbox_id] = listbox_line_list\n
 \n
-if enable_pickle or (form.update_action != \'\'):\n
-  # Do not put listbox in pickle, because this pickle becomes too big\n
-  # wich is not compatible with the url limit size\n
-  pickle_kw = {}\n
-  excluded_key_list = listbox_id_list\n
-  excluded_key_list.extend(["%s_uid" % x for x in listbox_id_list])\n
-  for key in kw.keys():\n
-    if key not in excluded_key_list:\n
-      pickle_kw[key] = kw[key]\n
-  kw[\'pickle_string\'] = request_form[\'pickle_string\'] = context.portal_selections.getPickle(**pickle_kw)\n
 \n
 # Check if the selection changed\n
 if hasattr(kw, \'previous_md5_object_uid_list\'):\n
@@ -309,7 +290,7 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>dialog_method, dialog_id, dialog_category=\'\', enable_pickle=0, **kw</string> </value>
+            <value> <string>dialog_method, dialog_id, dialog_category=\'\', **kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -329,7 +310,7 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>4</int> </value>
+                        <value> <int>3</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
@@ -338,7 +319,6 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
                             <string>dialog_method</string>
                             <string>dialog_id</string>
                             <string>dialog_category</string>
-                            <string>enable_pickle</string>
                             <string>kw</string>
                             <string>isListBox</string>
                             <string>Products.Formulator.Errors</string>
@@ -352,8 +332,6 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
                             <string>_getitem_</string>
                             <string>value</string>
                             <string>None</string>
-                            <string>_apply_</string>
-                            <string>form_context</string>
                             <string>getattr</string>
                             <string>form</string>
                             <string>hasattr</string>
@@ -380,11 +358,6 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
                             <string>key</string>
                             <string>listbox_line</string>
                             <string>tuple</string>
-                            <string>pickle_kw</string>
-                            <string>excluded_key_list</string>
-                            <string>append</string>
-                            <string>$append0</string>
-                            <string>x</string>
                             <string>selection_list</string>
                             <string>map</string>
                             <string>object_uid_list</string>
@@ -396,6 +369,7 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
                             <string>clean_kw</string>
                             <string>url_params_string</string>
                             <string>dialog_form</string>
+                            <string>_apply_</string>
                             <string>redirect_url</string>
                           </tuple>
                         </value>
@@ -410,7 +384,6 @@ return context.REQUEST.RESPONSE.redirect(redirect_url)\n
             <value>
               <tuple>
                 <string></string>
-                <int>0</int>
               </tuple>
             </value>
         </item>
diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_editRelation.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_editRelation.xml
index 5be851418b0048c2f7183e7d497f41876ed82f67..a627ba35802ac58598c3ae6811b8955e8bd25a47 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_editRelation.xml
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_editRelation.xml
@@ -3,11 +3,8 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <tuple>
-          <string>Products.PythonScripts.PythonScript</string>
-          <string>PythonScript</string>
-        </tuple>
-        <none/>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
       </tuple>
     </pickle>
     <pickle>
@@ -70,18 +67,22 @@
             <key> <string>_body</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-# Updates attributes of an Zope document\n
-# which is in a class inheriting from ERP5 Base\n
+# Updates relation of an ERP5 document\n
 from Products.ERP5Type.Message import Message\n
 from Products.Formulator.Errors import ValidationError\n
 \n
 # XXX: Harcoded value, which must be taken from RelationField.py\n
+# XXX why not import it then ???\n
 SUB_FIELD_ID = \'relation\'\n
 \n
 if listbox_uid is not None:\n
-  selected_uids = context.portal_selections.updateSelectionCheckedUidList(selection_name, listbox_uid, uids)\n
-  uids = context.portal_selections.getSelectionCheckedUidsFor(selection_name)\n
-old_request = context.portal_selections.getObjectFromPickleAndSignature(form_pickle, form_signature)\n
+  selection_tool = context.getPortalObject().portal_selections\n
+  selected_uids = selection_tool.updateSelectionCheckedUidList(\n
+              selection_name, listbox_uid, uids)\n
+  uids = selection_tool.getSelectionCheckedUidsFor(selection_name)\n
+\n
+old_request = dict(saved_form_data)\n
+\n
 field = getattr(context, form_id).get_field(field_id)\n
 field_key = field.generate_field_key()\n
 if old_request.has_key(\'sub_index\'):\n
@@ -93,10 +94,14 @@ else:\n
   # XXX Not very dynamic...\n
   sub_field_key = field.generate_subfield_key(SUB_FIELD_ID, key=field_key)\n
   old_request[sub_field_key] = uids\n
-request_form = context.REQUEST.form\n
+\n
+\n
+request = container.REQUEST\n
+request_form = request.form\n
 for k in request_form.keys():\n
   del request_form[k]\n
-request_form.update(old_request)\n
+\n
+request.form.update(old_request)\n
 return context.Base_edit(form_id,\n
                          selection_index=old_request.get(\'selection_index\', 0),\n
                          selection_name=old_request.get(\'selection_name\', \'\'))\n
@@ -118,7 +123,7 @@ return context.Base_edit(form_id,\n
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>form_id, field_id, selection_index, selection_name, uids, listbox_uid, form_pickle, form_signature, batch_mode=0, object_uid=0</string> </value>
+            <value> <string>form_id, field_id, selection_index, selection_name, uids, listbox_uid, saved_form_data, batch_mode=0, object_uid=0</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -138,7 +143,7 @@ return context.Base_edit(form_id,\n
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>10</int> </value>
+                        <value> <int>9</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
@@ -150,8 +155,7 @@ return context.Base_edit(form_id,\n
                             <string>selection_name</string>
                             <string>uids</string>
                             <string>listbox_uid</string>
-                            <string>form_pickle</string>
-                            <string>form_signature</string>
+                            <string>saved_form_data</string>
                             <string>batch_mode</string>
                             <string>object_uid</string>
                             <string>Products.ERP5Type.Message</string>
@@ -162,7 +166,9 @@ return context.Base_edit(form_id,\n
                             <string>None</string>
                             <string>_getattr_</string>
                             <string>context</string>
+                            <string>selection_tool</string>
                             <string>selected_uids</string>
+                            <string>dict</string>
                             <string>old_request</string>
                             <string>getattr</string>
                             <string>field</string>
@@ -172,6 +178,8 @@ return context.Base_edit(form_id,\n
                             <string>sub_field_key</string>
                             <string>str</string>
                             <string>_write_</string>
+                            <string>container</string>
+                            <string>request</string>
                             <string>request_form</string>
                             <string>_getiter_</string>
                             <string>k</string>
diff --git a/product/ERP5/bootstrap/erp5_core/bt/revision b/product/ERP5/bootstrap/erp5_core/bt/revision
index 989ba2b4b97c321ed9f8f9813d7c7a7b639d3da1..b66073e9e4a1640993bf4d0f6e9e51ca33634ec0 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/revision
+++ b/product/ERP5/bootstrap/erp5_core/bt/revision
@@ -1 +1 @@
-584
\ No newline at end of file
+586
\ No newline at end of file