Sunday, July 21, 2013

Capturing Multiple Contact Roles In CRM

A design challenge I often come up against in CRM implementations is the need to capture a Contact against multiple Accounts. For example, a doctor may work at multiple hospitals.

Out of the box, Dynamics CRM (and most CRM systems for that matter) assume a Contact works for only one Account, which is often the case, but they do not make it easy to relax that assumption. Here are three ways, I have used in the past, to get around the problem.


The simplest way to handle the problem is with Connections. Connections allow you to associate practically any record in CRM to any other record.


The advantages of this approach are:

  • Easy to maintain
  • Easy to set up

However, there are significant disadvantages:

  • While you can add an email field to the form, the entity cannot be made into an emailable entity, limiting what you can do with it
  • You cannot add Connections to Marketing Lists, forcing you to use the one Contact record and its primary email address
  • You cannot associate Activities to the Connection, meaning they sit with the Contact
  • There is no rollup of Activities through Connections to the associated Account
  • The Connections do not sync to Outlook, only the Contact record

A Contact Role Entity

Another option is to create our own custom version of the Connection calling it, say, Contact Role. This will be a child entity to both the Contact and Account. The advantage here is we can make it an emailable entity and associate Activities to it.


The advantages of this approach are:

  • Still quite simple to manage
  • We can email with this entity and use templates
  • We can associate Activities to the Contact Role

Disadvantages are:

  • We still cannot add Contact Roles to a Marketing List
  • Activities do not roll up from the Contact Role to either the Contact or Account records
  • The roles do not sync to Outlook, like the first option

A Person Entity

Finally, we can create a parent entity to the Contact which represents the person, with the Contact now representing a job that Person does at an Account.

This approach makes me nervous because it fundamentally changes the meaning of the Contact record and, therefore, any functionality Microsoft has built in around Contacts may be compromised.


However, it does solve a number of problems for us.

Advantages of this approach are:

  • The Contacts can be added to a Marketing List (although the Person record cannot)
  • We can email using the Contact records as we normally do
  • We can add Activities to the Contact record, as usual
  • Contact Activities roll up to the Account, as usual
  • The Contacts do sync to Outlook

Disadvantages are:

  • It is quite complex and takes a bit of training and use to become comfortable with it
  • Some automation is required e.g. a workflow that automatically creates the Person record when a new Contact is created
  • Allows for duplicate Contacts for the same Person so Duplicate Definitions need to be managed with care
  • Information which ideally belongs on the Person record e.g. Gender, Birthday and Salutation sits on the Contact record and must be dealt with in some manner
  • Activities and Connections do not roll up to the Person record (although code can get around this)


For CRM systems used for stakeholder management, there is often the requirement to associate a Contact to multiple Accounts. CRM struggles to handle this out of the box, but there are ways we can extend CRM to get close to meeting the requirement. While none of these possible solutions are ideal, depending on the specific requirements of the client, one model will likely win out over the others and deliver a system which meets their needs.

***Post Script*** Thanks to Jerry Weinstock, fellow CRM MVP, for reminding me about the issues with Outlook sync in the approaches

Saturday, July 13, 2013

Importing Appointments with Multiple Attendees

I have written a few blogs on tips for importing in the past (2011, versions 3.0 and 4.0, changing the lookup reference and a different approach to data enrichment). One issue I have always struggled with was importing activities. The biggest problem are the attendees. The template CRM provides does have the required and optional attendee columns but they can only handle one reference in them. In other words, if your appointment has more than one person attending, you cannot import the appointment without culling the invite list.

This is something of a drawback and one that has hit me squarely between the eyes in a recent project where appointments had up to 40 attendees. I have found a solution and, as if often my way, no code is needed. In fact, it is similar to my data enrichment approach from before.

Other ways to tackle the problem

There were a few ways I considered for dealing with this. The first was bringing the appointments into Outlook and then tracking them into CRM. Unfortunately the import tool for Outlook also dismisses the attendees if the import uses a CSV. Apparently the import tool for iCal format does bring in the attendees but all the online CSV to iCal convertors I found also dropped the attendees when converting to the iCal format.

The commercial solution, as recommended by the ever relaxed CRM MVP Joel Lindstrom, was the Kingswaysoft add-on to SSIS. We were using the Kingswaysoft add-on for the integration on the project, so it was an option, but to code the mappings was going to take longer than figuring out a way to do it via the import wizard. This was the fallback option though and an excellent one at that. Using the Kingswaysoft product for the integration literally cut our import mapping time to one third over coding SSIS directly, all for a license price equivalent to a day’s consulting, crazy good value.

My Trick: The Setup

It turns out you can get multiple attendees onto an appointment using the standard import wizard, connections and a workflow.

First, we need to set up a couple of connection roles: attending and attendee:


I made these as matching roles so I do not have to be too concerned about which is the ‘to’ and which is the ‘from’, which always trips me up.


Now we need a workflow which will convert this connection into an attendee. Here it is:


However, the real trick is in the Update step:


Rather than using the ‘Set by’ operator, I am using the ‘Increment by’ operator. This means the workflow will add the Contact to the existing list of Required Attendees, rather than resetting it.

The Importing

First we import our Appointments (without Attendees), ensuring we have a field we can use to uniquely identify the Appointment. Then we import our Contacts again ensuring we have a field to uniquely identify them.

Finally, we import the Connections between them. The template can be downloaded from CRM, from the Settings-System-Data Management area. You then populate it (using the unique values to link to the Contact and Appointment and maybe my ‘changing the lookup reference’ article to work out how to set the mapping. The spreadsheet will look something like this:


The Result

The result is when the Import Wizard adds the Connection, the workflow kicks in and updates the linked appointment, adding the Contact to the Required Attendees.



The inability to import appointments (or other activities) with multiple attendees has always limited the value of the Import Wizard. With this trick, a small amount of effort means we can use the Import Wizard for Activities without resorting to code or third party import tools.

Sunday, July 7, 2013

The Difference Between Selling and Consulting

Sometimes, as a CRM consultant, I must sell and sometimes I must consult. For me, they are different skills although it is not impossible to wear both hats if you understand the difference.

Selling CRM vs Building CRM

In a pre-sales meeting or when you are the primary business development manager (BDM), the job is to sell a vision. You must appreciate where the customer is today, the problems they are having and to communicate how a CRM system can solve these problems. Most solution selling processes I have seen talk around this idea of identifying the pains the customer is having and taking them on the journey of realising how CRM can alleviate them.

For a consultant in a workshop, it is assumed the vision has already been painted and the client is excited about how CRM can solve their issues. The key for a consultant is not to continue convincing them they need CRM, or necessarily how awesome it is, but to convince them that the consultant will be there ensuring the project stays on track and the client can ask them anything and they will get a direct answer.

Obviously this needs to be tempered, but the idea that the client needs a consultant who will say yes to any request is, in my opinion, a recipe for disaster. Dynamics CRM has limitations and, when designing a solution for a client, these need to be addressed head-on and worked with. Dancing around the inherent limitations in the product is in no one’s best interest. Clients, in my experience, are not naive and understand any solution will not be perfect. The key is finding an acceptable balance between making a solution practical for the user and making it palatable in terms of time and cost to bring it to life.

By being honest about your product as a consultant, the client will quickly learn to trust you; an essential element for any project. There are times the client will not necessarily be happy with what you tell them but they will respect you for it and be willing to work with you to generate the best possible outcome.

It is About Trust

For both the BDM and the consultant, it is about trust. For the BDM, the job is to ensure the client trusts you to present the best options to solve their problem. If the client needs an ERP solution and you try to sell them a CRM solution, this will be a poor experience for everyone. The best example of this is in “A Miracle on 34th Street” where Kris Kringle directs the shopper to another store which better suits their needs. I am not suggesting BDMs sell in other vendors, but they should not be afraid to say “no” if there is a better path the client can go down to avoid disaster. The client, in the long run, will respect and trust you for it.

For the consultant in the workshop it is about convincing the client you will present the product, warts and all, and together you will do whatever it takes to make it a success. Some specific stakeholders may still need to be ’sold in’ but for the main project sponsor, their reputation rides on providing the best possible solution. They need to know where there may be problems and the earlier this is addressed, the better the wrinkles can be worked with.


Whether you are selling the vision of a solution or helping build a solution, building trust with the client is essential. Understanding the concerns and needs of the client in relation to the product lifecycle ensures you deliver the right message at the right time. Give the wrong message as a BDM and you will have a nervous client. Give the wrong message as a consultant and they will see you more as a salesman than an architect. When selling, provide a vision for success, when building, lay out what you have to work with and collaborate with the client to build the best possible solution.

In both roles, you will be seen as a trusted advisor and regardless of the reliability of the software, the client will be sure they can rely on you.