Hello We have a dedicated account which has access to the calendars of several mailboxes. We are using this delegated account to create calendar items via WebDAV within those mailboxes. Unfortunately WebDAV often answers with "409 (Conflict)" and does not write anything to the mailbox (after sending a propatch command). We have no idea how we could solve this problem. We don't even know what kind of conflict occurred. Maybe someone of you could point us to the right direction. - Could this be a permission problem (maybe it's not possible to use such a dedicated account to write into the calendar of other mailboxes)? - Could the mailboxes be corrupt somehow or is there something wrong with the exchange configuration? - Could another process lock the calendar? - Could the conflict occur because the items we try to write have wrong or contradictory data? (if yes, how can we find out which one?) Another phenomenon which often appears is that the calendar item is visibile in Outlook WebAccess but not in Outlook. If you open these items and save them without changing anything, then they also appear in Outlook. I don't know if this is a completely different problem or if both these problems relate to eachother. Any ideas? Thanks a lot in advance. Kind regards
I'm having the same issue as you right now with the 409 status coming back sometimes but I haven't figured out a solution yet. The other phenomenon is probably because you're not setting all the correct properties when you do a PROPPATCH to create the calendar item. It can happen the other way too--something shows in Outlook but not OWA. When you open the item and save it without changing anything, the code in Outlook or OWA fills in all the properties you need. Here's the XML I'm using, items seem to show up in both Outlook and OWA every time. If I had to guess, I'd say you're not setting the timezone property. I seem to remember reading about somebody having problems getting appointments to show up and that was the problem. The value I have in there is for CST, but you can google for the full list of values. <?xml version="1.0"?> <g:propertyupdate xmlns:g="DAV:" xmlns:e="http://schemas.microsoft.com/exchange/" xmlns:mapi="http://schemas.microsoft.com/mapi/" xmlns:mapit="http://schemas.microsoft.com/mapi/proptag/" xmlns:x="xml:" xmlns:cal="urn:schemas:calendar:" xmlns:dt="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:header="urn:schemas:mailheader:" xmlns:mail="urn:schemas:httpmail:"> <g:set> <g:prop> <g:contentclass>urn:content-classes:appointment</g:contentclass> <e:outlookmessageclass>IPM.Appointment</e:outlookmessageclass> <mail:subject>Meeting Subject</mail:subject> <mail:htmldescription>Meeting Body Text</mail:htmldescription> <cal:location>My Conference Room</cal:location> <cal:dtstart dt:dt="dateTime.tz">1/31/2007 08:00:00.0000TZ</cal:dtstart> <cal:dtend dt:dt="dateTime.tz">1/31/2007 09:00:00.0000TZ</cal:dtend> <cal:instancetype dt:dt="int">0</cal:instancetype> <cal:busystatus>BUSY</cal:busystatus> <cal:meetingstatus>CONFIRMED</cal:meetingstatus> <cal:alldayevent dt:dt="boolean">0</cal:alldayevent> <cal:responserequested dt:dt="boolean">1</cal:responserequested> <cal:timezoneid dt:dt="int">11</cal:timezoneid> <cal:dtstamp dt:dt="dateTime.tz">1/30/2007 16:00:00.0000TZ</cal:dtstamp> <header:to>requiredattendee@mycompany.com</header:to> <header:cc>optionalattendee@mycompany.com</header:cc> <header:bcc>meetingresource@mycompany.com</header:bcc> <mapi:finvited dt:dt="boolean">1</mapi:finvited> </g:prop> </g:set> </g:propertyupdate> EggHeadCafe.com - .NET Developer Portal of Choice http://www.eggheadcafe.com
Let's see if this works... <?xml version="1.0"?> <g:propertyupdate xmlns:g="DAV:" xmlns:e="http://schemas.microsoft.com/exchange/" xmlns:mapi="http://schemas.microsoft.com/mapi/" xmlns:mapit="http://schemas.microsoft.com/mapi/proptag/" xmlns:x="xml:" xmlns:cal="urn:schemas:calendar:" xmlns:dt="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:header="urn:schemas:mailheader:" xmlns:mail="urn:schemas:httpmail:"> <g:set> <g:prop> <g:contentclass>urn:content-classes:appointment</g:contentclass> <e:outlookmessageclass>IPM.Appointment</e:outlookmessageclass> <mail:subject>Meeting Subject</mail:subject> <mail:htmldescription>Meeting Body Text</mail:htmldescription> <cal:location>My Conference Room</cal:location> <cal:dtstart dt:dt="dateTime.tz">1/31/2007 08:00:00.0000TZ</cal:dtstart> <cal:dtend dt:dt="dateTime.tz">1/31/2007 09:00:00.0000TZ</cal:dtend> <cal:instancetype dt:dt="int">0</cal:instancetype> <cal:busystatus>BUSY</cal:busystatus> <cal:meetingstatus>CONFIRMED</cal:meetingstatus> <cal:alldayevent dt:dt="boolean">0</cal:alldayevent> <cal:responserequested dt:dt="boolean">1</cal:responserequested> <cal:timezoneid dt:dt="int">11</cal:timezoneid> <cal:dtstamp dt:dt="dateTime.tz">1/30/2007 16:00:00.0000TZ</cal:dtstamp> <header:to>requiredattendee@mycompany.com</header:to> <header:cc>optionalattendee@mycompany.com</header:cc> <header:bcc>meetingresource@mycompany.com</header:bcc> <mapi:finvited dt:dt="boolean">1</mapi:finvited> </g:prop> </g:set> </g:propertyupdate> EggHeadCafe.com - .NET Developer Portal of Choice http://www.eggheadcafe.com
Hello Thank you for your answers. We figured out that these problems were caused by the reminder sound property in our case. If we don't set that property, the error doesn't occur anymore. Maybe this happens if the stated sound file does not exist. Kind regards