diff --git a/product/ERP5/tests/testTradeModelLine.py b/product/ERP5/tests/testTradeModelLine.py
index 3e2d5e5f0c08e882d88b2ca2c7dc773c16f7ebb4..e26cdb2165a84583db2290da2074c0445671794c 100644
--- a/product/ERP5/tests/testTradeModelLine.py
+++ b/product/ERP5/tests/testTradeModelLine.py
@@ -30,14 +30,13 @@
 import unittest
 import transaction
 
-from Products.ERP5.tests.testBPMCore import TestBPMMixin
+from Products.ERP5.tests.testERP5SimulationBPMCore import TestBPMMixin
 from Products.ERP5Type.tests.Sequence import SequenceList
 from DateTime import DateTime
 from Products.CMFCore.utils import getToolByName
 from Products.ERP5.PropertySheet.TradeModelLine import (TARGET_LEVEL_MOVEMENT,
                                                         TARGET_LEVEL_DELIVERY)
 from Products.ERP5Type.tests.utils import createZODBPythonScript
-from Products.ERP5Type.tests.backportUnittest import expectedFailure
 
 class TestTradeModelLineMixin(TestBPMMixin):
   """Provides methods to implementations sharing similar logic to Trade Model Lines"""
@@ -79,8 +78,6 @@ class TestTradeModelLine(TestTradeModelLineMixin):
   modified_invoice_line_quantity_ratio = modified_order_line_quantity_ratio \
       = 2.5
 
-  modified_packing_list_line_quantity_ratio = 0.5
-
   COMMON_DOCUMENTS_CREATION_SEQUENCE_STRING = """
               CreateServiceTax
               CreateServiceDiscount
@@ -133,6 +130,11 @@ class TestTradeModelLine(TestTradeModelLineMixin):
               Tic
   """ + AGGREGATED_AMOUNT_LIST_CHECK_SEQUENCE_STRING
 
+  # reset some values
+  def afterSetUp(self):
+    TestTradeModelLineMixin.afterSetUp(self)
+    self.modified_packing_list_line_quantity_ratio = 0.5
+
   # Helper methods
   def _solveDivergence(self, obj, property, decision, group='line'):
     kw = {'%s_group_listbox' % group:{}}
@@ -241,7 +243,15 @@ class TestTradeModelLine(TestTradeModelLineMixin):
 
   def stepAcceptDecisionQuantityInvoice(self, sequence=None, **kw):
     invoice = sequence.get('invoice')
-    self._solveDivergence(invoice, 'quantity', 'accept')
+    solver_tool = self.portal.portal_solvers
+    solver_process = solver_tool.newSolverProcess(invoice)
+    for quantity_solver_decision in filter(
+      lambda x:x.getCausalityValue().getTestedProperty()=='quantity',
+      solver_process.contentValues()):
+      # use Trade Model Solver.
+      quantity_solver_decision.setSolverValue(self.portal.portal_types['Trade Model Solver'])
+    solver_process.buildTargetSolverList()
+    solver_process.solve()
 
   def stepAdoptPrevisionQuantityInvoice(self, sequence=None, **kw):
     invoice = sequence.get('invoice')
@@ -2069,8 +2079,6 @@ class TestTradeModelLine(TestTradeModelLineMixin):
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self, quiet=quiet)
 
-  # This test does not work without implementing an appropriate Trade Model Solver.
-  @expectedFailure
   def test_TradeModelRuleSimulationBuildInvoiceInvoiceLineModifyDivergencyAndSolving(self, quiet=quiet):
     """Check that after changing invoice line invoice is properly diverged and it is possible to solve"""
     sequence_list = SequenceList()