diff --git a/product/ERP5/TargetSolver/TargetSolver.py b/product/ERP5/TargetSolver/TargetSolver.py
index c7f2f69ec03d2e99670226823440eb561525ad31..a62e91d89cc0aac292967ac5484ac211c6ee2be3 100755
--- a/product/ERP5/TargetSolver/TargetSolver.py
+++ b/product/ERP5/TargetSolver/TargetSolver.py
@@ -89,8 +89,10 @@ class TargetSolver:
     # apply to all movements
     simulation_movement_list = movement.getDeliveryRelatedValueList(
          portal_type="Simulation Movement")
+    solved_movement_list = []
     for simulation_movement in simulation_movement_list:
-      self.solve(simulation_movement)
+      solved_movement_list.append(self.solve(simulation_movement))
+    return solved_movement_list
 
   def close(self):
     """
diff --git a/product/ERP5/Tool/SimulationTool.py b/product/ERP5/Tool/SimulationTool.py
index 213abdf775039aa87b9ad604704a730537c38d1b..92ec34ec346b602ae2dca088e8282230be5aaef8 100755
--- a/product/ERP5/Tool/SimulationTool.py
+++ b/product/ERP5/Tool/SimulationTool.py
@@ -117,7 +117,7 @@ class SimulationTool (BaseTool):
       """
         Solve a movement by calling DeliverySolver and TargetSolver
       """
-      self.solveMovementOrDelivery(movement, dsolver_name, tsolver_name,
+      return self.solveMovementOrDelivery(movement, dsolver_name, tsolver_name,
           movement=1,additional_parameters=additional_parameters,**kw)
       
     def solveMovementOrDelivery(self, obj, dsolver_name, tsolver_name, 
@@ -138,9 +138,9 @@ class SimulationTool (BaseTool):
           solver = solver_class(additional_parameters=additional_parameters,**kw)
 
           if movement:
-            solver.solveMovement(obj)
+            return solver.solveMovement(obj)
           if delivery:
-            solver.solveDelivery(obj)
+            return solver.solveDelivery(obj)
       
     #######################################################
     # Stock Management