diff --git a/product/ERP5/Document/BusinessPath.py b/product/ERP5/Document/BusinessPath.py
index 24bfe3765236d42314cdea0d9f2143ba5c091667..a1c5f1252294c7a8086986a4f745505c223dfbaf 100644
--- a/product/ERP5/Document/BusinessPath.py
+++ b/product/ERP5/Document/BusinessPath.py
@@ -377,18 +377,17 @@ class BusinessPath(Path, Predicate):
       full simulation trees per applied rule
     """
     portal_catalog = self.getPortalObject().portal_catalog
-    root_applied_rule_list = []
+    root_applied_rule_set = set()
     delivery_simulation_movement_list = portal_catalog(
       delivery_uid=[x.getUid() for x in explanation.getMovementList()])
 
     for simulation_movement in delivery_simulation_movement_list:
       applied_rule = simulation_movement.getRootAppliedRule().getPath()
-      if applied_rule not in root_applied_rule_list:
-        root_applied_rule_list.append(applied_rule)
+      root_applied_rule_set.add(applied_rule)
 
     simulation_movement_list = portal_catalog(
       portal_type='Simulation Movement', causality_uid=self.getUid(),
-      path=['%s/%%' % x for x in root_applied_rule_list])
+      path=['%s/%%' % x for x in root_applied_rule_set])
 
     return [simulation_movement.getObject() for simulation_movement
           in simulation_movement_list