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 ef254ff370fb287d92d446d5421bd96662aeb181..7e504f00c2c8ccd22f58d38bcd4d2631912c2ea6 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
@@ -70,20 +70,27 @@
 
 # Updates attributes of an Zope document\n
 # which is in a class inheriting from ERP5 Base\n
-portal = context.getPortalObject()\n
-N_ = portal.Base_translateString\n
-\n
+from Products.ERP5Type.Message import Message\n
 from Products.Formulator.Errors import ValidationError, FormValidationError\n
 \n
+# Harcoded value, which must be taken from RelationField.py\n
+SUB_FIELD_ID = \'relation\'\n
+\n
+portal = context.getPortalObject()\n
 request=context.REQUEST\n
 o = context.portal_catalog.getObject(object_uid)\n
 \n
 if o is None:\n
-  message = N_(\'Sorrry, Error, the calling object was not catalogued. Do not know how to do ?\')\n
-  return message\n
+  message = Message(domain=\'erp5_ui\',\n
+                    message=\'Sorrry, Error, \' \\\n
+                            \'the calling object was not catalogued.\' \\\n
+                            \' Do not know how to do ?\')\n
+  raise ValidationError, message\n
 \n
 if listbox_uid is not None:\n
-  selected_uids = context.portal_selections.updateSelectionCheckedUidList(selection_name,listbox_uid,uids)\n
+  selected_uids = context.portal_selections.updateSelectionCheckedUidList(\n
+                                               selection_name,\n
+                                               listbox_uid, uids)\n
   uids = context.portal_selections.getSelectionCheckedUidsFor(selection_name)\n
 \n
 if request.has_key(\'previous_form_id\'):\n
@@ -96,17 +103,32 @@ field = form.get_field(field_id)\n
 \n
 base_category = field.get_value(\'base_category\')\n
 relation_setter_id = field.get_value(\'relation_setter_id\')\n
-if relation_setter_id: relation_setter = getattr(o, relation_setter_id)\n
-portal_type = map(lambda x:x[0],field.get_value(\'portal_type\'))\n
+if relation_setter_id: \n
+  relation_setter = getattr(o, relation_setter_id)\n
+\n
+portal_type = [x[0] for x in field.get_value(\'portal_type\')]\n
 \n
-# \n
-old_request = context.portal_selections.getObjectFromPickleAndSignature(request.form_pickle, request.form_signature)\n
+old_request = context.portal_selections.getObjectFromPickleAndSignature(\n
+                              request.form_pickle, \n
+                              request.form_signature)\n
 \n
+field_key = field.generate_field_key()\n
 if old_request.has_key(\'sub_index\'):\n
   if len(uids) > 0:\n
-    old_request[\'relation_field_%s_%s\' % (field_id, old_request[\'sub_index\'] )] = str(uids[0]) # XXX Hardwired\n
+    # XXX Hardwired\n
+    sub_field_key = field.generate_subfield_key(\n
+                                              "%s_%s" % (SUB_FIELD_ID, \n
+                                                         old_request[\'sub_index\']), \n
+                                              key=field_key)\n
+    old_request[sub_field_key] = str(uids[0])\n
+#    old_request[\'relation_field_%s_%s\' % \\\n
+#                (field_id, old_request[\'sub_index\'] )] = str(uids[0])\n
 else:\n
-  old_request[\'relation_field_%s\' % field_id] = uids # XXX Hardwired\n
+  # XXX Not very dynamic...\n
+\n
+  sub_field_key = field.generate_subfield_key(SUB_FIELD_ID, \n
+                                              key=field_key)\n
+  old_request[sub_field_key] = uids\n
 \n
 # Purge the REQUEST from relation form input\n
 static_dict = {\n
@@ -128,10 +150,12 @@ for k in request.other.keys():\n
 for k in request.form.keys():\n
   del request.form[k]\n
 \n
-request.form.update(old_request) # Create a fake request with nothing like form or ...\n
-\n
+# Create a fake request with nothing like form or ...\n
+request.form.update(old_request)\n
 \n
-return context.Base_edit(form_id, selection_index=old_request.get(\'selection_index\',0), selection_name=old_request.get(\'selection_name\', \'\'))\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
 
 
 ]]></string> </value>
@@ -188,13 +212,15 @@ return context.Base_edit(form_id, selection_index=old_request.get(\'selection_in
                             <string>object_uid</string>
                             <string>listbox_uid</string>
                             <string>batch_mode</string>
-                            <string>_getattr_</string>
-                            <string>context</string>
-                            <string>portal</string>
-                            <string>N_</string>
+                            <string>Products.ERP5Type.Message</string>
+                            <string>Message</string>
                             <string>Products.Formulator.Errors</string>
                             <string>ValidationError</string>
                             <string>FormValidationError</string>
+                            <string>SUB_FIELD_ID</string>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                            <string>portal</string>
                             <string>request</string>
                             <string>o</string>
                             <string>None</string>
@@ -207,15 +233,19 @@ return context.Base_edit(form_id, selection_index=old_request.get(\'selection_in
                             <string>base_category</string>
                             <string>relation_setter_id</string>
                             <string>relation_setter</string>
-                            <string>map</string>
+                            <string>append</string>
+                            <string>$append0</string>
+                            <string>_getiter_</string>
+                            <string>x</string>
+                            <string>_getitem_</string>
                             <string>portal_type</string>
                             <string>old_request</string>
+                            <string>field_key</string>
                             <string>len</string>
+                            <string>sub_field_key</string>
                             <string>str</string>
-                            <string>_getitem_</string>
                             <string>_write_</string>
                             <string>static_dict</string>
-                            <string>_getiter_</string>
                             <string>k</string>
                           </tuple>
                         </value>