diff --git a/product/ERP5/tests/testCalendar.py b/product/ERP5/tests/testCalendar.py
index 17369df251141d925ce577e9d378b13653d4b775..d78c6482dcbe71ebe4e61144e3b6abfc28efdc29 100644
--- a/product/ERP5/tests/testCalendar.py
+++ b/product/ERP5/tests/testCalendar.py
@@ -40,8 +40,10 @@ class TestCalendar(ERP5ReportTestCase):
   person_portal_type = "Person"
   group_calendar_portal_type = "Group Calendar"
   leave_request_portal_type = "Leave Request"
+  presence_request_portal_type = "Presence Request"
   group_presence_period_portal_type = "Group Presence Period"
   leave_request_period_portal_type = "Leave Request Period"
+  presence_request_period_portal_type = "Presence Request Period"
   start_date = DateTime(DateTime().ISO8601())
   stop_date = start_date + 0.5
   middle_date = start_date + 0.25
@@ -394,6 +396,95 @@ class TestCalendar(ERP5ReportTestCase):
 #     self.assertEqual(len(obj_to_check.getDatePeriodList()),
 #                       uid_list.count(obj_to_check.getUid()))
 
+  def stepCreatePresenceRequest(self, sequence=None,
+                                 sequence_list=None, **kw):
+    """
+    Create a personal calendar
+    """
+    portal = self.getPortal()
+    module = portal.getDefaultModule(self.presence_request_portal_type)
+    pc = module.newContent(portal_type=self.presence_request_portal_type)
+    sequence.edit(
+        presence_request=pc,
+    )
+
+  def stepSetPresenceRequestDestination(self, sequence=None,
+                                         sequence_list=None, **kw):
+    """
+    Set the destination
+    """
+    presence_request = sequence.get('presence_request')
+    person = sequence.get('person')
+    presence_request.setDestinationValue(person)
+
+  def stepCreatePersonalPresencePeriod(self, sequence=None,
+                                    sequence_list=None, **kw):
+    """
+    Create an personal calendar period
+    """
+    presence_request = sequence.get('presence_request')
+    personal_presence_period = presence_request.newContent(
+        portal_type=self.presence_request_period_portal_type,
+        resource_value=self.portal.service_module.consulting_service
+    )
+    sequence.edit(
+        personal_presence_period=personal_presence_period,
+    )
+
+  def stepSetPersonalPresencePeriodToCheck(self, sequence=None,
+                                        sequence_list=None, **kw):
+    """
+    Set personal presence period to check
+    """
+    personal_presence_period = sequence.get('personal_presence_period')
+    sequence.edit(obj_to_check=personal_presence_period)
+
+  def stepSetPersonalPresencePeriodValues(self, sequence=None,
+                                       sequence_list=None, **kw):
+    """
+    Set values on personal calendar event
+    """
+    personal_presence_period = sequence.get('personal_presence_period')
+
+  def stepSetPersonalPresencePeriodDates(self, sequence=None,
+                                      sequence_list=None, **kw):
+    """
+    Set values on personal calendar
+    """
+    personal_presence_period = sequence.get('personal_presence_period')
+    personal_presence_period.edit(
+      start_date=self.start_date,
+      stop_date=self.stop_date,
+    )
+
+  def stepSetPersonalPresencePeriodPerStopDate(self, sequence=None,
+                                            sequence_list=None, **kw):
+    """
+    Set values on personal calendar event
+    """
+    personal_presence_period = sequence.get('personal_presence_period')
+    personal_presence_period.edit(
+      periodicity_stop_date=self.periodicity_stop_date,
+    )
+
+  def stepPlanPresenceRequest(self, sequence=None,
+                               sequence_list=None, **kw):
+    """
+    Plan personal calendar
+    """
+    presence_request = sequence.get('presence_request')
+    presence_request.plan()
+    self.assertEqual('planned', presence_request.getSimulationState())
+
+  def stepConfirmPresenceRequest(self, sequence=None,
+                               sequence_list=None, **kw):
+    """
+    Confirm personal calendar
+    """
+    presence_request = sequence.get('presence_request')
+    presence_request.confirm()
+    self.assertEqual('confirmed', presence_request.getSimulationState())
+
   def test_01_CatalogCalendarPeriod(self, quiet=0, run=run_all_test):
     """
     Test indexing
@@ -453,6 +544,36 @@ class TestCalendar(ERP5ReportTestCase):
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
+  def test_CatalogPresenceRequest(self, quiet=0, run=run_all_test):
+    """
+    Test indexing
+    """
+    if not run: return
+
+    sequence_list = SequenceList()
+    sequence_string = '''
+              CreatePerson
+              CreateLeaveRequest
+              SetLeaveRequestDestination
+              CreatePersonalLeavePeriod
+              SetPersonalLeavePeriodValues
+              Tic
+              SetPersonalLeavePeriodToCheck
+              CheckNotCatalogued
+              PlanLeaveRequest
+              ConfirmLeaveRequest
+              Tic
+              CheckNotCatalogued
+              SetPersonalLeavePeriodDates
+              Tic
+              CheckCatalogued
+              SetPersonalLeavePeriodPerStopDate
+              Tic
+              CheckCatalogued
+              '''
+    sequence_list.addSequenceString(sequence_string)
+    sequence_list.play(self)
+
   def stepCheckGetTimeAvailability(self, sequence=None,
                                    sequence_list=None, **kw):
     """