none
[EWS] iCalUid vs PidLidGlobalObjectId RRS feed

  • Question

  • Hello,

    The short question is: can iCalUid be used in place of PidLidGlobalObjectId

    We’re considering using iCalUid as an unique identifier for calendar appointments, in an external database. Are there any limitations that we should be aware of?  Is iCalUid mutable when the calendar appointment is moved between folders, or in the case where the Exchange environment is moved or upgraded? 

    We know that the ItemId is mutable in some cases. Hence, we have been using PidLidGlobalObjectId as a database key.  However, we have client applications which are aware only of iCalUi, so in order to support those we also cross-reference the two.  Since the cost of maintaining two indices is greater both in terms of complexity and performance, we’d like to understand if it’s feasible to rely on iCalUid alone.

    Thanks,

    Kathy

    Wednesday, April 6, 2016 11:53 PM

All replies

  • >>The short question is: can iCalUid be used in place of PidLidGlobalObjectId

    You should really be using the PidLidCleanGlobalObjectId rather then PidLidGlobalObjectId for the reasons outlined in https://blogs.msdn.microsoft.com/mstehle/2009/09/02/ews-uid-not-always-the-same-for-orphaned-instances-of-the-same-meeting/ .

    >> Is iCalUid mutable when the calendar appointment is moved between folders, or in the case where the Exchange environment is moved or upgraded? 

    Yes as per " In Exchange 2007 SP2 UID is based on the CleanGlobalObjectId" which is a generated property as per https://msdn.microsoft.com/en-us/library/office/cc839502.aspx (which mean its not linked to EntryId's etc which changes when you move items between folder etc).

    I would suggest you maintain the PidLidCleanGlobalObjectId as this gives the highest level of correlation (eg it always works in my experience and you can use it to search for Appointments and Meeting invitations).

    Cheers
    Glen

    Thursday, April 7, 2016 4:36 AM
  • Hi Glen,

    Thank you so much for your prompt response.  Really appreciate it!

    Sounds like you definitely advocate against using (relying on) iCalUid to be an unique identifier.  We are already using PidLidGlobalObjectId to search for appointments, but to look for other data in our external database, we had no choice but using iCalUid for reasons mentioned above in my post. 

    Thanks for bringing up the PidLidCleanGlobalObjectId. We'll look into switching to it as suggested.  In the mean time, is there issue with us using PidLidGlobaleObjectID (without the Clean)?

    Thank you!,

    Kathy
    Friday, April 8, 2016 5:50 PM
  • >> Thanks for bringing up the PidLidCleanGlobalObjectId. We'll look into switching to it as suggested.  In the mean time, is there issue with us using PidLidGlobaleObjectID (without the Clean)?

    Depends on the environment, type of appointments, type of clients etc, there is a reason why both properties exist, you probably wont have an issues but.....

    Cheers
    Glen

    Monday, April 11, 2016 2:13 AM