diff --git a/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_existence_constraint.xml b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_existence_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..344bc8c41a5476d2b585f26ca5954acb9c9da960
--- /dev/null
+++ b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_existence_constraint.xml
@@ -0,0 +1,86 @@
+<?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>_identity_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <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: ()</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Recipient must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>destination_existence_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_category_not_set</string> </key>
+            <value> <string>Recipient 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>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/resource_existence_constraint.xml b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/resource_existence_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac6547ea6e5e549a35cc4d5210900aef0610451d
--- /dev/null
+++ b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/resource_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>resource</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>constraint_portal_type</string> </key>
+            <value> <string>python: ()</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Type must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>resource_existence_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_category_not_set</string> </key>
+            <value> <string>Type 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_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/source_existence_constraint.xml b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/source_existence_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ca93e00bdaa48a86f7c6d22f204fef894e454ce
--- /dev/null
+++ b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/source_existence_constraint.xml
@@ -0,0 +1,86 @@
+<?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>_identity_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_range_criterion</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>constraint_base_category</string> </key>
+            <value>
+              <tuple>
+                <string>source</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>constraint_portal_type</string> </key>
+            <value> <string>python: ()</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Sender must be defined</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>source_existence_constraint</string> </value>
+        </item>
+        <item>
+            <key> <string>message_category_not_set</string> </key>
+            <value> <string>Sender 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>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint.xml b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee91dc3cbc8649453b096c5363ffc49151b16320
--- /dev/null
+++ b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint.xml
@@ -0,0 +1,66 @@
+<?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>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>MailMessageConstraint</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_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_email_constraint.xml b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint/destination_email_constraint.xml
similarity index 82%
rename from bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_email_constraint.xml
rename to bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint/destination_email_constraint.xml
index f68c005ccca4a708299e39c3bb7d5f167adf7763..614257f157f353b439063426ae93ba1a888e9416 100644
--- a/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/EventConstraint/destination_email_constraint.xml
+++ b/bt5/erp5_crm/PropertySheetTemplateItem/portal_property_sheets/MailMessageConstraint/destination_email_constraint.xml
@@ -20,14 +20,11 @@
         </item>
         <item>
             <key> <string>description</string> </key>
-            <value> <string>Recipients email must be defined\n
-\n
-\n
-python: object.getDestination() is not None and any(destination for destination in context.getDestinationValueList() if not destination.getDefaultEmailText())</string> </value>
+            <value> <string>Recipients email must be defined</string> </value>
         </item>
         <item>
             <key> <string>expression</string> </key>
-            <value> <string>python: object.getDestination() is not None and any(destination for destination in context.getDestinationValueList() if not destination.getDefaultEmailText())</string> </value>
+            <value> <string>python: not any(destination for destination in context.getDestinationValueList() if not destination.getDefaultEmailText())</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
diff --git a/bt5/erp5_crm/bt/revision b/bt5/erp5_crm/bt/revision
index e2756006dac243cc4d36ad71f5af3ed5c0211e94..0c1a9b6f06b7455bfa5e5419b38675b5d46eb95a 100644
--- a/bt5/erp5_crm/bt/revision
+++ b/bt5/erp5_crm/bt/revision
@@ -1 +1 @@
-644
\ No newline at end of file
+645
\ No newline at end of file
diff --git a/bt5/erp5_crm/bt/template_property_sheet_id_list b/bt5/erp5_crm/bt/template_property_sheet_id_list
index abd04976a590eeb983e98e3aa4662122add8582e..a2ebc1a552a9b9891e8b92430d029980d0bed6ca 100644
--- a/bt5/erp5_crm/bt/template_property_sheet_id_list
+++ b/bt5/erp5_crm/bt/template_property_sheet_id_list
@@ -1,3 +1,4 @@
 DefaultEventPath
 EventPath
-EventConstraint
\ No newline at end of file
+EventConstraint
+MailMessageConstraint
\ No newline at end of file