Friday 22 November 2013

Dynamics CRM 2013 exchange auto-discovery

I was troubleshooting the auto-discovery process in CRM 2013 server-side synchronization and built an interesting picture on the process, if you ever need to troubleshoot the exchange auto-discovery hope this article helps.

The below diagram illustrates the steps CRM asynchronous service takes to lookup an exchange server.

  1. Queries DNS for a LDAP server
  2. Queries LDAP for SCP pointers and SCP URLs
  3. LDAP returns the data and CRM connects via HTTPS to the relevant exchange server




For troubleshooting I'm using wirehark for network traffic capture. Before you start capturing packets in wireshark first enable one of the exchange profiles to use auto-discovery make sure you have one mailbox for testing and start capturing packets with wireshark. Now enable the mailbox this will trigger verification steps and you should see successful or failure messages in CRM when you get all 3 messages go to wireshark and stop the capture.

The first protocol we may want to look at is DNS so we want to know what CRM is querying to find out the Exchange server, on the search bar in wireshark type dns







below we see a number of things happening but the first thing I've noticed it's CRM querying for an SRV record of type _ldap
_ldap._tcp.London._sites.domain.com



if we open the packet we can see the servers that are returned based on that query.


Fine, so lets see what's happening on the ldap side, type ldap on the search bar and you should see the following conversation:


There is quite a lot going on on the above packet capture, digging into a number of packages I come across the below traces which shows me CRM is looking up:

SCP pointers
SCP URLs



you can get more information about this on:

http://msdn.microsoft.com/en-us/library/ee332364(v=exchg.140).aspx
http://msdn.microsoft.com/en-us/library/ee160402(v=exchg.80).aspx

To test this I've copied the same filter on the packet captured with wireshark and fired the ldp tool and done the same search and also included the attributes listed on the captured packet: serviceBindingInformation and Keywords

(&(objectClass=serviceConnectionPoint)(|(keywords=67661d7F-8FC4-4fa7-BFAC-E1D7794C1F68)(keywords=77378F46-2C66-4aa9-A6A6-3E7A48B19596)))


if I run the above query I get the following results:

 so we come up with the query needed to test the LDAP query CRM will perform to lookup the exchange server. After this all queries are HTTPS and we can't see what is going one.

Hope this helps.






No comments:

Post a Comment