diff --git a/product/ERP5/tests/testProductionPackingList.py b/product/ERP5/tests/testProductionPackingList.py
index 1e01675a1d99dc0d24bbef45a270d2bd47b2ecbb..cc07c4bbb4ef1dd3e6f462828256f4bc076be8b7 100644
--- a/product/ERP5/tests/testProductionPackingList.py
+++ b/product/ERP5/tests/testProductionPackingList.py
@@ -47,6 +47,22 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
       packing_list = sequence.get('packing_list')
     packing_list.portal_workflow.doActionFor(packing_list, transition_name)
 
+  def stepAcceptDecisionProducedDeliveryPackingList(self, sequence=None, sequence_list=None, **kw):
+    packing_list = sequence.get('produced_delivery_packing_list')
+    self.modifyPackingListState('accept_decision_action', sequence=sequence, packing_list=packing_list)
+
+  def stepAdoptPrevisionSupplyDeliveryPackingList(self, sequence=None, sequence_list=None, **kw):
+    packing_list = sequence.get('supply_delivery_packing_list')
+    self.modifyPackingListState('adopt_prevision_action', sequence=sequence, packing_list=packing_list)
+
+  def stepAdoptPrevisionProducedReport(self, sequence=None, sequence_list=None, **kw):
+    packing_list = sequence.get('produced_report')
+    self.modifyPackingListState('adopt_prevision_action', sequence=sequence, packing_list=packing_list)
+
+  def stepAdoptPrevisionConsumedReport(self, sequence=None, sequence_list=None, **kw):
+    packing_list = sequence.get('consumed_report')
+    self.modifyPackingListState('adopt_prevision_action', sequence=sequence, packing_list=packing_list)
+
   def stepSetReadyProducedDeliveryPackingList(self, sequence=None, sequence_list=None, **kw):
     packing_list = sequence.get('produced_delivery_packing_list')
     self.modifyPackingListState('set_ready_action', sequence=sequence, packing_list=packing_list)
@@ -127,6 +143,21 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
     self.modifyPackingListState('deliver_action', sequence=sequence, packing_list=packing_list)
     self.assertEquals(packing_list.getSimulationState(), 'delivered')
 
+  def stepDeceraseProducedDeliveryPackingListQuantity(self, sequence=None, sequence_list=None, **kw):
+    packing_list = sequence.get('produced_delivery_packing_list')
+    
+    for line in packing_list.getMovementList():
+      line.edit(
+        quantity = line.getQuantity() - 1.0
+      )
+
+  def stepCheckSourcingDeliverySimulationDecerasedQuantity(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    """
+    TODO
+    """
+    self.logMessage('TODO')
+
   def stepCheckSourcingDeliverySimulation(self, sequence=None, \
                                     sequence_list=None, **kw):
     """
@@ -238,6 +269,24 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
       packing_list.getCausalityState()
     )
 
+  def stepCheckProducedDeliveryPackingListIsDiverged(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    packing_list = sequence.get('produced_delivery_packing_list')
+
+    self.assertEquals(
+      'diverged',
+      packing_list.getCausalityState()
+    )
+
+  def stepCheckProducedDeliveryPackingListIsCalculating(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    packing_list = sequence.get('produced_delivery_packing_list')
+
+    self.assertEquals(
+      'calculating',
+      packing_list.getCausalityState()
+    )
+
   def stepCheckSupplyDeliveryPackingListIsConfirmed(self, sequence=None, \
                                     sequence_list=None, **kw):
     packing_list = sequence.get('supply_delivery_packing_list')
@@ -256,6 +305,15 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
       packing_list.getCausalityState()
     )
 
+  def stepCheckSupplyDeliveryPackingListIsDiverged(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    packing_list = sequence.get('supply_delivery_packing_list')
+
+    self.assertEquals(
+      'diverged',
+      packing_list.getCausalityState()
+    )
+
   def stepCheckProducedReportIsConfirmed(self, sequence=None, \
                                     sequence_list=None, **kw):
     packing_list = sequence.get('produced_report')
@@ -274,6 +332,15 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
       packing_list.getCausalityState()
     )
 
+  def stepCheckProducedReportIsDiverged(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    packing_list = sequence.get('produced_report')
+
+    self.assertEquals(
+      'diverged',
+      packing_list.getCausalityState()
+    )
+
   def stepCheckConsumedReportIsConfirmed(self, sequence=None, \
                                     sequence_list=None, **kw):
     packing_list = sequence.get('consumed_report')
@@ -292,6 +359,15 @@ class TestProductionPackingReportListMixin(TestProductionOrderMixin, TestPacking
       packing_list.getCausalityState()
     )
 
+  def stepCheckConsumedReportIsDiverged(self, sequence=None, \
+                                    sequence_list=None, **kw):
+    packing_list = sequence.get('consumed_report')
+
+    self.assertEquals(
+      'diverged',
+      packing_list.getCausalityState()
+    )
+
 class TestProductionDelivery(TestProductionPackingReportListMixin):
   """Test Production Packing Lists and Reports, mostly based on Production Orders"""
 
@@ -414,7 +490,133 @@ class TestProductionDelivery(TestProductionPackingReportListMixin):
                       '
     sequence_list.addSequenceString(sequence_string)
 
-    # TODO: check case of solving divergence on every delivery
+    # Check a case, when Produced Delivery Packing List is diverged
+    # then accept this decision, next deliver it, then adopt prevision
+    # on rest of documents and deliver them - do it one by one
+    sequence_string = delivery_check_sequence_string + '\
+                      DeceraseProducedDeliveryPackingListQuantity \
+                      \
+                      CheckProducedDeliveryPackingListIsCalculating \
+                      Tic \
+                      CheckProducedDeliveryPackingListIsDiverged \
+                      AcceptDecisionProducedDeliveryPackingList \
+                      Tic \
+                      CheckProducedDeliveryPackingListIsSolved \
+                      CheckSourcingDeliverySimulationDecerasedQuantity \
+                      \
+                      CheckSupplyDeliveryPackingListIsConfirmed \
+                      CheckSupplyDeliveryPackingListIsDiverged\
+                      \
+                      CheckProducedReportIsConfirmed \
+                      CheckProducedReportIsDiverged\
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      SetReadyProducedDeliveryPackingList \
+                      StartProducedDeliveryPackingList \
+                      StopProducedDeliveryPackingList \
+                      DeliverProducedDeliveryPackingList \
+                      Tic \
+                      \
+                      CheckSourcingDeliverySimulationDecerasedQuantity \
+                      \
+                      CheckProducedDeliveryPackingListIsDelivered \
+                      CheckProducedDeliveryPackingListIsSolved\
+                      \
+                      CheckSupplyDeliveryPackingListIsConfirmed \
+                      CheckSupplyDeliveryPackingListIsDiverged\
+                      \
+                      CheckProducedReportIsConfirmed \
+                      CheckProducedReportIsDiverged\
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      AdoptPrevisionSupplyDeliveryPackingList \
+                      Tic \
+                      CheckSupplyDeliveryPackingListIsSolved \
+                      \
+                      CheckProducedReportIsConfirmed \
+                      CheckProducedReportIsDiverged\
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      SetReadySupplyDeliveryPackingList \
+                      StartSupplyDeliveryPackingList \
+                      StopSupplyDeliveryPackingList \
+                      DeliverSupplyDeliveryPackingList \
+                      Tic \
+                      \
+                      CheckSourcingDeliverySimulationDecerasedQuantity \
+                      \
+                      CheckProducedDeliveryPackingListIsDelivered \
+                      CheckProducedDeliveryPackingListIsSolved\
+                      \
+                      CheckSupplyDeliveryPackingListIsDelivered \
+                      CheckSupplyDeliveryPackingListIsSolved\
+                      \
+                      CheckProducedReportIsConfirmed \
+                      CheckProducedReportIsDiverged\
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      AdoptPrevisionProducedReport \
+                      Tic \
+                      CheckProducedReportIsSolved \
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      SetReadyProducedReport \
+                      StartProducedReport \
+                      StopProducedReport \
+                      DeliverProducedReport \
+                      Tic \
+                      \
+                      CheckSourcingDeliverySimulationDecerasedQuantity \
+                      \
+                      CheckProducedDeliveryPackingListIsDelivered \
+                      CheckProducedDeliveryPackingListIsSolved\
+                      \
+                      CheckSupplyDeliveryPackingListIsDelivered \
+                      CheckSupplyDeliveryPackingListIsSolved \
+                      \
+                      CheckProducedReportIsDelivered \
+                      CheckProducedReportIsSolved\
+                      \
+                      CheckConsumedReportIsConfirmed \
+                      CheckConsumedReportIsDiverged\
+                      \
+                      AdoptPrevisionConsumedReport \
+                      Tic \
+                      CheckProducedReportIsSolved \
+                      \
+                      SetReadyConsumedReport \
+                      StartConsumedReport \
+                      StopConsumedReport \
+                      DeliverConsumedReport \
+                      Tic \
+                      \
+                      CheckSourcingDeliverySimulationDecerasedQuantity \
+                      \
+                      CheckProducedDeliveryPackingListIsDelivered \
+                      CheckProducedDeliveryPackingListIsSolved\
+                      \
+                      CheckSupplyDeliveryPackingListIsDelivered \
+                      CheckSupplyDeliveryPackingListIsSolved\
+                      \
+                      CheckProducedReportIsDelivered \
+                      CheckProducedReportIsSolved\
+                      \
+                      CheckConsumedReportIsDelivered \
+                      CheckConsumedReportIsSolved\
+                      \
+                      '
+    sequence_list.addSequenceString(sequence_string)
+
     sequence_list.play(self)
 
 def test_suite():