Uploaded image for project: 'Alfresco'
  1. Alfresco
  2. ALF-15934

Recurring events with times zones appear on the wrong date within Share

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Critical
    • Resolution: Won't Fix
    • Affects Version/s: 4.0 Enterprise
    • Fix Version/s: None
    • Security Level: external (External user)
    • Labels:
      None
    • Resolution Time Custom Field:
      202 weeks, 1 day, 9 hours, 29 minutes, 29 seconds

      Description

      Alfresco currently supports creation of recurring meeting events from within Outlook via the Share Point module.

      Events are modeled using the CalendarEvent type,

      {http://www.alfresco.org/model/calendar}

      calendarEvent defined within CalendarModel.xml

      The important calendarEvent Properties with respect to Recurrence are:

      • fromDate ( d:datetime)
      • toDate ( d:datetime)
      • recurrenceRule (d:text)

      fromDate and toDate are persisted as UTC dateTime
      recurrenceRule represents an iCal RRULE
      e.g. repeat every Friday = FREQ=WEEKLY;BYDAY=FR;INTERVAL=1

      The recurrenceRule is used in conjunction with the fromDate and toDate when computing a recurrence set.

      Recurrence Rule Time Zone Bug
      Recurring events will appear on the wrong date if created (Outlook) in a different timezone from that of the Alfresco server AND the TZ offset causes the the toDate to slip to the day before/after after conversion to UTC within Alfresco Calendar.

      Eg

      OUTLOOK +5 hours
      Create a meeting that recurs every Friday at 2:00 Local Time
      recurrenceRule FREQ=WEEKLY;BYDAY=FR;INTERVAL=1
      fromDate 2012-09-07T02:00:00.000+0500 (Friday 7th at 2:00am LOCAL)
      toDate is not needed for this example

      ALFRESCO REPO
      dateTime stored as UTC
      recurrenceRule FREQ=WEEKLY;BYDAY=FR;INTERVAL=1
      fromDate 2012-09-06T21:00:00.000Z (Thurday 6th at 21:00pm UTC,)

      Generated Recurrence set
      (CalendarRecurrenceHelper.buildWeeklyRecurrences())

      Recurrence fromDate UTC LOCAL (+5)
      1(Origional) 2012-09-06T22:00:00.000+01:00 Thurday 6th at 21:00pm Friday 7th at 2:00am
      2 2012-09-07T22:00:00.000+01:00 Friday 7th at 21:00pm Saturday 8th at 2:00am
      3 2012-09-14T22:00:00.000+01:00 Friday 14th at 21:00pm Saturday 15th at 2:00am
      4 2012-09-21T22:00:00.000+01:00 Friday 21th at 21:00pm Saturday 22nd at 2:00am

      The first recurrence is not generated, so its fine. The generated recurrences that follow are incorrect because the RRULE was setup for UTC+5 dates times, the rule defines the repeat day as FR (Friday) and uses this when creating a repeat occurrence.

      What should the event creator see?
      -Alf Calendar: recurring events appearing on the correct days as specified within the rule in local time
      -Alf Calendar event details:
      -The RRULE string presented on screen should represent unaltered exactly the RULE created including the timezone it was created within.
      -Event Start and End times presented as specified by the event creator (local time).
      -Start and End times must never change for the creator; DST must be handled correctly.

      What should some see when viewing the events in a different TZ?

      • Everything specified above but adjusted for local time,

      Solution?
      For the recurrence set to be built correctly the dateFrom/to needs to be adjusted back to the local time zone, the same time zone in which the reccurence rule was specified.

      We cant just adjust the recurrence rule because this would not represent what the event creator requested, also it means we would be generating events according to the server calendar not taking into account the Local time zone or DST for future/past events.

      Knowing the offset is not enough! Timezones change, DST comes into and out of effect. What we really need is the region.

      We need the offset to correctly adjust dateFrom and dateTo from UCT to Local Time before using the recurrence rule, also we need the region in which the event was created to correctly handle DST.

      INFO:
      Adding an event:
      Open locally MS Outlook Calendar
      Click New Meeting Request link in New drop-down menu
      Fill in To, Subject and Location fields with correct data
      Click Recurrence button in Tool
      Setup recurrence click OK
      Click Meeting Workspace button on Toolbar
      On Meeting workspace sidebar click Change setting link
      In Select Location drop-down list select Other option
      Fill in Other Workspace server field with correct information (e.g. http://host:7070/alfresco) and click OK button and then Create button
      Fill in Username and password and click OK button
      Go to Alfresco Share and verify that new Meeting workspace is create
      Verify the event displays correctly on My Dashboard and Site Dashboard pages

      Event handling
      SHAREPOINT AlfrescoMeetingServiceHandler.createWorkspace()
      SHAREPOINT AlfrescoMeetingServiceHandler.addMeetingFromICal()

      Recurrence handling
      REPOSITORY CalendarRecurrenceHelper.getRecurrencesOnOrAfter()

        Attachments

          Issue Links

            Structure

              Activity

                People

                • Assignee:
                  closedissues Closed Issues
                  Reporter:
                  hkalsi Harpritt Kalsi [X] (Inactive)
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Date of First Response:

                    Structure Helper Panel