I collect the appointments in an Exchange calendar with a SOAP FindItem
call. This returns single events and (custom) occurrences of recurring events.
When processing these I use GetItem
to retrieve the ID of the master event for each occurrence (ItemType
=citOccurrence
). After that is done, I can determine if I still need to store the master event internally (and retrieve all its details), or if I have already done so.
But with many occurrence of the same recurring event (especially with unending ones) in a longer FindItem
period, this means having to do a lot of GetItem
'get master' calls to the server (with the 1st one resulting in 'you must store the master' and all the others in 'you already have this master').
I have looked at the properties returned with BaseShape
AllProperties
and it seems that ConversationId
could be a property that I can use to identify occurrences of the same master event. Sample data for test events:
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Modified occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RrAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaA"/>
<t:Subject>New single event</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAMRNQtffkIdFvs73IVVJObM="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RtAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaG"/>
<t:Subject>Meeting</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAOZVB7gVSTJCtmZMMcXVBfQ="/>
Question: Is ConversationId
a reliable property to use for this?
Notes:
From reading around I get the impression that is primarily used for messages, not appointments.
There is a similar question here but that does not definitively answer mine.
Also, there are some issues retrieving ConversationId under Exchange 2007, but they seem solvable.
(Edited to add) A quick test shows that
ConversationID
,UID
, and evenInstanceIndex
are all candidates. Which is the 'definitive' one?