none
Meeting Global ID is empty when loading from Outlook PST files through MAPI

    Question

  • Hi All,

    We have a project which needs to load meeting data from Outlook PST files.

    Based on the information in this link http://support.microsoft.com/kb/899919/en-us, in the Outlook there is Global Object ID which uniquely identifies each meeting. I followed the sample code in this article but unfortunately in some cases this Global Object ID doesn't exist. I used Outlook SPY to check and also can not find the Global Object ID for some meeting entries. Is there any other way to extract the Global Object ID?

    Or is there any explanation that the Global Object ID can be empty? From the link above, it apparently not. I need a MS document somewhere so that I can explain to my customer that this id can be empty.

    Monday, December 31, 2012 2:13 PM

Answers

  • Was the PST file that you uploaded the actual store that received the meeting? Or did you copy the appointmenst there one way or another?

    If I open recurring appointments with exceptions in the PSTs, the exceptions (stored as embedded message attachment) do have the global and instance ids - you can see them in OutlookSpy. Outlook does nto wipe them out when an appointmeent is copied - it only deletes the id on the master appointment.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Sunday, January 06, 2013 4:31 PM
  • I think I know what is going on - if you move an appointmeent from one folder (Exchange) to another (PST), Outlook preserves the appointment id (since there will still be just one instance of the appointment). If you copy the appointment (Ctrl+drag), Outlook wipes out the appointment id since not doing so will create 2 appointments that share the same id.

    How exactly were the appointments copied?


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Saturday, January 05, 2013 6:52 PM
  • The only way to do that is to make the copy of the appointment using your own code.

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Tuesday, January 08, 2013 6:11 AM

All replies

  • Older versions of Outlook only created the id when another attendee was added and the meeting invitation was sent.

    Newer version (Outlook 2007+) creates the id from the get go.

    If the id is not set, you can set your id as long as it confirms tio the specs.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Monday, December 31, 2012 3:03 PM
  • Thanks for the reply.

    I used Outlook 2007. Because I need to parse meetings from different users and the Calendar UID needs to be matched for further processing, I will need a mechanism to match the same meeting entries in the meeting chair and invitees.

    Friday, January 04, 2013 2:26 AM
  • If the meeting was never sent by Outlook, how can it be in the calendars of different users?

    If your code is programmatically creating these appointments in multiple mailboxes, then it is your responsibility to set the appointment id correctly.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Friday, January 04, 2013 5:31 AM
  • Sorry, I may not explain myself clearly.

    The scenario is:

    User A sent out a meeting invite (XXX meeting) to user B through Outlook. And then user B accept this XXX meeting from his Outlook. In this case, these two meeting entries are showing in both User A and User B's calendar view.

    Our application is a desktop application which will need to read the meetings from both in User A's and User B's local PST file (through Outlook MAPI) and perform further processing in a central place. During this further processing, the application needs to know if this XXX meeting in User A's PST file and User B's PST are the same entry. Comparing the subject/to/cc/meeting schedule may do the trick. But from the document there is supposed to be a Global UID for each meeting. I just don't know why this value is not always there.

    Thank you.

    Friday, January 04, 2013 5:51 AM
  • I don't think this is possible - the only way for Outlook to match the meeting invitations/updates and the replies is through the appointment id.

    How exactly are you reading the appointment id? What is your code?

    When your code fails to retrieve the id, what do you see in OutlookSpy or MFCMAPI?


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Friday, January 04, 2013 5:57 AM
  • It looks very weird to me. I followed the sample in this link: http://support.microsoft.com/kb/899919/en-us

    When I looked in OutlookSpy or MFCMAPI for these PST files, the global uid is not there.

    Friday, January 04, 2013 1:02 PM
  • Even if you have the meeting request/update in the Sent Items/Infox folder for that appointment? Are you sure?

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Friday, January 04, 2013 1:38 PM
  • Yes, I am sure.

    Today I talked to some other Outlook experts and they mentioned the Global UID could be lost when the meeting entry is moved to a PST file since I am loading the data from a PST file. Do you think this is possible?

    Friday, January 04, 2013 2:14 PM
  • Where did you hear that? If yo udrag an appointment from an Exchange mailbox to a PST file, the id will certainly stay the same. Were the invitation updates for that meeting really sent out by Outlook?

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Friday, January 04, 2013 7:17 PM
  • Hi Dmitry,

    Thanks a lot for your reply. I just uploaded my testing pst files here:

    http://pan.baidu.com/share/link?shareid=158187&uk=1445717028

    There are two files, one is for chair, the other is invitee. You can open it in Outlook with Outlook Spy and found some meeting entries don't have Global UID. Thanks.

    Saturday, January 05, 2013 3:21 AM
  • I think I know what is going on - if you move an appointmeent from one folder (Exchange) to another (PST), Outlook preserves the appointment id (since there will still be just one instance of the appointment). If you copy the appointment (Ctrl+drag), Outlook wipes out the appointment id since not doing so will create 2 appointments that share the same id.

    How exactly were the appointments copied?


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Saturday, January 05, 2013 6:52 PM
  • No, the meeting is directly scheduled from the Outlook client.
    Sunday, January 06, 2013 7:25 AM
  • Was the PST file that you uploaded the actual store that received the meeting? Or did you copy the appointmenst there one way or another?

    If I open recurring appointments with exceptions in the PSTs, the exceptions (stored as embedded message attachment) do have the global and instance ids - you can see them in OutlookSpy. Outlook does nto wipe them out when an appointmeent is copied - it only deletes the id on the master appointment.


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Sunday, January 06, 2013 4:31 PM
  • I think I figured out what is the cause.

    The meeting is scheduled in the Outlook directly. But when I output them to PST files, I used File -> Export function. If I checked the data before exporting, the Global UID can be found. So I think it is the Export action which wipes the Global UID.

    Monday, January 07, 2013 5:31 AM
  • That would make sense... Manually dragging (Ctrl+drag) would do the same.

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Monday, January 07, 2013 5:55 AM
  • So is there a way to preserve this id during File archive/export like a configuration option somewhere? Thanks.
    Monday, January 07, 2013 8:48 AM
  • I don't think you can change the export behavior in any way.

    Can you try to export the appointments programmatically?


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Monday, January 07, 2013 1:41 PM
  •  I can look into that. But the scenario in our application is that the customer will generate the PST file themselves. I will need to find out a way to generate PSTs with id preserved.

    Thanks a lot for you help on this issue.

    Tuesday, January 08, 2013 4:59 AM
  • The only way to do that is to make the copy of the appointment using your own code.

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.4 is now available!

    Tuesday, January 08, 2013 6:11 AM