Copy link to clipboard
Copied
Synopsis:
I need to access the calendar events for a user that has delegated their calendar access to me on the company Exchange Server. The delegation is in place and I'm able to view/modify the other users calendar using the Outlook 2007 client, so I know the delegation rights are correct, however I'm not able to query the events using the ColdFusion cfexchange* tags.
According to the ColdFusion documentation this is possible, see http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec14f31-7ff6.htm...
Systems:
Details
The following code is what I'm using, with the specific and sensitive bits removed. If I remove the mailboxName attribute, or if I use the same username value, then I'm able to successfully see 25 of my calendar events. However when I use the mailbox name of the person who has delegated their calendar access to me I receive the error below.
The other user delegated access to me from within their Outlook 2007. They did this by going to the Tools menu, selecting Options, clicking on Delegates then clicking the Add button, selecting my name, clicking the Add button, clicking the OK button and then giving me Calendar = Editor permissions and None for all other permissions.
I should also note that if I use an Exchange account that has been granted Exchange Administrator rights and access to the other users mailbox I'm able to see the other users events. However if I try to use my credentials, which is the way we need it to work, it fails.
Code:
<cfexchangeConnection
action = "open"
connection = "myExchangeConnection"
username = "myUserName"
password = "mySecr3t"
server = "exchange.company.com"
formBasedAuthentication = "yes"
formBasedAuthenticationURL = "https://exchange.company.com/owa/auth/owaauth.dll"
protocol = "https"
serverversion = "2010"
mailboxName = "otherUserName"
>
<cfexchangecalendar
action="get"
name="myCalendar"
connection="myExchangeConnection"
>
<cfexchangefilter
name = "maxRows"
value = "25">
</cfexchangecalendar>
Error Message
Detail The specified object was not found in the store.
Message Could not connect to the exchange server with the credentials.
StackTrace coldfusion.exchange.webservice.EWS
Exception: Could not connect to the exchange server with the credentials. at coldfusion.exchange.webservice.EWSConnection.login(EWSConnection.java:1777) at coldfusion.tagext.net.exchange.ExchangeTag.createConnection(ExchangeTag.java:499) at coldfusion.tagext.net.exchange.ExchangeConnectionTag.doEndTag(ExchangeConnectionTag.java:70) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2800) at cfindex2ecfm2100699610.runPage(/mnt/hgfs/ftcr/index.cfm:72) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:64) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:443) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:112) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151) at coldfusion.CfmServlet.service(CfmServlet.java:204) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)
I was finally able to get this to work. The fault doesn't appear to be with the code posted above but rather a lack of clarity in the Adobe documentation and an adjustment in the access rights that user "otherUserName" has to grant to "myUserName".
The section "Managing connections to the Exchange server" in the "Developing ColdFusion 10 Applications" documentation states "you can also connect to any mailbox whose owner has delegated access rights to the login user name". I understood that to mea
...Copy link to clipboard
Copied
I was finally able to get this to work. The fault doesn't appear to be with the code posted above but rather a lack of clarity in the Adobe documentation and an adjustment in the access rights that user "otherUserName" has to grant to "myUserName".
The section "Managing connections to the Exchange server" in the "Developing ColdFusion 10 Applications" documentation states "you can also connect to any mailbox whose owner has delegated access rights to the login user name". I understood that to mean that if the owner delegates just calendar access rights to my user account that I can query their calendar. However this doesn't appear to be the case. The user had to delegate both calendar access and inbox access to my user account before I was able query just their calendar events.
The other way I found to accomplish this is by creating an Exchange account with Exchange Administrator privileges and granting it access to the users mailboxes. I would then use this Exchange account for the username and password in the cfexchangeconnection and could query the events of any users that the Exchange account had access to.