Sonoma Partners Microsoft CRM and Salesforce Blog

How to Run an Effective CRM Software Demo

Today’s guest blogger is Jacob Cynamon-Murphy, a Technical Specialist at Sonoma Partners.

Over the past 10 years, I have presented or been in the audience for hundreds of different software product demonstrations. As both the presenter and the attendee, unfortunately I frequently see common issues that prevent a demo from going as intended.

Here are three things you need to take into consideration when requesting a software demo.


Nothing's Standard Anymore

Have you ever asked a software salesperson to give you "the standard demo?" 

Does standard mean the same thing to you as it does to them? 

Will the standard demo show the product in the best light?

Would you go live with the standard demo?

Your answers to these questions are probably "No," "No," "No," and "No" and there's a reason for that. 

Your industry, your business, and your employees are unique. Custom is the new standard when it comes to line-of-business solutions.  You should determine internally what you will need - what will align with existing or proposed business processes, what will be easy and intuitive for your employees to use, what will be practical to maintain and support - before you engage vendors to deliver demos. 

Planning ahead will increase the likelihood that you see a demonstration of how the software can speak to your unique situation and solve your actual problems.

There's no shame in starting a relationship with a vendor with a standard demo, but you can often get the same result in less time by asking for a product demonstration video: you can watch it at your leisure and your vendor's time is freed up to prepare for a custom demonstration in the future.

Demo What You Need (Not What Vendors Want to Show)

There are two primary components to a software demo: the list of things you ask to see and the list of things you are shown.  If the two lists seem like a close match, that's good - it means the product being demoed does, in fact, meet your needs.

It’s critical that you know what you want or need before sitting down for a software demo with a vendor.  To paraphrase the Cheshire Cat, "If you don't know where you're going, any road will get you there."

Unfortunately we have seen CRM prospects get dazzled by software demos that highlight snazzy features, even if they do not really need those snazzy features to meet their business needs.  If you go to the car dealership or the home theater department with a prioritized list of features, you're less likely to be swayed by the metaphorical flashing lights and add-ons… purchasing CRM software works much the same.

What You See Is What You Get (Or Is It?) 

SmokeandMirrorsThere is a reason that the term “smoke and mirrors” exists. In the world of software, this is also sometimes referred to as vaporware.  Even when the product genuinely exists, how often have you thought or heard someone else say, "That's not what they showed us in the demo" or "It doesn't seem like what they demoed to us." 

Like anybody else, software presenters want their product to show well. Unlike everybody who works with physical products, software can be manipulated to look or feel a particular way, even when it's not how the product truly functions.  Don’t be afraid to ask the vendor to provide a list of which demo components required 3rd party solutions.

However, rest assured that there isn't a secret society of software presenters and, as a matter of fact, sometimes the product doesn't cooperate, even when it really is capable of doing a task as stated (exhibit A and exhibit B of demos not going according to plan).

Come to the meeting with a well-defined list of must-haves and nice-to-haves for the vendor to use, and approach the demo with a healthy dose of skepticism.  Follow that advice and you'll find it easier to make better decisions about complex software purchases going forward.



Topics: CRM Platform Selection

Simple Dynamics CRM Lookup using Kendo UI

Using third party libraries is a great way to speed up development and save some money by not having to reinvent the wheel. If you are a developer and haven’t checked out Telerik’s suite of controls, I definitely recommend it. They have a great set of javascript widgets and frameworks called Kendo UI which works very well with Dynamics CRM.  In this post I will show how easy it is to make your own custom CRM Lookup in just a few lines of code thanks to Telerik’s AutoComplete control.

First, we need the Kendo libraries. If you haven’t purchased the Kendo controls, you can download them for a trial here.  Then you can add the references to the header of your html page. This example will also require jQuery so be sure to include it as well.

    <link href="kendo.common.min.css" rel="stylesheet" />
    <link href="kendo.default.min.css" rel="stylesheet" />
    <script src="jquery.js"></script>
    <script src="kendo.web.min.js"></script>

Next, add a simple input tag to the page and give it an ID. This will become the Lookup control.

    <input id="accounts" />

Then add some script as well to execute a function on document ready. To keep it simple, this example uses an inline script tag.

    $(document).ready(function () {

Now, inside the ‘ready’ callback, we can setup the Kendo AutoComplete control. First define the Schema Name of the entity you want the Lookup to point to and then define the Schema Name of the attribute that you would like to display in the Lookup dropdown.

var entityName = "Account";
var primaryAttribute = "Name";


Now you can create the Kendo AutoComplete control using the ID of the input element you added in the second step. The Kendo data source supports OData so we can easily set it up to hook up to CRM’s OData endpoint. Since OData is case sensitive, make sure your entityName and primaryAttribute are set correctly.

                dataSource: {
                    type: "odata",
                    serverFiltering: true,
                    transport: {
                        read: {
                            url: window.parent.Xrm.Page.context.getClientUrl() + 
                                 "/XRMServices/2011/OrganizationData.svc/" + entityName + "Set",
                            dataType: "json"
                dataTextField: primaryAttribute,
                animation: {
                    open: {
                        duration: 0
                    close: {
                        duration: 0

If you attempt to test your page now with just the code so far, you will notice that it won’t quite work just yet.  Kendo by default will try to use some OData parameters that the CRM OData endpoint doesn’t support. Therefore we have to setup a parameterMap function on the transport object so we can remove some of the unsupported filters.

Below is the updated transport object with the new parameterMap function. This function will set ignoreCase to false on any filters passed in.  If ignoreCase is set to true then Kendo will use the ‘tolower’ OData filter which CRM doesn’t support.  Kendo will also use the unsupported $inlinecount and $format filters as well so we need to remove them from the list.

transport: {
    read: {
        url: window.parent.Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/" + entityName + "Set",
        dataType: "json"
    parameterMap: function (options, operation) {
        if (options.filter && options.filter.filters) {
            for (var i = 0; i < options.filter.filters.length; i++) {
                // CRM odata doesn't support 'tolower'
                options.filter.filters[i].ignoreCase = false;                       

        // CRM odata doesn't support $inlinecount or $format
        var paramMap =;
        delete paramMap.$inlinecount;
        delete paramMap.$format;

        return paramMap;

Now your page is ready to go and you can upload all the necessary files (kendo.common.min.css, kendo.default.min.css, jquery.js, kendo.web.min.js and your html page) to a CRM solution. Then embed your html web resource to a form and you should see a text box like so:


As you start typing into the box, it will make a CRM OData call filtering by the characters you typed. By default, each character pressed will hit the OData endpoint but you can set ‘minLength’ on the AutoComplete control to limit the number of characters required before a search is performed. All the matches found will be displayed in a nice dropdown shown below.


There you have it, a simple custom Lookup control for CRM! A couple things that could be done to expand this control even more, would be to add custom styling to make it look more like the Lookup control in CRM as well as the ability to filter the records even more, by active records for example.

For the full source code, check out the code sample on MSDN here.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2011 Microsoft Dynamics CRM 2013

Dynamics CRM Plugins in F#

Today’s guest blogger is John Trujillo, a Developer at Sonoma Partners.

Every so often I promise myself I will spend more time learning the F# programming language. For one reason or another, I rarely do. Yet, whenever I think back to my favorite college programming courses, the courses in non-imperative languages (like Scheme or ML) always come to mind. So it should only make sense for me to learn F#, especially since it is fully supported in .NET. I recently decided to make good on my promise, this time attempting to apply what I have learned to a Microsoft Dynamics CRM plugin.

Even if you don’t know much about F# but are familiar with .NET and Dynamics CRM development, none of the following code snippets will be a complete mystery. However, you may want to spend some time getting to know the language. I won’t go into great detail regarding syntax. Thus far I have found it to be a fun language to code in, and I recommend you take a look for yourself. The F# community is very active and helpful. In my case I followed the “Why use F#?” series at F# for Fun and Profit, but you should also visit The F# Software Foundation. There is a huge selection of books available for purchase. Compilers are freely available on all major OSes. You can code on the browser at Try F#. Likewise, if you are reading this post, you may already be developing for CRM in Visual Studio, and so F# projects are already available to you. Visual Studio also provides a REPL interactive window to try out snippets as you develop your project. You can also create F# programs in LINQPad.

On to the business of creating a plugin. There are only a handful of steps to get started. The biggest hurdle for me was getting my project set up to play nicely with CRM and the Registration Tool, which I will point out shortly.

  • Add a new F# Library Project. This type of project is available in Visual Studio out of the box.clip_image002
  • Grab the latest Dynamics CRM 2013 SDK core assemblies from NuGet.
  • Delete the default .fs and .fsx files in the project and add a new F# file for your plugin. In my example, I named it AutoNamePlugin.fs. Here is what the initial plugin code looks like, which is the minimum necessary to validate registration and execution:
// AutoNamePlugin.fs
namespace Sandbox2013.Crm.Plugins.Functional

open Microsoft.Xrm.Sdk

type AutoNamePlugin(configuration) =
    interface IPlugin with
        member this.Execute serviceProvider = 
            raise (new InvalidPluginExecutionException("F# plugin registered"))
  • Build the project, register the assembly, and add your plugin steps as you normally would in C#. This was the trickiest part to set up correctly. I ran into a few roadblocks preventing me from registering and testing the plugin. You will likely encounter the same issues, so here are my solutions:
    • Sign the assembly. The project properties UI doesn’t have a Signing tab, so you will have to create a key pair file manually.
      • Enter in the command prompt:

c:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\sn.exe -k <KeyName>.snk

      • Add the .snk to the project post-build event. (I copied a post-build script from a C# plugin project and just updated file/dll names appropriately.)
    • Don’t define the plugin type inside of a module. It’s not shown in the snippet above, but I originally defined the plugin (type AutoNamePlugin) within a module. The Plugin Registration tool would not register it, even though I could see and select it in the tree view in the Update Assembly dialog. I was able to add the assembly after I pulled it out of the module. Namespaces are fine.


    • Add FSharp.Core.dll to the merged assembly. Once my assembly was successfully updated and my first Opportunity create step added, I tried to get my exception to fire when I saved a new Opportunity. However, the popup error was “Unexpected Error” and not the business logic error message I set up in the plugin. When I removed the exception, the error still occurred. I jumped onto the CRM server to look at the event logs. It turns out I needed to merge in the Fsharp.Core assembly as well. Add that as part of the post-build event script, which will resolve the error.
  • Once you have verified that your plugin is correctly set up, replace the exception with your own logic.



And there you have it, now you can enjoy creating plugins in a functional language!

For the curious, I uploaded my first full plugin implementation, which you can get here.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2011 Microsoft Dynamics CRM 2013

How to Phase CRM projects: Part 2 – Break it up

Today’s guest blogger is Andy Reising, an Account Executive at Sonoma Partners.

In part 1 of this blog post, we explained the factors that you should consider when planning your CRM program. It’s of the utmost importance that you coordinate a unified strategy across all of your constituents before embarking down this journey.


Plan the work, then work the plan

When investing in a CRM platform, companies are always focused on return on investment, and rightly so! The order in which initiatives are carried out directly affects the ROI of your overall program. In general, we see the best return on investment when companies follow the “crawl, walk, run” approach. Each phase, and each project, should be driven by specific and measurable outcomes. Here is an example of a crawl, walk, run CRM program:

PhaseScopeExample OutcomesRecommended Duration

Phase 1 - Initial Rollout, or Pilot

Single business unit (i.e. Sales only). For larger enterprises this can also be a pilot rollout coordinated with similar teams around the company. The key is to keep it small.

  • Increased sales
  • Increased service capacity
  • 3 months

Phase 2 - Expansion

Expand CRM to the teams or business units that are “next in line.” As necessary, invest in integrations with back-end systems, or design CRM to replace them. Truly multi-channel interactions and “360 view of the customer” is the overarching goal of this phase.

  • Consolidated data source
  • Increased customer retention
  • Increased customer touch points
  • 3 to 6 months per team/business unit

Phase 3 - Optimization

Once CRM is in place across the business and used to manage customer processes, it can be leveraged to provide leading capabilities like predictive analytics, automation, and truly integrated customer experiences.

  • Increased brand value
  • Lower cost-to-service
  • Ongoing, in small, focused projects

Other natural breaks

Aside from the overarching phases described above, also look for any other natural opportunities to break up your CRM deployment. Such natural phases include:

  • Brands: if your enterprise handles multiple brands, or has acquired additional brands, it may make sense to bring them onto the same CRM separately. We frequently help migrate brands into a consistent system.

  • Integrations: today’s CRM systems make great integration points, and can serve as customer data hubs. However, unless you are a brand-new startup with an IT infrastructure yet to be designed, the effort to integrate systems is going to be somewhat complex. These integration points should be identified early on, and they can be used to match up your lines of business and will provide natural separations in the phasing of the project.

  • Multi-lingual, or multi-geography deployments: each location or team should be handled separately, with a phased rollout across individual locations. Your CRM consultant can likely deliver some of these in parallel, but the actual release and go-live schedule should be staggered to allow your internal resources to focus on each one.

Project Wrappers – Requirements Gathering and Change Management

CRM-ProjectWrapOf course, each and every CRM project should begin with an initial requirements gathering and design, and each rollout will conclude with a well planned “go live.” In multi-phase projects, we recommend taking a “broad first, specific later” approach to the initial design. Designing every last detail by committee is going to be slow going and frequently becomes a larger effort than it needs to be. When starting out, shoot for about 60% of all future requirements. For the remaining 40%, focus on the user group immediately affected in that phase. Then revisit each specific constituent at the outset of their individual projects or phases.

If you can’t tell by now, our project approach involves balancing looking ahead with focusing on the short-term pragmatism of simply getting things done. We believe the key to successful go-lives involves setting the right place to start. Once getting the project underway, change management should become a continually present consideration. Throughout the entire project, we will make considerations for data migration (where will we get the data that we put into the CRM?), any back-end system integrations, and of course training and user adoption. These items will be considered as early as system design, and revisited continually through delivery of the project.



Topics: CRM Best Practices

How to Phase CRM Projects: Part 1 – Getting started

Today’s guest blogger is Andy Reising, an Account Executive at Sonoma Partners.

Whether you are looking into getting your first CRM system, or already have one, chances are you've heard some version of the cautionary tale that "most CRM systems fail." There are a myriad of reasons for this but we see one in particular over and over again: the organization bites off more than it can chew.


Organizations who fall into this trap will demonstrate symptoms like budget over-runs, multi-year implementations with nothing to show, or a never-ending "requirements gathering” initiative.


In this two-part post, I'm going to describe some considerations that can help you phase your CRM projects into a manageable roadmap - and achieve success at each step along the way.


Step 1: It all starts with the strategy

I know, this is easier said than done. But the work done at this stage will pay dividends when it comes time to build a system. Chances are your organization already has the backbone of a CRM strategy. It may be called your "Five Year Plan", “Future Roadmap” or some other internal tagline.

They key here is that we're looking for the overall direction, and specific objectives, that your key executives are willing to get behind and support. Many, or all, of your corporate objectives will have implications in CRM. Take that corporate strategy, and distill it into the tenants that are most relevant for CRM. Then, identify executive ownership for them all.

Ideally, your organization will also appoint a key executive to lead this charge. Some of the most effective appointments I've seen have included titles such as Chief Customer Officer, Director of Customer Experience, and the like. At the minimum, think about the team, and the executive leader, that will own this transformation.

Step 2: Take a look at the processes

If your company is preparing to invest in CRM that means that there is plenty of change on the horizon. Now is a great time to refine, optimize, or just course-correct on your customer-related processes.

A lot of companies are attempting to consolidate/ break down corporate silos. CRM is a great foundation on which to build that new operating model. However, many clients assume that breaking down silos means making everything consistent. This is not the case; not every single business unit, or geography, or market segment has to follow the exact same process.

We see "requirements gathering" get hung up here frequently. We advocate that you rationalize the processes that are obviously inefficient - take this opportunity to tighten things up. The leading CRM platforms today offer great functionality that may be worth flexing from your old ways. And, on the flipside, they are highly flexible in order to accommodate the way you truly go to market.

Step 3: Okay, now let's start planning some projects

PlanCRMProjectsHere we go! Your organization is on-board with key executive sponsors and you have some processes identified that are going to change for the better… now what? Well, first of all, if you haven’t already, you can start shopping for a CRM platform. Don't worry if you haven't yet; the prep work you've done in steps 1 and 2 will help your vendors serve you better. Make no mistake – there’s no need for technology to enter the conversation before you’ve worked out your CRM strategy and processes!

Chances are, even if you’ve done steps 1 and 2 only partially, you are looking at a lot of change. In our opinion, the way organizations approach this mountain of change is what determines success vs. failure. Go after too much, and it will be too hard to achieve value of the investment. Go too small, and you won’t make a dent’s worth of improvement.

In the next part of our post, we will help you determine which pieces and the proper order in which to go after this challenge.


Topics: CRM Best Practices

CRM 2013 Joins - “That is so fetch!”

Today’s guest blogger is Stephen Habegger, a Senior Developer at Sonoma Partners.

CRM 2013 introduced a nice new addition to FetchXML: the entityname attribute of the condition element. This allows us to do things like query all Account records that have no child Contacts, something we couldn’t do in CRM 2011. It also allows us to perform OR type filters across entities. This also could not be done in CRM 2011, because a filter element had to be a child of the entity or link-entity element on which it was filtering.

CRM 2011

In CRM 2011, the following query would give us each Opportunity and its related Contact where the Opportunity Status Reason is “In Progress” and the Contact is at least 21 years old, the intersection of the two criteria.

<fetch mapping="logical" version="1.0">
    <entity name="opportunity">
        <attribute name="name" />
            <link-entity name="contact" from="contactid" to="customerid">
                <attribute name="fullname" />
                    <condition attribute="birthdate" operator="on-or-before" 
                               value="1993-04-17T00:00:00" />
                <condition attribute="statuscode" operator="eq" value="1" />


CRM 2013

CRM 2013 allows us to retrieve Opportunities with the union of the two criteria, using an OR type filter. We can now retrieve each Opportunity and its related Contact where the Opportunity Status reason is “In Progress” or the Contact is at least 21 years old.

<fetch mapping="logical" version="1.0">
    <entity name="opportunity">
        <attribute name="name" />
            <link-entity name="contact" from="contactid" to="customerid">
                <attribute name="fullname" />
            <filter type="or">
                <condition attribute="statuscode" operator="eq" value="1" />
                <condition entityname="contact" attribute="birthdate" operator="on-or-before" 
                           value="1993-04-17T00:00:00" />

Alright, this is awesome. Now, what if we want to retrieve the Contact’s parent Contact, as well? I ran across a similar scenario recently. Should be no sweat. Let’s try this:

<fetch mapping="logical" version="1.0">
    <entity name="opportunity">
        <attribute name="name" />
            <link-entity name="contact" from="contactid" to="customerid">
                <attribute name="fullname" />
                <link-entity name="contact" from="contactid" to="parentcustomerid">
                    <attribute name="fullname" />
            <filter type="or">
                <condition attribute="statuscode" operator="eq" value="1" />
                <condition entityname="contact" attribute="birthdate" operator="on-or-before" 
                           value="1993-04-17T00:00:00" />


Uh oh. When we try to run this query, we get an error:

There’s more than one LinkEntity expressions with name=”contact”.

Well, I guess we were bound to run up against a new error while using a new bit of functionality, but what’s worse than the grammatical error in the error message: does this mean we can’t use our nifty new filter in this scenario? It appears the entityname attribute on the condition element is confused by the fact that we have two Contact link-entity elements.

Fortunately, a little playing around shows the fix is pretty easy. The entityname attribute seems to happily accept an alias, as well as the actual entity type:

<fetch mapping="logical" version="1.0">
    <entity name="opportunity">
        <attribute name="name" />
            <link-entity name="contact" from="contactid" to="customerid" alias="oppCustomer">
                <attribute name="fullname" />
                <link-entity name="contact" from="contactid" to="parentcustomerid">
                    <attribute name="fullname" />
            <filter type="or">
                <condition attribute="statuscode" operator="eq" value="1" />
                <condition entityname="oppCustomer" attribute="birthdate" operator="on-or-before" 
                           value="1993-04-17T00:00:00" />

Microsoft Gets Social

Last year it was announced that Microsoft acquired the social monitoring analytics vendor Netbreeze and they had big plans to revamp the product and integrate it with Dynamics CRM.  They didn’t fall short on that promise and at this years Convergence showed off their newly branded Microsoft Social Listening product and discussed future enhancements planned.

If you went to Convergence this year in Atlanta, and were unable to attend the “Social listening deep dive” session (DDCRM111), I highly recommend heading over to the Convergence 2014 website, navigating to Attendee Tools, and reviewing that session’s video or PowerPoint

Microsoft’s Social Listening is a product that’s used to scrub multiple social sites (YouTube, Twitter, Facebook, and Blogs).  Blogs currently monitor WordPress and Tumblr only.  The data from the sites is brought back into Social Listening so users can analyze, monitor, and respond. 

The main navigation of Social Listening is Analytics, Facebook Pages, Settings, and Help.  Let’s dive in and take a look at the features.

Analytics Home Page

The Analytics Home Page of Social Listening breaks out the Buzz and Trend of the conversation amongst all search topics based on a time frame, but can be filtered down or drilled into to show specific topics.  The Trend is a statistic that shows how the topic is performing compared to an average week based on the last 5 "time frames".  A time frame can be days, weeks, or a custom time frame. 

On the home page you can see the number of posts per language.  The home page also breaks down the number of posts per source (YouTube, Twitter, Facebook, Blogs).

All charts within Social Listening can be exported to PNG, JPG, vector graphics SVG, PDF, XLSX, or CSV to allow you to send reports to users not within Social Listening.


Analytics Overview:

Users can drill a level deeper and navigate to the Overview area of the Analytics section.  In this area you can see posts, graphs, and also drill down into authors, sources, etc.

Within the Overview, you can also:
  • See a summary of different posts and sentiment
  • View the volume history over time including average
  • View a summary of sources as well as the breakdown of language per source



No matter where you’re at within the navigation of Microsoft Social Listening, you can filter your social data on many different criteria.  When you filter your data in one area and move to another, the filter remains.  All the charts and graphs within Social Listening are clickable so you can drill into a specific section of a chart or graph (on source for example) and the current filter is expanded to include whatever you just drilled into.

A few examples of what you can filter on include:

  • Search Terms (e.g., from “All” to specific terms such as “Sonoma Partners”)
  • Reach (if you’re only interested in seeing data based on those social users with the most influence)
  • Date (e.g., last week, last month, or a custom range)
  • Sentiment (you can drill into a chart to view those posts that were negative to reach out to those users who may have posted something negatively about your product)
  • Language
  • Source (Twitter, YouTube, Facebook, or Blogs)
  • Site
  • Keywords



Sentiment is another key component of Social Listening.  The key differentiator between Microsoft Social Listening and other products is that in Social Listening, the sentiment is calculated in the native language.  It’s not translated first into English, and then the sentiment is calculated.  This is key because certain phrases in other languages could mean different things based on the context of the phrase.

The sentiment engine first identifies sentences, then identifies words, then tags parts of speech (e.g., verbs, adjectives, nouns, etc.), then groups the words back into phrases, and finally detects the sentiment.

image image


The Posts area of SL will display the actual raw posts that are being retrieved based on your search terms. 

Sometimes the calculated sentiment isn’t correct in how it’s tagged the sentiment.  Thankfully, within the Posts area of SL,  Microsoft has built in the ability to manually change the sentiment so the updates will be reflected in any analytics.

You can also reach out to your audience directly using the native features of the source of the post (e.g., reply / retweet / favorite from Twitter).  You can also navigate quickly to the original post, email the post to a college, or delete it from your instance of Social Listening.



Social data can be broken down by author allowing you to see who your top influencers are and allowing you to reach out to those individuals if need be.


Facebook Pages:

Facebook Pages are setup separately within the Settings area of SL and are also reported on separately.  SL looks at all posts on a specific Facebook page that’s setup.  However, you can analyze your data to see what posts are coming from the audience versus posts that are coming from the owner of the page.  This way you can better understand the conversations on your page and if you’re driving user interaction, or if your users aren’t engaged and the activity on your page is all coming from you.

Just like the rest of SL, everything in the Facebook area is clickable allowing you to drill into posts, authors, sources, etc. to see the data with different filters and in many different ways.



Social Listening is on a quota per month pricing model.  If you’re a small business you’ll want to pull small amounts of data into SL.  However if you’re analyzing a lot of data you’ll need to increase your quota to make sure you can pull all the social data in without any issues.  SL does provide you indicators if you’re reaching the limit of your quota and you can purchase more to ensure data collection doesn’t stop for the month. 

When you’re setting up new search topics, you can test your settings on the topic to make sure it won’t blow away your quota.  You can also enter in inclusions or exclusions to apply to your searches.

You can have system wide defaults (e.g. languages, time frame, search topic sources, etc.).  However each individual user can override the system defaults with their own defaults.

To setup a Facebook page, simply copy the URL of any Facebook page and SL will start tracking against it.

Users have the ability to also setup Blocked Content (e.g., if you’re tracking hundreds of car brands but want to exclude second hand cars, you can add those words to block that content), or Blocked Sources (e.g., you want to block your own blog from being included in the SL data).


The Future of MS Social Listening:

In this session, Microsoft also discussed the future vision and feature roadmap they see for Social Listening and Dynamics CRM.   There’s definitely reason to be excited not only for what’s here now, but for what’s to come:

  • Q2 2014
    • Dynamics Marketing Social Campaigns (e.g., Use Dynamics Marketing to send out tweets and other social activities in response to landing page activity)
  • H2 2014
    • Engagement Capabilities (CRM users can start engaging with customers via social web to have everyone including non CRM users participating in a single discussion)
    • GEO Features / heat maps (the ability to filter where posts are coming from)
    • Create Social Activity (the ability to create Leads, Opportunities, and Cases in CRM directly from Social Listening)
    • Power BI and Social Analytics (e.g., mash up social data with sales, marketing, and financial data)


There you have it.  Just another gigantic reason to be excited about the new acquisitions Microsoft has made, and the vision they have to include more forward thinking components within the Dynamics CRM product.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2013

You might need a CRM system re-launch if…(or how to avoid zombie CRM)

A new trend in the CRM space seems to be gaining momentum. Recently, more and more prospects are asking for help to “re-launch” their current CRM deployments. Some customers call it a CRM reboot, others call it a CRM restart but they share the same symptoms. Businesses believe in the value of a CRM system, and they know that the software platform they currently own can accommodate their needs, but for one reason or another they aren’t getting the value out of the system that they think they should. They want to re-launch their CRM system, which involves redesigning the various components of the application such as the customizations, dashboards, etc.

Investing in a CRM isn’t cheap, so if you’re not getting a lot of value of your deployment you should ABSOLUTELY consider taking a fresh look at your approach.

Customers might need to consider a CRM re-launch for different reasons. The most common re-launch scenarios we see include:

  • You are consolidating and standardizing CRM deployments
  • Your CRM system is stagnant (what we affectionately call “Zombie CRM”)
  • You are outgrowing your CRM implementation partner

Let’s take a look at each of these re-launch scenarios in a little more detail.

Consolidating and Standardizing CRM Deployments

Over the past 5+ years lots of companies have purchased Salesforce or Microsoft Dynamics CRM, but most of these decisions were made at a divisional level, not at an enterprise level. Consequently CIO’s today find themselves with a smorgasbord of CRM systems to deal with. It’s not unusual for a single customer to own multiple Salesforce deployments, each with different administrators, pricing, contract end dates, and security rights. Likewise, we see many customers that have both Microsoft Dynamics CRM and Salesforce deployed in different divisions, particularly in the cases of mergers and acquisitions. Most IT departments want to standardize on either the Salesforce or Microsoft Dynamics CRM platform to minimize the amount of skills and resources needed to support the CRM platform.

When customers combine multiple deployments into one, they are forced to reconsider the system goals and design, which almost always leads to a CRM re-launch.


Stagnant CRM Deployments (also known as Zombie CRM)

ZombieWhen a business first deploys their CRM system, it receives a LOT of love and attention. Management checks in frequently, each nook and cranny of the system receives detailed testing and users receive plenty of training and documentation. You may have hosted a CRM launch party complete with t-shirts, cakes, and prizes.

Fast-forward a few years and the picture drastically changes. Sure the CRM system is up and running, but plenty of new issues might surface:

  • Data quality decreases drastically and the system contains lots of duplicates and out-of-date data
  • User adoption is just mediocre or adequate
  • The system doesn’t take advantage of the latest and greatest features available from Salesforce and Microsoft (it might even be years behind!)
  • Management thinks the CRM project is “over” and they won’t invest any more into the deployment

When I talk with customers suffering from these symptoms, I can’t help but think of zombies. The system isn’t dead, but it’s definitely not alive either. It’s slowly deteriorating over time and becoming less valuable every day.

Businesses invest too much money into software subscription fees to let their CRM systems turn into worthless zombies. Consider a CRM re-launch to help fight off the forthcoming zombie CRM apocalypse.


Outgrowing Your Implementation Partner

Most businesses utilize a third-party consulting firm to help them with their initial Microsoft Dynamics CRM or Salesforce deployment. Prospects often surprise me when I ask them how and why they selected their original CRM implementation partner. Answers vary from “they were the cheapest” to “Salesforce recommended them” to “I don’t know, I wasn’t here back then”. The needs of most businesses change over time, and consequently I think it’s safe to say that maybe the original implementation partner doesn’t fit the best anymore.

As we mentioned earlier, a lot of CRM deployments start as smaller divisional level deployments. As the CRM footprint grows within the enterprise, the implementation partners that helped with the division deployments might not have the skills and expertise to help develop an enterprise level CRM plan.

Issues we hear from customers outgrowing their implementation partners include:

  • Higher quality levels needed, including better testing and system governance
  • Consultants are just “order takers”, they don’t provide recommendations on best practices to clients on what they could or should be doing with their CRM systems
  • The consultants can perform coding and customization tasks, but they can’t help the business’ executive management brainstorm and develop an enterprise level three-to-five year CRM roadmap
  • Spending too much money on over-engineered and overly complex CRM system designs

If your business suffers from these systems, it’s the perfect time to re-evaluate your consulting partner and re-launch your CRM system. A fresh set of eyes with a new perspective can really help invigorate the value of your deployment.


Topics: CRM Best Practices

What’s Wrong with CRM Software Evaluations Today

We receive a lot of requests from customers asking us to help them evaluate whether or Microsoft Dynamics CRM would fit their company best. Having witnessed a lot of customer evaluations of CRM systems, we think there’s lot of room for improvement and implementing best practices. Most companies evaluate a CRM system once every 4-5 years. Unfortunately this infrequent buying cycles means that buyers can’t develop the same CRM software perspective as a company like Sonoma Partners, where we constantly conduct CRM software evaluations.

I would estimate that the typical CRM buyer spends their time as follows when evaluating a system:

  • 50% of their effort is spent comparing functionality between the systems
  • 40% of their effort is spent comparing costs between the systems
  • 10% of their effort is spent evaluating the partner who will actually perform the implementation

This breakdown seems reasonable on the surface but we have some major concerns with this approach.

Functional Evaluation Risks

Customers love to dive deep on system features and really get into the nitty gritty to evaluate how the different systems work. Unfortunately, this feature evaluation only compares the two vendors at a specific point in time. Considering both Microsoft Dynamics CRM and Salesforce release more than 3 updates per year with hundreds of new features per release and assuming a 5-year investment horizon…each vendor will add 5,000+ new features during the system lifecycle. This is why it seems nuts to us to make a CRM platform decision based on detailed features as they exist today.

Another risk to diving deep on CRM features for your evaluation is that you might not be comparing the right features. Prospects ask us to evaluate features based on what they think they need, but we frequently find out 2 months later when we’re actually in the middle of the project that they actually need something totally different than what they thought they needed during the CRM platform evaluation process. In these scenarios I can’t help but wonder if they knew then what they know now, who knows if they would have made the same CRM platform decision?

Cost Evaluation Risks

LookingWhen comparing CRM systems, it seems to make good sense that the customer want to know the total cost of ownership for the system. Lots of factors play into these calculations such as hard costs like the software subscription, implementation costs, software support and potentially new hardware. Other softer costs exist too, including ongoing internal staff support and business interruption costs.

Calculating the hard costs associated with the software doesn’t usually cause a problem for customers. Unfortunately estimating the implementation costs isn’t quite so simple. Nothing strikes more fear into an implementation partner’s heart than to hear a customer say, “We need a detailed 2-year cost estimate based off this one page requirements document”! On one hand, consultants like us want to make sure we leave enough buffer to cover any unexpected surprises, but on the other hand we need to keep our estimate competitive.

Most competent implementation partners will struggle will provide detailed and accurate implementation estimates based off of documentation provided by the customer. I would encourage customers to really question the accuracy of any implementation estimate if the partner bid off a requirements document, and they haven’t been able to engage in person with your CRM project team. 

Implementation Partner Risks

At the very end of the CRM decision making process, the customer then turns their attention to the implementation partner. Remember the breakdown of percentages we discussed earlier? We firmly believe that 90% of a CRM project’s success or failure depends on the implementation team. Both Salesforce and Microsoft Dynamics CRM have hundreds of thousands of satisfied customers, and millions of happy users worldwide. If your CRM project fails, very rarely should the technology receive the blame. Instead customers should hold themselves and their implementation partner accountable.

Please note that while the implementation partner may carry a great brand name the actual project gets executed by a specific team of people (not the entire company). We witness many cases where customers received not-so-great resources from a highly ranked or regarded implementation partner. Make sure you know which people from the implementation partner will be working on your project because you might pick different CRM implementation partners based on the assigned team.

If we had it our way, customers would conduct CRM software evaluations much differently. In our ideal world, customers would spend less time worrying about detailed features and spend more time evaluating the implementation partner and the actual project team to make sure there’s a strong track record and good personality match.


Topics: CRM Platform Selection

Clogged Sync? Better call the plumber…

Today’s guest bloggers are Ross Talbot, a Senior Developer at Sonoma Partners, and Nick Costanzo, a Senior Consultant at Sonoma Partners.

A few months ago, my colleague Jacob wrote a blog post about Dynamics CRM 2013’s new feature, the Server-Side Sync.  Here is his original post for reference.

We recently encountered an issue when configuring server side synchronization between CRM 2013 On Premise and Exchange for one of our clients.   The client was looking to take advantage of this feature to allow Contacts, Appointments and Tasks to sync to their end users’ mobile devices, without relying on the Outlook Add In client sitting open on users' desktop.  To set this up, we followed steps to configure the CRM server email delivery method, configure email profiles and configure mailboxes.  Initially the setup appears to be successful but then a short time later the synchronization of contacts, appointments, tasks, etc. gets disabled.



We logged a support case with Microsoft and after extensive troubleshooting, they have determined that the issue is related to the Exchange managed API.   The Microsoft support team has indicated they are working on a resolution for this and will notify us on the timeframe for this fix.  We believe this issue was partially fixed with CRM 2013 UR1, which resolved an issue that Microsoft Support identified in the platform traces regarding this error.  On the Exchange side, right now this is looking like it is related to an upgraded instance of Exchange On Premise and does not appear to affect all customers setting up server-side sync.  The exact mix of Exchange and CRM settings that lead to this issue are the focus of this ongoing work with Microsoft Support.  

Additionally, we noticed an issue with orgs upgraded from Dynamics CRM 2011 regarding the Server-Side Sync.  If a solution is imported with a customized Sitemap, and the solution was generated in CRM 2011, the Email Configuration option will not be included and can be overwritten by an unmanaged solution.  The default location under the Settings area is shown below.


To resolve this, we had to re-add the section to the sitemap.  We built a new 2013 org, found the section we needed, and copied the XML into the sitemap for our org under the Settings area.  Since there isn’t an easily searchable “Email” or “Email Configuration” in the corresponding XML it is difficult to tell this is the section that is missing.  Here is the XML line needed to get this option back:

<SubArea Id="nav_social" ResourceId="Social_SubArea_Title" DescriptionResourceId="Social_SubArea_Description" Icon="/_imgs/area/16_social.png" Url="/tools/social/social_area.aspx" AvailableOffline="false" />

Once that is added back into the sitemap, the Email Configuration options are accessible once again:

So if your sync is clogged, you may be seeing the same thing we did here.  If you need help getting this resolved, we make house calls.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2013