Sonoma Partners Microsoft CRM and Salesforce Blog

Bad Characters Messing Up Your Migration to Microsoft CRM Dynamics?

Today's post was written by Neal Sullivan, Senior Database Developer at Sonoma Partners.

As we work with clients to migrate data into Microsoft Dynamics CRM we often run into challenges with the incoming data.

Our migration process typically consists of moving the source data into a staging SQL Server database prior to the actual migration to CRM. Among other reasons, this gives us a place to do data cleansing prior to the CRM migration.

We run into many common issues such as field length differences and data type mismatches that are often found during the data mapping process with the customer. One less common issue we encounter in testing a migration is that some characters in the source data are not supported in CRM when importing data via the API. There are certain non-printable characters that are supported such as carriage-return and line-feed however others like record separator [char 30] or vertical tab [char 11] often are not accepted when migrating data to CRM.

We've developed a common SQL framework we use to allow us to do some data analysis and clean-up of these invalid characters in our staging tables prior to doing our push of the data to CRM. In most cases we run the data migration without any cleansing and capture any failed rows into an error table where we keep the source system record id and the CRM API error message. From there we can determine if any entities had errors around invalid characters. Here is an example of what that error would look like. In our example we are using the KingswaySoft CRM Adapter for SQL Server Integration Services.


Once we know what entities and fields have invalid characters we can start to build our cleanup routine from our base framework.

So which characters are going to cause us a problem?

In our research we found that the Microsoft Dynamics CRM API does not like asci characters below character number 32 (which is the space " " character). So we start with a list of 1 – 31 to represent potential bad characters. We also know that horizontal tab, carriage return, and line feed (CHAR(9), CHAR(13), and CHAR(10) respectively) are valid in CRM and should not be in this list of bad characters.

For the sake of examples, here is a sample script to spin up 10 ‘note’ records with potentially bad data in the NoteText field.

To create the list of bad characters, we used a Common Table Expression (CTE). The below script gives a numbered list containing the asci character values of known-bad characters called, ‘BadCharacters’.

From there it's a matter of writing a query that will join the known bad characters CTE with your stage table and have it review each character in the field that was reported as having bad characters in your error logging of your data migration. Here the SQL Cross Apply clause comes in handy to make this a simple process. In this example we are migrating notes into the CRM notes entity. I know from my error logging shown above that the notetext field in my stage table has some bad characters that CRM did not like. So I cross apply my BadCharacters table with my notes staging table and have it inspect the notetext field for bad characters (using the above CTE definition).

Here are the results of the above query on my data set. I can see exactly what records, what the raw value is currently in that field, what the bad character was reported and where in the string it exists.


After I do my analysis and confirm that it’s acceptable to replace these characters an update script is run against my stage table. Here is my final script that I can include in my data migration process to swap out any bad characters with a blank string in my stage table prior to sending these records to CRM.

It should be noted that the CTE spins up 256 possible rows to cover every possible ascii character. In this case we know that we only want to do the cross apply on a subset of these potential values. But the BadCharacters CTE could be amended to include/exclude any ascii characters.

Topics: Microsoft Dynamics CRM

Save My Data! CRM Online Backup & Restore

With the Dynamics 2016 Spring Release for CRM Online, a much anticipated feature for CRM Online has finally been rolled out.  This is the ability for the end user to be able to manage database backups, and restore a backup to your Online instance whenever you want.  Previously customers had to engage Microsoft support to do this for them, but now they’ll be able to manage this process on their own.


There are no size limitations to the backups that can be taken (in case you have a large CRM database) but just know that the size does affect how long the backup and restore will take. 

In the O365 Admin center, when looking at your CRM instances table, you’ll see a new “Backup & Restore” link/tab that will take you to the area where the backups are taken, and where you would restore a backup to an instance.  From here you can also see when the last backup was performed for each instance.


Clicking on the “BACKUP & RESTORE” tab will bring you to the backup and restore home of the CRM Admin center where you can see a list of all the backups per instance you select in the drop down.  This is also where you can take different actions:  create a new user backup, edit an existing user backup, delete an existing user backup, and restoring a backup to a sandbox instance.


Creating a Backup

When you go to create a backup, you have the ability to provide a label and description for your backup.  This is the same dialog that will appear when you go to edit an existing backup allowing you to modify the name and description after you initially create it.


Backup Locations

With this new feature, users will only be able to backup to the CRM Online Server.  They’re currently not able to backup to any local location or anywhere in Azure.

The backups to the CRM Online Servers (Microsoft Data Centers) will be kept for 3 days.  Backups that are stored in CRM Online can be full backups (system backups) or incremental backups (user backups).  These are explained more below.

The backups themselves (system or on-demand user backups) do not count against your CRM Online storage space even though they’re backed up to the CRM Online Servers.

Backup Types:

The two following backup types are available for the CRM Online database:

  • System Backups
  • User Backups

System backups happen daily and are full backups.  What time of the day that they occur on cannot be confirmed and may vary, but they will happen at least once a day.  These will live on the CRM Online Servers, and will persist 3 days.

User Backups are incremental backups and therefore should backup and restore quicker.  These will also persist for 3 days.  There currently isn’t a limit to how many on-demand user backups you can take.

Restore Process

The backups themselves are encrypted, and you’re only able to restore back into a Sandbox instance.  If you want to restore to a Production instance, you’ll first need to convert the Production instance to a Sandbox instance, and then perform the restore.  The restore button will be grayed out for Production instances.


However, if you have to restore into a production instance, you can edit that instance to change it’s type to Sandbox, and after you do so, you’ll see the restore button in blue as in the screenshot in the Details section above.  Clicking on the restore button will pop the dialog that allows you to change the target to restore into.  Again this will only list sandbox instances.




During a restore, the instance you’re restoring into cannot be used.  Users will not be able to access the instance.  A good practice that’s supported would be to take a backup just before your CRM Online org is to be upgraded, and then if the upgrade fails for some reason (breaks some functionality), you can restore back to the backup taken which will restore you back to the previous version of CRM Online.

Delete Backup

Another action you can take on a backup in the backup and restore area is deletion of a user created backup.  Remember that after 3 days, the backups will be deleted automatically (this is shown in the “Expires On” column in the list of backups).  However a user may want to manually delete backups to clean up their list of user initiated backups.



With this new feature like all new features, come some limitations:

  • This is only available for CRM Online 2016 Update 1
  • You cannot take an On Premise backup, and restore it into your Online instance
  • Cannot backup your Online instance, and restore it to an On Premise org for reporting purposes
  • There is no API support
  • There is currently no ability to schedule backups (other than the daily system backup that’s taken automatically once a day)

Even with these limitations it’s great to see some more power coming to the CRM Online customers hands.  I’m sure Microsoft will continue to enhance this already powerful tool and maybe eliminate some of the current limitations in future versions.

For more information on this functionality, head over to Microsoft’s TechNet article.  As always, you can always Contact Us to help out with your CRM implementation.

How to get executives to pay attention to CRM
Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Power BI and Microsoft Dynamics CRM

Today's blog post is written by Brendan Landers, VP of Consulting at Sonoma Partners.

My last blog post covered some basic information on Power BI Desktop connected to SFDC. In this blog post, I will discuss the various ways you can connect to Microsoft Dynamics CRM from Power BI and the pros and cons of each approach.

Looking to enter activity related information on-the-go in Dynamics CRM? Explore Activity Buddy, a custom app built by Sonoma Partners.

If you are using an on-premise version of Microsoft Dynamics CRM, you can connect to the SQL tables directly or write queries to massage the data in the way you need. You have the ultimate flexibility here. I prefer to write queries to limit the data set to only fields I care about, rename columns, and do some basic transformations (although this is all possible in Power BI). As an example, on one project we had a requirement to add columns flagging opportunities closing in the next 90 days. In Power BI we could do this with DAX, but the resources who would be supporting this long term were much more comfortable writing SQL, so we had the import SQL query handle this. 

If you are using CRM online, the good news is that you have options. The bad news is that they have limitations.

As you probably know, you cannot connect directly to the database with CRM online so Microsoft offers some other approaches. 

One option is to leverage one of the two Power BI content packs Microsoft has made available on the Power BI service. They are the succinctly named Microsoft Dynamics CRM Online Sales Manager and Microsoft Dynamics CRM Online Service Manager content packs.

Looking to create Dynamic Forms in Microsoft Dynamics CRM? Download our free Dynamics Form solution accelerator to configure form scripting requirements without writing a single line of code.

To access the content packs, follow the instructions found here. Once the data is loaded, assuming you have data in the environment, the results are pretty impressive looking. For example, the Sales Manager content pack includes a Dashboard and a Report with 8 tabs of detail. These reports include details on Sales Performance, Win/Loss Analysis, Pipeline, Activities, and detail on Leads and Accounts.

Power bi image 1

In addition to cool reports, the content pack includes many features in the data set you may not first notice. For example, they’ve added some calculated columns which are very useful (behind the scenes using DAX). For example, on the Opportunity data set they have columns for Average Deal Size and Average Deal Age. Also, they include a Date object in the data set which allows similar date functionality as advanced find (i.e. filter to "Last 30 Days").

These content packs are great for inspiration and demo purposes, but you are limited to the content they provide – you cannot add to the data model. You can, however, edit or create reports from the Power BI service, but this is much more limiting than the Power BI Desktop tool. Herein lies the problem. It’d be great if we could start with the Content Pack, download the pbix file and leverage the Desktop tool to build what our customers need, but Power BI doesn’t allow this – you can’t take content published to the service and edit (Sidenote: please upvote this request from our friend Jack Bender.). The consequence is that unless you want all native fields and only want data from the objects provided by the content pack, you are handcuffed. Unless that changes, from our perspective, it’s only realistic to build your reports using the desktop and publishing to the service.

With the desktop, you have two other options to connect to CRM online, again each with limitations. First, from within Power BI Desktop, you can click on Get Data and select the Dynamics CRM Online source.

Power bi image 2

Once selected, you are asked to provide the URL for the CRM OData service.

Power bi image 3

Enter the URL and click OK. Next, you may be asked to authenticate. Select the OAuth2 option and enter your credentials for the CRM environment. Next you will see a list of CRM objects you can pull into Power BI. These look similar to the tables available in the database. For this example, let's select the following objects:

  • AccountSet
  • OpportunitySet
  • SystemUserSet

Power bi image 4

Click Load. You will now see the three data sets on the right side (under fields), and you can start interacting with them. You’ll notice some things missing though, which again renders this approach very limiting. For example, on the OpportunitySet, I don’t see an Estimated Revenue field (schema name is estimatedvalue). I can’t build any sales reports without this field, so again I am stuck. That said, based on the URL example they provide, I know I am hitting the old version of the OData service. So, let’s try this again with the updated URL.

Power bi image 5

So if we follow the same steps with the new URL, I see all the data I’d expect to see in Power BI. Great news…seems usable. I see my three objects in the right navigation pane. Not done yet, though. Before we can build the reports we want, we have to create relationships between the data sets. To do so, click on Manage Relationships in the ribbon.

Power bi image 6

You will see that no relationships have been defined. Simply click Autodetect, and Power Bi will analyze the data sets to attempt and relate the data.

Power bi image 7

In this example, Power BI detects three relationships and marks two as active. Unfortunately, they are not quite what we want. I want opportunities related to both accounts and systemusers (i.e Name of the Salesperson) so I can pull data in a single report from all three. Easy to rectify though. Simply uncheck the top relationship and check the second relationship and click Close.

Now we have what we need to start building reports from CRM Online. For example, if you simply select estimatedvalue in the opportunities dataset, and fullname in the systemusers data set you will see a report of opportunities by owner.

Power bi image 8

From here, you can start to build complex reports and publish to the Power BI Service for other users to consume either via the web or the Power BI mobile application.

Please note, rather than use the Dynamics CRM Online option when you are getting data, you could simply select OData Feed option and get the same result. The big difference you will find when you connect via OData is that you are working with schema names and you don’t have any of the additional niceties that the Content Pack provides, but you have the flexibility you will likely need. Power BI has some light ETL functionality that allows you to do thinks like change field names, apply simple transformations etc. It saves the rules so when you refresh the data set, you don’t have to worry about losing the work.

In summary, with a little elbow grease, you can get Power BI connected to any CRM 2016 online or on-premise organization and start to build really cool reports. Our advice is that, like most reporting projects, the most challenging part will be getting your data how you need it for reporting.

As I said earlier, some of our clients are more comfortable with SQL server queries and therefore, for a variety of reasons, some of our clients elect to synch their online database to on-premise for reporting purposes, at which point you’d have all of the above options with the exception of the content pack (which is specific to online). I am hopeful Microsoft will someday soon let us download datasets and reports from the online service as pbix files so we can use the content pack as a starting place but add into it what we need. At that point, things will get very interesting…

How to get executives to pay attention to CRM

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Private Files, We're Watching You

Today's guest blogger is Ross Talbot, a Principal Developer at Sonoma Partners.

Recently we were working on a project and came across a gap in our expectation of data access as a Salesforce admin user.

We were using a query to find updated documents in Salesforce content when we realized some files we expected to see were missing from the results. While the query overlooks these files, the UI shows them to an admin user. So where do you start the investigation? 

First you double-check your Salesforce security settings. You have the system administrator profile. You have the view all data permission. So why can’t you access the document via SOQL? 

Found on the User Edit screen:

Private files image 1

Found on the System Administrator Profile:

Private files image 2

Salesforce content security inherits from the parent object, be it a record or Chatter group. However, even as an administrator using SOQL we cannot access a file posted in a private group if we are not a member of that group. The same holds true for a file posted on a record that is not explicitly shared with the user when it comes to SOQL. Salesforce has a helpful table here to help us determine who should be able to access files.

So let’s test this out. We find the file in the web UI and we are able to view it. As expected, I see it and it sees me. As an administrator, we join the private group containing the file and we are able to access it in the Salesforce UI. So next we test whether joining a private group gives us access in SOQL, and we are successful. We then leave the group, and accessing the file still works in the UI, but again our SOQL query does not include the file.

Next our investigation leads us to test changes in our SOQL query. We can access the files in SOQL, but we must specify the ID of the file using an equals or IN condition. Now I know what we are thinking, “Great, now I have access, but this sounds pretty tedious since I have potentially hundreds or thousands of files to track down, and in an integration I can’t keep manually updating the list of IDs. Plus, there are API limits to consider, since I can’t efficiently run tens of thousands of SOQL selects, one for each file. So where does this leave me?”

Which brings us to the KingswaySoft SSIS Integration Toolkit for Salesforce, and for our purposes we are using a SOQL generated query. For our input, we can find the file IDs we need by searching the related data via the related parent or record ids. Our sample query will include more fields than the RelatedRecordId in this case so that we can identify the correct record for troubleshooting and other identification purposes, however for the next steps it is the column we will key in on. Setting a KingswaySoft Salesforce Source to use an Object Query allows us to filter for posts updated or created after a specific date that have content attached to them. We will load these results in an SSIS record set for use in the next step of our processing.

Private files image 3

We can use a Script task in SSIS to construct our SOQL query using these RelatedRecordIDs for input to select the correct content records for processing. We take a comma separated list of IDs in the allIds SSIS variable and use a C# String to build the SOQL query we set in the objectQuery SSIS variable. By batching these IDs, we can avoid hitting a limit on the number of IDs we include in our IN condition.

Private files image 4

The generated SOQL query is then added to the Kingswaysoft Source adapter by using the SSIS variable objectQuery we constructed and the source type ObjectQuery, and now we are able to bring the content into SSIS or SQL staging tables for processing in our migration or integration. Since we are already batching the query results, the batch size in our source query can remain the default value of 1000.

Private files image 5

Now the next time you run into an issue accessing private files through the Salesforce API, you see their every move.

Topics: Salesforce

What did Johnny Cash know about CRM?

Today's guest blogger is David Wojtonik, a Principal Consultant at Sonoma Partners. 

When speaking with companies who are looking to implement a new CRM system or enhance their existing system, I like to reference an old Johnny Cash song I used to listen to with my grandmother.

Who would have thought that Johnny Cash would have a profound impact on how I approach CRM strategy? One song in particular is about a man who works on the 'sembly line at the Cadillac factory in Detroit. His grand plan is to sneak parts from the factory every day - one at a time - in his lunchbox until he has all the parts required to build his own Cadillac. The problem is that the pace by which he is sneaking parts causes him to end up with parts that span 20+ years, and the pieces don't line up.

"So we drilled it out so that it would fit
And with a little bit of help with an adapter kit
We had that engine runnin' just like a song
Now the headlight was another sight
We had two on the left and one on the right
But when we pulled out the switch all three of 'em come on."

All too often companies aspire to have a Cadillac CRM, but end up with something that best resembles the jalopy that Johnny Cash describes in his song. Believe it or not, without a well-thought-out strategy, organizational buy-in, and a strong partner, even the best CRM platform can fail. Below I will detail some best practices to avoid needing the "adapter kit" mentioned above.

Looking to create your own Dynamic Forms in Microsoft Dynamics CRM? Download our free Dynamics Form solution accelerator to configure form scripting requirements without writing a single line of code.

CRM Steering Committee:

The CRM Steering Committee is responsible for establishing the strategic vision of the overall CRM program. Keep in mind: This program will touch Marketing, Sales, Delivery, and Customer Service. With that said, having cross-functional representation is key. Another point to understand is that the vision is not static. That means that this committee needs to meet regularly to evaluate and make changes as necessary.

CRM Product Owner:

The product owner is a person or team responsible for managing the various requests that come from the user community. This function is responsible for collecting requests, understanding the reason for said request, prioritizing, and socializing it with the steering committee to ensure it is in-line with the strategic direction of the program. Without this function, a CRM system can get out of control very quickly.

Business Process Owner:

It's very rare that any CRM technology can solve for a bad business process. Evaluating your current processes and making the necessary improvements prior/during your CRM implementation will help ensure that your technology is enabling a strong process. Like a product owner, the process owner is responsible for gathering feedback and proposing changes if necessary.

CRM Partner:

A strong CRM partner brings industry best practices, technology expertise, and line of sight into the CRM platform's roadmap. Selecting a strong partner that understands your strategic vision and has the capabilities to partner with you to achieve that vision is paramount (I know a good partner if you need one...).

By following the above, I promise you that it won't take 20 years to have that Cadillac CRM you always wanted.

Need some help on how to get started? Contact us today!


How to get executives to pay attention to CRM

Topics: CRM Best Practices

Hiding a Microsoft Outlook Folder

I know this is a bit off my usual topics, but I have been annoyed for some time now with the inability to hide folders in my Outlook navigation window. Well, I finally decided to do something about it!

Problem Recap

I live out of the "folder" view in Outlook. With the additions of Clutter, RSS Feeds, Skype Contacts, etc, the left navigation folder structure started to get lengthy. So, in addition to the inherit clutter that those features I don't use creates, I also suffered by not seeing some personal folders or inboxes of other accounts that I do use without scrolling.


Upon searching, it appears I am not alone in this request. Unfortunately, a native approach doesn't look to be available, but did seem like MAPI options could be altered programmatically to accomplish what I want. A couple of posts I found listed 3rd party programs available to do this. I decided the annoyance was the worth the risk of another app manipulating my Outlook settings, so I settled on trying the Microsoft open source MFCMAPI tool.

Themes iconUse extreme care when using this tool as you will be directly manipulating your client version of Outlook! Take a backup of your Outlook data before moving forward.

In addition to downloading this tool, I found this article pretty helpful in helping me figure out what I needed to accomplish as well as some other cool tips.

After you download and unzip the MFCMAPI tool, run the resulting mfcmapi.exe application. Be sure to download the correct version (32 bit or 64 bit depending on your Outlook version).

The app will open and look like this:

To login, go to Session > Logon…

You will then be prompted for an Outlook provide. Typically, just click OK for the profile default.

No you will get a list of your mailboxes. In my case, I am connected to my corporate account and also my gmail account.

If you click an account, you'll get some details in the bottom pane. This confused me at first, as this area didn't contain the details we want. You need to double-click on the account which will launch a new window that should resemble the following:

Now expand the Root - Mailbox node.
Next, expand the IPM_SUBTREE node to find your folders.
Then, select the folder you wish to hide as the Clutter folder is shown here:

Now we will hide it. To do this, from the top menu, select Property > Advanced > Edit given property …

The Property dialog will display. You'll need to now update the setting to be hidden.
In the Property Tag field, enter 0x10F4000B.
The rest of the fields will automatically update accordingly as shown here:

Click OK and then in the next dialog, be sure to check the Boolean field and click OK.

That's it! The selected folder is now hidden from the Outlook folder view.

Note that some system folders can't be hidden. And, should you need to unhide a folder, follow these instructions.

After hiding the Journal, RSS Feeds, Skype Contacts, Clutter, My Outlook folder pane now looks like this. I ended up leaving the Archive folder, as I am now using the Outlook app for iPhone and I often left swipe emails and that app uses the Archive folder.


Ahhh…so much better! I can finally see my Gmail Inbox without scrolling. I may even Hide Notes and Tasks as I really never use those either. Smile 

Upon mentioning this tool to one of my colleagues, he mentioned that he has used it often with CRM Support to troubleshoot Outlook Add-In issues. I suspect we'll have another article showcasing this tool again!

How Mark Anthony Brands Revitalized Sales Culture with CRM and Mobility


Mark Anthony Brands (MABI), the United States division of Mark Anthony Group (MAG), imports and distributes fine wine, premium beer, and specialty beverages. Due to alcohol distribution regulations, MABI can’t sell directly into accounts (e.g. bars/restaurants/stores). Instead, they rely on a network of distributors to facilitate these transactions. Field sales representatives (FSR) coordinate these operations and are crucial to how MABI does business. Overtime, business practices grew inconsistent and their sales tools outdated. The FSRs needed a mobile application to enhance the way they did business.


Time for a Change

Prior to this project, sales processes varied from region to region and from FSR to FSR. Practices for collecting/storing account information were piloted by single regions or teams, only to be abandoned shortly thereafter.

Their Leadership team aimed to provide the FSRs with a better means of doing their jobs, in order to secure better data and reporting capabilities. This shift in process would not only revitalize their sales culture but also spur enthusiasm from the FSRs by providing them with a new and unique means to reach their sales goals.


The use cases for this project revolved around the tasks of the FSRs, which included:

  • Maintaining relationships with the account (bar/restaurant)
  • Quality assurance and evaluation of distributor performance via site surveys
  • Up-selling/cross-selling Mark Anthony Brands products

The plan?  A two-phased program including a Mobile Test Drive and mobile app development.

Download our free eBook: 5 Fundamental Features of Custom Mobile CRM Applications.

Post-Launch Life

The new mobile application – named, Mability (MABI + Mobility) – completely transformed the way the FSR team functions. With the new mobile CRM tool, they have better access to customer information in the field and an easier method for entering that transactional and account information. FSRs work more consistently than before with an implemented and defined sales process. Bonus: Mability features cross-device flexibility, providing endless opportunity taking the application to a tablet, an iPad, and beyond.

If you’d like to read more about the project, check out their customer success story here.

If you’d like to learn more about Sonoma Partners’ mobile applications, visit here.

New Call-to-action


Topics: CRM for Manufacturing Enterprise Mobility Microsoft Dynamics CRM Online

Salesforce, WCF, and TLS 1.0

Today's guest blogger is Nathen Drees, a Senior Developer at Sonoma Partners.

I recently ran across an issue with a tool we had built that connects to Salesforce using WCF.

Up until recently, this tool had been working as expected and worked in the background without much thought. Then we found that when the users would go to log in to Salesforce through this tool, they would receive the error:

“tls 1.0 has been disabled in this organization. Please use TLS 1.1 or higher when connecting to Salesforce using https.”

It turns out the underlying cause of this was a recent critical update pushed out by Salesforce to disable TLS 1.0. While we did know about this critical update, we didn’t think WCF would be affected by this. It turns out the despite WCF being capable of supporting TLS 1.1 and 1.2 (with .NET 4.5+ installed), it doesn’t use the more secure protocols by default, even if the server supports them.

The fix for this is pretty straight forward, you just need to add one line of code to the beginning of your application to tell WCF to use 1.1 or 1.2:

While not a hard fix, it still is disappointing the WCF doesn’t automatically upgrade to more secure protocols when available.

Topics: Salesforce

Troubleshooting the Dynamics CRM for Outlook Addin

Today's guest blogger is Aaron Robinson, an Engagement Manager at Sonoma Partners.

If you have used Dynamics CRM for any amount of time, you are probably familiar with the Outlook Addin which allows you to utilize Outlook as your interface to all of the goodness that Dynamics CRM has to offer. And more than likely you have been frustrated at some point over issues you have had with the addin – from Outlook slowness to crashes to the infamous addin disabled message.

Diagnostics outlook

Well, our friends at Microsoft have finally released a tool this year to help ease the troubleshooting pain and hopefully quickly resolve common issues. It’s called the Microsoft Support and Recovery Assistant for Office 365 (SaRA). You can download from the tool’s own landing page at I believe this is a rollup of another diagnostics tool Microsoft released last year, but have yet to have that confirmed officially. The tool supports a wide range of troubleshooting for Outlook issues- including general email issues, mobile app issues, Outlook Web App issues, and Dynamics CRM Online. The download is extremely small (195kb currently), and will download other required components once the installation wizard is ran, which will clock in around 35Mb.

Download our free Dynamic Forms solution for CRM 2016 that allows system customizers (non-developers) to create complex form rules using a web-based editor.


The installation is a very quick process, and easy enough for most end users to download and install without direction, assuming their account has sufficient privileges to do so. Since the download is relatively small, remote assistance for downloading and installing will work pretty well. Once the initial download launches, the user will be presented with a security prompt to install the application.

Diagnostics outlook 2

Clicking install will initiate the rest of the download with a progress meter.

Diagnostics outlook 3

After the download has completed, a prompt will appear to acknowledge the Service Agreement for use of the tool.

Diagnostics outlook 4

Once you agree, you will be presented with the tool’s primary interface for troubleshooting steps.

Diagnostics outlook 5

Running the CRM for Outlook Wizard

So now that we have landed at the main menu for the tool, we can select the Dynamics CRM Online option and click Next. The next prompt will ask for the type of problem you are experiencing.  Notice that there is only one option listed, as this option of the SaRA tool is still in beta.  Expect more granular options for types of issues to be added over time to support different issues and their resolution.  For now, it is an all encompassing diagnostic tool for all addin issues.

Diagnostics outlook 6

Once you click next, you will be asked for your signin credentials.  These are the Office 365 credentials you would use to sign-in to or

Diagnostics outlook 7

Once you click next, the wizard will begin to run through several steps checking everything from authentication, to Office 365 configuration, email settings, connectivity to Dynamics CRM Online, and the local CRM for Outlook Addin installation.

Diagnostics outlook 8

A summary of the diagnostic test will be presented for additional options if a resolution is found.  As you see here, I ran the tool on a PC which did not have the CRM for Outlook addin installed, which it correctly identified. In a recent update of the tool at the beginning of June, support for testing the following scenarios was also added:

  • Check for the current CRM to Outlook version, and a download link to the current version if needed
  • Ability to clear cache files used by CRM for Outlook
  • Action to create a new Outlook profile for the signed-in user
  • Log collection even if addin is not installed

The log collection feature will be extremely helpful got admin who may need to submit support tickets to Microsoft on behalf of a user having an issue.  In my experience the support agents always request logs at the beginning of a case involved the Outlook addin, so I like to collect the logs initially and submit with the initial ticket request in addition to the detail of my troubleshooting steps.  This will help to cut down on the number of communications back and forth with the agent and hopefully quicker resolution to the issue.

The Future

It’s great to see Microsoft making an investment in this area.  While the CRM for Outlook addin has gotten significantly better over the years, having a tool to help troubleshoot is still extremely helpful, as every customer’s environment is different.  There are a few improvements I would like to see added in future releases:

  • Breakout of diagnostics for installation vs error or performance.
  • A dedicated performance diagnostic which checks the PC hardware and system resources in use, and can identify log running scripts during startup of the addin
  • More quick fix options similar to the clear cache files for rebuild the outlook profile

Give it a try and let us know what you think.  And if you are looking for help with the CRM for Outlook app or your deployment of Microsoft Dynamics CRM, let us know!

Topics: Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Three Steps to CRM Success

Today's post was written by Ryan Toenies, Vice President of Sales at Sonoma Partners.

Prepare. Simplify. Refresh.

I have worked in the CRM consulting space for 16 years, and I have participated in hundreds of CRM initiatives. As I reflect upon the history of these projects, I really boil CRM success down to three main areas: prepare, simplify, and refresh. These three concepts are the pillars for every successful CRM deployment.

The biggest mistake most companies make is they treat CRM as a project instead of a strategy.

Technology projects are defined by budget, timeline, and scope. That might seem like a good idea for CRM, but the problem is that CRM is actually a living, breathing initiative that changes as your customers change. Thus, here are my three strategies to driving success in your CRM deployment.

Struggling with user adoption? Deploy Control Tower to your Microsoft Dynamics CRM system to get the data you need to measure and drastically improve end user adoption.


Picture1 If you spend more time developing and deploying your CRM application than you do preparing for success, it will likely reflect upon your project as a failure. The preparation I am speaking about isn’t just creating a strong project team; it’s actually creating a CRM strategy for your business. The strategy must align with and adopt to your business needs, and you must have buy-in from all individuals within your organization.

Long before you decide on a technology platform, you should have a solid CRM roadmap that aligns to your business objectives. A successful CRM deployment will depend upon your ability to communicate expectations to your company. You should proactively market the value of CRM to your organization gaining support from key business users. Create a CRM campaign that spans the duration of your project and well beyond the deployment. You want to get people excited about how CRM will enable them to be more productive. Focus on how CRM will help achieve the strategic objectives of your business.

Remember that users can be naturally resistant to change, so they will need to understand how CRM will drive positive results for them. You want to make sure to paint a positive picture that shows how a strong CRM system will create raving customers. Raving customers will make a stronger company which will create more opportunities and success for employees.


Picture2Far too often I have seen clients try to boil the ocean with their CRM project. The functional specifications document is 100 pages long. The timeline is 12 months, and they layer on complex integration scenarios all in the initial CRM project. The biggest problem with this approach is simple business economics. The business world changes in a matter of months, so the requirements you defined a year ago are probably not going to align with the business needs of today. The second issue with this approach is that if you spend too much time trying to gather requirements, you’ll find that the users really don’t know what they need until they begin using the application. In the world of IT, we call these types of projects the Waterfall development approach. This type of project for CRM does not work well.

I would highly recommend a more agile approach where you deploy CRM functionality in iterations. Create quick and easy to consume functionality to get some early wins. Gain momentum with your CRM project so that users can provide valuable feedback that can help provide guidance for future iterations. At the same time, you can react to how the business landscape is changing and you can focus development iterations on the important tasks at hand.

If you think about the App Store for your iPhone this is exactly how applications are developed. Version 1.0 of an application is released and within a matter of weeks, version 1.1 is updating on your phone. Consumers are used to this type of upgrade process, and CRM should be thought about in the same context. Keep each of these version releases simple and consumable. You do not want to overwhelm users with functionality they don’t need nor have the ability to train. It’s very important that you listen to your users and provide valuable iterations that help them drive success.


Picture3Far too often I see companies treat CRM as a project that has a capital funding request and has a begin and end date. The problem with this approach is that CRM is a living and breathing application that needs to change constantly. Business does not stand still nor should CRM. When you decide to embark on a CRM project, you need to make a commitment that this will be an ongoing initiative that needs funding annually. You need to have business owners of the application that are ensuring that CRM is supporting the needs of the ever changing customer landscape.

Companies tend to tear out one CRM application for another product platform because they believe the product functionality isn’t meeting their needs. In most cases, it’s not the application that is failing. In fact, the leading CRM applications have so much functionality that companies are using less than 10% of the functionality that they own. The reason deployments tend to go south has very little to do with the technology and more to do with the lack of vision and strategy for the “ongoing” deployment and support of the application.

The easiest way I know how to summarize this point is as follows: the single most important item to any business is its customer. How much is it worth to acquire and maintain a customer? CRM is the backbone to this simple proposition. Are you going to make a one-time investment to retain a customer for a lifetime? That philosophy simply will not work. Yes, you can treat a document management solution as a one-time project, and you can do the same for your portal solution. However, if you want to acquire and retain raving customers you need to continue to refresh and invest in your CRM application. It really is that simple.

Prepare, simplify, and refresh. If you do your best to follow these three points, you will be well on your way to a successful CRM initiative.

How to get executives to pay attention to CRM

Topics: CRM Best Practices