[EWS][SOAP] UpdateItem and meeting request: more properties for attendee change than those I change for originator


O (originator) has set up a meeting with A as required attendee, A accepted.

I call UpdateItem (in an EWS SOAP request) and change 3 items in O's appointment with `ConflictResolution="NeverOverwrite" SendMeetingInvitationsOrCancellations="SendToNone"`

These three now have different values in the appointments of O and A:

    Item                 Value for O     Value for A
    ----                 -----------     -----------
    Subject              Subject for O   Original subject
    Location             Over here       Here
    Extended property X  100             10


I now change only the subject for O to 'Changed subject' and do this with UpdateItem attributes `ConflictResolution="AutoResolve" SendMeetingInvitationsOrCancellations="SendOnlyToAll"`, because I want that change to propagate to A's appointment.


    Item                 Value for O      Value for A
    ----                 -----------      -----------
    Subject              Changed subject  Changed subject
    Location             Over here        Over here
    Extended property X  100              100

**The location and the custom property for A also change!** (Probably all properties are updated)
I don't want that. I want especially the extended properties for A to remain unaffected.

(How) can this be done?

[Testing against Office 365, but the version is probably irrelevant].

Background (added): **This is a big issue for us**. We store IDs of appointments in the synced database in the Exchange extended properties. If I now change any property of O's appointment the ID in A's extended properties gets overwritten with O's values and we lose our synchronization.
  • Edited by JanDoggen Friday, July 31, 2015 3:21 PM Added background (importance)
July 23rd, 2015 8:49am

Glen, I have read your answer a couple of times, investigated PidLid(Clean)GlobalObjectId, but I don't quite get it yet.

In the external database I sync with, organizer O has an appointment record with ID 100, attendee A has one with ID 10. How/where would these values need to be stored (in a PidLidCleanGlobalObjectId) so that the A appointment in Exchange can maintain the value 10 when O's appointment is updated?

I don't see how I can make a construction - especially what refers to what...

Can you elaborate a little?
Free Windows Admin Tool Kit Click here and download it now
August 5th, 2015 9:08am

>> How/where would these values need to be stored (in a PidLidCleanGlobalObjectId)

You don't stored the value in that property (it act as the unqiue reference property for the meeting object PidLidCleanGlobalObjectId) that is just the reference you can always use to find/relate a particular Appointment/meeting objects. You need to create a new object in the attendees mailbox and write the value you want to store to that object with the reference property (so you can search and find the associated object that you created because PidLidCleanGlobalObjectId is an unchanging property).

What you want to do is avoid writing properties to meeting objects the user doesn't own else they will be overwritten as part of the normal operations of Meeting in Exchange when updates are sent. Hence create an object the user does own and relate it based on the PidLidCleanGlobalObjectId. How and where you store those objects is up to use (eg you could use FAI collection of the calendar folder etc). Read "Prevent inconsistencies in meeting notes" in https://support.office.com/en-us/article/Best-practices-when-using-the-Outlook-Calendar-d93f72d3-2361-4e0d-8d6a-5c4939c17f39 . The one problem with this approach is you do need to have a process to managed the objects your creating when the calendar objects go stale etc

August 6th, 2015 1:07am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics