Friday, July 31, 2015

The Current State of Parature–Dynamics CRM Integration

You may have seen the video depicting the integration of Dynamics CRM and Parature and perhaps you are wondering how to set it up. If you have not seen the video, here it is (

The video portrays an exciting CRM future where we have an auto-provisioning support portal and two-way communication between the CRM agent and the customer.

Reality, as is often the case, is not completely represented by the advertising but it is possible to achieve something close to what is presented in the video with a bit of work. I know because I just finished working on a project where we did it.

What Do We Get Out of the Box?

In an ideal world, for Parature and Dynamics CRM, there would be two-way communication of entities such as:

  • Cases
  • Articles
  • Contacts
  • Accounts
  • Activities

All this is, in theory, possible because both products have an API and, if they are sitting in the same Office 365 instance, they should be able to see each other.

At this stage though, the only entity that is possible to configure without code are articles and these do not sync between Dynamics CRM and Parature but, rather, the Parature articles appear in the Social Pane on Cases (and any other entities you need it to appear for).

Setting up Knowledge Base Article Integration

The ability to surface Parature knowledge base articles is still quite new. In fact, my most recent project was the first customer site to link an existing Parature instance to CRM Online. If you are new to both Parature and Dynamics CRM Online, the process is quite simple. Once you have bought them through Office 365 and set them up, from Dynamics CRM, you go to Settings –> Service Management –> Set Up Knowledge Base Management. This pops up the configuration window where you type in the details of your Parature instance.


That is it. The knowledge base articles then appear in the Social Pane on the entities you have selected it for (in the case above, Contacts and Cases). Unfortunately, if you are using Dynamics CRM On-Premise, it is not possible, at this stage, to link it to Parature in the way described above.

For customers with an existing Parature instance, the process is slightly more complex. From Parature, you may have noticed a button.


Clicking on this button requests an Office 365 Administrator login. Once this is provided, a mapping wizard appears so you can link your existing Parature users to users in Office 365. Once this is done, you are finished. As before, you will be able to go to Dynamics CRM and configure the knowledge base integration.

In terms of those users mapped, they will now have the option of logging in directly through Parature, as before, or authenticating through Office 365. In terms of setting up new users, once the mapping is complete it is not possible to add users directly to Parature; it must be done through Office 365.

With this in place, as mentioned the Parature knowledge base articles now surface in Dynamics CRM.


A nice feature is also that when the KB RECORDS tab is clicked on, the title of the Case is automatically inserted into the search box, bringing back relevant articles.

Mousing over the article also provides three action icons.


The first links the article to the Case, copying a reference to it into a custom child entity. The second pops an email with a link to the article in the body (and clicking this icon also automatically links the article to the Case. The third icon opens the article up for review.

Overall, the integration is very practical for the Case agent giving them the information they need, where they need it.

Syncing Other Records

For Contacts, Accounts, Activities and Cases, we must get our hands dirty with code. Initially we considered using Portal2Case but this proved too difficult to adjust to meet the specific needs of the customer. In the end, to move data from Parature to Dynamics CRM, we built a windows service which polled the Parature data on a regular basis and returned new and amended records, feeding them through the Dynamics CRM API into CRM Online. To move data from Dynamics CRM to Parature, we used plugins, firing on changes and record creations, which then communicated directly with the Parature API. Go here for details on the Parature API REST endpoint.

With this in place, it was possible for agents to work out of Dynamics CRM to manage Cases without compromising the advantages of Parature. Clients could still go to the Parature Web Portal, log a Case and this Case would pass from Parature to Dynamics CRM, linked to the correct Contact. The agents, through the knowledge base integration also had access to the Parature articles and could send these to the client, if required.

For clients logging Cases via email, the support email was redirected from Parature to a Dynamics CRM queue and the automatic record creation and routing rules managed it from there.

Parature’s concept of Actions was mirrored in CRM through a custom Activity entity called Case Comments. If the client added a comment from the web portal, this came into CRM as a Case Comment. Similarly, if the agent added a Case Comment to the Case, this appeared on the Portal for viewing by the client.

Future Possibilities

While the current system works well for the customer’s needs, extending the Parature web portal is difficult. One option being considered is to move from the Parature web portal to an ADX Portal. ADX integrates, without code, to both Dynamics CRM Cases, Accounts and Contacts as well as to Parature’s knowledge base. This means the portal would show CRM Cases and the Parature knowledge base and be a lot more extendable.


If you are needing a portal with access to both Parature and Dynamics CRM, certainly consider the ADX Studios Portal product. Although I have not tested it, for portal integration it is, to my knowledge, deployment agnostic and will therefore work with CRM On-Premise as well as CRM Online.

The End Result

Although the coding of the integration between the two systems was very complex (kudos to Phil Mitchell for pulling off this lofty goal), the end result was similar in functionality to the integration video put out by Microsoft. It was possible for someone to log a request and for an agent to action it in CRM. The agent then replied to the request and this reply appeared in the client’s Case on the Parature web portal.

I imagine, over time, the integration between these two products will become tighter so unless the need is urgent I would probably recommend against coding your own integration. In our case, project deadlines meant it was necessary. However, if you have access to Parature and Dynamics CRM and want to play, setting up the knowledge base integration is very simple and worth reviewing.

Monday, July 27, 2015

Samsung Revisited and How ChromeCast Makes Everything Better

At the start of the year I bought a Samsung Galaxy Tab S 10.5 and reviewed it. My assessment at that time still reflects my thoughts on the device; a great screen but it is, ultimately, a game device for the kids. The problems at the front of my mind these days are:

  • Space is limited (16Gb on-board with a 32Gb micro-SD) which hinders game-caching leading to slow load times, hinders updating and means constant juggling as apps get installed
  • User management is annoying. Unlike Windows, where all users can be made equal, with Android there is the owner (the main administrator) and all others. In my case my wife is the primary user but I am the tech in the family but, to do tablet maintenance, I am forced to log in as her.

There have been a delight though. Outlook for Android (released after my review) is great. It automatically filters the inbox to the mail that matters. If I can figure out how to do this in Outlook 2013 I will be in Outlook nirvana. Every weekend I fire up Outlook on the Samsung to make sure there are no important emails I have missed

In terms of the apps I use today with the Samsung, these are:

  • The games my son plays (Jurassic World, Clash of Clans etc.)
  • Outlook for Android
  • My Bar Free (you tell it what is in your bar, it tells you what cocktails you can make)
  • Chrome (not often used but there when I need it)
  • Netflix (more of this later)

In my original review I lamented that I had not found a television remote app for the Samsung to control my television. With ChromeCast that is now moot.

The Netflix Workout

My journey with ChromeCast started with Netflix. I got a free six month subscription to Netflix via my internet provider. As I am on a plan with unlimited bandwidth, binge watching soon ensued. The chief problem is my TV is a plain LED TV, nothing smart, not even a USB port. Every time I wanted to watch Netflix, I had to hook up one of the house laptops to the HDMI port of the TV. Then, to browse programs, I kneeled at the media altar working the touchpad of the connected laptop. In a world of remote control, this was too much like exercise.

A bit of research revealed that there were devices available which plugged into the HDMI port and communicated wirelessly to a computer.

Miracast vs ChromeCast

Given I am talking about Android, I will not dwell on Apple TV, which does similar things for Apple. For the rest of us, it seems to be a choice of two: Miracast and ChromeCast. Miracast is, in effect,  a wireless HDMI standard; whatever is on your device screen is transmitted to the television.

For my purpose, Miracast was cheaper but had disadvantages. The first was flakiness, which I had experienced at clients who tried to use Miracast for meeting room presentations; connection was temperamental. More importantly though, whatever is on your screen gets transmitted to the television. So, no screensaver, no using the device for anything other than transmitting, the device is, effectively, locked.

ChromeCast works differently. ChromeCast is a dongle which plugs into the HDMI port of the television but it is, in effect, its own Android device. It is like an Android computer whose screen is the television and whose keyboard is your device which connects to it via your home wireless network. This means that once ChromeCast is transmitting, you can use your controlling device to do other things like read email, browse etc.

How ChromeCast Works With Apps

With apps on the Samsung, you look for the ChromeCast icon image and this means you can stream it to your television at the press of a button. Netflix is one such app but there are plenty of others. I am also a fan of Pandora and YouTube which also work.

Another is the OneDrive app. What is nice about the OneDrive app is if you have movies stored in OneDrive/OneDrive for Business, you can stream them to the television through ChromeCast without leaving your armchair. OneDrive is now my media player, thanks to ChromeCast.

One final cherry on the ChromeCast pie is the ability for it to control the television through the HDMI port. While I cannot get my old Viera to turn on, starting a cast will automatically change channel to the HDMI channel which is quite a neat trick.

ChromeCast for Windows

For Windows, ChromeCast works with the Chrome browser. This provides lots of options. Firstly, if you browse to, say, Netflix or YouTube and click the ChromeCast icon, the app opens on the ChromeCast dongle, just like it would from an Android device. You also have the option of streaming the screen or, interestingly, a tab on the Chrome browser.


This also opens the option of playing with browser options and add-ons. While you cannot mess with the settings in the Android version of Chrome, you can in the Windows version. This means you can, in theory, alter the settings and use Chrome add-ons, to display precisely what you want in Chrome and then cast the tab from your Windows device. This provides a similar experience to the Android device with the power of Windows Chrome and with the ability to minimise the tab and do other things on the device while still streaming.


For a modest price, the ChromeCast has revitalised my Samsung, turning into an internet streaming device for the media I do not own and turned my OneDrive into an online media player with unlimited storage for the media I do own. Similarly music is just a couple of clicks away with no armchair departure required. No more plugging laptops into HDMI cables and it works with everything I own, Windows and Android alike. I could not be happier.

Friday, July 24, 2015

Tracking the Movements of a Case

I am finishing up with my current employer and, in the process, finishing what has been a really interesting project using Dynamics CRM for Case management. The project forced me to learn about new CRM features like routing rules and email conversion as well as Parature integration; all of which will prove rich sources of inspiration for future articles.

In this article I will go through a bit of configuration I set up to track the movements of a Case.

Business Context

In our scenario, the client wanted to see if a Case bounced around the different areas of the business or not. To do this, they wanted a log of where the Case had been and for how long. In our situation I was using Teams instead of Queues as the client wanted the areas of the business to take responsibility (ownership) for the Cases assigned to them. Teams lent themselves nicely to this.

Setting up the Case Audit

The first step was creating a new entity to hold the history of the Case movement. I called this the Case Audit. The fields it had were:

  • Description: The default Name field for the entity
  • Created On: A date field
  • Previously Assigned: When the Case had been moved previously
  • Owner: A Team or User
  • Case Status: The Status Reason of the Case
  • Hours in Queue: Time with a particular Owner


This was a child entity to the Case. In the above example, the Case moved from being created by Ranjeet at 12:28pm to the Records (transcript) team to being picked up by me for actioning. You may notice that I am exploiting the Owner of the Case Audit to track ownership of the Case.

Creating the entity was straightforward, populating it was a little trickier.

Populating the Case Audit Log

To populate the log, I used a real time workflow.


Looking at when the process runs, it runs:

  • After the record is created (creating the first entry in the log)
  • Before the status changes
  • Before the record is assigned
  • Before fields change (Owner, Status, and Status Reason)

Then, when it fires, it firstly checks if the Case is Cancelled or Resolved (the act of trying to create a log entry on a closed Case was preventing the Case from being reopened so this got around that).

Assuming the Case is active, it then creates a Case Audit record to mark the change and changes the Last Assigned Time on the Case (a custom field).

The values for the Case Audit were:


The Name field gets populated with sensible values to assist with queries. The Previously Assigned takes the date time value from the Case record, just before it is updated in the next step by this workflow. The Owner of the Audit record is set to the Owner of the Case (meaning we can store a Team or a User), and the Case Status simply takes the Status Reason of the Case. Finally, the Hours in Queue is a calculated decimal field.


The reason I used DiffInMinutes and divided by 60, rather than DiffInHours is because the Diff functions return an integer, which for quick owner transfers simply was not accurate enough. By using minutes I could track the movement in hours but with two decimal places.

So, with this workflow, I got a new entry every time the record changed status (except when re-opening because of the error, which could be worked around with a second workflow, if required) and every time it was assigned to a Team or User.

Charts and Measures Available

With this in place and a few other tricks, a wealth of measures are now available. Firstly, using my record-level graphs trick, on the Case record it is possible to see the history of the Case and how long it had been with each Owner.


While the graph is only for one day in the above example, if the Case remained open across multiple days this would also be reflected in the above graph. On the Case, we have the following measures.image

The Initial Queue, Latest Queue, Moved Off Queue (when someone took ownership), and Queue Hops (how many Teams the Case has been to) are populated by a second workflow running after the change in ownership. The Hours in Queue measures how long the Case bounced around teams before being owned by a user and is a calculated field using the Case Created On field and the Moved Off Queue. The Hours To Resolve is a calculated field using the Moved Off Queue and the Modified On field which only populates if the Case is resolved (calculated fields can be conditional).

Non-Working Hours is a rollup field, looking at the Case Audit entries and summing up the Hours in Queue values for entries with a status other than In Progress (rollup fields can be conditional). Finally, the Last Audit Entry is the field populated by our workflow and used to generate the next Case Audit record.

With all these in place, we can also generate charts such as the average hours Cases stay with a Team and the average time for resolution.


With some of the newer tools of Dynamics CRM such as calculated fields, rollup fields and real time workflows, we can provide insight into our CRM data without resorting to BI tools or exporting to Excel, giving instant feedback to the business. If you have not yet played with these new features, I strongly recommend giving them a try.