diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/InventoryConstraint.py b/bt5/erp5_trade/PropertySheetTemplateItem/InventoryConstraint.py
deleted file mode 100644
index 267c68d1a2bb0f994f53b735f62c4493b416a4e1..0000000000000000000000000000000000000000
--- a/bt5/erp5_trade/PropertySheetTemplateItem/InventoryConstraint.py
+++ /dev/null
@@ -1,65 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2007 Nexedi SARL and Contributors. All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability 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
-# garantees 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-##############################################################################
-
-from Products.CMFCore.Expression import Expression
-
-class InventoryConstraint:
-  """
-  Inventory Constraint
-  """
-  _constraints = (
-    {
-    'id': 'duplicate_inventory',
-    'type': 'DuplicateInventory',
-    },
-    { 'id'            : 'destination_category_existence',
-      'description'   : 'Destination must be defined',
-      'type'          : 'CategoryExistence',
-      'portal_type'   : Expression('python: portal.getPortalNodeTypeList()'),
-      'destination'        : 1,
-      'message_category_not_set': 'Wharehouse must be defined',
-    },
-    { 'id'            : 'destination_section_category_existence',
-      'description'   : 'Destination section must be defined',
-      'type'          : 'CategoryExistence',
-      'portal_type'   : Expression('python: portal.getPortalNodeTypeList()'),
-      'destination_section' : 1,
-      'message_category_not_set': 'Owner must be defined',
-    },
-    { 'id'            : 'start_date',
-      'description'   : 'Start Date must be defined',
-      'type'          : 'PropertyExistence',
-      'start_date'    : 1,
-      'message_no_such_property': 'Inventory Date must be defined',
-    },
-    { 'id'            : 'resource_on_line',
-      'description'   : 'Resource must be defined on all lines',
-      'type'          : 'TALESConstraint',
-      'expression'    : 'python: None not in [x.getResourceValue() for x in object.getMovementList()]',
-      'message_expression_false': 'You must define a resource on all lines',
-    },
-  )
diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb1332aaa695979e409e8fdef3d0462067f58ccd
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Property Sheet" module="erp5.portal_type"/>
+    </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>id</string> </key>
+            <value> <string>InventoryConstraint</string> </value>
+        </item>
+        <item>
+            <key> <string>last_id</string> </key>
+            <value> <string>5</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Sheet</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_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_category_existence_constraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_category_existence_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..22d0764eaa152b23285eba958c1e5d5d94c13a5f
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_category_existence_constraint.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Category Existence Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>constraint_base_category</string> </key>
+            <value>
+              <tuple>
+                <string>destination</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>constraint_portal_type</string> </key>
+            <value> <string>python: portal.getPortalNodeTypeList()</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Destination must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>destination_category_existence_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_category_not_set</string> </key>
+            <value> <string>Wharehouse must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Category Existence Constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>use_acquisition</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_section_category_existence_constraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_section_category_existence_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6d9913d5c51a44fd18e3636bf5cfaf7003c55f4
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/destination_section_category_existence_constraint.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Category Existence Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>constraint_base_category</string> </key>
+            <value>
+              <tuple>
+                <string>destination_section</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>constraint_portal_type</string> </key>
+            <value> <string>python: portal.getPortalNodeTypeList()</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Destination section must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>destination_section_category_existence_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_category_not_set</string> </key>
+            <value> <string>Owner must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Category Existence Constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>use_acquisition</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/duplicate_inventory_constraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/duplicate_inventory_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7405b6aede33c5905499d13d8f5b076ea2266f4
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/duplicate_inventory_constraint.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Duplicate Inventory Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>duplicate_inventory_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Duplicate Inventory Constraint</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/resource_on_line_constraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/resource_on_line_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fe517ae97fafb9f63972254a0306c1b2feaa75b5
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/resource_on_line_constraint.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="TALES Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Resource must be defined on all lines</string> </value>
+        </item>
+        <item>
+            <key> <string>expression</string> </key>
+            <value> <string>python: None not in [x.getResourceValue() for x in object.getMovementList()]</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>resource_on_line_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_expression_false</string> </key>
+            <value> <string>You must define a resource on all lines</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>TALES Constraint</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/start_date_constraint.xml b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/start_date_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..212d4d355cc40cada3c901bb55b6b118ebf01775
--- /dev/null
+++ b/bt5/erp5_trade/PropertySheetTemplateItem/portal_property_sheets/InventoryConstraint/start_date_constraint.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Property Existence Constraint" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>constraint_property</string> </key>
+            <value>
+              <tuple>
+                <string>start_date</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Start Date must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>start_date_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_no_such_property</string> </key>
+            <value> <string>Inventory Date must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Property Existence Constraint</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/bt/revision b/bt5/erp5_trade/bt/revision
index 5afb033c80748e724e88b9c27f98284b7025656d..0da1d6394c9ae80cae81c889cf7f7dd1d96dc6d9 100644
--- a/bt5/erp5_trade/bt/revision
+++ b/bt5/erp5_trade/bt/revision
@@ -1 +1 @@
-1104
\ No newline at end of file
+1103
\ No newline at end of file