Sonoma Partners Microsoft CRM and Blog

CRMUG Summit 2016 Recap

Earlier this year, Microsoft announced that it’s Convergence conference would be replaced by Microsoft Envision.  Envision would be meant for business leaders looking for a more strategic vision, while  Microsoft Ignite would be intended to be the conference that provided more hands-on and deeper technical content.

CRMUG Summit, on the other hand, is a conference not run by Microsoft, and instead run by users for users.  However, what we’ve seen this year is that the Microsoft presence at the Summit was greatly increased from years past.  The Summit actually is meant for more than just Dynamics CRM as there are user groups for all of the Dynamics Products (AX, GP, NAV).

Image result for crmug summit

All In for Summit!

After attending both Ignite (in Atlanta) and CRMUG Summit (in Tampa) this year, it’s clear that Summit is getting more and more focus as the years go on, and seems to be the conference to attend if you’re a Dynamics CRM customer or prospect.  There were 1550 CRM attendees this year - triple the amount from last year.  At Ignite there weren’t as many Dynamics sessions, whereas CRMUG Summit was chock full of sessions led by end users, MVP’s, and Microsoft employees.  You could feel more than ever this year Microsoft’s increased presence and Tampa Florida skyline stock image for Tampa Uber promo code postcommitment to the event.  Jujhar Singh, Corporate Vice President at Microsoft, brought most of the product team along to the conference and was also a main presenter at the CRMUG Keynote.  Scott Guthrie, Executive Vice President at Microsoft, was also in attendance and led the overall Summit Keynote.  Scott’s keynote showed Microsoft’s large push for PowerApps, Flow, and their Azure framework.  He also talked about Dynamics 365, and the tighter and enhanced integration coming between Dynamics 365 and Office 365 such as Outlook.  Jujhar went deeper into discussions around Dynamics 365, and he also announced the integration between Dynamics 365 for Sales, and Predict by Versium (discussed in more details below).

It definitely seems like Microsoft is increasing their presence at Summit (as they did this year), and our hope is that this continues.  If so, we definitely recommend users attend Summit 2017 in Nashville.

Dynamics 365

Of course the big topic at CRMUG Summit 2016 was all around Dynamics 365, Microsoft’s suite of Dynamics products.  No more are the days of Dynamics CRM, but instead users will need to get used to the new moniker Dynamics 365 for Sales.  The different products that will be available with the upcoming release (slated to be released to the cloud in the next month) include:

  • Dynamics 365 for Sales
  • Dynamics 365 for Customer Service
  • Dynamics 365 for Field Service
  • Dynamics 365 for Project Service Automation
  • Dynamics 365 for Marketing
  • Dynamics 365 for Operations
  • Dynamics 365 for Financials
  • Dynamics 365 for Customer Insights

These products currently exist but are being entirely rebranded (e.g., “Dynamics CRM” becomes “Dynamics 365 for Sales” and “Dynamics AX” becomes “Dynamics 365 for Operations” and so on).  However, Dynamics 365 will allow users to quickly jump from one application to another within the same session, further unifying CRM and ERP capabilities.

Along with the new naming of the products and unification of Microsoft’s flagship CRM, ERP, and Office suites, the upcoming release also introduces other new features.  Stay tuned for future blog posts detailing more of these newly released features for Dynamics 365.  Until then, know that you can expect to see more around the user interface, configurability, built in intelligence, proactive insights, enhanced visualizations, enhanced Outlook integration, enhanced navigation, and much more.  Sounds pretty exciting, right?

Predict by Versium

During the conference, Microsoft announced a new integration with Versium Predict, an automated predictive analytics solution that brings lead scoring and lead matching directly to Dynamics 365 for Sales. 

With Predict, users can build a predictive model directly from CRM that will allow them to add insights to enrich current data in the system with thousands of new attributes (e.g., hobbies, SIC Code, revenue, social handles, number of employees, demographics, etc.) from Versium’s extensive data warehouse.  Versium has trillions of data points in their data set, and users will be able to build a customer-based model or a business-based model directly from Dynamics 365 for Sales.

After your predictive model is built, with Predict by Versium and Dynamics 365, users will also be able to build a new list of leads and add them to a new marketing list.  Note:  Microsoft strongly enforces the importance of having data already in Dynamics 365 (500 records for a business list model and 1000 for a customer list model) in order to build a successful predictive model.

Thanks Tampa – Hello Nashville!

Once again Tampa was a great host city for Summit (the 2013 Summit was also in Tampa).  The weather was great - even though the east coast had previously experienced some extreme weather the week before - and the conference content didn’t disappoint.  It would be an understatement to say all of us at Sonoma are excited about Dynamics 365 and the announcements from Summit, as well as new features that are coming with the latest release of the product.  We can’t wait.

Image result for nashville tennesseeIf you’ve never been to a CRMUG Summit, we definitely recommend you register for next year’s summit in Nashville.  If this year’s was any reflection of where the conference is headed, next year’s should be much bigger with more product announcements and roadmap discussions.  Each year, Summit has grown at exponential rates, and the involvement seen from Microsoft this year is certainly encouraging.  We’re hoping that they return in full force next year as well.

Stay tuned for more announcements about Dynamics 365 and the new features that will soon be released.

Topics: Microsoft Dynamics 365 Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Learning Path - Dynamics CRM 2016 Guided Help

With the Spring 2016 release of Dynamics CRM came a guided user experience that provides context-sensitive and interactive tasks for end users to more easily become familiar with Dynamics CRM.  Remember, you can always review the features on the roadmap from this link.

What is it?

Learning Path, adds a new icon to the main navigation bar of CRM.  This conversation bubble with a question mark icon will appear in the top right corner of the CRM window if you have Learning Path enabled (see below for more information about turning this feature on or off).

Clicking on this Learning Path icon will slide out a pane on the right side of the CRM window that will allow users to do the following:

  • Learning Paths:  These are content areas where videos, text, guided tasks, and more.
  • Guided Tasks: These are step by step instructions that guide users through specific CRM tasks (see below)
  • Videos:  Learning path has full support for inline video within the pane that appears on the right
  • Navigation:  There’s the ability to navigate between pages of the Learning Path module using left / right arrows.  The user can also navigate to the home page by clicking the icon of the home.  And they can also “Send a Smile” or “Send a Frown” on any particular page of the Learning Path module

As users progress through Guided Tasks, their progression is saved and they’re able to see this in the learning path pane with a checkmark next to that specific task.


Guided Tasks

Guided Tasks are a way for users to learn an aspect of the CRM system, by doing it as areas of CRM are pointed out along the way.  As a user completes a guided task, a checkmark appears next to the task.  However the user can complete the task as many times as they’d like in case they’d want a refresher on how to complete something in CRM.

For example, if you clicked on the “Let’s go! Sales basic tour” you’d see the following set of steps in your guided task as it takes you around the basic aspects of sales within Dynamics CRM.






Enable or Disable Learning Path

Each user has the ability to disable Learning Path for themselves by clicking on the Options icon, and selecting Opt out of Learning Path or Opt in for Learning Path.


Alternatively, your system administrator can turn Learning Path on or off at an organization level by going to Settings –> Administration –> System Settings.  On the General tab, Set custom Help URL section, you can toggle the setting for Enable Learning Path.



Since this is the first release of Learning Path, there are obviously some limitations.  First off, this is only available for CRM Online.  Like most features with Dynamics, features are released to the cloud first, and then as it makes sense, are released for CRM OnPremise.

Another limitation is that the usage metrics (who’s completed what guided task, when, and how many times) is currently not available.  This could be very useful for companies that are trying to gage user adoption, as well as training opportunities for loud users who complain they don’t know how to complete a specific task, but at the same time haven’t completed the guided task that shows them exactly how to do what they’re looking for.

Finally, Learning Path isn’t currently configurable.  This one probably hurts the most currently.  What you’ll get out of the box is predefined learning paths for onboarding, and for those who have spun up a CRM Trial instance, they’ll get learning paths around the trial and how to convert the trial into a purchase.  I see the first thing our clients will ask us as we show them this is how can we configure it, and unfortunately at the moment, the answer is you cannot.  Configuration and usage metrics are two areas that Microsoft will most likely be investing in as they build out this feature in the near future.

Topics: Microsoft Dynamics CRM Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Speeding Up Web Resource Development with Imposter for Fiddler

Today's post was written by William Dibbern, Principal Developer at Sonoma Partners.

Anyone who has built a web resource for Dynamics CRM can tell you how frustrating it is without the right toolset.

Since all HTML, JavaScript, CSS, and images are stored in the database, they must all be uploaded through Dynamics CRM. Without a tool, you're left locating the web resource in a solution and using a web form to upload your changes. Try to use the built-in editor and you could risk formatting issues. All over GitHub and in the SDK you can find tools for helping to keep your local files in sync with CRM's copy by uploading them through the API. While that will certainly alleviate a lot of the pain, what if we could go further?

Let's do just that and take a look at a tool called Imposter.

What is Imposter?

Imposter is an extension to the widely popular Fiddler which allows you to serve up files from your local file system in response to requests from your browser.

The way Imposter works is that it hooks into Fiddler's API to see when the browser requests a web resource from the Dynamics CRM, and it uses some simple logic to figure out which file on your local system it should send in place of whatever the server has.

This has two advantages:

  1. You can make changes in the editor of your choice (I'm really partial to Visual Studio Code, but that's a story for another day.) and see those changes reflected immediately in your browser without having to upload the file to CRM and publish every time you make a change.
  2. You can make changes to the file and test them out without affecting anyone else accessing the system. Working on a rewrite of some JavaScript but need other developers to be able to keep working with the legacy code and only have one development environment? No problem anymore!

If you're familiar with Fiddler, you may be familiar with its AutoResponder functionality and therefore may be wondering what the advantage of Imposter is over this built-in functionality. Here are a few key points:

  1. You have to setup a rule per file if you want to swap out, manually. If you're clever, you can do this with a regex to swap out a whole directory however, Imposter lets you skip the regex and map a local directory to a URL fragment so you can serve up an entire directory of files with only one setting.
  2. Imposter comes with an implementation of "hot reloading" which means whenever you save changes to your code, the page is automatically refreshed to display the latest.
  3. When you start using Imposter you'll also notice it has a concept of "profiles." Each profile is a combination of a base URL to look for (so that Imposter knows when to try to swap out files and when not to), a local directory (where Imposter will look for files that match those that were requested), and some overrides (for when your file system and CRM don't line up perfectly). With these profiles, we can support working on multiple projects at the same time. This looks a lot cleaner than a bunch of rules in AutoResponder.

How do I use Imposter?

Once you've got Fiddler and Imposter for Fiddler installed, you'll see a new icon in your menubar. If you click it, you'll see several options. Let's start with adding a profile first.

Adding a Profile

  1. Click Imposter.
  2. Click Profiles.
  3. Click Add New.
  4. Notice a setting dialog opens.
  5. For Profile Name, we enter a friendly name for our profile. This name can be anything and is simply an identifier for you.
  6. For Base URL, you'll want to enter a fragment of the URL that you're going to be asking Fiddler to keep an eye on to swap files for.

Since we're working in CRM, we can just enter /WebResources/publisherprefix_/ (where "publisherprefix" is the prefix you've chosen in your solution, by default "new") and what Imposter will do is wait for any request that contains /WebResources/publisherprefix_/ in the URL, and it will attempt to parse a file name from that string.

So let’s say your browser requests a webpage at, Imposter will see the /WebResources/publisherprefix_/ segment of that URL and will start looking for a file in the CustomSearch folder called index.html. If found, Imposter will serve that file up in place of what the server has.

  1. In the Local Directory field, you'll enter the base path on your file system that Fiddler should try to use to look for matching files. Continuing the example in the previous step, if you entered C:\MyVisualStudioSoltion\WebProject\, Imposter would look for html in C:\MyVisualStudioSolution\WebProject\CustomSearch\.
  2. If you have any files that wouldn't match the pattern given in the previous step, like if you've been uploading your web resources as html instead of "namespacing" them like new_/index.html, then Overrides are where you go.
    Tip: If you're unfamiliar with simulating directories with CRM Web Resources, you can read a basic introduction on that here. You can put in any URL fragment you'd like to match on (ex. index.html) and then past in the complete path to that file on your file system.
  1. Click Save.

Fiddler image 1

Enabling Imposter

Now that we've got a profile created, we can start things up.

  1. From the File menu in Fiddler, ensure Capture Traffic is checked. Having this turned off is like hitting the circuit breaker, no extensions will work as no traffic will be captured.
  2. From the Imposter menu, navigate to Profiles, then select your profile name, then click Enable. Note you can turn on as many profiles as you'd like.
  3. Notice in the Imposter menu now that Enabled is checked. You can quickly turn on or off Imposter from this menu without losing the state of which of your profiles are enabled/disabled.
  4. Clear your browser's cache and navigate to a web resource in CRM. You should see your local file system's changes being served up in the browser, and in Fiddler you'll see a blue highlight on web resources that were requested, matched, and replaced by Imposter.
    Tip: Fiddler’s highlighter can be glitchy, so if you want to know for sure whether a file was swapped, add the X-Imposter response header to the results grid in Fiddler.

Auto Reload

I bet you noticed the Auto Reload option in the Imposter menu, didn't you? Wondering what that is? When Auto Reload is enabled, Imposter will monitor the Local Directory in any enabled profile(s) and wait for changes. If it detects a change, any HTML web resource that was already swapped out by Imposter will automatically refresh itself to account for the newest updates. Awesome, right?

I would recommend using caution with this feature, though. If you swap out an HTML web resource hosted in an iframe, any event handlers attached to functions in that iframe could be broken when it refreshes, making the utility a little less useful. For that reason, I primarily use this feature for dialogs and fully custom pages.

Where is it?

All this talking and no links to download? Well here ya go: Imposter for Fiddler on GitHub. The tool is hosted on GitHub, so if you'd like to submit a feature request or any other changes, feel free! There is also a Wiki on the GitHub repository which has some great tips and tricks for using Imposter. Enjoy! 

Data shows no emotion

Topics: Microsoft Dynamics CRM

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

How to Use Microsoft Dynamics CRM Business Process Flows: The Checklist Strategy

Today's post was written by Trent Bell, Principal Consultant at Sonoma Partners.

Usability is “king” when it comes to CRM because the biggest killer of CRM is lack of user adoption. 

It is a self-perpetuating reality.  If it becomes difficult to enter data, then data will not be entered properly, if at all.  If good data does not exist or is incomplete, then your CRM can no longer be trusted, thus having no value.  It is vitally important to take “ease of use” seriously as you design your CRM solution.

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

So, how does this relate to Microsoft Dynamics CRM's business process flows?  There are a few usability concepts I would like to call out that are potentially affected by BPFs.

Concept #1 - User-guided Process

One might argue that the BPF concept’s main goal was to assist/guide users through the input or absorption of data as part of a business process for a particular record.  If the business has a defined process, then this can be a big benefit.  The use of BPFs breaks down in the case where an organization does NOT have a well-defined process around the particular data.  This one is somewhat obvious.

Concept #2 - Good Form Design

Most of us know the importance of “good” form design, where we try to strike the right balance between having an ample amount of fields on a form to be valuable while not over-cluttering it or creating a data-entry chore.  The BPF concept can be a great tool to assist with this idea by allowing you to get creative with the placement/usage of fields either in the BPF bar or in the body of the form…or both.

Strategy – The Checklist

While this is not the “end all, be all” answer, one strategy to consider that incorporates the concepts listed above is to simplify the user experience by only placing “checklist” type fields in the BPF bar.  This means all fields with real data values would be placed in the body of the form.  For example, instead of having a “Key Strategy” long description field in the BPF bar, place that field in the body of the form and create a new “Yes/No” field called “Key Strategy Determined?” that will go into the BPF bar.  The basic idea is to create “checklist” type fields for the key milestones or key data captures relevant to the ideal process you want your users to follow.  While it requires the creation of extra fields in the entity, the consistency and predictability that this approach provides to the BPF bar and body of the form can create clarity for the end user.

One strategy for how to use Microsoft Dynamics CRM Business Process Flows

A few pros and cons that come to mind with this strategy include the following:


  • BPF bar has consistent and predictable entry/feedback
  • “Data completion” status within a record is easily determined
  • Reporting is more simple (advanced finds can be done eliminating left outer-join issue)
  • Form body for data entry is more traditional


  • Creation of extra fields (checklist fields) to be managed
  • Need space to place all data entry fields in the form body (could be an issue if many fields exist)

I want to make it clear that I am NOT advocating for this to be the one and only approach to configure BPFs, but I do believe it can be an effective strategy for some situations.  Some key factors that may make your organization a candidate for this approach are:

  1. You have defined processes
  2. You need to report on your users’ data entry practices
  3. You want to highlight key data milestones

When business process flows were first introduced, I loved the idea of bringing certain fields up from the body of the form into the process bar, allowing attention to be focused on key fields.  The BPF feature also provided the opportunity to decrease form length.  With that said, I've seen users get confused or reluctant to embrace the BPF concept like I expected.  My hunch as to why this is has to do with mixing data entry and checklist type fields within the BPF bar and form body.  While it seems intuitive enough, I have found that this specific inconsistency can throw off some users.  While this “checklist” strategy may not work for everyone, I do believe it to be an effective and viable approach.


How to get executives to pay attention to CRM


Topics: Microsoft Dynamics CRM

Need to export more records to Excel? We’ve got you covered with the OrgDBOrgSettings Editor!

With Dynamics, the default maximum record count to export to Excel is 10,000.  While this may work for a lot smaller business without a lot of data, it won’t work for most organizations.  An instance of this came up recently where a client of ours kept hitting the 10,000 record limit though they had many more records to export.

Typically in the past, if the customer was CRM OnPremise, you would be able to access this setting (along with the other OrgDBOrgSettings) using direct SQL.  Updating these values with SQL definitely wasn’t supported, but at least you could have conversations of updating the settings if you had individuals that knew what they were doing, or you created a support ticket with Microsoft to help you out.

However, if you had CRM Online, these settings weren’t available to you through the UI or even through SQL since with Online, you don’t have direct SQL access to your database.  What can you do?

That’s where the OrgDBOrgSettings editor comes in to play.  You can download the managed solution from this link.  The process to get it installed and use it is pretty simple.  Download the managed solution from that link, import it in as a normal solution into your environment, and then open up the solution.

From the configuration page of the solution, you’ll see the different settings that you have access to, what the default value is, what the current value is, and what the maximum value is (there are some limitations – you cannot update the MaxRecordsForExportToExcel to 500,000,000).


To edit a value, either double click on a row, or click the Edit link in the row for that setting.  When you do so, you have the option to set a custom value, or revert back to the default.  A checkbox at the bottom of the configuration page can be set or unset which will display a prompt to confirm the change upon making an update.



If you try to set a value over the maximum, you’ll get a message stating the requested change wasn’t saved, and the value will remain as it currently is.


This is a great utility to make supported updates to the OrgDBOrgSettings without having to reach out to Microsoft Support.  For a full list of all the settings that can be updated and a description of what the setting drives, navigate to this link.  Also, for more explanation on how to use the tool and what it can be used for, see this post from Sean McNellis who created the solution.  While this solution has been available for some time now, we’re hoping this is a great refresher to let you know what tools are available for free to help you make changes on your own.

Topics: CRM Best Practices Microsoft Dynamics CRM Microsoft Dynamics CRM 2013 Microsoft Dynamics CRM 2015 Microsoft Dynamics CRM 2016 Microsoft Dynamics CRM Online

Marketo Triggering MSCRM's Duplicate Detection

Today's post was written by Matt Dearing, Development Principal at Sonoma Partners.

For those that may be unfamiliar, Marketo’s solution offers marketing automation, email, and many other services. 

We recently ran into an error while working on a Marketo integration with one of our clients, where the solution wasn’t obvious at first.  We saw the following error logged when certain updates were pushed to MSCRM contacts:

“A record was not created or updated because a duplicate of the current record already exists.”

It seemed odd that updates from Marketo were triggering MSCRM duplicate detection, as we only allowed Marketo to update a couple of fields that were not a part of any criteria for duplicate detection rules in the CRM organization.

In general, making create/update calls against the MSCRM API will not trigger duplicate detection unless explicitly specified through the use of the SuppressDuplicateDetection parameter.

What's interesting about SuppressDuplicateDetection is that if you explicitly specify it as false while updating a record, even when the fields that are being set in the update are not a part of the duplicate criteria, MSCRM will still throw a duplicate error if the existing record already matches another in the system.

For example, if you have 2 contacts (ContactA and ContactB) in MSCRM with the same email address, and a duplicate detection rule that matches on email address, updating any field on the contact (job title, for instance) will still trigger the duplicate detection exception. 

The following code demonstrates this:

In this example, the duplicate detection error will be thrown because ContactB is already a duplicate of ContactA, due to them both having the same email address, even though email address is not altered in this update request.

We discovered that Marketo has a few internal flags, not exposed to end users, for suppressing MSCRM duplicate detection errors when creating/updating lead records or when updating contact records from Marketo to MSCRM.

My assumption is that Marketo explicitly sets SuppressDuplicateDetection to false when making MSCRM API calls. The internal Marketo flags are then used to dictate the value of SuppressDuplicateDetection passed to MSCRM. We worked with Marketo support to get this flag updated for our customer's Marketo instances and now all our changes in Marketo are flowing back to CRM as expected.

Contemplating your own Marketo Integration?  Let’s work together!

Topics: Microsoft Dynamics CRM

CRM Upgrade with SQL AlwaysOn

Today's post was written by Neil Erickson, Development Principal at Sonoma Partners.

As a firm that specializes in CRM consulting, we are proponents of using the technology we sell in our own processes. 

When upgrading to Dynamics CRM 2015 we went through the effort of moving to new hardware for both the CRM servers and SQL server. We decided that it was time to implement SQL AlwaysOn for redundancy.  A year later when it was time to upgrade one of our systems to CRM 2016, we elected for an in-place upgrade since both Windows and SQL remained up to date.

The upgrade process was going along without issue until the following error occurred:

System.Exception: Action Microsoft.Crm.Tools.Admin.SetReadCommittedSnapshotIsolation failed. ---> System.Data.SqlClient.SqlException: The operation cannot be performed on database "Grapevine_MSCRM" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.

Microsoft Dynamics CRM with SQL AlwaysOn

Upon reading the exception, my first thought was that we would need to completely undo the availability group and then rebuild it once the upgrade was complete.  Due to the size of the database, I expected that this could add an additional two hours to the upgrade process. 

Luckily, this process was not as lengthy as I imagined.  It was possible to go in and remove it from the Availability Group and have the upgrade process retry the action.

Remove Datasbase from Availability Group

This leaves the database running on what was the Primary Replica, and in the restoring state on the secondary.





Once the upgrade finishes you can add the database back to the availability group. Because the secondary is still in restoring mode, it will simply catch up the changes. This takes considerably less time than a full backup and restore cycle, and it can be accomplished by selecting “Join Only” for your initial data synchronization preference.

Topics: CRM Upgrade Microsoft Dynamics CRM

Microsoft Announces Dynamics 365 Integrated Cloud Platform

Today's post was written by Kayla Silverstein, Marketing Specialist at Sonoma Partners.

A rivalry well-known in the CRM space: Microsoft Dynamics vs. Salesforce

Microsoft took a significant step to improve its CRM solution and upstage its cloud-based competitor with the announcement of a new application: Microsoft Dynamics 365.

Available this fall, Microsoft Dynamics 365 combines Microsoft Dynamics CRM and ERP cloud solutions into a single cloud service. New purpose-built applications within the tool help manage specific business functions, including Financials, Field Service, Sales, Operations, Marketing, Project Service Automation, and Customer Service.

Microsoft addressed the launch of their new solution with the following:

“Business processes are at the core of every business. Across all industries our customers are looking to adapt their customer engagement and business operations processes to the digital era, to secure and expand their businesses. This ‘digital transformation’ requires a degree of business process agility – and a unification across the business – not supported by the traditional ‘siloed’ ERP and CRM approach of the past.”

The unveiling of Dynamics 365 provokes interest within the CRM world for a variety of reasons:

  • It demonstrates the increasing demand for CRM within a cloud environment.
  • It represents the need for an integrated business solution and the desire to simplify the massive amount of tools businesses are expected to utilize.
  • It shows that Microsoft understands the need to be nimble in the CRM world to compete with other market leaders.

Microsoft also recently announced their intention to acquire LinkedIn. The ability to combine CRM, ERP, Office 365, and LinkedIn is a useful one, and it could stand to give Microsoft a bit of an edge over industry rivals Salesforce and Oracle.

One thing is for sure: the real winner is the consumer. As these companies compete fiercely for market share, the consumer will benefit from ongoing innovation and acquisitions.

Topics: Microsoft Dynamics CRM