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 769044 - Customized timezones not recognized
Customized timezones not recognized
Status: VERIFIED FIXED
Product: evolution-ews
Classification: Other
Component: Calendar
3.18.x
Other Linux
: Normal normal
: ---
Assigned To: Evolution EWS maintainer(s)
Evolution EWS maintainer(s)
: 769668 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2016-07-21 15:33 UTC by Derek Atkins
Modified: 2016-09-07 13:32 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Derek Atkins 2016-07-21 15:33:23 UTC
I am in the US EDT timezone (America/New_York).  I created (on my Android phone) an appointment in the Europe/Berlin timezone which shows up perfectly on Android and within the Outlook Web Client.  HOWEVER, Evolution with EWS imported the transaction in the LOCAL time zone.  I.e., the appointment was set for 1400 Europe/Berlin which should be 0800 in US/EDT, but evolution shows the appointment at 1400 US/EDT instead of 0800.  Both Android and Outlook showed the appointment correctly at 0800.

If I open the appointment editor in Evo, the Timezone selector appears (which seems to imply that Evo recognizes that it's not a current timezone) but the selector box is empty.

If I go through and re-select Europe/Berlin it will momentarily move the item to 0800 and then immediately reset back to where it was at 1400.

If I *CREATE* the appointment in Evo and set the timezone (after selecting the "View Timezones" menu item in order to choose it) then the right thing happens and the appointment is in the correct timezone, showing at 0800 local both in Evo and on my Android phone.

So the issue is only importing items from Office365 in a foreign timezone.

I see nothing printed to stdout/stderr that could be related to this issue.

I'm happy to provide additional data, if required, and if you walk me through the process of obtaining whatever data you want.
Comment 1 Milan Crha 2016-08-02 15:26:49 UTC
Thanks for a bug report. This sounds very close to bug #740208. The 3.20.4 release contains a fix in this area, made within bug #634294. It would be nice to give it a try, maybe in a virtual machine with a distribution which provides it. Could you do that, please?
Comment 2 Derek Atkins 2016-08-02 19:50:58 UTC
Just tried 3.20.4 and, unfortunately, it still has the same bug.

I created an entry for today at 2200 GMT+02 (Europe/Berlin) from my android phone.  It shows up correctly at 1600 (US/EDT) on my phone and in EWS, but in Evolution is shows up at 2200 US/EDT.
Comment 3 Derek Atkins 2016-08-02 19:53:05 UTC
(and for the record, creating the item from evo in the foreign timezone works correctly, just like in 3.18)
Comment 4 Milan Crha 2016-08-03 15:44:12 UTC
From the log Derek sent me, the timezone set from the Android is claimed as "Customized Time Zone", both in the XML:

      <t:StartTimeZone Name="" Id="Customized Time Zone">
	<t:Periods>
	  <t:Period Bias="-PT1H" Name="Standard" Id="trule:Microsoft/Registry/Customized Time Zone/1-Standard"/>
	  <t:Period Bias="-PT2H" Name="Daylight" Id="trule:Microsoft/Registry/Customized Time Zone/1-Daylight"/>
	</t:Periods>
	<t:TransitionsGroups>
	  <t:TransitionsGroup Id="0">
	    <t:RecurringDayTransition>
	      <t:To Kind="Period">trule:Microsoft/Registry/Customized Time Zone/1-Daylight</t:To>
	      <t:TimeOffset>PT2H</t:TimeOffset>
	      <t:Month>3</t:Month>
	      <t:DayOfWeek>Sunday</t:DayOfWeek>
	      <t:Occurrence>-1</t:Occurrence>
	    </t:RecurringDayTransition>
	    <t:RecurringDayTransition>
	      <t:To Kind="Period">trule:Microsoft/Registry/Customized Time Zone/1-Standard</t:To>
	      <t:TimeOffset>PT3H</t:TimeOffset>
	      <t:Month>10</t:Month>
	      <t:DayOfWeek>Sunday</t:DayOfWeek>
	      <t:Occurrence>-1</t:Occurrence>
	    </t:RecurringDayTransition>
	  </t:TransitionsGroup>
	</t:TransitionsGroups>
	<t:Transitions>
	  <t:Transition>
	    <t:To Kind="Group">0</t:To>
	  </t:Transition>
	</t:Transitions>
      </t:StartTimeZone>

and in the iCalendar content as well:

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Customized Time Zone
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:123
SUMMARY;LANGUAGE=en-US:Test
DTSTART;TZID=Customized Time Zone:20160803T180000
DTEND;TZID=Customized Time Zone:20160803T190000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20160803T134006Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2114460992
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
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR

This "Customized Time Zone" cannot be stored in the calendar, because the next event would overwrite it and crating one timezone for each event would just make the cache too large, thus I would rather try to match this timezone to any known to libical and use it instead, even it will not match the location properly in most cases, it'll match only the time offset.
Comment 5 Derek Atkins 2016-08-03 15:51:21 UTC
FTR, this seems to be an issue with Android. using custom timezones  Apparently OWA uses a correct timezone when you set it in the UI and then create an event (which of course displays correctly both in Evo and on Android).

I like the idea of finding a timezone that matches the custom setting.  I'm less worried about the geographical area, except making sure the DST settings are correct.  E.g. just because I set it to Berlin I'd accept Evo claiming it is Paris.

Thanks!!
Comment 6 Milan Crha 2016-08-04 13:58:45 UTC
As I mentioned on the IRC, I changed my mind and I'm not trying to pair the "Customized time zone" with an existing libical timezone, because such code would be over complex and easy to break. Instead, I'm using the timezone as is. The below ews change can read the timezone and use it afterwards, showing the event at the correct time. There is a problem when writing changes into the event, ideally a timezone should be changed too, to the standard libical timezone. Note that only parts which changed are saved to the server, where the timezone itself doesn't qualify as a change, if it uses the same rules as the customized timezone.

Created commit dd1f5ee in ews master (3.21.90+)
Created commit 222b644 in ews gnome-3-20 (3.20.5+)

I found also some issues in the component editor dialog, showing incorrect time zone and when it was expanded (Select button clicked), then the map was not aware of the customized time zone at all. I fixed it too, but only for the development version.

Created commit_ab4689b in evo master (3.21.90+) [1]

[1] https://git.gnome.org/browse/evolution/commit/?id=ab4689b
Comment 7 Derek Atkins 2016-08-04 14:47:34 UTC
I've verified that this fix works for me.
Thank you for the quick turnaround!
Comment 8 Milan Crha 2016-08-10 06:43:03 UTC
*** Bug 769668 has been marked as a duplicate of this bug. ***
Comment 9 Fernando 2016-09-07 13:30:41 UTC
It seems related but I cannot confirm if it is the same.

I cannot check bug769668 because upgrading to 3.20.5 has disappeared the timezone selector in appointments editor.
Comment 10 Fernando 2016-09-07 13:32:37 UTC
My fault, previous comment must be in bug769668.