diff --git a/product/ERP5/tests/testBPMCore.py b/product/ERP5/tests/testBPMCore.py
index 8b447cf8cfc0fcfd10da4b452dce310ef3b83b07..b81645d72339ffaad8dd6765827ce9d468fbebd7 100644
--- a/product/ERP5/tests/testBPMCore.py
+++ b/product/ERP5/tests/testBPMCore.py
@@ -326,20 +326,6 @@ class TestBPMMixin(ERP5TypeTestCase):
     self.setSystemPreference()
     self.createInvoiceTransationRule()
 
-    # XXX for testing purpose only...
-    # This builder is not supporting yet deeper simulation tree
-    # New one shall be done (decision making with
-    # DeliveryCausalityAssignmentMovementGroup), but right now it is enough
-    # to support invoice building that way
-    sale_invoice_builder, purchase_invoice_builder = self.portal. \
-        portal_deliveries.sale_invoice_builder, \
-        self.portal.portal_deliveries.purchase_invoice_builder
-    delete_id = 'causality_movement_group_on_delivery'
-    if getattr(sale_invoice_builder, delete_id, None) is not None:
-      sale_invoice_builder.manage_delObjects(ids=[delete_id])
-    if getattr(purchase_invoice_builder, delete_id, None) is not None:
-      purchase_invoice_builder.manage_delObjects(ids=[delete_id])
-
   @reindex
   def beforeTearDown(self):
     self.portal.portal_rules.manage_delObjects(
@@ -475,8 +461,11 @@ class TestBPMMixin(ERP5TypeTestCase):
     invoice = sequence.get('invoice')
     currency = sequence.get('price_currency')
     currency_precision = currency.getQuantityPrecision()
-    invoice_line_tax = sequence.get('invoice_line_tax')
-    invoice_line_discount = sequence.get('invoice_line_discount')
+    aggregated_amount_list_list = [
+      (q.getResourceValue().getUse(), q)
+      for q in invoice.getSpecialiseValue().getAggregatedAmountList(invoice)]
+    invoice_line_tax = [q[1] for q in aggregated_amount_list_list if q[0] == 'tax'][0]
+    invoice_line_discount = [q[1] for q in aggregated_amount_list_list if q[0] == 'discount'][0]
 
     movement_list = invoice.getMovementList(
         portal_type=invoice.getPortalAccountingMovementTypeList())
@@ -493,15 +482,17 @@ class TestBPMMixin(ERP5TypeTestCase):
     rounded_total_price = round(invoice.getTotalPrice(), currency_precision)
     rounded_tax_price = round(invoice_line_tax.getTotalPrice(),
         currency_precision)
+    rounded_discount_price = round(invoice_line_discount.getTotalPrice(),
+        currency_precision)
 
     self.assertEqual(abs(payable_receivable_line.getTotalPrice()),
-        rounded_total_price)
+        rounded_total_price + rounded_tax_price + rounded_discount_price)
 
     self.assertEqual(abs(vat_line.getTotalPrice()),
         rounded_tax_price)
 
     self.assertEquals(abs(income_expense_line.getTotalPrice()),
-        rounded_total_price - rounded_tax_price)
+        rounded_total_price + rounded_discount_price)
 
   def stepSetTradeConditionOld(self, sequence=None, **kw):
     trade_condition = sequence.get('trade_condition')
@@ -541,54 +532,6 @@ class TestBPMMixin(ERP5TypeTestCase):
       trade_condition = trade_condition,
     )
 
-  def stepCheckInvoiceTradeModelRelatedMovements(self, sequence=None, **kw):
-    # movement selection is done by hand, as no API is yet defined
-    invoice = sequence.get('invoice')
-    trade_condition = sequence.get('trade_condition')
-    trade_model_invoice_line_list = [q for q in invoice.getMovementList()
-        if q.getResourceValue().getUse() in ('discount','tax')]
-    self.assertEqual(2, len(trade_model_invoice_line_list))
-    invoice_line_tax = [q for q in trade_model_invoice_line_list if
-        q.getResourceValue().getUse() == 'tax' ][0]
-    invoice_line_discount = [q for q in trade_model_invoice_line_list if
-        q.getResourceValue().getUse() == 'discount' ][0]
-    sequence.edit(invoice_line_discount = invoice_line_discount)
-    sequence.edit(invoice_line_tax = invoice_line_tax)
-    amount_list = trade_condition.getAggregatedAmountList(invoice)
-    self.assertEquals(2, len(amount_list))
-    discount_amount_list = [q for q in amount_list
-        if q.getBaseApplication() == 'base_amount/discount']
-    tax_amount_list = [q for q in amount_list
-        if q.getBaseApplication() == 'base_amount/tax']
-
-    self.assertEquals(1, len(discount_amount_list))
-    self.assertEquals(1, len(tax_amount_list))
-
-    discount_amount = discount_amount_list[0]
-    tax_amount = tax_amount_list[0]
-
-    self.assertSameSet(discount_amount.getBaseApplicationList(),
-        invoice_line_discount.getBaseApplicationList())
-
-    self.assertSameSet(discount_amount.getBaseContributionList(),
-        invoice_line_discount.getBaseContributionList())
-
-    self.assertSameSet(tax_amount.getBaseApplicationList(),
-        invoice_line_tax.getBaseApplicationList())
-
-    self.assertSameSet(tax_amount.getBaseContributionList(),
-        invoice_line_tax.getBaseContributionList())
-
-    self.assertEqual(
-      invoice_line_discount.getTotalPrice(),
-      discount_amount.getTotalPrice()
-    )
-
-    self.assertEqual(
-      invoice_line_tax.getTotalPrice(),
-      tax_amount.getTotalPrice()
-    )
-
   def stepAcceptDecisionInvoice(self, sequence=None, **kw):
     invoice = sequence.get('invoice')
     invoice.portal_workflow.doActionFor(invoice,'accept_decision_action')
@@ -1705,13 +1648,12 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
     """
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
-  def test_TradeModelRuleSimulationBuildInvoiceNewTradeConditionDivergencyAndSolving(self):
-    """Check that after changing trade condition invoice is properly diverged and it is possible to solve"""
+  def test_TradeModelRuleSimulationBuildInvoiceNewTradeCondition(self):
+    """Check that after changing trade condition invoice is not diverged"""
     sequence_list = SequenceList()
     sequence_string = self.TRADE_MODEL_RULE_SIMULATION_SEQUENCE_STRING
     sequence_string += """
@@ -1730,7 +1672,6 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
 
               SetTradeConditionOld
 
@@ -1744,19 +1685,7 @@ class TestBPMTestCases(TestBPMMixin):
 
               SpecialiseInvoiceTradeCondition
               Tic
-              SetTradeConditionNew
-              GetOldTradeCondition
-              CheckInvoiceCausalityStateDiverged
-              CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
-
-              AdoptPrevisionQuantityInvoice
-              Tic
-
-              GetNewTradeCondition
               CheckInvoiceCausalityStateSolved
-              CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
     """
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
@@ -1785,11 +1714,6 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
-
-              GetInvoiceLineDiscounted
-              GetInvoiceLineDiscountedTaxed
-              GetInvoiceLineTaxed
 
               ModifyQuantityInvoiceLineDiscounted
               ModifyQuantityInvoiceLineDiscountedTaxed
@@ -1798,12 +1722,8 @@ class TestBPMTestCases(TestBPMMixin):
               CheckInvoiceCausalityStateDiverged
               AcceptDecisionQuantityInvoice
               Tic
-              CheckInvoiceCausalityStateDiverged
-              AdoptPrevisionQuantityInvoice
-              Tic
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
     """
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
@@ -1828,13 +1748,14 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
 
               StartInvoice
               Tic
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
+              GetInvoiceLineDiscounted
+              GetInvoiceLineDiscountedTaxed
+              GetInvoiceLineTaxed
               CheckInvoiceAccountingMovements
               StopInvoice
               DeliverInvoice
@@ -1868,7 +1789,6 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
 
               SetNewPackingListAsPackingList
               PackPackingList
@@ -1882,7 +1802,6 @@ class TestBPMTestCases(TestBPMMixin):
               GetInvoice
               CheckInvoiceCausalityStateSolved
               CheckInvoiceNormalMovements
-              CheckInvoiceTradeModelRelatedMovements
     """
 
   def test_TradeModelRuleSimulationPackingListSplitBuildInvoiceBuildDifferentRatio(self):