Subject: [calsify] Clarificaton on cancelling events with recurrence instances

From: Alfie John <[email-masked]>
Date: Thu, 11 Jun 2015 18:40:24 +1000

Hi list,

I'm a bit confused by some possible ambiguity in RFC 5546. From section
3.2.5. CANCEL:

    "To cancel the complete range of a recurring event, the "UID"
    property value for the event MUST be specified and a "RECURRENCE-ID"
    MUST NOT be specified in the "CANCEL" method."

If a CANCEL message has the following:

    BEGIN:VEVENT
    UID:FOO
    SUMMARY:ABC
    ...
    END:VEVENT
    BEGIN:VEVENT
    UID:FOO
    SUMMARY:XYZ
    RECURRENCE-ID:20150621T220000Z
    ...
    END:VEVENT

as there is a RECURRENCE-ID in the second VEVENT, my reading from
above means that only the recurrence instance should be deleted and not
the complete range. However, the table below it:

    - RECURRENCE-ID
    - 0 or 1
    - Only if referring to an instance of a recurring calendar
      component. Otherwise, it MUST NOT be present.

as this event was produced by Outlook 2013 when doing a "delete entire
series", I'm now thinking that it's a bug in my understanding. Trying to
fit this
into my new mental model, I'm now reading this as:

    - For each VEVENT in the CANCEL message, delete the event
    - There are two VEVENTS (the recurrence instance, and the range)
    - Delete the event corresponding to the recurrence instance
    - Delete the event corresponding to the range

This matches with how Outlook produces "delete occurrence" CANCEL
messages (note that the following VEVENT does not have the complete
event definition which is allowed from RFC 4791 section 4.1:

    BEGIN:VEVENT
    UID:FOO
    SUMMARY:XYZ
    RECURRENCE-ID:20150621T220000Z
    ...
    END:VEVENT

In other words from my new mental model:

    - For each VEVENT in the CANCEL message, delete the event
    - There is only one VEVENT (the recurrence instance)
    - Delete the event corresponding to the recurrence instance

Is this how it should work, or should Outlook _not_ be including
recurrence
instance VEVENTs within a "delete entire series" message?

Hopefully this all makes sense...

Alfie

-- 
  Alfie John
  [email-masked]

---

From: Cyrus Daboo <[email-masked]>
Date: Thu, 11 Jun 2015 10:03:19 -0400

Hi Alfie,

> instance VEVENTs within a "delete entire series" message?

I think the following can safely be used when processing a CANCEL message:

1) If the master component (the one without a RECURRENCE-ID and with the 
RRULE/RDATE/EXDATE properties) is present, cancel ALL instances of the 
event on the attendee's side, irrespective of whether any overridden 
instances (the ones with RECURRENCE-ID) are present in the CANCEL.

2) If the CANCEL contains only overridden components (ones with a 
RECURRENCE-ID property), cancel just those instances on the attendee's side.

#2 is covered by item (b) in Section 3.2.5 of 5546. #1 is a variation on 
the "strict" requirement of Section 3.2.5 that says to cancel an entire 
series the RECURRENCE-ID MUST NOT be present. #1 loosens the restriction by 
allowing overridden components to be present - something that it seems you 
observed coming from Outlook.

That said, from the perspective of a client generating a CANCEL message, it 
really should follow the spec and use the strict behavior for canceling the 
entire event (i.e., just send the master component).

-- 
Cyrus Daboo

---

From: Alfie John <[email-masked]>
Date: Fri, 12 Jun 2015 08:06:44 +1000

Hey Cyrus,

> I think the following can safely be used when processing a CANCEL

Awesome, exactly what I needed.

> That said, from the perspective of a client generating a CANCEL message,
> it really should follow the spec and use the strict behavior for canceling
> the entire event (i.e., just send the master component).

Thanks for that. This looks all clear now.

Much appreciated!

Alfie

-- 
  Alfie John
  [email-masked]