After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 734747 - Fails to provide "Eastern Standard Time" timezone
Fails to provide "Eastern Standard Time" timezone
Status: RESOLVED FIXED
Product: evolution-ews
Classification: Other
Component: Calendar
3.12.x
Other Linux
: Normal normal
: ---
Assigned To: Evolution EWS maintainer(s)
Evolution EWS maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2014-08-13 22:35 UTC by junk
Modified: 2014-11-25 13:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description junk 2014-08-13 22:35:28 UTC
If I create an all day event with Evolution or OWA then evolution with show the all day flag ticked, If I create an all day event in iOS or Android using the respective exchange connectors Evolution does not show it as being an all day event although the OWA, iOS, Android and Lightening-with-ews-plugin calenders do.
Comment 1 Milan Crha 2014-11-12 11:02:48 UTC
Thanks for a bug rpeort. Could you create a test event in the Android and/or iOS, view it in evolution, then right-click it in Evolution, save it as iCalendar, remove any sensitive data from the saved event and attach it here, please?
Comment 2 junk 2014-11-19 20:39:13 UTC
I can't save events from the EWS calendar
it fails and evolution report 

(evolution:19812): calendar-modules-WARNING **: Could not convert item to a string

Exporting from other calendar sources work fine.
Comment 3 Milan Crha 2014-11-21 07:44:18 UTC
Hmm, it failed to read a timezone from the calendar for some reason. As the event can be seen in UI, it is stored at
   ~/.cache/evolution/calendar/<ews-calendar-uid>/<some-weird-id>/calendar.ics
where the events are those lines between BEGIN:VEVENT and END:VEVENT inclusive. You can see event's summary in the file too, and find the corresponding one there. Note that they can be in the file multiple times, if it's a recurring event with detached instances.
Comment 4 junk 2014-11-21 10:36:08 UTC
Non recurring all day events created on iOS and Android.

BEGIN:VEVENT
SUMMARY;LANGUAGE=en-GB:All day event created on iOS
DTSTART;TZID=Eastern Standard Time:20141121T190000
DTEND;TZID=Eastern Standard Time:20141122T190000
UID:0CD932B767F24ECEA7B6F91DDE26F33600000000000000000000000000000000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20141114T095424Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2112583047
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-EVOLUTION-ITEMID:
 AAMkADgxMzJlMDhhLTYyMjEtNDU0ZC05NjQ3LWViMDQxN2NhYjQ4MwBGAAAAAAC7qHnh1V9RQ4
 6MS4eMxsVZBwB2vipmjDSHTJiDNJbtae5LAX2z2p10AAAlL/linF7FToz5mWb8OPATAAAi2oKu
 AAA=
X-EVOLUTION-CHANGEKEY:DwAAABYAAAAlL/linF7FToz5mWb8OPATAAAi3dWr
END:VEVENT



BEGIN:VEVENT
SUMMARY;LANGUAGE=en-US:Android created event
DTSTART;TZID=Eastern Standard Time:20140829T190000
DTEND;TZID=Eastern Standard Time:20140830T190000
UID:328f9606-81cb-496f-93d9-c55bb9a7496d
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20140813T211225Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2112383645
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-EVOLUTION-ITEMID:
 AAMkADgxMzJlMDhhLTYyMjEtNDU0ZC05NjQ3LWViMDQxN2NhYjQ4MwBGAAAAAAC7qHnh1V9RQ4
 6MS4eMxsVZBwB2vipmjDSHTJiDNJbtae5LAX2z2p10AAB2vipmjDSHTJiDNJbtae5LAsHF23Ly
 AAA=
X-EVOLUTION-CHANGEKEY:DwAAABYAAAB2vipmjDSHTJiDNJbtae5LAsHF24OM
BEGIN:VALARM
TRIGGER;VALUE=DURATION;RELATED=START:-P1D
ACTION:DISPLAY
X-EVOLUTION-ALARM-UID:
 20141115T092751Z-3109-1001-1-64@latidude.clarkconnect.lan
DESCRIPTION:Android created event
END:VALARM
END:VEVENT
Comment 5 Milan Crha 2014-11-21 11:29:23 UTC
(In reply to comment #4)
> DTSTART;TZID=Eastern Standard Time:20141121T190000
> DTEND;TZID=Eastern Standard Time:20141122T190000
> ....
>
> DTSTART;TZID=Eastern Standard Time:20140829T190000
> DTEND;TZID=Eastern Standard Time:20140830T190000

Thanks for the update. The above means that the event is 24 hours long (like an all day event), but it starts at 7PM EST. Only events from midnight to midnight (in the Evolution's set timezone) are shown and understood as the all day events in Evolution.

I do not know why the Android chose to use a 7PM EST, instead of midnight, but the evolution's behaviour is correct in this case.

Interesting is that they even claim that the event is not an all day event:
> X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
Comment 6 junk 2014-11-21 11:32:51 UTC
Well, hang on, I'm in the UK and the calendar is hosted in the US. Also why does OWA and Thunderbird EWS show it as an All Day Event?
Comment 7 junk 2014-11-21 18:27:40 UTC
So that's it is it? OWA, Lightning EWS, MS Outlook, iOS and Android calendar are all wrong and Evolution is right? Are you sure the EWS plugin isn't Failing on the nutty timezone and setting the ALLDAY to FALSE by itself?
Comment 8 Milan Crha 2014-11-24 09:26:03 UTC
I'd not say they are wrong. :) The way evolution-ews interpreted the event is correct with the way evolution itself shows it. There can be multiple issues, like the timezone shift incorrectly calculated during the conversion inside evolution-ews. Could you check your timezone setting in evolution and on the other devices (like the android or OWA), please? You can find it in evolution at Edit->Preferences->Calendar and Tasks->General tab, at the top. The OWA has it buried in settings somewhere (depends on actual exchange server version). Where the Android has it I do not know, maybe in the Calendar application settings as such.

If I count it properly, then the EST converted into a UK time is what is expected, the 7PM converts into midnight of the UK time. That should be shown as an all day event in evolution, if the timezone is set properly (and, of course, unless a bug is somewhere there).
Comment 9 junk 2014-11-24 18:27:01 UTC
Evolution is set to use the System Timezone. My system timezone in Gnome 3 is Europe/London. All of my other devices are set the same.
Comment 10 Milan Crha 2014-11-25 08:02:58 UTC
I tried to reproduce the failure with your timezone and I can confirm it. 

(In reply to comment #3)
> Hmm, it failed to read a timezone from the calendar for some reason.

And this ^^^ is the reason. As the timezone is unknown, a floating time is used, which means "whichever timezone is used for the view, the time will stick the same", and it means 7PM - 7PM in our case. I changed the "Eastern Standard Time" to EST in the component and then the event is shown as a whole day event on Saturday, November 22nd.

So the bug is that evolution-ews failed to provide the timezone.
Comment 11 Milan Crha 2014-11-25 08:25:03 UTC
It seems to me that iOS and Android are using "windows" timezones, instead of Exchange timezones. The reason is that I cannot select "Eastern Standard Times" in an Outlook or an OWA interface, there are used different timezone names, about which evolution-ews knows. I'll extend the mapping table to know about these "standard" zones as well, which should fix the issue (maybe only after re-download of the local calendar cache).
Comment 12 Milan Crha 2014-11-25 13:22:41 UTC
Hmm, more and more diving into it I find more and more things being different from my personal expectations. I found an event which also reports Eastern Standard Time timezone, the same as I realized the evolution-ews knows about this timezone name, it's only the get_timezone() backend function which doesn't try to convert the timezone name into anything compatible when not found by usual means. I made it try this and it allowed me to save the event (the timezone had been found). I made couple more changes around this, like the population of the windows zones hash tables doesn't overwrite a record with the same name when it is in the hash table already, which also meant that I could remove "Internal fixes" from the XML with the pairs of the compatible timezones in libical and windows.

A side effect is that for example the "Eastern Standard Time" newly maps to America/New_York, while it used to map to America/Kentucky/Louisville.

Created commit 3ef4c01 in ews master (3.13.9+) [1]
Created commit 37ce356 in ews evolution-ews-3-12 (3.12.9+)

[1] https://git.gnome.org/browse/evolution-ews/commit/?id=3ef4c01