Call Centre Optimised CRM–An Example Solution
CRM in the Call Centre is a different beast from regular CRM with factors such as telephony integration and click minimisation playing a big influence. In this post I will present an example approach to optimising the Call Centre Agent experience in a Customer Service environment. Every customer scenario is different so this is not meant to be an all encompassing solution, rather its just an example of how we can streamline the user experience with Microsoft CRM 2011.
In this scenario the CTI is going to always pop the Phone Call form. If the CTI can match the caller the Phone Call will be pre-populated with the CRM Contact. Otherwise a dummy “Unknown Caller” Contact will be populated. The Phone Call will be created by custom code and then launched to the user as a saved record.
Here’s my phone call screen, as the Call Centre Agent would receive when the CTI has successfully matched to a Contact:
And when not matched:
When the caller has been matched to an existing Contact in CRM their Case History is displayed on the form (with the help of an HTML web resource):
The Call Centre Agent greets the caller and determines their identity and the reason for their call. Here’s what can happen:
Use Case 1:
If the caller has been correctly matched by the CTI and they are calling in regards to an existing Case the Agent will click the Existing Case button on the Ribbon:
This pops a Case lookup window displaying the Cases related to the Caller:
The Agent selects the relevant Case, and the lookup window closes, as does the Phone Call form and then the Case form pops for the user:
Also note the Caller’s phone number and email address are populated directly onto the Case record for ease of access.
The user can then progress the Case with the Customer (add Notes, check the status of open activities, resolve the Case, etc.).
Behind the scenes the Phone Call has been linked to the Case (so that it appears under the Case’s History) and it has been auto-completed.
This scenario has been completed in 2 clicks. That’s pretty good!
Use Case 2:
If the caller was not matched by the CTI and they are legitimately a first time caller who is not yet in CRM the Agent will click the New Case button on the Ribbon:
Immediately the Phone Call form closes and a Case form is popped:
Now if we cater for anonymous callers then this Case can be progressed just like any other case. It is already attached to our “Unknown Caller” Contact.
Otherwise, you will notice the Case form has a Quick Create New Contact section on the form (a customisation I have blogged about previously). The Agent can easily populate this section…
… and the Contact will be created and the Case re-associated accordingly:
Again, behind the scenes the Phone Call has been linked to the Case and has been auto-completed.
This solution also supports the following use cases:
- The caller is not auto-matched by the CTI as they have called from a different number. The Agent can simply use the Contact lookup field on the Phone Call form to locate their Contact record. The process flow then continues as if they were matched by the CTI.
- The caller is matched by the CTI but they are calling in regards to a new issue. This scenario starts of like Use Case 1 but the user would click the New Case button, and then the scenario follows Use Case 2.
What I like about the solution is:
- Simplicity for the user – the Phone Call pops, they click either the New Case button or the Existing Case button
- Processing speed – this solution has the minimal number of clicks possible and does not require the use of the Contact form at any stage
- Consistent process for emails – this same design could be applied to the Email form for handling inbound customer service emails
- Automatic activity history – every inbound call results in a (saved) Phone Call activity without any risk of the user not creating/saving the record. And the Phone Calls are auto-completed for the user.
- Distinct Cases for each unique Service Request – we are not creating a Case for every call, only when the Agent identifies the call relates to a new issue.
- Hopefully this gives you an idea of what Microsoft CRM is capable of. Out of the box Microsoft CRM like any CRM system can be a little clunky but the power of Microsoft CRM is its rich (and upgrade friendly!) extensibility. Don’t be scared of this sort of customisation, Microsoft have designed Microsoft CRM expecting us to configure this types of solutions, and it is more configuration then it is customisation. After all, I was able to build this out and I’ve never compiled a piece of code in my life.
- If you are not seeing the sort of rich user experience I have described here in your CRM system, well, it’s probably time you found yourself a decent CRM vendor.
- This example solution is available for download here.
- To deploy, import the Solution and publish. Then edit the Configuration entity definition so that it appears in the Settings area (this is meant to appear but didn’t for me when I tested this), create a Contact called “Unknown Caller” and create a Configuration record like the below:
The “Value” you need is the GUID of the Active Contacts view which you can get by opening that view to customise it and then selecting Copy Link from the Actions menu.
For those that are curious here’s how I’ve achieved the above. It’s all real apart from the Case History view which I didn’t bother to build out.
Phone Call Java Script
- Change the lookup view of the Sender field to search against Contacts rather than Accounts by default
- Custom “Existing Case” lookup field added
- The 2 ribbon buttons were added
- The “Existing Case” button pops the lookup view of the “Existing Case” lookup field (by firing it’s Click event)
- Once the “Existing Case” field is populated it is replicated into the “Regarding” field. Then the SaveAsCompleted function behind the Mark Complete ribbon button is fired. Then the Case form is launched for the Case GUID specified in the “Existing Case” field.
- The “New Case” button calls the CRM REST service and creates a new Case record for the Contact specified in the Sender field. It then populates this Case GUID into the “Regarding” field, fires the SaveAsCompleted function and then launches the Case form.
Case Java Script
- Change the lookup view of the Customer field to search against Contacts rather than Accounts by default
- Hide the Quick Create section unless the Customer field is blank or “Unknown Contact”
- Once all Quick Create fields are populated the CRM REST service is called to create the new Contact and then that new Contact is populated into the Customer field and the Quick Create section is then hidden
- Whenever the Customer field changes the CRM REST service is called to retrieve the Contact’s Email Address and Phone Number and these are then populated onto the CRM form
I have provided sample code for these components in my previous posts.