[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2449
  • Last Modified:

WEBDAV - MS Exchange - Adding Calendar Appointment WITH ASSIGNED CATEGORY

I'm trying to create limited integration between our "home grown" CRM system and our Exchange Server.  I have code that's working, however I cannot figure out how to pass a CATEGORY value in my code.  Can someone give me the line of code I need to pass the category value?

The code below currently creates a calendar appointment but does not create a category on the appointment.
<html>
<body>
<%
 
 ' Exchange server name.
 strExchSvrName = "xxx"
 
 ' Mailbox folder name.
 strMailbox = "yyy"
 
 
 ' Appointment item.
 strApptItem = trim(year(date)) & "-" & trim(month(date)) & "-" & trim(day(date)) & "-" & trim(hour(now)) & trim(minute(now)) & trim(second(now))
 
 ' Username and password of appointment creator.
 strUserName = "123123"
 strPassWord = "xxxxx"
 
 ' URL of the appointment item.
 strApptURL = "http://" & strExchSvrName & "/exchange/" & _
    strMailbox & "/Calendar/" & strApptItem
 
 ' XML namespace info of the WebDAV request.
 strXMLNSInfo = "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:"">"
 
 ' Set the appointment item properties.  The reminder time is set in seconds.
 ' To create an all-day meeting, set the dtstart/dtend range for 24 hours
 ' or more and set the alldayevent property to 1.  See the documentation
 ' on the properties in the urn:schemas:calendar: namespace for more information.
 
 'Eastern Standard Time Offset = 5 hours
 strCalInfo = "<cal:location>test location 21</cal:location>" & _
    "<cal:dtstart dt:dt=""dateTime.tz"">2008-11-18T20:50:00.000Z</cal:dtstart>" & _
    "<cal:dtend dt:dt=""dateTime.tz"">2008-11-18T20:50:00.000Z</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"">0</cal:responserequested>" & _
    "<cal:reminderoffset dt:dt=""int"">900</cal:reminderoffset>"
 
 
    
    
 ' Set the required attendee of the appointment.
  strHeaderInfo = "<header:to>" & strMailbox & "</header:to>"
 
 ' Set the subject of the appointment.
 strMailInfo = "<mail:subject>New Calendar Appointment Test</mail:subject>" & _
    "<mail:htmldescription>This is a test description</mail:htmldescription>"
 
 ' Build the XML body of the PROPPATCH request.
 strApptRequest = "<?xml version=""1.0""?>" & _
 "<g:propertyupdate " & strXMLNSInfo & _
  "<g:set><g:prop>" & _
    "<g:contentclass>urn:content-classes:appointment</g:contentclass>" & _
    "<e:outlookmessageclass>IPM.Appointment</e:outlookmessageclass>" & _
    strMailInfo & _
    strCalInfo & _
    strHeaderInfo & _
 
    "<mapi:finvited dt:dt=""boolean"">1</mapi:finvited>" & _
   "</g:prop></g:set>" & _
   
 "</g:propertyupdate>" 
 
 
 
 
 ' Create the DAV PROPPATCH request.
 Set xmlReq = CreateObject("Microsoft.XMLHTTP")
 xmlReq.open "PROPPATCH", strApptURL, False, strUserName, strPassWord
 xmlReq.setRequestHeader "Content-Type", "text/xml"
 xmlReq.send strApptRequest
 
 ' The PROPPATCH request was successful.
 If (xmlReq.Status >= 200 And xmlReq.Status < 300) Then
  response.write "Appointment created successfully."
 
 ' Display error info.
 Else
 
  response.write "PROPPATCH status: " & xmlReq.Status & vbCrLf & _
    "Status text: " & xmlReq.statusText
 End If
 
' Clean up.
Set xmlReq = Nothing
 
 
 
    Set xmlReq = Nothing
 
 
 
 
 
 
%>
</body>
</html>

Open in new window

0
jaypappas
Asked:
jaypappas
1 Solution
 
jaypappasAuthor Commented:
Ha! I'm answering my own question.... (how does that work? :) ).

The answer is:

Adding this:
strMiscInfo = "<e:keywords-utf8><x:v>Buddies</x:v><x:v>Engineers</x:v></e:keywords-utf8>"
Then in the proppatch call add the new string (see below):

' Build the XML body of the PROPPATCH request.
 strApptRequest = "<?xml version=""1.0""?>" & _
 "<g:propertyupdate " & strXMLNSInfo & _
  "<g:set><g:prop>" & _
    "<g:contentclass>urn:content-classes:appointment</g:contentclass>" & _
    "<e:outlookmessageclass>IPM.Appointment</e:outlookmessageclass>" & _
   
strMiscInfo & _
   strMailInfo & _
    strCalInfo & _
    strHeaderInfo & _
    "<mapi:finvited dt:dt=""boolean"">1</mapi:finvited>" & _
   "</g:prop></g:set>" & _
   
 "</g:propertyupdate>"

This assigns categories quite nicely.... it was in some webdav code for entering contacts and I played with it....
 


 
0

Featured Post

Free Backup Tool for VMware and Hyper-V

Restore full virtual machine or individual guest files from 19 common file systems directly from the backup file. Schedule VM backups with PowerShell scripts. Set desired time, lean back and let the script to notify you via email upon completion.  

Tackle projects and never again get stuck behind a technical roadblock.
Join Now