diff --git a/product/ERP5Type/Constraint/CategoryExistence.py b/product/ERP5Type/Constraint/CategoryExistence.py
index 7af133465d53dabdba5323220c1a0c4551f77d47..1386beca4c69b4f5778ce5c91deff57372568ed9 100755
--- a/product/ERP5Type/Constraint/CategoryExistence.py
+++ b/product/ERP5Type/Constraint/CategoryExistence.py
@@ -37,6 +37,7 @@ class CategoryExistence(Constraint):
     { 'id'            : 'category_existence',
       'description'   : 'Category causality must be defined',
       'type'          : 'CategoryExistence',
+      'portal_type'   : ('Person', 'Organisation')
       'causality'     : None,
     },
   """
@@ -49,16 +50,23 @@ class CategoryExistence(Constraint):
     errors = []
     # For each attribute name, we check if defined
     for base_category in self.constraint_definition.keys():
+      if base_category in ('portal_type', ):
+        continue
+      
       # Check existence of base category
       error_message = "Category existence error for base category '%s': " % \
                       base_category
       if base_category not in object.getBaseCategoryList():
         error_message += " this document has no such category"
-      elif len(object.getCategoryMembershipList(base_category)) == 0:
+      elif len(object.getCategoryMembershipList(base_category,
+                portal_type = self.constraint_definition\
+                                  .get('portal_type', ()))) == 0:
         error_message += " this category was not defined"
       else:
         error_message = None
+      
       # Raise error
       if error_message:
         errors.append(self._generateError(object, error_message))
     return errors
+