2.1.3.1.1.20.18 Property: RDATE

RFC Reference: [RFC2445] section 4.8.5.3

Number of Instances Allowed: 0+

Format: Date-Time ([RFC2445] section 4.3.5), Date ([RFC2445] section 4.3.4), Period of Time ([RFC2445] section 4.3.9)

Brief Description: Specifies the start time of additional instances of the recurring appointment which have been created by the organizer.

Importing to Calendar objects

If this property is specified, an RRULE MUST also be specified in the same VEVENT.

RDATEs in Period of Time format SHOULD be ignored. All valid RDATEs SHOULD<175> be gathered into the ModifiedInstanceDates field of the RecurrencePattern structure ([MS-OXOCAL] section 2.2.1.44.1) embedded within the AppointmentRecurrencePattern structure ([MS-OXOCAL] section 2.2.1.44.5) in the PidLidAppointmentRecur property ([MS-OXOCAL] section 2.2.1.44), after the following validation:

  • All RDATEs MUST be converted to the time zone specified by PidLidTimeZoneStruct.

  • The time-of-day information MUST be stripped off (all entries MUST fall on midnight).

  • All duplicate entries MUST be removed.

  • Each RDATE MUST be pairable with an EXDATE to represent a moved instance of a recurring appointment. The moved instance obeys the following rules:

    • An instance MUST NOT be moved before the previous instance or after the next instance.

    • An instance MUST NOT be moved such that the intersection of its span with the span of any other instance of the appointment has a non-zero duration.

    • An instance MUST NOT be moved such that its start time falls on the same calendar day as that of another instance.

  • The ModifiedInstanceDates field in the RecurrencePattern structure MUST be sorted chronologically with the earliest dates at the start.

In addition, all valid RDATEs SHOULD<176> be stored in the ExceptionInfo field of the AppointmentRecurrencePattern structure. The contents of each ExceptionInfo block MUST be set as specified in the following table.

ExceptionInfo Field

Value

StartDateTime

Set to the RDATE value, in the time zone specified by PidLidTimeZoneStruct

EndDateTime

Set to StartDateTime + the duration of the appointment

OriginalStartDate

Set to the paired EXDATE value, in the time zone specified by PidLidTimeZoneStruct

OverrideFlags

Set to 0x00000000

SubjectLength/Subject

(unset)

MeetingType

(unset)

ReminderDelta

(unset)

ReminderSet

(unset)

LocationLength/Location

(unset)

BusyStatus

(unset)

Attachment

(unset)

SubType

(unset)

AppointmentColor

(unset)

Note that additional RDATEs could be derived from the DTSTARTs of other VEVENTs. See section 2.1.3.1.1.20.20. For exceptions generated by RECURRENCE-IDs, fields in the ExceptionInfo structure MUST be set according to the following table.

ExceptionInfo Field

Value

StartDateTime

Set to PidLidAppointmentStartWhole from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct

EndDateTime

Set to PidLidAppointmentEndWhole from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct

OriginalStartDate

Set to PidLidExceptionReplaceTime ([MS-OXPROPS] section 2.117) from the exception Calendar object, in the time zone specified by PidLidTimeZoneStruct

OverrideFlags

Set the appropriate flags specified in the next table.

SubjectLength/Subject

Set to PidTagSubject ([MS-OXPROPS] section 2.1034) from the exception Calendar object, leave unset if PidTagSubject is not present

MeetingType

(unset)

ReminderDelta

Set to PidLidReminderDelta ([MS-OXPROPS] section 2.218) from the exception Calendar object, leave unset if PidLidReminderDelta is not present

ReminderSet

Set to FALSE if PidLidReminderDelta is not present, leave unset otherwise

LocationLength/Location

Set to PidLidLocation from the exception Calendar object, leave unset if PidLidLocation is not present

BusyStatus

Set to PidLidBusyStatus ([MS-OXPROPS] section 2.47) from the exception Calendar object, leave unset if PidLidBusyStatus is not present

Attachment

(unset)

SubType

Set to PidLidAppointmentSubType from the exception Calendar object, leave unset if PidLidAppointmentSubType is not present

AppointmentColor

(unset)

The following table specifies the valid values for the OverrideFlags field of the ExceptionInfo structure.

OverrideFlags Flag

Meaning

0x0001

SubjectLength and Subject are set.

0x0004

ReminderDelta is set.

0x0008

ReminderSet is set.

0x0010

LocationLength and Location are set.

0x0020

BusyStatus is set.

0x0080

SubType is set.

0x0200

PidTagRtfCompressed ([MS-OXPROPS] section 2.942) or PidTagBody from the exception Calendar object is present.

Exporting from Calendar objects

The RDATE property MUST NOT be exported for non-recurring appointments or exceptions of recurring appointments.

If there are entries in the ModifiedInstanceDates field in the RecurrencePattern structure embedded within the AppointmentRecurrencePattern structure, the date-times of all instances of the recurrence pattern falling on the days specified by the ModifiedInstanceDates field in the RecurrencePattern structure SHOULD<177> be exported in an RDATE, but exceptions exported as a separate VEVENT with a RECURRENCE-ID (see section 2.1.3.1.1.20.20) MUST NOT also be exported as an RDATE.

If the exception is an all-day appointment, the RDATE MUST be specified in the Date format.