Under the support article KB308373, Microsoft had an example on how to create a meeting request for a meeting with WebDAV. Unfortunately, they have removed this article. Bascially, the process is like this:
- Create a meeting item in the calendar folder
- Create a messge item with the Outlook Message class of IPM.Schedule.Meeting.Request and a DAV:contentclass of urn:content-classes:calendarmessage. Then, copy all appointment related properties from the appointment to the meeting request item.
- Save the request message to the drafts folder of your mailbox.
- Move the message from the drafts folder to the ##MailSubmissionUri## folder.
This works in principle - unless you are using Outlook in cached mode. In this case, Outlook won't find the appointment which corresponds to the meeting request. Depending whether Outlook is in online or cached mode, it uses two different properties to find the appointment connected to a request: The global object id (http://schemas.microsoft.com/mapi/id/{6ED8DA90-450B-101B-98DA-00AA003F1305}/0x3) and a cached version of the global object id (http://schemas.microsoft.com/mapi/id/{6ED8DA90-450B-101B-98DA-00AA003F1305}/0x23). More information on the global object id can be found here. The global object id is set by Exchange. The other object id seems to be created by Outlook only.
So, if you create a meeting request via WebDAV and don't set the second object id, Outlook in cached mode will not find your appointment entry.
One solution to this problem is to reload the appointment after step 1 and load the global object id. Then, set the second global object id to the value of the first. And add the global object id to the properties of the meeting request.