Asked by:
Events created via EAS contain embedded NULLs in the Timezone field when exported

Question
-
I'm using the EAS API to create a calendar event in a MS Exchange calendar. (Using ThunderBird with TbSync plugin and EAS-4-TbSync provider)
The specification requires the "Timezone" field to be binary data that is base64-encoded before embedding to the XML, see https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-asdtype/fe4760d2-3f8a-4453-908d-e256a6319956
In particular it requires the "StandardName" field to be an array of 32 wide chars (2 Byte each) with unused characters set to zero.
The problem then is: Invites sent for this event (e.g. after creation or via OWA) still contain those padding zeros throwing off many other programs.
I believe this is a bug with the Exchange Server as it should remove those padding zeros on receiving them.
Example:
Request:
<?xml version="1.0"?>
<Sync xmlns='AirSync'>
<Collections>
<Collection>
<SyncKey>695568497</SyncKey>
<CollectionId>14</CollectionId>
<Commands>
<Change>
<ServerId>14%3A36</ServerId>
<ApplicationData>
<TimeZone xmlns='Calendar'>xP%2F%2F%2F0UAdQByAG8AcABlAC8AQgBlAHIAbABpAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAFAAIAAAAAAAAAAAAAAEUAdQByAG8AcABlAC8AQgBlAHIAbABpAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAEAAAAAAAAAxP%2F%2F%2Fw%3D%3D</TimeZone>
<AllDayEvent xmlns='Calendar'>0</AllDayEvent>
<Body xmlns='AirSyncBase'>
<Type xmlns='AirSyncBase'>1</Type>
<EstimatedDataSize xmlns='AirSyncBase'>0</EstimatedDataSize>
<Data xmlns='AirSyncBase'/>
</Body>
<BusyStatus xmlns='Calendar'>2</BusyStatus>
<DtStamp xmlns='Calendar'>20200409T123557Z</DtStamp>
<EndTime xmlns='Calendar'>20200410T160000Z</EndTime>
<Location xmlns='Calendar'/>
<Sensitivity xmlns='Calendar'>1</Sensitivity>
<Subject xmlns='Calendar'>test</Subject>
<StartTime xmlns='Calendar'>20200410T150000Z</StartTime>
<UID xmlns='Calendar'>14%3A36</UID>
<MeetingStatus xmlns='Calendar'>1</MeetingStatus>
<Attendees xmlns='Calendar'/>
<Categories xmlns='Calendar'/>
</ApplicationData>
</Change>
</Commands>
</Collection>
</Collections>
</Sync>
Received event after base64 decoding (attachment is base64 encoded):
BEGIN:VCALENDAR METHOD:PUBLISH PRODID:Microsoft Exchange Server 2010 VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Berlin������������������� BEGIN:STANDARD DTSTART:16010101T020000 TZOFFSETFROM:+0200 TZOFFSETTO:+0100 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10 END:STANDARD BEGIN:DAYLIGHT DTSTART:16010101T010000 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT ORGANIZER;CN="Grund, Alexander":MAILTO:alexander.grund@tu-dresden.de SUMMARY;LANGUAGE=de-DE:test DTSTART;TZID=Europe/Berlin�������������������:20200410T170000 DTEND;TZID=Europe/Berlin�������������������:20200410T180000 UID:14:36 CLASS:PERSONAL PRIORITY:5 DTSTAMP:20200409T124729Z TRANSP:OPAQUE STATUS:CONFIRMED SEQUENCE:0 LOCATION;LANGUAGE=de-DE: X-MICROSOFT-CDO-APPT-SEQUENCE:0 X-MICROSOFT-CDO-OWNERAPPTID:2118404413 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 END:VEVENT END:VCALENDAR
See the � chars above, which are NULL characters (that cannot be printed obviously)
Is there anything one can do at the client site or is this indeed a bug of the MS exchange server? If so does a patch exist?
Thursday, April 9, 2020 12:57 PM
All replies
-
Hi Flamefire,
Thanks for the question about Office Specifications. One of the Open Specifications team will respond shortly to assist you.
Regards,
Sreekanth Nadendla
Microsoft Windows Open specificationsThursday, April 9, 2020 2:33 PM -
Hi Flamefire,
I will investigate this issue for you. I would like to have a fiddler trace of the conversation between the client and the Exchange Server. Can you send email to dochelp at Microsoft dot com, referencing the URL for this thread and my name and we can arrange a secure file share for you to provide it.
Best regards,
Tom Jebo
Sr Escalation Engineer
Microsoft Open Specifications
Thursday, April 9, 2020 4:58 PM -
Hi Flamefire,
What API are you using? Have you tested against other versions of Exchange Server (i.e. more recent)? It looks like the zero padding is expected and I don't see any requirements in our Open Specifications to remove it. Perhaps the API should be removing these.
Tom
Friday, April 10, 2020 6:20 PM -
My assumption was that you were seeing this padding included in EAS response when syncing this item from Exchange Server 2010. Perhaps I was mistaken in that assumption. For EAS responses (sync) the TimeZone struct value should include the padding. But perhaps you are saying that the calendar item, when synced via some other protocol (MAPI?) it showing this padding for the StandardName. Is that the case? Please clarify.
Tom
Friday, April 10, 2020 6:28 PM -
This is using the Exchange server at our university (TU Dresden), I'm an employee there.
Can you clarify what do you mean by "What API"? I'm using the EAS API of that server installed. I guess thats MS Exchange 2010 (although I vaguely remember seeing it return 2013 sometimes, but might be mistaken)
Is there anything I can do (cmd to run?) to gather the required information?
> My assumption was that you were seeing this padding included in EAS response when syncing this item from Exchange Server 2010
The problem I'm reporting here is not with the EAS response but with invites sent for that event. Maybe better description of the workflow:
- Create event via EAS API from within ThunderBird (but I guess application doesn't matter)
- Open OWS web portal
- Click on the created event -> Invite or forward
- Sent to some Email-address
- Open Source-Code-View for that EMail
- Search for MIME part "calendar/text"
- Decode base64 encoded MIME part containing a VCARD calendar invitation
The EAS request and the VCARD invite are included in the initial post. As can be seen the VCARD contains the padding although it is a text-based protocol which hence should not contain padding, especially not zeros
Sunday, April 12, 2020 11:41 AM - Create event via EAS API from within ThunderBird (but I guess application doesn't matter)
-
The EAS protocol specifically states that these zero padding bytes need to be included both in request and responses (i.e. sync). Once the item is on the server, it may or may not include the padding as stored internally, the EAS specification is silent on how server processing should handle the padding. I would expect that once internalized to say, a MAPI property, it would remove the padding.
The next part is a little unclear to me but it looks like you are viewing the email in a web email app (perhaps Office.com, OWA, etc...) and looking at the HTML page source code for that item. If that's the case, then you will need to report what you believe is a bug to the correct channel for that application. This forum is not the correct place for it. We deal specifically with the wire format protocol and from your description and our specification, I see nothing wrong. It may indeed be a problem in our web app but that would be for the Outlook web app support folks to decide.
Tom
- Proposed as answer by Tom JeboMicrosoft employee Friday, April 17, 2020 12:38 AM
Sunday, April 12, 2020 11:20 PM