diff --git a/product/ERP5SyncML/SyncCode.py b/product/ERP5SyncML/SyncCode.py
index eeb8905a620bcaf9c41189e5bd91f7a845f464c5..2702b50c7bc34cdac4432e97e665d2f0adff0854 100644
--- a/product/ERP5SyncML/SyncCode.py
+++ b/product/ERP5SyncML/SyncCode.py
@@ -111,12 +111,19 @@ class SyncCode(Persistent):
   ADDABLE_PROPERTY = local_role_list + (history_tag,) + local_permission_list
   NOT_EDITABLE_PROPERTY = ('id','object','uid','xupdate:attribute') \
                           + XUPDATE_ELEMENT + ADDABLE_PROPERTY
-  sub_object_exp = re.compile("/object\[@id='.*'\]/")
-  object_exp = re.compile("/object\[@id='.*'\]")
+
   attribute_type_exp = re.compile("^.*attribute::type$")
-  sub_sub_object_exp = re.compile("/object\[@id='.*'\]/object\[@id='.*'\]/")
   history_exp = re.compile("/%s\[@id='.*'\]" % history_tag)
   bad_history_exp = re.compile("/%s\[@id='.*'\]/" % history_tag)
+  extract_id_from_xpath = re.compile(
+                              "(?P<object_block>(?P<property>[^/]+)\[@"\
+                              "(?P<id_of_id>id|gid)='(?P<object_id>[^']+)'\])")
+
+  # Those regular expression are deprecated and keept
+  # only for backward compatibility
+  object_exp = re.compile("/object\[@id='.*'\]")
+  sub_object_exp = re.compile("/object\[@id='.*'\]/")
+  sub_sub_object_exp = re.compile("/object\[@id='.*'\]/object\[@id='.*'\]/")
 
   #media types :