Share via


Best Practices - EWS is not generating ATTENDEE section for iCal/MIME/VCALENDAR pulled from a meeting.

This is expected behavior. Per MSDN: Programmatically reestablishing meeting organizer/attendee relationships directly on the appointments is not supported.

Calendar POST items do not have attendees per RFC and that's what is being generated.  What would go into an ATTENDEE section of iCal is a relational point in time thing.  There is an ongoing relationship between a meeting organizer and its attendees for calendar items and this relationship is handled through calendar messages (meeting requests, meeting acceptance, meeting cancelations, etc.). The content of such messages can and do change over time.  Creating a calendar item directly into a calendar with attendees with content generated from another calendar can cause some very serious issues such orphaning meetings and attendees, creating duplicate meetings and other calendar corruption. If you wish to use generated iCAL content then you should add new attendees and generate a new UID at least. Note that if you do not update the UID to a new one then your calendar and that of the attendees could well be corrupted since the UID is what uniquely identifies each meeting and its meeting messages  The organizer is stamped at the time of creation and cannot be set or overwritten by code.  If your migrating from one calendaring system to another then you should cancel the old meetings and create new meetings and send new meeting requests.

If your application is an archival application then please note that MIME/ICS is not a good form of data to store since you won't get all the properties.  I've seen many applications which try to store MIME & iCal content and then use it to recreate items and it only mostly works - there are usually issues which are run into with missing properties, properties which cannot be set or point in time misalignment of data because a calendar update message was missed.  Overall EWS is not a good platform for backup and restore.

Please see:

Exporting and importing items by using EWS in Exchange
https://msdn.microsoft.com/en-us/library/office/dn672316(v=exchg.150).aspx

Appointment objects in Exchange can have complex relationships and settings. Appointments that have attendees (meetings) have settings that tie together the meeting organizer and meeting attendees. These settings are not maintained when you export and import appointments. Programmatically reestablishing meeting organizer/attendee relationships directly on the appointments is not supported. An option you do have for reestablishing those relationships is to perform post-processing after an import, then have an organizer resend the meetings and have the attendees accept the meetings. You can use Exchange impersonation to make the calls for both the organizer and the attendees. You should change the UID property of the Appointment object before you import to avoid having meetings be incorrectly related to other meetings in a mailbox.

EWS is not designed for mailbox backup and restore. To back up and restore databases, use the backup and restore API. See also Backup, restore, and disaster recovery on TechNet.

About: Exchange APIs to backup and restore data
https://blogs.msdn.com/b/webdav_101/archive/2015/06/01/about-exchange-apis-to-backup-and-restore.aspx

Developer support limitations for public protocols
https://support.microsoft.com/kb/2269506

Howto: Set the organizer of a meeting on the calendar of an attendee using EWS.
https://blogs.msdn.com/b/webdav_101/archive/2011/09/28/howto-set-the-organizer-of-a-meeting-on-the-calendar-of-an-attendee-using-ews.aspx

EWS Best Practices
https://blogs.msdn.com/b/webdav_101/archive/2015/05/03/ews-best-practices.aspx