I'm facing issue wherein google calendar is showing extra calendar event.
ICS
PRODID:-//TEST//NONSGML Version 1//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:Asia/Kolkata
BEGIN:DAYLIGHT
DTSTART:19411001T000000
TZOFFSETFROM:+055320
TZOFFSETTO:+0630
RDATE:19411001T000000
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:18800101T000000
TZOFFSETFROM:+055328
TZOFFSETTO:+055320
RDATE:18800101T000000
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:19420901T000000
TZOFFSETFROM:+0530
TZOFFSETTO:+0630
RDATE:19420901T000000
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19420515T000000
TZOFFSETFROM:+0630
TZOFFSETTO:+0530
RDATE:19420515T000000
RDATE:19451015T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:19700119T063633Z
ORGANIZER:mailto:invite#a.com
UID:3fDJ2_gx5QJr4ygb#EqPBCMSzkxGfKg0
SEQUENCE:0
RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;BYDAY=SU,FR,SA
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:a#gmail.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:a#b.com
DTSTART;TZID=Asia/Kolkata:20200114T150000
DTEND;TZID=Asia/Kolkata:20200114T160000
SUMMARY:DEV TEST
TRANSP:OPAQUE
CREATED:20200114T091621Z
LAST-MODIFIED:20200114T091621Z
STATUS:CONFIRMED
LOCATION:Location
DESCRIPTION:Description
END:VEVENT
END:VCALENDAR
Calendar is created on wednesday for never ending weekly recurrence on days Friday, Saturday and Sunday. In google calendar I'm observing that there is an extra event created for wednesday(created date) including the recurrence events. I'm not observing this issue in outlook calendar.
Any idea why there is an extra event for the event create date created only in google calendar and not observed in outlook calendar.
I think this is due to different interpretations of the iCalendar specification:
https://www.rfc-editor.org/rfc/rfc5545#section-3.8.5.3
Particularly this section:
The "DTSTART" property defines the first instance in the recurrence
set. The "DTSTART" property value SHOULD be synchronized with the
recurrence rule, if specified. The recurrence set generated with a
"DTSTART" property value not synchronized with the recurrence rule is
undefined.
So the RFC doesn't define what happens when the DTSTART doesn't match the recurrence rule, and likely Google and Microsoft took different approaches.
To avoid this ensure your DTSTART occurs on a Friday, Saturday or Sunday.
Related
I am having a weird issue with ics calenders. I am creating a calendar with the following information:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.bingewave.com
X-WR-TIMEZONE:America/New_york
BEGIN:VTIMEZONE
TZID:America/New_york
X-LIC-LOCATION:America/New_york
END:VTIMEZONE
BEGIN:VEVENT
UID:61bb267c4074e
DTSTART;TZID=America/New_york:20211216T180000
SEQUENCE:0
TRANSP:OPAQUE
DTEND;TZID=America/New_york:20211216T210000
The time zone set to America/New_york and the time set to 180000, which is 6:00 PM. But I am getting this in my Google Calender:
Am I doing something wrong?
The answer is case sensitivity. New_york is not recognized, while New_York with a capital Y works. Apparently, Google Calendar is strict on upper and lowercase.
I'm working on a scheduling application that utilizes an ics file to set up an appointment in outlook, the issue im having is that the appointment time changes depending on timezone and im not wanting it too. For example i want to set an appointment from 11am-noon from central time, the ics would change to adjust to the timezone eastern and make it from noon - 1pm. Here is what my ICS file looks like. I tried specifying Timezones in the TZID but it would always adjust.
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;CN=email<email#email.org>;RSVP=TRUE:mailto:email#email.org
CLASS:PUBLIC
CREATED:20201007T114658Z
DESCRIPTION:
DTEND;TZID="Central Standard Time":20201007T120000
DTSTAMP:20201007T114908
DTSTART;TZID="Central Standard Time":20201007T110000
LOCATION:Unknown
ORGANIZER;CN="Appointment":mailto:AppointmentsManager#email.org
PRIORITY:5
SEQUENCE:1
SUMMARY;LANGUAGE=en-us:east
TRANSP:OPAQUE
UID:X9053866f41994acda100ded7fb305ebe
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
Your ICS file does not have a VTIMEZONE component. If you specify a TZID for an event's start/end time, you must create a corresponding VTIMEZONE component that provides the definition for that timezone.
Alternatively, you could convert the start/end time to UTC, which means you don't need a TZID parameter:
DTEND:20201007T170000Z
DTSTART:20201007T160000Z
Another alternative: Use an Olsen timezone ID in the TZID parameter and prefix it with a slash. However, this is not guaranteed to work with all mail clients.
DTEND;TZID="/America/Chicago":20201007T120000
DTSTART;TZID="/America/Chicago":20201007T110000
I have a script that generates ics files and some events tend to have complex recurrence rules (i.e. every Monday between date1 and date2 except on holiday1 or holiday2 but also occurs once on randomDate1)
Given my understanding of the spec defined here, it seems pretty straightforward to represent this as a mix between RRULE, RDATE and EXDATE
As you can see below in My Complex Event
RRULE defines the usual expected recurrence: every Monday between Jan 11 and April 15
RDATE defines one stray unusual date April 13
EXDATE removes the occurrence on Jan 25
However, once i open this file in MS Outlook 2016, i see the event on the dates targeted by RRULE, i don't see it on the one targeted by EXDATE (which is okay) but i don't see it on the date targeted by RDATE (not okay)
I have validated my ical here and found no errors. So i'm wondering:
Is this an Outlook bug? Is there some order i should use for the ical properties?
I also tried importing this into Google Calendar, but instead of seeing the occurrence defined on Wednesday April 13 i saw it on Tuesday April 12. The RRULE and EXDATE worked as expected too.
Any ideas?
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//dkhalife//NONSGML Dany v2.0//FR
METHOD:PUBLISH
X-WR-CALNAME:Dany
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/Montreal
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CATEGORIES:Cours
SUMMARY:My Complex Event
LOCATION:Location Location Location
DTSTART;TZID=America/Montreal:20160111T124500
DTEND;TZID=America/Montreal:20160111T143500
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415
RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125
UID:xxxx
END:VEVENT
END:VCALENDAR
Your event has a time, but the RDATE and EXDATE values are all-day, which doesn't make sense (I outlined that few years ago in response to a bug in KOrganizer) and is invalid IMO (even though RFC 5545 doesn't say that explicitly).
Try to replace
RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125
by
RDATE;TZID=America/Montreal:20160413T124500
EXDATE;TZID=America/Montreal:20160125T124500
Btw. the same is true for the UNTIL clause which MUST be specified in UTC time if your event is anchored in any time zone (this is explicitly specified in RFC 5545).
So your RRULE should look like:
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415T164500Z
I have a problem with my ical file.
In outlook I get the correct date 10.12.2015 20:00 - 10.12.2015 22:00.
In my Google calendar I got the date 10.12.2015 20:00 - 23.00.
The following is my ical file:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:*****
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:*****
ORGANIZER;CN="admin":MAILTO:*****
LOCATION:*****
SUMMARY:*****
DESCRIPTION:
CLASS:PUBLIC
DTSTART;TZID=Europe/Berlin:20151210T200800
DTEND;TZID=Europe/Berlin:20151210T220800
END:VEVENT
END:VCALENDAR
Try using a DURATION property instead of DTEND.
DTSTART;TZID=Europe/Berlin:20151210T200800
DURATION:PT2H
Well it looks like both clients are somehow rounding the time of the event from 20h08 / 22h08 to full hours. Given that the event runs after 22h, it makes as much sense to round it to 23h00: you probably don't want the user to doublebook the calendar by adding another event at 22h00, thinking that that slot is free when it is not (but that is no longer visible to the user).
I am trying to implement external appointment management (using VCAL2) - namely CREATE, UPDATE and CANCEL appointment - and I need it to work with Lotus Notes (and possibly in MS Outlook).
My VCAL2 files are in my opinion correct (RFC 5545), and CREATE and UPDATE actually works well. Problem is only with CANCEL and only in MS Outlook and Lotus Notes - they seem to ignore the cancellation request.
CREATE.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//myprod//ical-poc//SK
METHOD:PUBLISH
X-WR-RELCALID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
X-PUBLISHED-TTL:P1W
BEGIN:VEVENT
UID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
DTSTART;TZID=Europe/Bratislava:20150701T090000
SEQUENCE:0
TRANSP:OPAQUE
STATUS:CONFIRMED
DTEND;TZID=Europe/Bratislava:20150701T093000
SUMMARY:CREATED
ATTENDEE:mailto:valid#email.xxx
DESCRIPTION:Event description.
ORGANIZER:mailto:cal-poc#domain.com
DTSTAMP:20150630T182305Z
END:VEVENT
END:VCALENDAR
UPDATE.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//myprod//ical-poc//SK
METHOD:REQUEST
X-WR-RELCALID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
X-PUBLISHED-TTL:P1W
BEGIN:VEVENT
UID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
DTSTART;TZID=Europe/Bratislava:20150701T110000
SEQUENCE:1
TRANSP:OPAQUE
STATUS:CONFIRMED
DTEND;TZID=Europe/Bratislava:20150701T113000
SUMMARY:UPDATED+2
ATTENDEE:mailto:valid#email.xxx
DESCRIPTION:Event description.
ORGANIZER:mailto:cal-poc#domain.com
DTSTAMP:20150630T182428Z
END:VEVENT
END:VCALENDAR
CANCEL.ics
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//myprod//ical-poc//SK
METHOD:CANCEL
X-WR-RELCALID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
X-PUBLISHED-TTL:P1W
BEGIN:VEVENT
UID:5EF979C9-3764-4B55-93B8-3BB00DFA176C#uniq.id
DTSTART;TZID=Europe/Bratislava:20150701T110000
SEQUENCE:1
TRANSP:OPAQUE
STATUS:CANCELLED
DTEND;TZID=Europe/Bratislava:20150701T113000
SUMMARY:CREATED+2
ATTENDEE:mailto:valid#email.xxx
DESCRIPTION:Event description.
ORGANIZER:mailto:cal-poc#domain.com
DTSTAMP:20150630T182457Z
END:VEVENT
END:VCALENDAR
As almost always, answering my question (it seems, posting it on S/O gives me some superpowers to find an answer in the next few hours).
It seems, there are multiple combinations of properties in iCal format, that form the valid file for each client. Following is my analysis of it (please note, it does not support RSVPs, but RSVPs only require few more tweaks to the file like slightly different methods etc. and the point of the question was cancellation):
CREATE & UPDATE APPOINTMENT
All Applications:
METHOD must be PUBLISH
DTSTART and DTEND (or DURATION) present
SEQUENCE must be incremented on each update
ORGANIZER must be present
UID must be present
X-WR-RELCALID for Outlook must be present and equal to UID
PRODID must be present
STATUS should be CONFIRMED
CANCEL
All Applications:
STATUS must be CANCELLED
all other fields as above
Apple Calendar:
METHOD must be PUBLISH (or actually, must not be CANCEL)
DURATION (or DTEND) must be present
Microsoft Outlook:
METHOD must be CANCEL
DURATION (or DTEND) MUST NOT be present
Lotus Notes:
METHOD must be CANCEL
DURATION (or DTEND) must be present