diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_activateCheckConsistency.py b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_activateCheckConsistency.py
index 03a9533c383277653aa0b55165df5e2cfb2df6e7..b693175e5839b82bb0e0e7d58edcf9b05216f308 100644
--- a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_activateCheckConsistency.py
+++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Alarm_activateCheckConsistency.py
@@ -1,9 +1,12 @@
 kw = {}
 
 if context.getProperty('incremental_check'):
-  last_active_process = context.getLastActiveProcess()
+  last_active_process = context.getLastActiveProcess(include_active=True)
   if last_active_process is not None:
-    kw['indexation_timestamp'] = '>= %s' % last_active_process.getStartDate().ISO()
+    kw['indexation_timestamp'] = {
+        'query': last_active_process.getStartDate(),
+        'range': '>='
+    }
 
 active_process = context.newActiveProcess().getRelativeUrl()
 query_string = context.getProperty('catalog_query_string', '')
@@ -13,8 +16,16 @@ portal = context.getPortalObject()
 if query_string is not None:
   kw.update(SearchableText=query_string)
 
-kw.update(parent_uid=[portal.restrictedTraverse(module).getUid() for module in context.getProperty('module_list') or []])
+parent_uid =[portal.restrictedTraverse(module).getUid()
+             for module in context.getProperty('module_list') or []]
+if parent_uid:
+  kw.update(parent_uid=parent_uid)
 
-portal.portal_catalog.searchAndActivate(method_id='Base_checkAlarmConsistency', method_kw={'fixit': fixit, 'active_process': active_process}, activate_kw={'tag':tag, 'priority': 8}, **kw)
+
+portal.portal_catalog.searchAndActivate(
+    method_id='Base_checkAlarmConsistency',
+    method_kw={'fixit': fixit, 'active_process': active_process},
+    activate_kw={'tag':tag, 'priority': 8},
+    **kw)
 
 context.activate(after_tag=tag).getId()
diff --git a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Base_checkAlarmConsistency.py b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Base_checkAlarmConsistency.py
index 8f032224607d4de501e3caf2c2f307fb9a465e13..6c3933bd7fe0c5af494af4acdb1f1ef7d029fd74 100644
--- a/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Base_checkAlarmConsistency.py
+++ b/bt5/erp5_administration/SkinTemplateItem/portal_skins/erp5_administration/Base_checkAlarmConsistency.py
@@ -9,8 +9,11 @@ if context.providesIConstraint():
   # of this name implement consistency checking on object
   return constraint_message_list
 
+# this constraint is created as a temp object under portal_trash, because
+# portal_trash has no restriction on allowed content types.
 missing_category_document = portal.portal_trash.newContent(
   portal_type='Missing Category Document Constraint',
+  id='missing_category_document_constraint',
   temp_object=True)
 property_type_validity = PropertyTypeValidity(id='type_check', description='Type Validity Check')
 
diff --git a/bt5/erp5_administration/TestTemplateItem/portal_components/test.erp5.testERP5Administration.py b/bt5/erp5_administration/TestTemplateItem/portal_components/test.erp5.testERP5Administration.py
index fe4dfd09f140bd52ca28410b37441c00296b2a48..060dc829438098151b47b78211e96ba6559ee0b7 100644
--- a/bt5/erp5_administration/TestTemplateItem/portal_components/test.erp5.testERP5Administration.py
+++ b/bt5/erp5_administration/TestTemplateItem/portal_components/test.erp5.testERP5Administration.py
@@ -28,6 +28,7 @@
 ##############################################################################
 
 import unittest
+import time
 from Products.ERP5.tests.testInventoryAPI import InventoryAPITestCase
 
 class TestERP5Administration(InventoryAPITestCase):
@@ -83,11 +84,10 @@ class TestERP5Administration(InventoryAPITestCase):
 
   def test_check_consistency_alarm(self):
     alarm = self.portal.portal_alarms.check_consistency
-    # Here we disable user_id so that Person_createUserPreference will not be called
-    # automatically.
-    person = self.portal.person_module.newContent(portal_type='Person', user_id=None)
+    inconsistent_document = self.portal.organisation_module.newContent(
+        portal_type='Organisation')
     # this document will be non consistent, for PropertyTypeValidity
-    person.title = 3
+    inconsistent_document.title = 3
     # tic right now to make sure the person is indexed, indeed the alarm
     # could use catalog to retrieve objects to check
     self.tic()
@@ -112,7 +112,39 @@ class TestERP5Administration(InventoryAPITestCase):
     # case of PropertyTypeValidity
     alarm.solve()
     self.tic()
-    self.assertEqual('3', person.title)
+    self.assertEqual('3', inconsistent_document.title)
+
+  def test_check_consistency_incremental(self):
+    alarm = self.portal.portal_alarms.check_consistency.Base_createCloneDocument(
+        batch_mode=True)
+    alarm.edit(incremental_check=True)
+    alarm.activeSense()
+    self.tic()
+    # create an inconsistent document
+    inconsistent_document = self.portal.organisation_module.newContent(
+        portal_type='Organisation')
+    inconsistent_document.title = 0
+    self.tic()
+
+    # alarm report this document as not consistent
+    time.sleep(2) # catalog date columns have a one second precision
+    alarm.activeSense()
+    self.tic()
+    self.assertTrue(alarm.sense())
+    result, = alarm.getLastActiveProcess().getResultList()
+    constraint_message, = result.getProperty('constraint_message_list')
+    self.assertEqual(inconsistent_document.getRelativeUrl(), constraint_message.object_relative_url)
+
+    # next time the alarm run, document is not reported anymore
+    alarm.activeSense()
+    self.tic()
+    self.assertFalse(alarm.sense())
+    self.assertEqual([], alarm.getLastActiveProcess().getResultList())
+
+    # cleanup
+    self.portal.organisation_module.manage_delObjects(
+        ids=[inconsistent_document.getId()])
+    self.tic()
 
   def test_missing_category_document_constraint(self):
     person = self.portal.person_module.newContent(portal_type='Person')
diff --git a/product/ERP5/Document/Alarm.py b/product/ERP5/Document/Alarm.py
index 82da5beb495d4664966803d60aa101193cc14a5a..690bd92a097c9fbf035a13500dbe47fd7cba3925 100644
--- a/product/ERP5/Document/Alarm.py
+++ b/product/ERP5/Document/Alarm.py
@@ -382,7 +382,7 @@ Alarm Tool Node: %s
       limit = 1
     else:
       limit = self.isActive() and 2 or 1
-    active_process_list = self.getPortalObject().portal_catalog(
+    active_process_list = self.getPortalObject().portal_catalog.unrestrictedSearchResults(
       portal_type='Active Process', limit=limit,
       sort_on=(('creation_date', 'DESC'),
                ('id', 'DESC', 'UNSIGNED'),),
diff --git a/product/ZMySQLDA/db.py b/product/ZMySQLDA/db.py
index cd18bb52c24700f35281651cc779d938a72f5bcc..b3b3aebc574c6befcdd7e2d99e6898d32c0b7e0e 100644
--- a/product/ZMySQLDA/db.py
+++ b/product/ZMySQLDA/db.py
@@ -314,6 +314,7 @@ class DB(TM):
               error=True,
             )
       self.db = MySQLdb.connect(**self._kw_args)
+      self._query("SET time_zone='+00:00'")
 
     def tables(self, rdb=0,
                _care=('TABLE', 'VIEW')):