We had a demo a little while ago with the agent control panel for Dynamics CRM, and aside from getting the panel to install correctly, we found that no matter what we did, it was impossible to get a CRM contact to pop on an incoming call, even if the phone number matched. Here’s what the dynamics toast window popped up with:
But here’s what dynamics screen popped:
Even though this existed in the CRM contact list:
I tried some variants on the phone number field, adding leading + and/or +1 to it, but nothing seemed to make the correct contact screen pop. Then I tried running Wireshark at the same time to look at the messages going to Dynamics, and I found something interesting in the XML:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices"><AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">0</AuthenticationType><OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">CTT</OrganizationName><CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">00000000-0000-0000-0000-000000000000</CallerId></CrmAuthenticationToken></soap:Header><soap:Body><RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices"><query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression"><q1:EntityName>contact</q1:EntityName><q1:ColumnSet xsi:type="q1:AllColumns" /><q1:Distinct>false</q1:Distinct><q1:Criteria><q1:FilterOperator>And</q1:FilterOperator><q1:Conditions><q1:Condition><q1:AttributeName>telephone1</q1:AttributeName><q1:Operator>Equal</q1:Operator><q1:Values><q1:Value xsi:type="xsd:string">9058825000;phone-context=enterprise</q1:Value></q1:Values></q1:Condition></q1:Conditions></q1:Criteria></query></RetrieveMultiple></soap:Body></soap:Envelope>
Ignoring most of the XML, you can see that the query was sending “9058825000;phone-context=enterprise” as the phone number to dynamics, which the agent control panel was helpfully stripping out of the caller ID information when it reported it back to the user. Unfortunately, this also meant that the only way to get the screen pop to work was to add 9058825000;phone-context=enterprise as the phone number for the test contact.
So far, I haven’t found a way to strip out extra information in a tel uri that goes to Dynamics, but this at least explains one mystery.