diff --git a/bt5/erp5_accounting/PathTemplateItem/portal_rules/default_payment_simulation_rule.xml b/bt5/erp5_accounting/PathTemplateItem/portal_rules/default_payment_simulation_rule.xml
index a33d246e9ca4c404bd575d4ed5d395964ad5d211..be386964590d948a323f44bbeec09cbf99c60324 100644
--- a/bt5/erp5_accounting/PathTemplateItem/portal_rules/default_payment_simulation_rule.xml
+++ b/bt5/erp5_accounting/PathTemplateItem/portal_rules/default_payment_simulation_rule.xml
@@ -112,7 +112,7 @@
             <key> <string>test_method_id</string> </key>
             <value>
               <tuple>
-                <string>SimulationMovement_testPaymentRule</string>
+                <string>SimulationMovement_testPaymentSimulationRule</string>
               </tuple>
             </value>
         </item>
diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SimulationMovement_testPaymentSimulationRule.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SimulationMovement_testPaymentSimulationRule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ef60c1e43a7672ebbce2d711a0c9e1fb3abc7da
--- /dev/null
+++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/SimulationMovement_testPaymentSimulationRule.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>movement = context\n
+\n
+parent = movement.getParentValue()\n
+if parent.getPortalType() != \'Applied Rule\':\n
+  return False\n
+\n
+parent_rule = parent.getSpecialiseValue()\n
+if parent_rule.getPortalType() not in (\'Invoice Transaction Simulation Rule\',):\n
+  return False\n
+\n
+# XXX hardcoded\n
+receivable_account_type_list = (\'asset/receivable\',)\n
+payable_account_type_list = (\'liability/payable\',)\n
+\n
+for account in (movement.getSourceValue(portal_type=\'Account\'),\n
+                movement.getDestinationValue(portal_type=\'Account\')):\n
+  if account is not None:\n
+    account_type = account.getAccountType()\n
+    if account_type in receivable_account_type_list or \\\n
+        account_type in payable_account_type_list:\n
+      return True\n
+\n
+return False\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>rule</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>rule</string>
+                            <string>context</string>
+                            <string>movement</string>
+                            <string>_getattr_</string>
+                            <string>parent</string>
+                            <string>False</string>
+                            <string>parent_rule</string>
+                            <string>receivable_account_type_list</string>
+                            <string>payable_account_type_list</string>
+                            <string>_getiter_</string>
+                            <string>account</string>
+                            <string>None</string>
+                            <string>account_type</string>
+                            <string>True</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SimulationMovement_testPaymentRule</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_accounting/bt/revision b/bt5/erp5_accounting/bt/revision
index a2998a8b4a2933c91cb764a96e7da62984c6a245..1bbe7d811d867b45607930755e847ad5161ea9d1 100644
--- a/bt5/erp5_accounting/bt/revision
+++ b/bt5/erp5_accounting/bt/revision
@@ -1 +1 @@
-1120
\ No newline at end of file
+1121
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Simulation%20Rule/view.xml b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Simulation%20Rule/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b7a0e0ab4ad3d0ad3025289211e3e16cb872d7a
--- /dev/null
+++ b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Simulation%20Rule/view.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Expression" module="Products.CMFCore.Expression"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/Rule_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/divergence.xml b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/divergence.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3f86738a0060cccbd4db66f1326facefe7d382e9
--- /dev/null
+++ b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/divergence.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>divergence</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>2.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Divergence Testers</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Expression" module="Products.CMFCore.Expression"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/Rule_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/view.xml b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b237b4e70af55d8e59ed943ba1a2d5977f17183f
--- /dev/null
+++ b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule/view.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Expression" module="Products.CMFCore.Expression"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/InvoiceTransactionRule_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule/view.xml b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule/view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b7a0e0ab4ad3d0ad3025289211e3e16cb872d7a
--- /dev/null
+++ b/bt5/erp5_invoicing/ActionTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule/view.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="Expression" module="Products.CMFCore.Expression"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/Rule_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_cell.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_cell.xml
index 23c0f353e54cc4dcf07b5754ca574af14991d103..b1372cd04228b791e23dc9e48c245dd35533b030 100644
--- a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_cell.xml
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_cell.xml
@@ -3,7 +3,7 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <global name="CategoryMovementGroup" module="Products.ERP5Type.Document.CategoryMovementGroup"/>
+        <global name="MirrorCategoryMovementGroup" module="Products.ERP5Type.Document.MirrorCategoryMovementGroup"/>
         <tuple/>
       </tuple>
     </pickle>
@@ -34,7 +34,7 @@
         </item>
         <item>
             <key> <string>portal_type</string> </key>
-            <value> <string>Category Movement Group</string> </value>
+            <value> <string>Mirror Category Movement Group</string> </value>
         </item>
         <item>
             <key> <string>tested_property</string> </key>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_delivery.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_delivery.xml
index bc2ad009218d37fec25618fed0522ee1f723ccd5..767d5924df959af3e585acfa55deb9608e6d500d 100644
--- a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_delivery.xml
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_delivery.xml
@@ -3,7 +3,7 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <global name="CategoryMovementGroup" module="Products.ERP5Type.Document.CategoryMovementGroup"/>
+        <global name="MirrorCategoryMovementGroup" module="Products.ERP5Type.Document.MirrorCategoryMovementGroup"/>
         <tuple/>
       </tuple>
     </pickle>
@@ -34,7 +34,7 @@
         </item>
         <item>
             <key> <string>portal_type</string> </key>
-            <value> <string>Category Movement Group</string> </value>
+            <value> <string>Mirror Category Movement Group</string> </value>
         </item>
         <item>
             <key> <string>tested_property</string> </key>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_line.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_line.xml
index bab4bdb826b60cdefa894adfbe125733c154bc97..ad143256bac7a3e5cf850a9f0e1095947f66bb24 100644
--- a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_line.xml
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/category_movement_group_on_line.xml
@@ -3,7 +3,7 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <global name="CategoryMovementGroup" module="Products.ERP5Type.Document.CategoryMovementGroup"/>
+        <global name="MirrorCategoryMovementGroup" module="Products.ERP5Type.Document.MirrorCategoryMovementGroup"/>
         <tuple/>
       </tuple>
     </pickle>
@@ -34,7 +34,7 @@
         </item>
         <item>
             <key> <string>portal_type</string> </key>
-            <value> <string>Category Movement Group</string> </value>
+            <value> <string>Mirror Category Movement Group</string> </value>
         </item>
         <item>
             <key> <string>tested_property</string> </key>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/property_movement_group_on_delivery.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/property_movement_group_on_delivery.xml
index 6dea91d70c08448c5b571371c12a96a8655e839e..68c1de9cfdfddca2f1e306c931fcf2e6b42a34cb 100644
--- a/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/property_movement_group_on_delivery.xml
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_deliveries/payment_transaction_builder/property_movement_group_on_delivery.xml
@@ -3,7 +3,7 @@
   <record id="1" aka="AAAAAAAAAAE=">
     <pickle>
       <tuple>
-        <global name="PropertyMovementGroup" module="Products.ERP5Type.Document.PropertyMovementGroup"/>
+        <global name="MirrorPropertyMovementGroup" module="Products.ERP5Type.Document.MirrorPropertyMovementGroup"/>
         <tuple/>
       </tuple>
     </pickle>
@@ -34,7 +34,7 @@
         </item>
         <item>
             <key> <string>portal_type</string> </key>
-            <value> <string>Property Movement Group</string> </value>
+            <value> <string>Mirror Property Movement Group</string> </value>
         </item>
         <item>
             <key> <string>tested_property</string> </key>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ca81d4c0df73edb12a57934bb6229a35e626cb97
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="InvoiceSimulationRule" module="Products.ERP5Type.Document.InvoiceSimulationRule"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_identity_criterion</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <string>Simulation Movement</string>
+                      </list>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>start_date</string> </key>
+                    <value>
+                      <tuple>
+                        <none/>
+                        <none/>
+                      </tuple>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>criterion_property</string> </key>
+            <value>
+              <tuple>
+                <string>portal_type</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>default_invoicing_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>expandable_property</string> </key>
+            <value>
+              <tuple>
+                <string>source</string>
+                <string>source_section</string>
+                <string>source_decision</string>
+                <string>source_administration</string>
+                <string>source_project</string>
+                <string>source_function</string>
+                <string>source_payment</string>
+                <string>source_account</string>
+                <string>destination</string>
+                <string>destination_section</string>
+                <string>destination_decision</string>
+                <string>destination_administration</string>
+                <string>destination_project</string>
+                <string>destination_function</string>
+                <string>destination_payment</string>
+                <string>destination_account</string>
+                <string>start_date</string>
+                <string>stop_date</string>
+                <string>description</string>
+                <string>resource</string>
+                <string>variation_category_list</string>
+                <string>variation_property_dict</string>
+                <string>delivery_mode</string>
+                <string>incoterm</string>
+                <string>base_contribution_list</string>
+                <string>aggregate_list</string>
+                <string>quantity</string>
+                <string>quantity_unit</string>
+                <string>price</string>
+                <string>price_currency</string>
+                <string>efficiency</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_invoice_simulation_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>matching_property</string> </key>
+            <value>
+              <tuple>
+                <string>resource</string>
+                <string>variation_category_list</string>
+                <string>variation_property_dict</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Invoice Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>test_method_id</string> </key>
+            <value>
+              <tuple>
+                <string>SimulationMovement_testInvoiceSimulationRule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Default Invoice Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>2</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_category_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_category_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f8e133c400df06057468663041c1e39e5ce9cf9
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_category_tester.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="CategoryDivergenceTester" module="Products.ERP5Type.Document.CategoryDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_category_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Category Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>solver</string> </key>
+            <value>
+              <tuple>
+                <string>CopyToTarget</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>tested_property</string> </key>
+            <value>
+              <tuple>
+                <string>aggregate | Aggregate</string>
+                <string>base_application | Base Application</string>
+                <string>base_contribution | Base Contribution</string>
+                <string>destination | Destination</string>
+                <string>destination_account | Destination Account</string>
+                <string>destination_administration | Destination Administration</string>
+                <string>destination_decision | Destination Decision</string>
+                <string>destination_function | Destination Function</string>
+                <string>destination_payment | Destination Payment</string>
+                <string>destination_project | Destination Project</string>
+                <string>destination_section | Destination Section</string>
+                <string>price_currency | Price Currency</string>
+                <string>resource | Resource</string>
+                <string>source | Source</string>
+                <string>source_account | Source Account</string>
+                <string>source_administration | Source Administration</string>
+                <string>source_decision | Source Decision</string>
+                <string>source_function | Source Function</string>
+                <string>source_payment | Source Payment</string>
+                <string>source_project | Source Project</string>
+                <string>source_section | Source Section</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_property_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_property_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cfa35068bf575e78c6e24ef0b0dfb98e68c2166f
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_property_tester.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PropertyDivergenceTester" module="Products.ERP5Type.Document.PropertyDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_local_properties</string> </key>
+            <value>
+              <tuple>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>tested_property_list</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>string</string> </value>
+                  </item>
+                </dictionary>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_property_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>solver</string> </key>
+            <value>
+              <tuple>
+                <string>CopyToTarget</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>tested_property</string> </key>
+            <value>
+              <tuple>
+                <string>start_date | Start Date</string>
+                <string>stop_date | Stop Date</string>
+                <string>price | Price</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>tested_property_list</string> </key>
+            <value>
+              <tuple>
+                <string>aaa</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_quantity_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_quantity_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc509725a81014657120916e0e9737d5579479a2
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_simulation_rule/default_quantity_tester.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="QuantityDivergenceTester" module="Products.ERP5Type.Document.QuantityDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_quantity_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Quantity Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>property_tester</string> </key>
+            <value> <string>quantity</string> </value>
+        </item>
+        <item>
+            <key> <string>solver</string> </key>
+            <value>
+              <tuple>
+                <string>SplitAndDefer</string>
+                <string>CopyToTarget</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>solver_list</string> </key>
+            <value>
+              <tuple>
+                <string>Solver</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_transaction_simulation_rule.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_transaction_simulation_rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7c394b38f4a620d5f358d59febbb9fff98a7fdff
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_invoice_transaction_simulation_rule.xml
@@ -0,0 +1,316 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="InvoiceTransactionSimulationRule" module="Products.ERP5Type.Document.InvoiceTransactionSimulationRule"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_identity_criterion</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <string>Simulation Movement</string>
+                      </list>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>criterion_property</string> </key>
+            <value>
+              <tuple>
+                <string>portal_type</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>default_invoice_transaction_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>expandable_property</string> </key>
+            <value>
+              <tuple>
+                <string>destination_administration</string>
+                <string>destination_decision</string>
+                <string>destination_function</string>
+                <string>destination_payment</string>
+                <string>destination_project</string>
+                <string>destination_section</string>
+                <string>source_administration</string>
+                <string>source_decision</string>
+                <string>source_function</string>
+                <string>source_payment</string>
+                <string>source_project</string>
+                <string>source_section</string>
+                <string>start_date</string>
+                <string>stop_date</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_invoice_transaction_simulation_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>last_id</string> </key>
+            <value> <string>15</string> </value>
+        </item>
+        <item>
+            <key> <string>matching_property</string> </key>
+            <value>
+              <tuple>
+	        <string>destination</string>
+	        <string>destination_total_asset_price</string>
+	        <string>source</string>
+	        <string>source_total_asset_price</string>
+	        <string>resource</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Invoice Transaction Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>test_method_id</string> </key>
+            <value>
+              <tuple>
+                <string>SimulationMovement_testInvoiceTransactionSimulationRule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Default Invoice Transaction Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>2</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>movement</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>vat_per_region</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="6" aka="AAAAAAAAAAY=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="7" aka="AAAAAAAAAAc=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <int>0</int> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <int>1</int> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="8" aka="AAAAAAAAAAg=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>portal_rules/default_invoice_transaction_simulation_rule/4</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="9" aka="AAAAAAAAAAk=">
+    <pickle>
+      <tuple>
+        <tuple>
+          <string>Persistence</string>
+          <string>PersistentMapping</string>
+        </tuple>
+        <none/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_container</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>portal_rules/default_invoice_transaction_simulation_rule/10</string> </key>
+                    <value> <int>2</int> </value>
+                </item>
+                <item>
+                    <key> <string>portal_rules/default_invoice_transaction_simulation_rule/11</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>portal_rules/default_invoice_transaction_simulation_rule/12</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d9d54c8b8dd9c74e8903daf5a27819164410e7d
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="TradeModelSimulationRule" module="Products.ERP5Type.Document.TradeModelSimulationRule"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_identity_criterion</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>portal_type</string> </key>
+                    <value>
+                      <list>
+                        <string>Simulation Movement</string>
+                      </list>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>_local_properties</string> </key>
+            <value>
+              <tuple>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>expandable_property_list</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>lines</string> </value>
+                  </item>
+                </dictionary>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>start_date</string> </key>
+                    <value>
+                      <tuple>
+                        <none/>
+                        <none/>
+                      </tuple>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>criterion_property</string> </key>
+            <value>
+              <tuple>
+                <string>portal_type</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>default_trade_model_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>expandable_property</string> </key>
+            <value>
+              <tuple>
+                <string>aggregate_list</string>
+                <string>delivery_mode_list</string>
+                <string>description</string>
+                <string>destination_account_list</string>
+                <string>destination_administration_list</string>
+                <string>destination_decision_list</string>
+                <string>destination_function_list</string>
+                <string>destination_list</string>
+                <string>destination_payment_list</string>
+                <string>destination_section_list</string>
+                <string>incoterm_list</string>
+                <string>price_currency_list</string>
+                <string>resource_list</string>
+                <string>source_account_list</string>
+                <string>source_administration_list</string>
+                <string>source_decision_list</string>
+                <string>source_function_list</string>
+                <string>source_list</string>
+                <string>source_payment_list</string>
+                <string>source_section_list</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_trade_model_simulation_rule</string> </value>
+        </item>
+        <item>
+            <key> <string>last_id</string> </key>
+            <value> <string>3</string> </value>
+        </item>
+        <item>
+            <key> <string>matching_property</string> </key>
+            <value>
+              <tuple>
+                <string>reference</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Trade Model Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>test_method_id</string> </key>
+            <value>
+              <tuple>
+                <string>SimulationMovement_testTradeModelSimulationRule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Default Trade Model Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>2</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees._OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_category_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_category_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b9e5a42bb9532d989b47d814d2c597d213941adc
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_category_tester.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="CategoryDivergenceTester" module="Products.ERP5Type.Document.CategoryDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_category_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Category Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>tested_property</string> </key>
+            <value>
+              <tuple>
+                <string>resource_list | Resource</string>
+                <string>source_section_list | Source Section</string>
+                <string>destination_section_list | Destination Section</string>
+                <string>source_list | Source</string>
+                <string>destination_list | Destination</string>
+                <string>source_function_list | Source Function</string>
+                <string>destination_function_list | Destination Function</string>
+                <string>source_project_list | Source Project</string>
+                <string>destination_project_list | Destination Project</string>
+                <string>aggregate_list | Aggregate</string>
+                <string>price_currency_list | Price Currency</string>
+                <string>base_contribution_list | Base Contribution</string>
+                <string>base_application_list | Base Application</string>
+                <string>source_account_list | Source Account</string>
+                <string>destination_account_list | Destination Account</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>default_category_tester</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_property_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_property_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..de298c73acab38e722213308baafcb754c9ba9f0
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_property_tester.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PropertyDivergenceTester" module="Products.ERP5Type.Document.PropertyDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_property_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>tested_property</string> </key>
+            <value>
+              <tuple>
+                <string>start_date | Start Date</string>
+                <string>stop_date | Stop Date</string>
+                <string>price | Price</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>default_property_tester</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_quantity_tester.xml b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_quantity_tester.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e8d3126c84c2a2f350abede1c69e0792c5834162
--- /dev/null
+++ b/bt5/erp5_invoicing/PathTemplateItem/portal_rules/default_trade_model_simulation_rule/default_quantity_tester.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="QuantityDivergenceTester" module="Products.ERP5Type.Document.QuantityDivergenceTester"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>decimal_alignment_enabled</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>decimal_exponent</string> </key>
+            <value> <string>0.000001</string> </value>
+        </item>
+        <item>
+            <key> <string>decimal_rounding_option</string> </key>
+            <value> <string>ROUND_DOWN</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>default_quantity_tester</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Quantity Divergence Tester</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>default_quantity_tester</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_invoicing/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
index 4a3b021c064127ed8ec4d84327ee993602a0f6e5..691f694c1ca4371055820609ceb9dbe8bb52c9eb 100644
--- a/bt5/erp5_invoicing/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
+++ b/bt5/erp5_invoicing/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
@@ -3,6 +3,11 @@
   <item>Invoice Cell</item>
   <item>Invoice Line</item>
  </portal_type>
+ <portal_type id="Invoice Simulation Rule">
+  <item>Category Divergence Tester</item>
+  <item>Property Divergence Tester</item>
+  <item>Quantity Divergence Tester</item>
+ </portal_type>
  <portal_type id="Invoice Transaction Rule">
   <item>Accounting Rule Cell</item>
   <item>Category Divergence Tester</item>
@@ -10,19 +15,34 @@
   <item>Property Divergence Tester</item>
   <item>Quantity Divergence Tester</item>
  </portal_type>
+ <portal_type id="Invoice Transaction Simulation Rule">
+  <item>Accounting Rule Cell</item>
+  <item>Category Divergence Tester</item>
+  <item>Predicate</item>
+  <item>Property Divergence Tester</item>
+  <item>Quantity Divergence Tester</item>
+ </portal_type>
  <portal_type id="Invoicing Rule">
   <item>Category Divergence Tester</item>
   <item>Property Divergence Tester</item>
   <item>Quantity Divergence Tester</item>
  </portal_type>
  <portal_type id="Rule Tool">
+  <item>Invoice Simulation Rule</item>
   <item>Invoice Transaction Rule</item>
+  <item>Invoice Transaction Simulation Rule</item>
   <item>Invoicing Rule</item>
   <item>Trade Model Rule</item>
+  <item>Trade Model Simulation Rule</item>
  </portal_type>
  <portal_type id="Trade Model Rule">
   <item>Category Divergence Tester</item>
   <item>Property Divergence Tester</item>
   <item>Quantity Divergence Tester</item>
  </portal_type>
+ <portal_type id="Trade Model Simulation Rule">
+  <item>Category Divergence Tester</item>
+  <item>Property Divergence Tester</item>
+  <item>Quantity Divergence Tester</item>
+ </portal_type>
 </allowed_content_type_list>
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Simulation%20Rule.xml b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Simulation%20Rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..738663212b62539201a19e5577ae5d60f6bdf95a
--- /dev/null
+++ b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Simulation%20Rule.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ERP5TypeInformation" module="Products.ERP5Type.ERP5Type"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>document.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Invoice Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>      Transformation Sourcing Rule object make sure\n
+      items required in a Transformation are sourced\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addInvoiceSimulationRule</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>rule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Invoice Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule.xml b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd3f014a8bd4fb1bf856054e1ef19d06c9e93ee4
--- /dev/null
+++ b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Invoice%20Transaction%20Simulation%20Rule.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ERP5TypeInformation" module="Products.ERP5Type.ERP5Type"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>document.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Invoice Transaction Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>      Invoice Transaction Simulation Rule object make sure an Invoice in the simulation\n
+      is consistent with the real invoice\n
+\n
+      WARNING: what to do with movement split ?\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addInvoiceTransactionSimulationRule</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>rule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Invoice Transaction Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule.xml b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b1856b7df94bf1c4311406b0002df8fdee8f9efa
--- /dev/null
+++ b/bt5/erp5_invoicing/PortalTypeTemplateItem/portal_types/Trade%20Model%20Simulation%20Rule.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ERP5TypeInformation" module="Products.ERP5Type.ERP5Type"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>rule_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Trade Model Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addTradeModelSimulationRule</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>rule</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Trade Model Simulation Rule</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/bt5/erp5_invoicing/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
index b6ab4757d29d7e97911395d53995c9d5a1e9c948..816a99f9a944c7618bde7d0bd801eeb298a65b51 100644
--- a/bt5/erp5_invoicing/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+++ b/bt5/erp5_invoicing/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -7,10 +7,18 @@
   <type>Invoice Line</type>
   <workflow>delivery_movement_causality_interaction_workflow, delivery_movement_simulation_interaction_workflow, edit_workflow, movement_base_contribution_interaction_workflow, pricing_interaction_workflow, trade_matrix_workflow</workflow>
  </chain>
+ <chain>
+  <type>Invoice Simulation Rule</type>
+  <workflow>edit_workflow, rule_validation_workflow</workflow>
+ </chain>
  <chain>
   <type>Invoice Transaction Rule</type>
   <workflow>edit_workflow, rule_interaction_workflow, rule_validation_workflow</workflow>
  </chain>
+ <chain>
+  <type>Invoice Transaction Simulation Rule</type>
+  <workflow>edit_workflow, rule_interaction_workflow, rule_validation_workflow</workflow>
+ </chain>
  <chain>
   <type>Invoicing Rule</type>
   <workflow>edit_workflow, rule_validation_workflow</workflow>
@@ -19,4 +27,8 @@
   <type>Trade Model Rule</type>
   <workflow>edit_workflow, rule_validation_workflow</workflow>
  </chain>
+ <chain>
+  <type>Trade Model Simulation Rule</type>
+  <workflow>edit_workflow, rule_validation_workflow</workflow>
+ </chain>
 </workflow_chain>
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectDelivery.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectDelivery.xml
index e107aed0505c8d09f48af2c18878a9275549b2ec..8f318b17534390c8bde71c1ef4de45c7f4632eaa 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectDelivery.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectDelivery.xml
@@ -65,7 +65,7 @@ for movement in movement_list:\n
   line = None\n
 \n
   # case of tax movement  \n
-  if ar.getSpecialiseValue().getPortalType() == \'Tax Rule\':\n
+  if ar.getSpecialiseValue().getPortalType() in (\'Tax Rule\', \'Tax Simulation Rule\'):\n
     for other_rule in ar.getParentValue().contentValues():\n
       if other_rule == ar:\n
         continue\n
@@ -73,7 +73,7 @@ for movement in movement_list:\n
         line = sm.getDeliveryValue()\n
 \n
   # case of trade model movement\n
-  if ar.getParentValue().getParentValue().getSpecialiseValue().getPortalType() == \'Trade Model Rule\':\n
+  if ar.getParentValue().getParentValue().getSpecialiseValue().getPortalType() in (\'Trade Model Rule\', \'Trade Model Simulation Rule\'):\n
     line = ar.getParentValue().getParentValue().getParentValue().getDeliveryValue()\n
 \n
   # in case of invoice rule (ie. starting from Invoice)\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectInvoiceMovement.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectInvoiceMovement.xml
index ae323340b11df6e384d28e95ebc09c29d8df3317..f5b97f2d6ad2d9d44063ae0268d4ba0e8209eb89 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectInvoiceMovement.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/InvoiceTransaction_selectInvoiceMovement.xml
@@ -59,9 +59,9 @@ Simulation Movements can come from normal Invoice Transaction Rule\n
 and same rule which is children of Trade Model Rule """\n
 \n
 # search for normal movements\n
-kw[\'parent_specialise_portal_type\'] = \'Invoice Transaction Rule\'\n
+kw[\'parent_specialise_portal_type\'] = [\'Invoice Transaction Rule\', \'Invoice Transaction Simulation Rule\']\n
 kw[\'grand_grand_parent_specialise_portal_type\'] = [\n
-             \'Invoicing Rule\', \'Invoice Rule\', \'Invoice Root Simulation Rule\', \'Tax Rule\']\n
+             \'Invoicing Rule\', \'Invoice Simulation Rule\', \'Invoice Rule\', \'Invoice Root Simulation Rule\', \'Tax Rule\']\n
 if context.Invoice_isAdvanced():\n
   kw[\'explanation_portal_type\']       = [\'%s Order\' % trade_type,\n
                                          \'%s Invoice\' % trade_type,\n
@@ -80,7 +80,7 @@ normal_movement_list = [movement for movement in context.InvoiceTransaction_zSel
 \n
 # update query to search for movements which are children of Trade Model Rule\n
 kw.pop(\'grand_parent_simulation_state\')\n
-kw[\'grand_grand_parent_specialise_portal_type\'] = \'Trade Model Rule\'\n
+kw[\'grand_grand_parent_specialise_portal_type\'] = [\'Trade Model Rule\', \'Trade Model Simulation Rule\']\n
 kw[\'grand_grand_grand_parent_simulation_state\'] = [\'started\']\n
 \n
 search_kw = kw.copy()\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoiceTransaction_selectPackingListMovement.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoiceTransaction_selectPackingListMovement.xml
index 82ba39074819388aad74ae6d0f82d79d6d6685e1..6d6ded49551802068100f10aadd5d2fbbeea9103 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoiceTransaction_selectPackingListMovement.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoiceTransaction_selectPackingListMovement.xml
@@ -53,7 +53,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>kw[\'parent_specialise_portal_type\']  = \'Invoicing Rule\'\n
+            <value> <string>kw[\'parent_specialise_portal_type\']  = [\'Invoicing Rule\', \'Invoice Simulation Rule\']\n
 kw[\'explanation_portal_type\']        = [\'Purchase Order\', \'Purchase Packing List\']\n
 kw[\'portal_type\']                    = \'Simulation Movement\'\n
 kw[\'grand_parent_simulation_state\']  = [\'started\', \'stopped\',\'delivered\']\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoice_selectTradeModelMovementList.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoice_selectTradeModelMovementList.xml
index 393d8ca99d8c2d22a1447afe65e7f59790762e2b..5fea561aa44dbb1b7358b9080d5f332089b5c8c5 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoice_selectTradeModelMovementList.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/PurchaseInvoice_selectTradeModelMovementList.xml
@@ -53,7 +53,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>kw[\'parent_specialise_portal_type\']  = \'Trade Model Rule\'\n
+            <value> <string>kw[\'parent_specialise_portal_type\']  = [\'Trade Model Rule\', \'Trade Model Simulation Rule\']\n
 kw[\'explanation_portal_type\']        = [\'Purchase Order\', \'Purchase Packing List\', \'Purchase Invoice Transaction\', \'Purchase Invoice\']\n
 kw[\'portal_type\']                    = \'Simulation Movement\'\n
 kw[\'grand_parent_simulation_state\']  = [\'started\', \'stopped\', \'delivered\', \'planned\', \'confirmed\']\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoiceTransaction_selectPackingListMovement.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoiceTransaction_selectPackingListMovement.xml
index 6d76bf54d502b5bd3303b553c28dc01d11ed3165..736c3c7d44baf52043e5bb22b96108bc111496fe 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoiceTransaction_selectPackingListMovement.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoiceTransaction_selectPackingListMovement.xml
@@ -53,7 +53,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>kw[\'parent_specialise_portal_type\']  = \'Invoicing Rule\'\n
+            <value> <string>kw[\'parent_specialise_portal_type\']  = [\'Invoicing Rule\', \'Invoice Simulation Rule\']\n
 kw[\'explanation_portal_type\']        = [\'Sale Order\', \'Sale Packing List\']\n
 kw[\'portal_type\']                    = \'Simulation Movement\'\n
 kw[\'grand_parent_simulation_state\']  = [\'started\', \'stopped\',\'delivered\']\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoice_selectTradeModelMovementList.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoice_selectTradeModelMovementList.xml
index fed4d53feb4628dae33726e2bac52419231bb480..6eaeeb60ed9a258c55d104f107da1e62fca79e2c 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoice_selectTradeModelMovementList.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SaleInvoice_selectTradeModelMovementList.xml
@@ -53,7 +53,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>kw[\'parent_specialise_portal_type\']  = \'Trade Model Rule\'\n
+            <value> <string>kw[\'parent_specialise_portal_type\']  = [\'Trade Model Rule\', \'Trade Model Simulation Rule\']\n
 kw[\'explanation_portal_type\']        = [\'Sale Order\', \'Sale Packing List\', \'Sale Invoice Transaction\', \'Sale Invoice\']\n
 kw[\'portal_type\']                    = \'Simulation Movement\'\n
 kw[\'grand_parent_simulation_state\']  = [\'started\', \'stopped\', \'delivered\', \'planned\', \'confirmed\']\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceSimulationRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceSimulationRule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7c2ae1d079a2b2c0062d6fe8d92ac462f6b9e462
--- /dev/null
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceSimulationRule.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>movement = context\n
+\n
+parent = movement.getParentValue()\n
+if parent.getPortalType() == \'Applied Rule\':\n
+  parent_rule = parent.getSpecialiseValue()\n
+  parent_rule_portal_type = parent_rule.getPortalType()\n
+  if parent_rule_portal_type not in [\'Delivery Root Simulation Rule\', \'Delivery Simulation Rule\']:\n
+    return False\n
+  # XXX can we create invoicing rule for Production Order?\n
+  if parent_rule_portal_type in [\'Delivery Simulation Rule\',] and \\\n
+      parent.getParentValue().getParentValue().getSpecialiseValue().getPortalType() not in [\'Order Root Simulation Rule\']:\n
+    return False\n
+\n
+source_section = movement.getSourceSection()\n
+destination_section = movement.getDestinationSection()\n
+if source_section == destination_section or source_section is None \\\n
+    or destination_section is None:\n
+  return False\n
+\n
+return True\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>rule</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>rule</string>
+                            <string>context</string>
+                            <string>movement</string>
+                            <string>_getattr_</string>
+                            <string>parent</string>
+                            <string>parent_rule</string>
+                            <string>parent_rule_portal_type</string>
+                            <string>False</string>
+                            <string>source_section</string>
+                            <string>destination_section</string>
+                            <string>None</string>
+                            <string>True</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SimulationMovement_testInvoicingRule</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionRule.xml
index 2c38fc676476198e3c47d48fa0ee17f49fcbd455..d00e96a4ed98fec32002c74e40ba6deb6019e930 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionRule.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionRule.xml
@@ -61,7 +61,6 @@ if parent.getPortalType() != \'Applied Rule\':\n
 \n
 parent_rule = parent.getSpecialiseValue()\n
 if parent_rule.getPortalType() not in (\'Invoice Rule\',\n
-                                       \'Invoice Root Simulation Rule\',\n
                                        \'Invoicing Rule\',\n
                                        \'Trade Model Rule\',\n
                                        \'Tax Rule\'):\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionSimulationRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionSimulationRule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81a322fd5846f55f37fe197c41444bdfe47f5802
--- /dev/null
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoiceTransactionSimulationRule.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>movement = context\n
+\n
+parent = movement.getParentValue()\n
+if parent.getPortalType() != \'Applied Rule\':\n
+  return False\n
+\n
+parent_rule = parent.getSpecialiseValue()\n
+if parent_rule.getPortalType() not in (\'Invoice Root Simulation Rule\',\n
+                                       \'Invoice Simulation Rule\',\n
+                                       \'Trade Model Simulation Rule\',\n
+                                       \'Tax Simulation Rule\'):\n
+  return False\n
+\n
+delivery_movement = movement.getDeliveryValue()\n
+if delivery_movement is not None and (\n
+   delivery_movement.getPortalType() not in movement.getPortalInvoiceMovementTypeList()\n
+    and delivery_movement.getPortalType() not in movement.getPortalTaxMovementTypeList()):\n
+  return False\n
+\n
+return rule.getMatchingCell(movement) is not None\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>rule</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>rule</string>
+                            <string>context</string>
+                            <string>movement</string>
+                            <string>_getattr_</string>
+                            <string>parent</string>
+                            <string>False</string>
+                            <string>parent_rule</string>
+                            <string>delivery_movement</string>
+                            <string>None</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SimulationMovement_testInvoiceTransactionRule</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoicingRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoicingRule.xml
index dc94e4ddd4db82813f1294c0f51e32f0dd9d9672..84516b5a1d1a4afcc3565b9f8e552806c573f5fe 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoicingRule.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testInvoicingRule.xml
@@ -59,11 +59,7 @@ parent = movement.getParentValue()\n
 if parent.getPortalType() == \'Applied Rule\':\n
   parent_rule = parent.getSpecialiseValue()\n
   parent_rule_portal_type = parent_rule.getPortalType()\n
-  if parent_rule_portal_type not in [\'Order Rule\', \'Delivery Rule\', \'Delivery Root Simulation Rule\', \'Delivery Simulation Rule\']:\n
-    return False\n
-  # XXX can we create invoicing rule for Production Order?\n
-  if parent_rule_portal_type in [\'Delivery Simulation Rule\',] and \\\n
-      parent.getParentValue().getParentValue().getSpecialiseValue().getPortalType() not in [\'Order Root Simulation Rule\']:\n
+  if parent_rule_portal_type not in [\'Order Rule\', \'Delivery Rule\']:\n
     return False\n
 \n
 source_section = movement.getSourceSection()\n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelRule.xml
index 1d7cadf561a1a4987893613b5956e6deae80c44c..c2513cc52ee0392c7d8666d42fa13c2172183ffb 100644
--- a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelRule.xml
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelRule.xml
@@ -61,7 +61,6 @@ if parent.getPortalType() != \'Applied Rule\':\n
 \n
 parent_rule = parent.getSpecialiseValue()\n
 if parent_rule.getPortalType() not in (\'Invoice Rule\',\n
-                                       \'Invoice Root Simulation Rule\',\n
                                        \'Invoicing Rule\'):\n
   return False\n
 \n
diff --git a/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelSimulationRule.xml b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelSimulationRule.xml
new file mode 100644
index 0000000000000000000000000000000000000000..671cc3d8936ea1492845da87aba9f73001e1a10b
--- /dev/null
+++ b/bt5/erp5_invoicing/SkinTemplateItem/portal_skins/erp5_invoicing/SimulationMovement_testTradeModelSimulationRule.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>movement = context\n
+\n
+parent = movement.getParentValue()\n
+if parent.getPortalType() != \'Applied Rule\':\n
+  return False\n
+\n
+parent_rule = parent.getSpecialiseValue()\n
+if parent_rule.getPortalType() not in (\'Invoice Root Simulation Rule\',\n
+                                       \'Invoice Simulation Rule\'):\n
+  return False\n
+\n
+return True\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>rule</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>rule</string>
+                            <string>context</string>
+                            <string>movement</string>
+                            <string>_getattr_</string>
+                            <string>parent</string>
+                            <string>False</string>
+                            <string>parent_rule</string>
+                            <string>True</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>SimulationMovement_testTradeModelRule</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_invoicing/bt/revision b/bt5/erp5_invoicing/bt/revision
index 57065cd57b16f67df35e4b5d4d7ef5844aa9d80e..136c8cacf37562e0e40c7ee7fe9b30e214a616d1 100644
--- a/bt5/erp5_invoicing/bt/revision
+++ b/bt5/erp5_invoicing/bt/revision
@@ -1 +1 @@
-341
\ No newline at end of file
+342
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/bt/template_action_path_list b/bt5/erp5_invoicing/bt/template_action_path_list
index 211b55d7bb91bf42409a7cf359819a80542fd1f3..39233e950c05a9aaed1000dae4c142f64943c003 100644
--- a/bt5/erp5_invoicing/bt/template_action_path_list
+++ b/bt5/erp5_invoicing/bt/template_action_path_list
@@ -2,7 +2,11 @@ Invoice Line | price
 Invoice Line | quantity
 Invoice Line | view
 Invoice Line | view_trade_model
+Invoice Simulation Rule | view
 Invoice Transaction Rule | divergence
 Invoice Transaction Rule | view
+Invoice Transaction Simulation Rule | divergence
+Invoice Transaction Simulation Rule | view
 Invoicing Rule | view
-Trade Model Rule | view
\ No newline at end of file
+Trade Model Rule | view
+Trade Model Simulation Rule | view
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/bt/template_path_list b/bt5/erp5_invoicing/bt/template_path_list
index ae47e2584d2888fedd6ba6ba80d9bbd72836e059..118b4c7fdddc5325ec52b58eafffbb8aca1cc135 100644
--- a/bt5/erp5_invoicing/bt/template_path_list
+++ b/bt5/erp5_invoicing/bt/template_path_list
@@ -1,8 +1,14 @@
 portal_deliveries/payment_transaction_builder
 portal_deliveries/payment_transaction_builder/**
+portal_rules/default_invoice_simulation_rule
+portal_rules/default_invoice_simulation_rule/**
 portal_rules/default_invoice_transaction_rule
 portal_rules/default_invoice_transaction_rule/**
+portal_rules/default_invoice_transaction_simulation_rule
+portal_rules/default_invoice_transaction_simulation_rule/**
 portal_rules/default_invoicing_rule
 portal_rules/default_invoicing_rule/**
 portal_rules/default_trade_model_rule
-portal_rules/default_trade_model_rule/**
\ No newline at end of file
+portal_rules/default_trade_model_rule/**
+portal_rules/default_trade_model_simulation_rule
+portal_rules/default_trade_model_simulation_rule/**
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_invoicing/bt/template_portal_type_allowed_content_type_list
index 70b242855729793a22e561b525a03c7a2398195d..c92661585a40ed52bb8aaf3c40966546afaf27e5 100644
--- a/bt5/erp5_invoicing/bt/template_portal_type_allowed_content_type_list
+++ b/bt5/erp5_invoicing/bt/template_portal_type_allowed_content_type_list
@@ -1,16 +1,30 @@
 Invoice Line | Invoice Cell
 Invoice Line | Invoice Line
+Invoice Simulation Rule | Category Divergence Tester
+Invoice Simulation Rule | Property Divergence Tester
+Invoice Simulation Rule | Quantity Divergence Tester
 Invoice Transaction Rule | Accounting Rule Cell
 Invoice Transaction Rule | Category Divergence Tester
 Invoice Transaction Rule | Predicate
 Invoice Transaction Rule | Property Divergence Tester
 Invoice Transaction Rule | Quantity Divergence Tester
+Invoice Transaction Simulation Rule | Accounting Rule Cell
+Invoice Transaction Simulation Rule | Category Divergence Tester
+Invoice Transaction Simulation Rule | Predicate
+Invoice Transaction Simulation Rule | Property Divergence Tester
+Invoice Transaction Simulation Rule | Quantity Divergence Tester
 Invoicing Rule | Category Divergence Tester
 Invoicing Rule | Property Divergence Tester
 Invoicing Rule | Quantity Divergence Tester
+Rule Tool | Invoice Simulation  Rule
 Rule Tool | Invoice Transaction Rule
+Rule Tool | Invoice Transaction Simulation Rule
 Rule Tool | Invoicing Rule
 Rule Tool | Trade Model Rule
+Rule Tool | Trade Model Simulation Rule
 Trade Model Rule | Category Divergence Tester
 Trade Model Rule | Property Divergence Tester
-Trade Model Rule | Quantity Divergence Tester
\ No newline at end of file
+Trade Model Rule | Quantity Divergence Tester
+Trade Model Simulation Rule | Category Divergence Tester
+Trade Model Simulation Rule | Property Divergence Tester
+Trade Model Simulation Rule | Quantity Divergence Tester
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/bt/template_portal_type_id_list b/bt5/erp5_invoicing/bt/template_portal_type_id_list
index 13469d165edb446a10d8eada2caa811337e32272..e08c3913e499240ebe31b62d3e2f0e4569654301 100644
--- a/bt5/erp5_invoicing/bt/template_portal_type_id_list
+++ b/bt5/erp5_invoicing/bt/template_portal_type_id_list
@@ -1,5 +1,8 @@
 Invoice Cell
 Invoice Line
+Invoice Simulation Rule
 Invoice Transaction Rule
+Invoice Transaction Simulation Rule
 Invoicing Rule
-Trade Model Rule
\ No newline at end of file
+Trade Model Rule
+Trade Model Simulation Rule
\ No newline at end of file
diff --git a/bt5/erp5_invoicing/bt/template_portal_type_workflow_chain_list b/bt5/erp5_invoicing/bt/template_portal_type_workflow_chain_list
index 90bd86fabde8b5bbb84a588e5f8c8afcb71d2e8a..ebb69ba53bf24a20deae51c9532112924a68b590 100644
--- a/bt5/erp5_invoicing/bt/template_portal_type_workflow_chain_list
+++ b/bt5/erp5_invoicing/bt/template_portal_type_workflow_chain_list
@@ -8,10 +8,17 @@ Invoice Line | edit_workflow
 Invoice Line | movement_base_contribution_interaction_workflow
 Invoice Line | pricing_interaction_workflow
 Invoice Line | trade_matrix_workflow
+Invoice Simulation Rule | edit_workflow
+Invoice Simulation Rule | rule_validation_workflow
 Invoice Transaction Rule | edit_workflow
 Invoice Transaction Rule | rule_interaction_workflow
 Invoice Transaction Rule | rule_validation_workflow
+Invoice Transaction Simulation Rule | edit_workflow
+Invoice Transaction Simulation Rule | rule_interaction_workflow
+Invoice Transaction Simulation Rule | rule_validation_workflow
 Invoicing Rule | edit_workflow
 Invoicing Rule | rule_validation_workflow
 Trade Model Rule | edit_workflow
-Trade Model Rule | rule_validation_workflow
\ No newline at end of file
+Trade Model Rule | rule_validation_workflow
+Trade Model Simulation Rule | edit_workflow
+Trade Model Simulation Rule | rule_validation_workflow
\ No newline at end of file
diff --git a/product/ERP5/Document/InvoiceSimulationRule.py b/product/ERP5/Document/InvoiceSimulationRule.py
new file mode 100644
index 0000000000000000000000000000000000000000..ed3abf34eabbf53b107b434cff4308bfe0c84d07
--- /dev/null
+++ b/product/ERP5/Document/InvoiceSimulationRule.py
@@ -0,0 +1,44 @@
+##############################################################################
+#
+# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+from Products.ERP5.Document.InvoicingRule import InvoicingRule
+
+class InvoiceSimulationRule(InvoicingRule):
+  """
+    Invoice Simulation Rule expand simulation created by a order or delivery rule.
+  """
+
+  # CMF Type Definition
+  meta_type = 'ERP5 Invoice Simulation Rule'
+  portal_type = 'Invoice Simulation Rule'
+  add_permission = Permissions.AddPortalContent
+
+  # Declarative security
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)
diff --git a/product/ERP5/Document/InvoiceTransactionSimulationRule.py b/product/ERP5/Document/InvoiceTransactionSimulationRule.py
new file mode 100644
index 0000000000000000000000000000000000000000..95e8863fb9e2b4ef6b79033108ca3c3eec0f7c12
--- /dev/null
+++ b/product/ERP5/Document/InvoiceTransactionSimulationRule.py
@@ -0,0 +1,47 @@
+##############################################################################
+#
+# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+from Products.ERP5.Document.InvoiceTransactionRule import InvoiceTransactionRule
+
+class InvoiceTransactionSimulationRule(InvoiceTransactionRule):
+  """
+  Invoice Transaction Simulation Rule object generates accounting movements for
+  each invoice movement based on category membership and other
+  predicated. Template accounting movements are stored in cells inside
+  an instance of the InvoiceTransactionRule.
+  """
+
+  # CMF Type Definition
+  meta_type = 'ERP5 Invoice Transaction Simulation Rule'
+  portal_type = 'Invoice Transaction Simulation Rule'
+  add_permission = Permissions.AddPortalContent
+
+  # Declarative security
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)
diff --git a/product/ERP5/Document/TradeModelSimulationRule.py b/product/ERP5/Document/TradeModelSimulationRule.py
new file mode 100644
index 0000000000000000000000000000000000000000..055c4b1c9c363c1ea41c0810997607d32d49bb90
--- /dev/null
+++ b/product/ERP5/Document/TradeModelSimulationRule.py
@@ -0,0 +1,43 @@
+##############################################################################
+#
+# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+from Products.ERP5.Document.TradeModelRule import TradeModelRule
+
+class TradeModelSimulationRule(TradeModelRule):
+  """
+  Rule for Trade Model
+  """
+  # CMF Type Definition
+  meta_type = 'ERP5 Trade Model Simulation Rule'
+  portal_type = 'Trade Model Simulation Rule'
+  add_permission = Permissions.AddPortalContent
+
+  # Declarative security
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)