diff --git a/product/ERP5SyncML/Conduit/ERP5Conduit.py b/product/ERP5SyncML/Conduit/ERP5Conduit.py
index ab30854bf88cc5940befb4797e69d503bfd9e6e4..ef7ac2225e69657faa347c4309551917aa2ac4c0 100644
--- a/product/ERP5SyncML/Conduit/ERP5Conduit.py
+++ b/product/ERP5SyncML/Conduit/ERP5Conduit.py
@@ -128,8 +128,6 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     [conflict1,conflict2,...] where conclict1 is of the form :
     [object.getPath(),keyword,local_and_actual_value,subscriber_value]
     """
-    reset_local_roles = 1
-    reset_workflow = 1
     conflict_list = []
     xml = self.convertToXml(xml)
     if xml is None:
@@ -140,32 +138,32 @@ class ERP5Conduit(XMLSyncUtilsMixin):
       if self.isHistoryAdd(xml)!=-1: # bad hack XXX to be removed
         for element in self.getXupdateElementList(xml):
           xml = self.getElementFromXupdate(element)
-          conflict_list += self.addNode(xml=xml,object=object,
-                          previous_xml=previous_xml, force=force,
-                          simulate=simulate, **kw)['conflict_list']
+          conflict_list += self.addNode(
+                                  xml=xml,
+                                  object=object,
+                                  previous_xml=previous_xml,
+                                  force=force,
+                                  simulate=simulate,
+                                  **kw)['conflict_list']
     elif xml.nodeName == 'object':
       if object_id is None:
-        object_id = self.getAttribute(xml,'id')
-      docid = self.getObjectDocid(xml)
+        object_id = self.getAttribute(xml, 'id')
       if object_id is not None:
         if sub_object is None:
           try:
             sub_object = object._getOb(object_id)
           except (AttributeError, KeyError, TypeError):
             sub_object = None
-        else:
-          #We prevent reset_workflow an reset_local_roles
-          reset_local_roles = 0
-          reset_workflow = 0
         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 ???
-          sub_object = self.constructContent(object, object_id, docid, 
-              portal_type)
-          reset_local_roles = 0
+          sub_object, reset_local_roles, reset_workflow = self.constructContent(
+                                                                  object,
+                                                                  object_id,
+                                                                  portal_type)
         self.newObject(
                   object=sub_object,
                   xml=xml,
@@ -628,7 +626,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     """
     xml = self.convertToXml(xml)
     for subnode in self.getElementNodeList(xml):
-      if subnode.nodeName==self.xml_object_tag:
+      if subnode.nodeName == self.xml_object_tag:
         if object_id == self.getAttribute(subnode,'id'):
           return subnode
     return None
@@ -644,17 +642,6 @@ class ERP5Conduit(XMLSyncUtilsMixin):
         return self.convertXmlValue(data,data_type='string')
     return None
 
-  security.declareProtected(Permissions.AccessContentsInformation,'getObjectDocid')
-  def getObjectDocid(self, xml):
-    """
-    Retrieve the docid
-    """
-    for subnode in self.getElementNodeList(xml):
-      if subnode.nodeName == 'docid':
-        data = subnode.childNodes[0].value
-        return self.convertXmlValue(data)
-    return None
-
   security.declareProtected(Permissions.AccessContentsInformation,'getObjectProperty')
   def getObjectProperty(self, property, xml, data_type=None):
     """
@@ -830,7 +817,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
       #xml_string = xml_string.getvalue()
       #xml_string = unicode(xml_string,encoding='utf-8')
       xml_string = self.nodeToString(xml)
-      xml_string = unicode(xml_string,encoding='utf-8')
+      xml_string = unicode(xml_string, encoding='utf-8')
       #if type(xml_string) is type (u'a'):
       #  xml_string = xml_string.encode('utf-8')
       maxi = max(xml_string.find('>')+1,\
@@ -1014,33 +1001,18 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     return addable
 
   security.declareProtected(Permissions.ModifyPortalContent, 'constructContent')
-  def constructContent(self, object, object_id, docid, portal_type):
+  def constructContent(self, object, object_id, portal_type):
     """
     This allows to specify how to construct a new content.
     This is really usefull if you want to write your
     own Conduit.
     """
-    portal_types = getToolByName(object,'portal_types')
+    portal_types = getToolByName(object, 'portal_types')
     #LOG('ERP5Conduit.addNode',0,'portal_type: |%s|' % str(portal_type))
-    if docid==None: # ERP5 content
-      object.newContent(portal_type=portal_type,id=object_id)
-    else: # CPS content
-      # This is specific to CPS, we will call the proxy tool
-      px_tool= getToolByName(object,'portal_proxies')
-      trees_tool= getToolByName(object,'portal_trees')
-      proxy_type = 'document'
-      if portal_type in ('Workspace','Section'):
-        proxy_type = 'folder'
-      proxy = px_tool.createEmptyProxy(proxy_type,
-                                object,portal_type,object_id,docid=docid)
-      proxy.isIndexable = 0 # So it will not be reindexed, this prevent errors
-      # Calculate rpath
-      utool = getToolByName(object, 'portal_url')
-      rpath = utool.getRelativeUrl(proxy)
-      px_tool._modifyProxy(proxy,rpath)
-      trees_tool.notify_tree('sys_modify_object',proxy,rpath)
+
+    object.newContent(portal_type=portal_type, id=object_id)
     subobject = object._getOb(object_id)
-    return subobject
+    return subobject, 1, 1
 
   security.declareProtected(Permissions.ModifyPortalContent, 'addWorkflowNode')
   def addWorkflowNode(self, object, xml, simulate):
@@ -1136,28 +1108,6 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     """
     return object.getProperty(kw)
 
-
-    # This doesn't works fine because all workflows variables
-    # are not set the same way
-#    if status.has_key('action'):
-#      action_name = status['action']
-#      authorized = 0
-#      authorized_actions = wf_tool.getActionsFor(object)
-#      LOG('isWorkflowActionAddable, status:',0,status)
-#      LOG('isWorkflowActionAddable, authorized_actions:',0,authorized_actions)
-#      for action in authorized_actions:
-#        if action['id']==action_name:
-#          authorized = 1
-#      if not authorized:
-#        string_io = StringIO()
-#        PrettyPrint(xml,stream=string_io)
-#        conflict = Conflict(object_path=object.getPhysicalPath(),
-#                            keyword=self.history_tag)
-#        conflict.setXupdate(string_io.getvalue())
-#        conflict.setRemoteValue(status)
-#        conflict_list += [conflict]
-#    return conflict_list
-
   def nodeToString(self, node):
     """
     return an xml string corresponding to the node
@@ -1165,7 +1115,7 @@ class ERP5Conduit(XMLSyncUtilsMixin):
     buf = cStringIO.StringIO()
     Print(node, stream=buf, encoding='utf-8')
     xml_string = buf.getvalue()
-    buf.close() 
+    buf.close()
     return xml_string
 
   def getGidFromObject(self, object):
diff --git a/product/ERP5SyncML/Interface/IConduit.py b/product/ERP5SyncML/Interface/IConduit.py
index ff0144cee3560825123595dd656e91e64acfaf82..f4871fd068ed756cfa0652a30246117ce9a80742 100644
--- a/product/ERP5SyncML/Interface/IConduit.py
+++ b/product/ERP5SyncML/Interface/IConduit.py
@@ -70,6 +70,21 @@ class IConduit(Interface):
     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   """
 
+  def constructContent(self, object, object_id, portal_type):
+    """
+    This allows to specify how to construct a new content.
+    This is really usefull if you want to write your
+    own Conduit.
+
+    object: from where new content is created
+
+    object_id: id of the new object
+
+    portal_type: portal_type of the new object
+
+    return newObject, reset_local_roles boolean, reset_workflow boolean
+    """
+
   def addNode(self, xml=None, object=None, previous_xml=None,
               object_id=None, sub_object=None, force=0, simulate=0, **kw):
     """
@@ -113,4 +128,4 @@ class IConduit(Interface):
   def getGidFromXML(self, xml, gid_from_xml_list):
     """
     return the Gid composed with xml informations
-    """
+    """
\ No newline at end of file