diff --git a/product/ERP5/Tool/SolverTool.py b/product/ERP5/Tool/SolverTool.py
index a72a8d053950d30671026f94293e5e3d5dcbe4a6..a9a688b2fdb287bb18ccfbc72101758b1bf340b7 100644
--- a/product/ERP5/Tool/SolverTool.py
+++ b/product/ERP5/Tool/SolverTool.py
@@ -200,15 +200,18 @@ class SolverTool(TypeProvider):
     # etc. same
 
   def searchTargetSolverList(self, divergence_tester,
-                             tested_base_category_list=None, **kw):
+                             simulation_movement,
+                             automatic_solver_only=False, **kw):
     """
     this method returns a list of target solvers, as predicates against
-    divergence tester.
-    """
-    domain_tool = getToolByName(self.getPortalObject(), "portal_domains")
-
-    solver_list = domain_tool.searchPredicateList(
-      context=divergence_tester, portal_type='Solver Type',
-      tested_base_category_list=tested_base_category_list, **kw)
-
-    return solver_list
+    simulation movement.
+    """
+    # Target Solver only works for non-legacy testers.
+    if not interfaces.IEquivalenceTester.providedBy(divergence_tester):
+      return []
+    solver_list = divergence_tester.getSolverValueList()
+    if automatic_solver_only:
+      return [x for x in solver_list if x.isAutomaticSolver() and \
+              x.test(simulation_movement, **kw)]
+    else:
+      return [x for x in solver_list if x.test(simulation_movement, **kw)]