English    Deutsch

Events with a red dashed border

If you see an event with a red dashed border in CalenGoo, it means the event could not be uploaded because Google returned an error when CalenGoo tried to upload the event. E.g. such an event may look like this:


A known situation that can cause this is if you have created recurring events in Google Calendar using Google’s Exchange Sync service. Google’s Exchange Sync service seems to create erroneous events. To fix this problem just end the recurring event with Google Calendar and start a new recurring event. You can do this by changing the event (e.g. add a character to the title or the description) and choosing “All following” on the Google Calendar website. This will create a correct recurring event for all following events of this recurring event. And these correct events can then be modified by CalenGoo, too.

To get rid of the red-dashed border events afterward, you can use “Settings”, “Reset calendars” in CalenGoo to erase all events and calendars and re-download everything from Google.



Technical details

If you are interested in a technical analysis and explanation of the problem, I will explain it here:

First I created two identical recurring events, one was created with CalenGoo and labeled “Created by CalenGoo”. Another one was created with the iPhone’s calendar using Google’s Exchange Sync service and labeled “Created by iPhone/Exchange”. Then I tried to create a recurrence exception for “Created by CalenGoo”. It worked and was successfully uploaded. Then I tried to create a recurrence exception for “Created by iPhone/Exchange”. This resulted in an error, Google refused the event and CalenGoo marked it with a red dashed border:


With a network scanner and by turning CalenGoo’s SSL encryption off, I could see what has happened: CalenGoo sent
   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:app="http://www.w3.org/2007/app" xmlns:gCal="http://schemas.google.com/gCal/2005">
   3         <gd:originalEvent id="34u19309s6cjt2lgr7746p5dfk" href="http://www.google.com/calendar/feeds/ciphfus9g025ei3h0hn4j80iic%40group.calendar.google.com/private/full/34u19309s6cjt2lgr7746p5dfk">
   4                 <gd:when startTime="2011-02-06T13:00:00+01:00"/>
   5         </gd:originalEvent>
   6         <gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
   7         <category term="http://schemas.google.com/g/2005#event" scheme="http://schemas.google.com/g/2005#kind"/>
   8         <title>Created by CalenGoo</title>
   9         <gd:when startTime="2011-02-06T12:00:00+01:00" endTime="2011-02-06T13:00:00+01:00"/>
  10 </entry>

to Google to create a recurrence exception for the “Created by CalenGoo” event. Google responded with

HTTP/1.1 201 Created

Then CalenGoo sent
   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:app="http://www.w3.org/2007/app" xmlns:gCal="http://schemas.google.com/gCal/2005">
   3         <gd:originalEvent id="F8F0DDF535D74FB097F33ABEF68BD82A00000000000000000000000000000000" href="http://www.google.com/calendar/feeds/ciphfus9g025ei3h0hn4j80iic%40group.calendar.google.com/private/full/_8os4cc248h33acpl8grj8hi260sjehhj6d0k4ha66os44h1o690j0c1g60o30c1g60o30c1g60o30c1g60o30c1g60o30c1g60o30c0">
   4                 <gd:when startTime="2011-02-06T13:00:00+01:00"/>
   5         </gd:originalEvent>
   6         <gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>
   7         <category term="http://schemas.google.com/g/2005#event" scheme="http://schemas.google.com/g/2005#kind"/>
   8         <title>Created by iPhone/Exchange</title>
   9         <gd:when startTime="2011-02-06T12:00:00+01:00" endTime="2011-02-06T13:00:00+01:00"/>
  10 </entry>

to create a recurrence exception for the “Created by iPhone/Exchange” event, and Google responded with

HTTP/1.1 403 Forbidden

g:originalEvent [2011-02-06 12:00:00] does NOT correspond to an instance of the recurring event.

That’s the problem. The events should be (and visually are) identical, so Google should accept the recurrence exception in both cases. Additionally Google Exchange Sync used a strange time zone when creating the event:

Event created by CalenGoo:

DTSTART;TZID=Europe/Berlin:20110205T130000
DTEND;TZID=Europe/Berlin:20110205T140000
RRULE:FREQ=DAILY
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE


Event created by Google Exchange Sync:

DTSTART;TZID=Africa/Ceuta:20110205T130000
DTEND;TZID=Africa/Ceuta:20110205T140000
RRULE:FREQ=DAILY
BEGIN:VTIMEZONE
TZID:Africa/Ceuta
X-LIC-LOCATION:Africa/Ceuta
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE


As you can see, a wrong time zone is used (“Africa/Ceuta” instead of “Europe/Berlin”) but the wrong time zone isn’t that wrong, it still uses the same time zone offset and daylight saving time. So there is no reason why Google does not accept the recurrence exception. The recurring event must be somehow erroneous in a hidden data structure in Google Calendar’s database.