Notes: CF8 and Exchange and .NET Integration
<cfexchangecalendar>
Can create events, add attachments, remove attachments, etc. Can create an event struct and assign all of the attributes (requiredAttendees, startTime, endTime, Subject, Message, isRecurring, RecurrenceType, RecurrenceFrequency, RecurrenceDays, RecurrenceEndDate). Then just pass the struct into the event="" attribute of <cfexchangecalendar>.
<cfexchangemail>
Can get, getMeetingInfo, move, set, delete. Can also getAttachments and deleteAttachments. Can use <cfexchangefilter> to only get certain message types or only those sent during a particular time period.
<cfexchangecontact>
Create, get, modify, delete contacts.
<cfexchangetask>
Create, get modify, delete tasks.
Setting up Exchange Server for CFExchange
- IIS must be set up and running on the Exchange Server.
- Make sure that /Exchange virtual directory is created in IIS.
- "Allow" access to "Microsoft Exchange Server" in the "Web Service Extension" of IIS.
- Mailbox access can be set in "Active Directory Users and Computers". To do this, go to "Users" node, open properties of a user, open "Exchange Advanced Tab", click "Mail Box Rights" button.
Troubleshooting and Error Handling
Make sure the Exchange server is accessible from the CF server; just try pinging it from the CF server. Make sure the mailbox on the Exchange server is accessible from OWA. This is required because this is how CFExchange does its communication.
If using https, must make sure that the Exchange server's cert is in the cert store of CF!
If using form-based auth in Exchange, then make sure you correspondingly have formBasedAuthentication="true" in <cfexchangeconnection>.
Exchange Integration Summary
Makes it easy to access Exchange functionality in a familiar tag-based format. Can access Calendar, Mail, Contact, and Tasks.
Did a demo. Had one user create a meeting in CF, then showed it in the calendar in Outlook. Logged in as another user with CF and was able to see the meeting invitation, and declined it from within CF. Then showed the meeting be declined in the calendar in Outlook.
This could be useful for having one central place for viewing numerous scheduled events for various accounts (the different rooms). Users would login to one app to view all of those things, instead of it being spread across numerous resource accounts.
.NET Integration
Allows you to leverage existing .NET programs. Also allows you to leverage MS products like Word, Excel, PowerPoint, etc.
Can call local or remote .NET assemblies, even outside a firewall. Don't have to have .NET runtime on the CF machine. <cfobject> and CreateObject() can now create .NET objects. However, CFCs cannot be called from .NET, and you cannot use .NET UI components.
Can be as simple as:
What's difference between using .NET integration vs. web services? Web services have loose coupling and are low performance. They're also stateless. The runtime unification of .NET integration has tight coupling, is stateful, and is high performance. Most useful when working with internal systems of an enterprise or organization.
.NET Integration Summary
Seamless. Don't need to know much about .NET to use. Location independent (local or remote). Platform independent.
In the demo, he created a custom .NET object that made a call to an Access database and returned a query. Then created a CF page that creates the .NET object, pulls the method, and did a <cfdump> of the returned query. Nice!
In another demo, created a .NET object in CF pointing to a global assembly class. With it, he was able to pull all the system processes running on a machine. That was with "System.Diagnostics.Process" .NET object.
He showed how you could also just dump the entire object, and the <cfdump> results would show all of the methods, just like you can do with Java classes. Very, very nice.

May 27th, 2008 at 9:46 am
Cool resource . I am looking at developing Exchange based apps