diff --git a/product/Coramy/tests/testOrder.py b/product/Coramy/tests/testOrder.py
index 9b929e54f21443965480a7182acbdf75d42c6a64..b024741a2604416c15fd4b21fda086075ab87f2d 100755
--- a/product/Coramy/tests/testOrder.py
+++ b/product/Coramy/tests/testOrder.py
@@ -47,6 +47,7 @@ from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from AccessControl.SecurityManagement import newSecurityManager, noSecurityManager
 from DateTime import DateTime
 from Acquisition import aq_base, aq_inner
+from Globals import PersistentMapping
 from zLOG import LOG
 from Products.ERP5Type.tests.Sequence import Sequence, SequenceList
 import time
@@ -84,6 +85,7 @@ class TestOrder(ERP5TypeTestCase):
                               'coloris/modele/%s/%s' % (modele_id1,variante_id2),
                               'taille/adulte/40','taille/adulte/42')
   simulation_line_id_list = ('1_movement_0_0','1_movement_0_1','1_movement_1_0','1_movement_1_1')
+  simple_simulation_line_id_list = ('1')
 
   def getBusinessTemplateList(self):
     """
@@ -159,6 +161,7 @@ class TestOrder(ERP5TypeTestCase):
     return self.getPortal().getId()
 
   def failIfDifferentSet(self, a,b):
+    LOG('failIfDifferentSet',0,'a:%s b:%s' % (repr(a),repr(b)))
     for i in a:
       self.failUnless(i in b)
     for i in b:
@@ -177,6 +180,7 @@ class TestOrder(ERP5TypeTestCase):
     LOG('afterSetup',0,'portal.portal_categories.immediateReindexObject')
     portal.portal_categories.immediateReindexObject()
     for o in portal.portal_categories.objectValues():
+      LOG('afterSetup portal_categies',0,o.getPath())
       o.recursiveImmediateReindexObject()
     LOG('afterSetup',0,'portal.portal_simulation.immediateReindexObject')
     portal.portal_simulation.immediateReindexObject()
@@ -184,17 +188,13 @@ class TestOrder(ERP5TypeTestCase):
       o.recursiveImmediateReindexObject()
     LOG('afterSetup',0,'portal.portal_rules.immediateReindexObject')
     portal.portal_rules.immediateReindexObject()
-    # Then add new components
-    #portal.portal_types.constructContent(type_name='Person Module',
-    #                                   container=portal,
-    #                                   id='person')
-    #portal.portal_types.constructContent(type_name='Organisation Module',
-    #                                   container=portal,
-    #                                   id='organisation')
+
     organisation_module = self.getOrganisationModule()
+    organisation_module.immediateReindexObject()
     o1 = organisation_module.newContent(id=self.source_company_id)
     o2 = organisation_module.newContent(id=self.destination_company_id)
     component_module = self.getComponentModule()
+    component_module.immediateReindexObject()
     c1 = component_module.newContent(id=self.component_id)
     c1.setBasePrice(self.base_price1)
     c1.setPrice(self.base_price1)
@@ -202,6 +202,7 @@ class TestOrder(ERP5TypeTestCase):
     c1.setBasePrice(self.base_price2)
     c1.setPrice(self.base_price2)
     person_module = self.getPersonModule()
+    person_module.immediateReindexObject()
     p1 = person_module.newContent(id=self.sale_manager_id)
     kw = {'first_name':self.first_name1,'last_name':self.last_name1}
     p1.edit(**kw)
@@ -249,21 +250,21 @@ class TestOrder(ERP5TypeTestCase):
                   destination_decision_value=destination_company,
                   destination_administration_value=sale_manager,
                   destination_payment_value=destination_company)
-    order.setSourceValue(source_company)
-    order.setSourceSectionValue(source_company)
+    order.setTargetSourceValue(source_company)
+    order.setTargetSourceSectionValue(source_company)
     order.setSourceDecisionValue(source_company)
     order.setSourceAdministrationValue(source_company)
     order.setSourcePaymentValue(source_company)
-    order.setDestinationValue(stock_category)
-    order.setDestinationSectionValue(group_category)
+    order.setTargetDestinationValue(stock_category)
+    order.setTargetDestinationSectionValue(group_category)
     order.setDestinationDecisionValue(destination_company)
     order.setDestinationAdministrationValue(sale_manager)
     order.setDestinationPaymentValue(destination_company)
     # Look if the profile is good 
-    self.failUnless(order.getSourceValue()!=None)
-    self.failUnless(order.getDestinationValue()!=None)
-    self.failUnless(order.getSourceSectionValue()!=None)
-    self.failUnless(order.getDestinationSectionValue()!=None)
+    self.failUnless(order.getTargetSourceValue()!=None)
+    self.failUnless(order.getTargetDestinationValue()!=None)
+    self.failUnless(order.getTargetSourceSectionValue()!=None)
+    self.failUnless(order.getTargetDestinationSectionValue()!=None)
     self.failUnless(order.getSourceDecisionValue()!=None)
     self.failUnless(order.getDestinationDecisionValue()!=None)
     self.failUnless(order.getSourceAdministrationValue()!=None)
@@ -374,6 +375,10 @@ class TestOrder(ERP5TypeTestCase):
           'category_tissu%s_variante1' % tissu.getId():category_tissu_variante1,
           'category_tissu%s_variante2' % tissu.getId():category_tissu_variante2}
     sequence.edit(**seq_kw)
+    if sequence.get('tissu_first') is None:
+      sequence.edit(tissu_first=tissu)
+    elif sequence.get('tissu_second') is None:
+      sequence.edit(tissu_second=tissu)
     # Add a transformed resource to this transformation
     transformation_component = transformation.newContent(portal_type='Transformation Component')
     transformation_component.setResourceValue(tissu)
@@ -404,29 +409,31 @@ class TestOrder(ERP5TypeTestCase):
     cell_list = filter(lambda x: x.getId().find('quantity')==0, cell_list)
     self.assertEquals(len(cell_list),2)
     # Create variation cells for the transformation component
+    # First variation cell
     category_variante_modele_1 = sequence.get('category_variante_modele_1')
     args = (category_variante_modele_1,None)
     kw = {'base_id':'variation'}
     cell = transformation_component.newCell(*args,**kw)
     cell.setPredicateOperator('SUPERSET_OF')
-    #cell.setPredicateValue([category_variante_modele_1])
     cell.setMembershipCriterionBaseCategoryList(['coloris'])
     cell.setMappedValueBaseCategoryList(['coloris']) # XXX This looks like mandatory in TransformedResource for
                                                      # getAggregatedAmountList, why ????
     cell.setMembershipCriterionCategoryList([category_variante_modele_1])
     cell.setCategoryList([category_tissu_variante1])
+    # Second variation cell
     category_variante_modele_2 = sequence.get('category_variante_modele_2')
     LOG('transformation_cell.showDict()',0,cell.showDict())
     args = (category_variante_modele_2,None)
     kw = {'base_id':'variation'}
     cell = transformation_component.newCell(*args,**kw)
     cell.setPredicateOperator('SUPERSET_OF')
-    #cell.setPredicateValue([category_variante_modele_2])
     cell.setMembershipCriterionBaseCategoryList(['coloris'])
-    cell.setMappedValueBaseCategoryList(['coloris'])
+    cell.setMappedValueBaseCategoryList(['coloris']) # XXX This looks like mandatory in TransformedResource for
+                                                     # getAggregatedAmountList, why ????
     cell.setMembershipCriterionCategoryList([category_variante_modele_2])
     cell.setCategoryList([category_tissu_variante2])
     LOG('transformation_cell.showDict()',0,cell.showDict())
+    # Finally check the number of cells
     cell_list = transformation_component.objectValues()
     cell_list = filter(lambda x: x.getId().find('variation')==0, cell_list)
     self.assertEquals(len(cell_list),2)
@@ -548,26 +555,17 @@ class TestOrder(ERP5TypeTestCase):
 
   def stepAcceptPackingList(self, sequence=None,sequence_list=None):
     packing_list = sequence.get('packing_list')
+    LOG('stepAcceptPackingList, packing_list.isDivergent()',0,packing_list.isDivergent())
     portal_workflow = self.getWorkflowTool()
     packing_list.portal_workflow.doActionFor(packing_list,'accept_delivery',
                                 wf_id='delivery_causality_workflow')
 
   def stepSplitAndDeferPackingList(self, sequence=None,sequence_list=None):
-    packing_list = sequence.get('packing_list')
-    # set quantities
-    line = packing_list.objectValues()[0]
-    LOG('stepSplitAndDeferPackingList line.getPortalType:',0,line.getPortalType())
-    new_quantity = self.quantity - 1
-    if sequence.get('variated_order') is not None:
-      cell_list = line.objectValues()
-      for cell in cell_list:
-        cell.setTargetQuantity(new_quantity)
-    else:
-      line.setTargetQuantity(new_quantity)
     portal_workflow = self.getWorkflowTool()
     date = DateTime() # the value is now 
     target_start_date = date + 10 # Add 10 days
     target_stop_date = date + 12 # Add 12 days
+    packing_list = sequence.get('packing_list')
     packing_list.portal_workflow.doActionFor(packing_list,'split_defer_delivery',
                                 wf_id='delivery_causality_workflow',
                                 target_start_date=target_start_date,
@@ -714,12 +712,16 @@ class TestOrder(ERP5TypeTestCase):
   def stepCheckPackingListDiverged(self, sequence=None, sequence_list=None, **kw):
     packing_list = sequence.get('packing_list')
     portal_workflow = self.getWorkflowTool()
+    LOG('stepCheckPackingListDiverged, isDivergent()',0,packing_list.isDivergent())
+    LOG('stepCheckPackingListDiverged, isConvergent()',0,packing_list.isConvergent())
+    self.assertEquals(packing_list.isDivergent(),1)
     self.assertEquals(portal_workflow.getInfoFor(packing_list,'causality_state'),'diverged')
 
   def stepCheckPackingListConverged(self, sequence=None, sequence_list=None, **kw):
     packing_list = sequence.get('packing_list')
     portal_workflow = self.getWorkflowTool()
-    self.assertEquals(portal_workflow.getInfoFor(packing_list,'causality_state'),'converged')
+    LOG('stepCheckPackingListConverged, packing_list.isConvergent()',0,packing_list.isConvergent())
+    self.assertEquals(portal_workflow.getInfoFor(packing_list,'causality_state'),'solved')
 
   def stepModifySalesOrder(self, sequence=None, sequence_list=None, **kw):
     sales_order = sequence.get('sales_order')
@@ -751,10 +753,15 @@ class TestOrder(ERP5TypeTestCase):
     for o in all_packing_list_list:
       if o.getCausalityValue()==order:
         related_list.append(o)
+        LOG('stepCheckActivateRequirementList, 1 packing_list.asXML()',0,o.asXML())
     if sequence.get('order_type')=='Production Order': 
       # We should find the packing list corresponding the the 
       # delivery of the resource, not the delivery of raw materials
-      self.assertEquals(len(related_list),2)
+      if sequence.get('modified_packing_list_resource') == 1:
+        self.assertEquals(len(related_list),3)
+      else:
+        #self.assertEquals(len(related_list),2)
+        self.assertEquals(len(related_list),2) # XXXXXXXXXXXXXXXXXXXXXXXXXXX must be 2
     else:
       self.assertEquals(len(related_list),1)
     for p in related_list:
@@ -781,16 +788,26 @@ class TestOrder(ERP5TypeTestCase):
     # Then check every line of the applied rule
     simulation_line_list = sequence.get('simulation_line_list')
     simulation_line_id_list = map(lambda x: x.getId(),simulation_line_list)
-    self.failIfDifferentSet(self.simulation_line_id_list,simulation_line_id_list)
+    #if sequence.get('order_type') == 'Production Order':
+    if sequence.get('variated_order'):
+      self.failIfDifferentSet(self.simulation_line_id_list,simulation_line_id_list)
+    else:
+      self.failIfDifferentSet(self.simple_simulation_line_id_list,simulation_line_id_list)
     for line in simulation_line_list:
       self.assertEquals(line.getDeliverable(),1)
       self.assertEquals(line.getCausalityState(),'expanded')
-      delivery_line_id = line.getId().split('_',1)[1]
-      self.assertEquals(line.getOrderValue(),order._getOb('1')._getOb(delivery_line_id))
+      #if sequence.get('order_type') == 'Production Order':
+      if sequence.get('variated_order'):
+        delivery_line_id = line.getId().split('_',1)[1]
+        self.assertEquals(line.getOrderValue(),order._getOb('1')._getOb(delivery_line_id))
+      else:
+        delivery_line_id = line.getId()
+        self.assertEquals(line.getOrderValue(),order._getOb('1'))
       self.assertEquals(line.getStartDate(),order.getStartDate())
       self.assertEquals(line.getStopDate(),order.getStopDate())
       #FAILS self.assertEquals(line.getTargetStartDate(),order.getTargetStartDate())
       #FAILS self.assertEquals(line.getTargetStopDate(),order.getTargetStopDate())
+      self.assertEquals(line.getTargetSourceValue(),sequence.get('source_value'))
       self.assertEquals(line.getSourceValue(),sequence.get('source_value'))
       self.assertEquals(line.getSourceSectionValue(),sequence.get('source_section_value'))
       self.assertEquals(line.getSourceDecisionValue(),sequence.get('source_decision_value'))
@@ -817,6 +834,7 @@ class TestOrder(ERP5TypeTestCase):
         self.assertEquals(rule.getCausalityValue(),sequence.get('transformation'))
         # now check objects inside this rule
         rule_line_list = rule.objectValues()
+        rule_line_list = rule.objectValues()
         self.assertEquals(len(rule_line_list),2)
         good_rule_line_id_list = ('produced_resource','transformed_resource_0')
         rule_line_id_list = map(lambda x: x.getId(),rule_line_list)
@@ -865,12 +883,19 @@ class TestOrder(ERP5TypeTestCase):
             LOG('transformation_source.showDict()',0,transformation_source.showDict())
             resource_delivery_cell = transformation_source.getDeliveryValue()
             resource_root_delivery = resource_delivery_cell.getRootDeliveryValue()
+            LOG('resource_root_delivery.getPath()',0,resource_root_delivery.getPath())
             self.assertNotEquals(resource_root_delivery,root_delivery)
       else:
         self.assertEquals(len(rule_list),0)
 
     # Check all packing list
+    cancelled_list = []
     for packing_list in related_list:
+      if sequence.get('modified_packing_list_resource') == 1:
+        if portal_workflow.getInfoFor(packing_list,'simulation_state') == 'cancelled':
+          # Here we have a canceled packing list after the fusion
+          cancelled_list.append(packing_list)
+          continue
       self.assertEquals(portal_workflow.getInfoFor(packing_list,'simulation_state'),'confirmed')
       LOG('looking at packing_list:',0,packing_list.getPhysicalPath())
       # Check if there is a line on the packing_list
@@ -883,11 +908,20 @@ class TestOrder(ERP5TypeTestCase):
         self.assertEquals(line.getResourceValue(),resource)
       else:
         tissu_list = sequence.get('good_tissu_list')
+        all_tissu_list = sequence.get('tissu_list')
         line_resource_list = map(lambda x: x.getResourceValue(),line_list)
         LOG('CheckActivateRequirementList, tissu_list:',0,tissu_list)
         LOG('CheckActivateRequirementList, line_resource_list:',0,line_resource_list)
         self.assertEquals(len(line_list),len(tissu_list))
-        self.failIfDifferentSet(line_resource_list,tissu_list)
+        if sequence.get('modified_packing_list_resource') == 1:
+          self.failIfDifferentSet(line_resource_list,all_tissu_list)
+          #for tissu in tissu_list:
+          #  LOG('CheckActivateRequirementList, good_tissu_list',0,tissu_list)
+          #  LOG('CheckActivateRequirementList, line_resource_list',0,line_resource_list)
+          #  self.assertEquals(True,tissu in line_resource_list)
+
+        else:
+          self.failIfDifferentSet(line_resource_list,tissu_list)
 
       for line in line_list:
         if sequence.get('variated_order') is None:
@@ -925,7 +959,10 @@ class TestOrder(ERP5TypeTestCase):
               self.assertEquals(cell.getDestinationPaymentValue(),sequence.get('destination_payment_value'))
           else:
             self.assertEquals(True,line.getResourceValue() in sequence.get('tissu_list'))
-            self.assertEquals(line.getResourceValue(),sequence.get('tissu_list')[0])
+            if not (sequence.get('modified_packing_list_resource') == 1):
+              self.assertEquals(line.getResourceValue(),sequence.get('tissu_list')[0])
+    if sequence.get('modified_packing_list_resource') == 1:
+      self.assertEquals(len(cancelled_list),1)
 
 
   def stepCheckSplittedAndDefferedPackingList(self, sequence=None, sequence_list=None, **kw):
@@ -963,10 +1000,13 @@ class TestOrder(ERP5TypeTestCase):
     sequence.edit(destination_value=stock_category)
     sequence.edit(modified_packing_list_path=1)
 
-  def stepModifyPackingListResource(self, sequence=None, sequence_list=None, **kw):
+  #def stepLazyModifyPackingListResource(self, sequence=None, sequence_list=None, lazy=0,**kw):
+  #  self.stepModifyPackingListResource(sequence=sequence,sequence_list=sequence_list,lazy=1,**kw)
+
+  def stepModifyPackingListResource(self, sequence=None, sequence_list=None, lazy=0,**kw):
     packing_list_list = sequence.get('mp_packing_list_list')
     packing_list = packing_list_list[0]
-    tissu1 = sequence.get('tissu1')
+    tissu1 = sequence.get('tissu_first')
     # We should construct another tissu
     tissu_module = self.getTissuModule()
     tissu = tissu_module.newContent(portal_type='Tissu')
@@ -982,40 +1022,54 @@ class TestOrder(ERP5TypeTestCase):
           'category_tissu%s_variante2' % tissu.getId():category_tissu_variante2}
     sequence.edit(**seq_kw)
     sequence.edit(**seq_kw)
+    tissu_list = sequence.get('tissu_list',[])
+    tissu_list.extend([tissu])
+    sequence.edit(tissu_list=tissu_list)
     for line in packing_list.objectValues():
       if line.getResourceValue()==tissu1:
         line.setResourceValue(tissu)
-        def rename_list(value,from_string,to_string):
-          new_list = []
-          for item in value:
-            item = item.replace(from_string,to_string)
-            new_list.append(item)
-          return new_list
-        from_string = tissu1.getId()
-        to_string = tissu.getId()
-        new_category_list = rename_list(line.getCategoryList(),from_string,to_string)
-        line.setCategoryList(new_category_list)
-        #new_variation_category_list = rename_list(line.getVariationCategoryList(),from_string,to_string)
-        #line.setVariationCategoryList(new_variation_category_list)
-        def rename_dict(dict,from_string,to_string):
-          for key in dict.keys():
-            if dict[key] is type({}):
-              dict[key] = rename_index(dict[key],from_string,to_string)
-            if key.find(from_string):
-              new_key = key.replace(from_string,to_string)
-              dict[new_key] = dict[key]
-              del dict[key]
-              key = new_key
-          return dict
-        line.index = rename_dict(line.index,from_string,to_string)
-
-        #for id in line.objectIds():
-        #  line._delObject(id)
-        for cell in line.objectValues():
-          LOG('cell.getPath()',0,cell.getPath())
-          LOG('cell.getMembershipCriterionCategoryList',0,cell.getMembershipCriterionCategoryList())
-          new_list = rename_list(cell.getMembershipCriterionCategoryList(),from_string,to_string)
-          cell.setMembershipCriterionCategoryList(new_list)
+        if lazy!=1: # This means that we will change everything, including cells
+          def rename_list(value,from_string,to_string):
+            new_list = []
+            for item in value:
+              item = item.replace(from_string,to_string)
+              new_list.append(item)
+            return new_list
+          from_string = 'tissu/' + tissu1.getId()
+          to_string = 'tissu/' + tissu.getId()
+          new_category_list = rename_list(line.getCategoryList(),from_string,to_string)
+          line.setCategoryList(new_category_list)
+          #new_variation_category_list = rename_list(line.getVariationCategoryList(),from_string,to_string)
+          #line.setVariationCategoryList(new_variation_category_list)
+          def rename_dict(mydict,from_string,to_string):
+            newdict = PersistentMapping()
+            for key in mydict.keys():
+              new_value = mydict[key]
+              if getattr(mydict[key],'keys',None) is not None:
+                new_value = rename_dict(mydict[key],from_string,to_string)
+              if type(key) is type('a'):
+                if key.find(from_string)>=0:
+                  new_key = key.replace(from_string,to_string)
+                  newdict[new_key] = PersistentMapping()
+                  newdict[new_key] = new_value
+                else:
+                  newdict[key] = PersistentMapping()
+                  newdict[key] = new_value
+              else:
+                newdict[key] = PersistentMapping()
+                newdict[key] = new_value
+            return newdict
+
+          line.index = rename_dict(line.index,from_string,to_string)
+
+          #for id in line.objectIds():
+          #  line._delObject(id)
+          for cell in line.objectValues():
+            LOG('cell.getPath()',0,cell.getPath())
+            LOG('cell.getMembershipCriterionCategoryList',0,cell.getMembershipCriterionCategoryList())
+            new_list = rename_list(cell.getMembershipCriterionCategoryList(),from_string,to_string)
+            cell.setMembershipCriterionCategoryList(new_list)
+      line.edit() # This simulate the user change, like this we will call propagateFromSimulation
     sequence.edit(modified_packing_list_resource=1)
     packing_list.recursiveImmediateReindexObject()
 
@@ -1029,23 +1083,34 @@ class TestOrder(ERP5TypeTestCase):
     sequence.edit(new_packing_list_line=packing_list_line)
 
   def stepSetLessQuantityToPackingList(self, sequence=None, sequence_list=None, **kw):
+    #packing_list = sequence.get('packing_list')
+    #packing_list_line = packing_list._getOb('1')
+    #packing_list_line.setTargetQuantity(self.low_quantity) # The user can change only the target
+    #packing_list.edit() # so that we call workflow methods
     packing_list = sequence.get('packing_list')
-    packing_list_line = packing_list._getOb('1')
-    packing_list_line.setQuantity(self.low_quantity)
+    # set quantities
+    line = packing_list.objectValues()[0]
+    LOG('stepSplitAndDeferPackingList line.getPortalType:',0,line.getPortalType())
+    new_quantity = self.quantity - 1
+    if sequence.get('variated_order') is not None:
+      cell_list = line.objectValues()
+      for cell in cell_list:
+        cell.setTargetQuantity(new_quantity)
+    else:
+      line.setTargetQuantity(new_quantity)
+    line.edit() # So that we calls workflow methods
 
   def stepCheckLessQuantityInSimulation(self, sequence=None, sequence_list=None, **kw):
     simulation_object=sequence.get('simulation_object')
     line_list = simulation_object.objectValues()
     self.assertEquals(len(line_list),1)
     line = line_list[0]
-    component_module = self.getComponentModule()
-    component = component_module._getOb(self.component_id)
-    self.assertEquals(line.getQuantity(),self.low_quantity)
+    #component_module = self.getComponentModule()
+    #component = component_module._getOb(self.component_id)
+    self.assertEquals(line.getQuantity(),self.quantity-1)
 
   def stepTic(self,**kw):
-    portal = self.getPortal()
-    portal.portal_activities.distribute()
-    portal.portal_activities.tic()
+    self.tic()
 
   def testOrder(self, quiet=0,run=1):
     sequence_list = SequenceList()
@@ -1056,22 +1121,23 @@ class TestOrder(ERP5TypeTestCase):
     sequence_string =   'AddSalesOrder PlanSalesOrder OrderSalesOrder ConfirmSalesOrder' \
                       + ' Tic Tic Tic Tic CheckConfirmOrder' \
                       + ' Tic Tic CheckActivateRequirementList'
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
     # Simple sequence (same as the previous one) with only some tic when it is required and with no plan,
     # ... OK
     sequence_string =   'AddSalesOrder Tic ConfirmSalesOrder Tic CheckConfirmOrder ' \
                       + 'Tic CheckActivateRequirementList'
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we set less quantity in the packing list
     # And we want to be sure that we will have less quantity in the simulation after we did accept
-    # ... FAILS
+    # OK
     sequence_string =   'AddSalesOrder PlanSalesOrder OrderSalesOrder' \
                       + ' ConfirmSalesOrder Tic Tic Tic Tic CheckConfirmOrder' \
                       + ' Tic CheckActivateRequirementList SetLessQuantityToPackingList' \
-                      + ' Tic Tic AcceptPackingList Tic Tic Tic CheckLessQuantityInSimulation' 
-    #sequence_list.addSequenceString(sequence_string)
+                      + ' Tic Tic CheckPackingListDiverged AcceptPackingList Tic Tic Tic' \
+                      + ' CheckLessQuantityInSimulation' 
+    sequence_list.addSequenceString(sequence_string)
 
     # Simple sequence including variated resource with only some tic when it is required,
     # We create a sales order, confirm and then make sure the corresponding
@@ -1080,16 +1146,22 @@ class TestOrder(ERP5TypeTestCase):
     sequence_string =   'AddVariatedSalesOrder PlanSalesOrder OrderSalesOrder' \
                       + ' ConfirmSalesOrder Tic Tic Tic Tic CheckConfirmOrder' \
                       + ' Tic Tic CheckActivateRequirementList'
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
+
+    # Sequence where we confirm an order, the corresponding packing list is automatically
+    # created, we then check if the packing list is converged.
+    # ... OK
+    sequence_string =   'AddSalesOrder Tic Tic ConfirmSalesOrder Tic Tic CheckConfirmOrder Tic' \
+                      + ' Tic Tic Tic Tic CheckActivateRequirementList Tic CheckPackingListConverged'
+    sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we confirm an order, the corresponding packing list is automatically
     # created, then we add new lines to the packing list by hand, we accept, we then check
     # if the packing list is converged.
     # ... FAILS
     sequence_string =   'AddSalesOrder Tic Tic ConfirmSalesOrder Tic Tic CheckConfirmOrder Tic' \
-                      + ' Tic Tic Tic Tic Tic Tic CheckConfirmOrder' \
-                      + ' Tic Tic Tic Tic CheckActivateRequirementList Tic' \
-                      + ' AddLinesToSalesPackingList Tic Tic Tic AcceptPackingList Tic Tic Tic CheckPackingListConverged' 
+                      + ' Tic Tic Tic Tic CheckActivateRequirementList Tic CheckPackingListConverged' \
+                      + ' AddLinesToSalesPackingList Tic Tic Tic Tic Tic CheckPackingListDiverged' 
     #sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we confirm an order, the corresponding packing list is automatically
@@ -1101,7 +1173,7 @@ class TestOrder(ERP5TypeTestCase):
                       + ' Tic Tic CheckActivateRequirementList' \
                       + ' Tic Tic ModifyVariationId Tic Tic CheckConfirmOrder' \
                       + ' Tic Tic CheckActivateRequirementList'
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we create an order, then the color is renamed, then we confirm
     # and we look if everyhing is going fine on the simulation and that the 
@@ -1110,20 +1182,22 @@ class TestOrder(ERP5TypeTestCase):
     sequence_string =   'AddVariatedSalesOrder Tic Tic ModifyVariationId Tic Tic Tic' \
                       + ' ConfirmSalesOrder Tic Tic CheckConfirmOrder Tic' \
                       + ' Tic Tic Tic Tic CheckActivateRequirementList Tic'
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we confirm an order, the corresponding packing list is automatically
     # created, then we wants to only send one part of the packing list and finally 
     # we split and defer the packing list
-    # ... OK
+    # ... Fails but was OK
     sequence_string =   'AddVariatedSalesOrder PlanSalesOrder OrderSalesOrder' \
                       + ' ConfirmSalesOrder Tic Tic Tic Tic CheckConfirmOrder' \
                       + ' CheckActivateRequirementList Tic Tic Tic' \
                       + ' UserGetReadyPackingList Tic Tic UserSetReadyPackingList Tic Tic' \
                       + ' UserStartPackingList Tic Tic Tic Tic' \
-                      + ' AcceptDeliveryPackingList Tic Tic SplitAndDeferPackingList Tic Tic Tic' \
+                      + ' AcceptDeliveryPackingList Tic CheckPackingListConverged Tic' \
+                      + ' SetLessQuantityToPackingList Tic CheckPackingListDiverged Tic' \
+                      + ' SplitAndDeferPackingList Tic Tic Tic' \
                       + ' CheckSplittedAndDefferedPackingList'  
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
     # Sequence where we build a Production Order, we confirm this production order, then
     # we see if there is an the corresponding packing list is built
@@ -1131,7 +1205,7 @@ class TestOrder(ERP5TypeTestCase):
     sequence_string =   'AddProductionOrder Tic PlanProductionOrder Tic OrderProductionOrder Tic Tic' \
                       + ' ConfirmProductionOrder Tic Tic Tic CheckConfirmOrder Tic Tic' \
                       + ' CheckActivateRequirementList Tic Tic' 
-    #sequence_list.addSequenceString(sequence_string)
+    sequence_list.addSequenceString(sequence_string)
 
 
     # Sequence where we build a Production Order, we confirm this production order, then
@@ -1146,15 +1220,15 @@ class TestOrder(ERP5TypeTestCase):
 
     # Sequence where we build a Production Order, we plan this production order, then
     # we have many packing list, we change the resource of one of them,
-    # we must be sure that this change is taken into account into the simulation
-    # ... ??? 
+    # we must be sure that this change is taken into account into the simulation,
+    # ie a new line with the previous resource should be automatically created
+    # ... OK 
     sequence_string =   'AddProductionOrder Tic PlanProductionOrder Tic OrderProductionOrder Tic Tic' \
                       + ' ConfirmProductionOrder Tic Tic Tic CheckConfirmOrder Tic Tic' \
                       + ' CheckActivateRequirementList Tic Tic ModifyPackingListResource Tic Tic' \
                       + ' Tic Tic Tic Tic Tic CheckConfirmOrder Tic CheckActivateRequirementList'  
     sequence_list.addSequenceString(sequence_string)
 
-
     # Now add a non defined sequence
 #    sequence = Sequence()
 #    sequence.addStep('AddSalesOrder')
@@ -1171,7 +1245,7 @@ class TestOrder(ERP5TypeTestCase):
 #    sequence.addStep('ActivateRequirementList')
 #    sequence.addStep('Tic',required=0,max_replay=5)
 #    sequence_list.addSequence(sequence)
-    # Finally play the three sequences
+    # Finally play all sequences
     sequence_list.play(self)