locked
Events created via EAS contain embedded NULLs in the Timezone field when exported RRS feed

  • 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 specifications

    Thursday, 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
  • 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 

    Sunday, April 12, 2020 11:20 PM