2.1.3.1.1.20.20 Property: RECURRENCE-ID
RFC Reference: [RFC2445] section 4.8.4.4
Number of Instances Allowed: 0, 1
Format: Date-Time ([RFC2445] section 4.3.5), Date ([RFC2445] section 4.3.4)
Brief Description: The original starting time of a moved exception of a recurring appointment.
Importing to Calendar objects
This property MUST be imported into PidLidExceptionReplaceTime, in UTC.
In addition, if the VCALENDAR contains a recurring VEVENT with the same UID, but no RECURRENCE-ID, this entire VEVENT SHOULD<179> be treated as an exception of the recurring VEVENT. In particular:
Instead of creating a new Calendar object in the Folder object for this VEVENT, a new Attachment object in the Recurring Calendar object SHOULD<180> be created (with properties specified in the following table), and PidTagAttachDataObject ([MS-OXPROPS] section 2.590) SHOULD<181> be opened as a Calendar object and used to import this VEVENT.
The PidTagMessageClass of this Calendar object SHOULD<182> be overwritten to 'IPM.OLE.CLASS.{00061055-0000-0000-C000-000000000046}'.
The recurring VEVENT SHOULD<183> treat this VEVENT's RECURRENCE-ID as an EXDATE, and this VEVENT's DTSTART as an RDATE. See section 2.1.3.1.1.20.18 for the effect of this exception on PidLidAppointmentRecur.
Attachment Object Property
Value
PidTagAttachDataObject
Open this property as a Calendar object interface and import the VEVENT
PidTagAttachMethod
Set to 0x00000005
PidTagRenderingPosition
Set to 0xFFFFFFFF
PidTagDisplayName
Set to the PidTagSubject of this Calendar object.
PidTagExceptionStartTime
Set to the PidLidAppointmentStartWhole of this Calendar object, local to the time zone specified by PidLidTimeZoneStruct of this Calendar object.
PidTagAttachEncoding
Set to an empty PtypBinary
PidTagExceptionEndTime
Set to the PidLidAppointmentEndWhole of this Calendar object, local to the time zone specified by PidLidTimeZoneStruct of this Calendar object.
PidTagAttachmentFlags
Set to 0x00000002
PidTagAttachmentLinkId
Set to 0x00000000
PidTagAttachFlags
Set to 0x00000000
PidTagAttachmentHidden
Set to TRUE
PidTagAttachmentContactPhoto
Set to FALSE
Exporting from Calendar objects
If PidLidExceptionReplaceTime is set, then it MUST be exported as a RECURRENCE-ID. Otherwise, if an InstanceDate can be parsed from the 17th, 18th, 19th, and 20th bytes of PidLidGlobalObjectId ([MS-OXPROPS] section 2.142) as specified in section 2.1.3.1.1.20.26, then that date combined with the time in PidLidStartRecurrenceTime ([MS-OXPROPS] section 2.304) in the time zone specified by PidLidTimeZoneStruct MUST be exported as a RECURRENCE-ID.
In addition, exceptions to recurring appointments SHOULD<184> be exported as a separate VEVENTs with a RECURRENCE-ID under either of the conditions below. Exceptions that do not fit either of these conditions MAY instead be exported as an RDATE (see section 2.1.3.1.1.20.18).
Exceptions stored as an Attachment object with PidTagAttachMethod set to 0x00000005 and with the bit denoted by 0x00000002 set to 1 in PidTagAttachmentFlags.
Exceptions which do anything other than, or in addition to, moving the start time of an instance without changing the duration.
The RECURRENCE-ID of new VEVENTs MUST be exported from the OriginalStartDate field of the corresponding ExceptionInfo block. Furthermore, the new VEVENTs MUST export the same UID as the recurring VEVENT. The remaining properties MUST be exported from the Calendar object embedded in PidTagAttachDataObject of the Attachment object. If no Attachment object exists for this exception, then the ExceptionInfo's fields MUST be exported as properties of the new VEVENT as specified in the following table.
ExceptionInfo Field |
Export as... |
---|---|
StartDateTime / MeetingType |
Export as DTSTART (see section 2.1.3.1.1.20.10) |
EndDateTime / MeetingType |
Export as DTEND (see section 2.1.3.1.1.20.8) |
fOriginalStartDate |
Export as RECURRENCE-ID |
SubjectLength / Subject |
Export as SUMMARY (see section 2.1.3.1.1.20.24), if Subject is set |
ReminderDelta / ReminderSet |
Export as a VALARM sub-component (see section 2.1.3.1.1.20.62), if ReminderDelta is set and if ReminderSet is not FALSE |
LocationLength / Location |
Export as LOCATION (see section 2.1.3.1.1.20.15), if Location is set |
BusyStatus |
Export as TRANSP (see section 2.1.3.1.1.20.25) and X-MICROSOFT-CDO-BUSYSTATUS (see section 2.1.3.1.1.20.31), if BusyStatus is set |
If RECURRENCE-ID is exported (as specified above) and the recurring parent is not all-day, RECURRENCE-ID MUST be specified local to the time zone specified in PidLidTimeZoneStruct.
If RECURRENCE-ID is exported (as specified above) and the recurring parent is all-day, then the RECURRENCE-ID MUST be specified in the Date format ([RFC2445] section 4.3.4).