diff --git a/product/ERP5SyncML/Conduit/ERP5Conduit.py b/product/ERP5SyncML/Conduit/ERP5Conduit.py
index 1f3874fdab53f2d164abda38656b309ba65d0fb8..296a9054f71f3aad637b665a502ca96e60855692 100644
--- a/product/ERP5SyncML/Conduit/ERP5Conduit.py
+++ b/product/ERP5SyncML/Conduit/ERP5Conduit.py
@@ -125,6 +125,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     [object.getPath(),keyword,local_and_actual_value,subscriber_value]
     """
     conflict_list = []
+    sub_object = None
     xml = self.convertToXml(xml)
     LOG('addNode',0,'xml_reconstitued: %s' % str(xml))
     # In the case where this new node is a object to add
@@ -139,7 +140,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
           xml = self.getElementFromXupdate(element)
           conflict_list += self.addNode(xml=xml,object=object,
                           previous_xml=previous_xml, force=force,
-                          simulate=simulate, **kw)
+                          simulate=simulate, **kw)['conflict_list']
     elif xml.nodeName == 'object':
       if object_id is None:
         object_id = self.getAttribute(xml,'id')
@@ -147,17 +148,17 @@ class ERP5Conduit(XMLSyncUtilsMixin):
       LOG('addNode',0,'object_id: %s' % object_id)
       if object_id is not None:
         try:
-          subobject = object._getOb(object_id)
+          sub_object = object._getOb(object_id)
         except (AttributeError, KeyError, TypeError):
-          subobject = None
-        if subobject is None: # If so, it doesn't exist
+          sub_object = None
+        if sub_object is None: # If so, it doesn't exist
           portal_type = ''
           if xml.nodeName == 'object':
             portal_type = self.getObjectType(xml)
           elif xml.nodeName in self.XUPDATE_INSERT_OR_ADD: # Deprecated ???
             portal_type = self.getXupdateObjectType(xml) # Deprecated ???
-          subobject = self.constructContent(object, object_id, docid, portal_type)
-        self.newObject(object=subobject,xml=xml,simulate=simulate)
+          sub_object = self.constructContent(object, object_id, docid, portal_type)
+        self.newObject(object=sub_object,xml=xml,simulate=simulate)
     elif xml.nodeName in self.XUPDATE_INSERT_OR_ADD \
          and self.getSubObjectDepth(xml)>=1:
       sub_object_id = self.getSubObjectId(xml)
@@ -182,7 +183,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
             # Then do the udpate
             conflict_list += self.addNode(xml=sub_xml,object=sub_object,
                             previous_xml=sub_previous_xml, force=force,
-                            simulate=simulate, **kw)
+                            simulate=simulate, **kw)['conflict_list']
     elif xml.nodeName == self.history_tag or self.isHistoryAdd(xml)>0:
       conflict_list += self.addWorkflowNode(object, xml, simulate)
     #elif xml.nodeName in self.local_role_list or self.isLocalRole(xml)>0 and not simulate:
@@ -193,7 +194,8 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     else:
       conflict_list += self.updateNode(xml=xml,object=object, force=force,
                                        simulate=simulate,  **kw)
-    return conflict_list
+    # We must returns the object created
+    return {'conflict_list':conflict_list, 'object': sub_object}
 
   security.declareProtected(Permissions.ModifyPortalContent, 'deleteNode')
   def deleteNode(self, xml=None, object=None, object_id=None, force=None,
@@ -359,12 +361,12 @@ class ERP5Conduit(XMLSyncUtilsMixin):
           # This is the case where we have to call addNode
           LOG('updateNode',0,'we will add sub-object')
           conflict_list += self.addNode(xml=subnode,object=object,force=force,
-                                        simulate=simulate, **kw)
+                                        simulate=simulate, **kw)['conflict_list']
         elif keyword == self.history_tag and not simulate:
           # This is the case where we have to call addNode
           LOG('updateNode',0,'we will add history')
           conflict_list += self.addNode(xml=subnode,object=object,force=force,
-                                        simulate=simulate,**kw)
+                                        simulate=simulate,**kw)['conflict_list']
         elif keyword in (self.local_role_tag,self.local_permission_tag) and not simulate:
           # This is the case where we have to update Roles or update permission
           LOG('updateNode',0,'we will add a local role')
@@ -373,7 +375,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
           #object.manage_setLocalRoles(user,roles)
           xml = self.getElementFromXupdate(xml)
           conflict_list += self.addNode(xml=xml,object=object,force=force,
-                                        simulate=simulate,**kw)
+                                        simulate=simulate,**kw)['conflict_list']
       elif self.isSubObjectModification(xml):
         # We should find the object corresponding to
         # this update, so we have to look in the previous_xml
@@ -902,7 +904,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
       selection_name = ''
       if subnode.nodeName in self.XUPDATE_INSERT_OR_ADD:
         conflict_list += conduit.addNode(xml=sub_xupdate,object=object, \
-                                         force=force, simulate=simulate, **kw)
+                                         force=force, simulate=simulate, **kw)['conflict_list']
       elif subnode.nodeName in self.XUPDATE_DEL:
         conflict_list += conduit.deleteNode(xml=sub_xupdate, object=object, \
                                          force=force, simulate=simulate, **kw)
diff --git a/product/ERP5SyncML/Subscription.py b/product/ERP5SyncML/Subscription.py
index b1f8e18bfa266066090c4603d43982df8ecd6f88..83001eafb09b6a57215210c34295b48a0e804d33 100644
--- a/product/ERP5SyncML/Subscription.py
+++ b/product/ERP5SyncML/Subscription.py
@@ -512,6 +512,9 @@ class Signature(Folder,SyncCode):
     Return the actual action for a partial synchronization
     """
     LOG('setConflictList, list',0,conflict_list)
+    for conflict in conflict_list:
+      if isinstance(conflict,str):
+        import pdb; pdb.set_trace()
     if conflict_list is None or conflict_list==[]:
       self.resetConflictList()
     else:
diff --git a/product/ERP5SyncML/SynchronizationTool.py b/product/ERP5SyncML/SynchronizationTool.py
index c68a076d262fa58ce8232e60eb3127190f3ce317..ee5413e4a25af0775147e159e490db91d7a50ac9 100644
--- a/product/ERP5SyncML/SynchronizationTool.py
+++ b/product/ERP5SyncML/SynchronizationTool.py
@@ -385,7 +385,10 @@ class SynchronizationTool( SubscriptionSynchronization, PublicationSynchronizati
             conflict_list += [conflict.__of__(subscriber)]
     for subscription in self.getSubscriptionList():
       sub_conflict_list = subscription.getConflictList()
+      LOG('SynchronizationTool.getConflictList, sub_conflict_list',0,sub_conflict_list)
       for conflict in sub_conflict_list:
+        if isinstance(conflict,str):
+          import pdb; pdb.set_trace()
         #conflict.setDomain('Subscription')
         conflict.setSubscriber(subscription)
         #conflict.setDomainId(subscription.getId())
diff --git a/product/ERP5SyncML/XMLSyncUtils.py b/product/ERP5SyncML/XMLSyncUtils.py
index f6e99dce216b35b09f8c95705b1cc831d5e11e22..09c3531c4532936b33dba79bfe9909144bcdbb54 100644
--- a/product/ERP5SyncML/XMLSyncUtils.py
+++ b/product/ERP5SyncML/XMLSyncUtils.py
@@ -772,9 +772,12 @@ class XMLSyncUtilsMixin(SyncCode):
           if object is None:
             object_id = domain.generateNewIdWithGenerator(object=destination_path,gid=object_gid)
             #if object_id is not None:
-            conflict_list += conduit.addNode(xml=data_subnode, object=destination_path,
+            add_data = conduit.addNode(xml=data_subnode, object=destination_path,
                                              object_id=object_id)
-            object = domain.getObjectFromGid(object_gid)
+            conflict_list += add_data['conflict_list']
+            # Retrieve directly the object from addNode
+            object = add_data['object']
+            LOG('XMLSyncUtils, in ADD add_data',0,add_data)
             signature.setPath(object.getPhysicalPath())
             LOG('applyActionList',0,'object after add: %s' % repr(object))
           if object is not None: