Category Archives: Dynamics CRM

Tips and techniques I've collected while working with Microsoft Dynamics CRM 3.0

Announcing early bird pricing for 21 Squared: CRM Administration

I am finally launching the first module in my 21 Squared self-paced training program for Dynamics CRM.

Dynamics CRM Administration (OnPremise)

Our first course is on Dynamics CRM Administration and will be available starting Monday, Feburary 9th.

I will be offering an early-bird discount to those individuals who sign-up early.

  • Normal Price: $149
  • Early-Bird Price: $99

Early-bird pricing will end on Saturday, February, 7th.

Simply complete the following form and we'll notify you the moment the release is available and include the code to give you your discount:

21 Squared: Dynamics CRM Administration Signup

A Look Inside:

Here is what you will be learning in this course:

  • Lesson 1. Create Your Administrative Toolbox
  • Lesson 2. Let’s Do a Little Housekeeping
  • Lesson 3. Error and Warning Messages
  • Lesson 4. Managing System Jobs
  • Lesson 5. Creating System Management Views
  • Lesson 6. System Job Management: Registry
  • Lesson 7. Automating System Job Cleanup
  • Lesson 8. User Management
  • Lesson 9. Email Management
  • Lesson 10. Email Management – Preventative Maintenance 
  • Lesson 11. Outlook Sync Table Cleanup
  • Lesson 12. Monitoring the Windows Event Log
  • Lesson 13. Platform Event Tracing Overview
  • Lesson 14. Enabling Event Tracing
  • Lesson 15. Troubleshooting Using Event Tracing
  • Lesson 16. Matching User Error Codes
  • Lesson 17. Troubleshooting Development Errors
  • Lesson 18. Workflow Best Practices
  • Lesson 19. CRM SQL System Jobs
  • Lesson 20. CRM Organization Settings Editor
  • Lesson 21. Creating a Management Dashboard

The time each lesson will take to complete will vary between 30 minutes and two hours, depending on the number of exercises to complete (some have none), and the amount of background material that you will need to cover.

Dynamics CRM 2015 Implementation Guide 7.0.1 (January 2015)

There is an update to the Implementation Guide available on Technet:

  • At this point, this information is not available in the downloadable version, which you can find here:

Here is a list of the new and updated topics:


I’ll be covering the Monitoring Service in-depth in an upcoming article shortly.

Dynamics CRM: The error is not always what you see

One of my customers has had an issue with their CRM system since I upgraded them from Dynamics CRM 4.0 to 2011. Basically the System Settings page will not allow you to make changes.  I got the following JavaScript error:

  <Message>Object doesn't support property or method 'down'</Message>
  <FunctionRaw>TypeError: Object doesn't support property or method 'down'</FunctionRaw>


So this is an error on the CRM page itself and there is not a lot I can do about it.  I just figured it was a bug in the system.

I’ve put up with it because it was not a huge issue for me, and I really didn’t want to spend any quality time working on a support case. I always figured that it was something that would be fixed by an update rollup.

We are in the process of migrating to Dynamics CRM 2015. The issue persists and now I can no longer ignore it. I have to make changes to the system settings. This also means that it is not server-specific, but something about the CRM databases, since that is the only commonality since I have migrated this system from 2011 to 2013 to 2015.

After asking my fellow MVPs if they had ever seen such an error, and not getting confirmation, my friend Gustaf recommended turning on platform tracing to try and capture the error. I thought that was a really strange thing to do since the error was obviously a JavaScript problem.

Or was it???

So I turn on tracing and captured these errors:

  • Duplicate DisplayName found for lcid '9242' – 'Serbian (Latin, Serbia)'.
  • Duplicate DisplayName found for lcid '10266' – 'Serbian (Cyrillic, Serbia)'.

Which have absolutely, nothing, and I repeat, nothing to do with the problem.

But it did led me to this thread:

Which led me to the real problem.  The Email Attachment size setting was incompatible with CRM 201x.

Someone, at some point had set it to 90,120.  It turns out that the maximum value for that field is 32,768.  Which you will see should you try and enter it by hand.  But, since this was an import, it was not checked.  I lowered the value to 32K and that solved the issue.


So here is a recap of my findings:

  • I was receiving a JavaScript error saving System Settings.
  • A Platform Traced point to duplicate configuration information.
  • Which led me to a Google search which produced an thread on the Dynamics Community site.
  • Which pointed me to the real error.
  • Which I played around with until I found the real problem and answer.


Or, as I like to say:

These are not the droids we are looking for. Move along; Move along.

Upcoming Free Webinar: Microsoft Dynamics CRM JavaScript Upgrade Strategies

I am holding a free webinar on Wednesday, January 20th via MSDynamicsWorld.Com:


Microsoft Dynamics CRM JavaScript Upgrade Strategies

As you may know, Microsoft Dynamics CRM 2013 completely removed support for the Dynamics CRM 4.0 JavaScript object model. In fact, you will be unable to upgrade your organization to 2013 should 4.0 JavaScript be found.

In this session, we will be discussing the tools, techniques, and processes that will make your upgrade a success when moving your JavaScript from the Dynamics CRM 4.0 object model to the Dynamics CRM 201x object model.

Developing applications for multiple versions of Dynamics CRM

As most of you know, I have a several add-on products for Dynamics CRM developers, administrators, and consultants.

They all share common user interface and application frameworks that I developed several years ago.

When I first started writing these tools all I had to worry about was Dynamics CRM 4.0, which was pretty easy. Then Dynamics CRM 2011 shipped, which made things a bit more difficult, but not impossible.

I just had to separate my internal components so that one section worked with CRM 4.0, and the other with CRM 2011.  Once I got the unified connection user interface component working correctly, everything else just fell into place and things were all warm and cozy.

CRM 4.0 and CRM 2011 communicate over very different means so even though you ask for a single set of information from the user, you must appropriately handle the connection specific to the platform on the back-end.  That took a little bit of work to make happen flawlessly every time.

Then Microsoft shipped Dynamics 2013.  Still not a big deal as I could use the CRM 2011 SDK assemblies to communicate without any issue.

Then Microsoft shipped Dynamics 2015 and I started thinking that maybe I need to re-examine my methodology.  And I am quite happy with my solution.



I need to communicate with Dynamics CRM 2011, 2013, and 2015 while changing the smallest amount of code possible.

I also had to stay with .NET 4.0, since my user interface framework does not support .NET 4.5 and I was not in a position to write the entire UI for a handful of products.



The solution was to upgrade my SDK .NET assemblies to the Dynamics CRM 2013 level. 

That gave me access to all three platforms as long as I kept in mind that I could never ask for something that did not exist on a specific platform. 

Like SLAs or Entitlements from CRM 2011. Since those do not exist until 2013, it would throw an error.


Further Thoughts

For some reason, I had never tried connecting to a lower-version environment using the newest SDK assemblies.  Turns out that works just fine. (silly me for never asking the question till a month ago).

If my UI framework was .NET 4.5 compatible, I would have jumped up to the CRM 2015 assemblies because that is what they are written with.

The only side-effect to this is that I am stuck using Visual Studio 2010 because that same UI framework doesn’t work with Visual Studio 2013, my normal environment.



This process was quite eye-opening for me and just about as painless as it could be.  The Microsoft SDK team has done a huge amount of really great work that makes our jobs as developers, much less work than it could be, or even once was.

Let me know if you have had similar or even different experiences.

Explorer! v3.5 for Dynamics CRM Released

A new version of Explorer! for Dynamics CRM: My answer to a better understanding of your CRM data, the way the data is presented to users, and how it is stored within your database.

Version 3.5 adds improved compatibility with Dynamics CRM 2013 and 2015.

Visit the product page for more information about how Explorer! for Dynamics CRM can help you manage your Dynamics CRM data.

Dynamics CRM 2013 and 2015 Installation Notes: SSRS

I ran into a couple of things while performing a fresh on-premise installations of Dynamics CRM 2013 and 2015 that I wanted to capture.


Service Credentials

Dynamics CRM 2015 does not like it when the SSRS service, SQL Server Reporting Services (MSSQLSERVER), is running under a local user account so I had to change the credentials to that of a domain user.


Report Publishing Error

I ran into this issue as well:

Could not publish report 'Neglected Cases' due to the following error:  Error occurred while fetching the report.

Error occurred while fetching the report.

System.Web.Services.Protocols.SoapException: The report server cannot decrypt the symmetric key that is used to access sensitive or encrypted data in a report server database. You must either restore a backup key or delete all encrypted content. —> Microsoft.ReportingServices.Library.ReportServerDisabledException: The report server cannot decrypt the symmetric key that is used to access sensitive or encrypted data in a report server database. You must either restore a backup key or delete all encrypted content. —> System.Runtime.InteropServices.COMException: Keyset does not exist (Exception from HRESULT: 0x80090016)

The solution for which I found here.

Happy Holidays–Celebrate with an End of the Year Product Discounts

Happy holidays everyone!

In celebration for another great year working with Dynamics CRM. I would like to offer everyone a discount on all new product purchases. 

From now until December 31st, 2014, enjoy 25% off of any of our productivity products for Dynamics CRM.


Check them out:

Transformer! upgrades your JavaScript from the Dynamics CRM 4.0 object model to a more supported 2011+ object model.


SnapShot! is the ultimate documentation tool for your Dynamics CRM organization.


Explorer! helps you answer questions about your Dynamics CRM data including:  “Do I really show my users the data they need to see” and “Are my forms properly designed, showing the most important information first?”


Thanks again for a great year and may you and yours have a happy and safe holiday season.

Thanks, Mitch

SnapShot! 3.5 for Dynamics CRM Released

A new version of SnapShot! for Dynamics CRM is now available.  See the product page for more information.



The following enhancements have been made:


Security Privilege Raw Data Report

The Raw Security report now includes the entity name which should better allow you to filter the data to examine the data that is being report back from Dynamics CRM.


Empty JavaScript Event Handlers

This may be an edge-case for most people, but for some it might be fairly useful.  Here is the scenario:

You are upgrading your Dynamics CRM system from CRM 2011 to CRM 2013 or 2015 and you have a lot of JavaScript still in the Dynamics CRM 4.0 object model.  That means that you cannot upgrade to CRM 2013 because it will not pass the pre-upgrade checks.

You need to verify the physical upgrade process in your test environment to make sure that everything will work in production, but you have not fully completed the JavaScript upgrade. ( Something that Transformer! is really go at.)

This new feature will create empty JavaScript functions for each Event Handler found on a form.  This allows you to temporarily replace the actual web resources with a web resource consisting of these empty functions, commonly called “stubs.”

This will allow you to verify the upgrade process because you have removed all of the CRM 4.0 JavaScript, and since the functions actually exist within the web resources, your forms will function as they always have and you will not receive “object not found” messages as you would see had you just removed the contents of the web resource entirely. (which is the other option).



Issues Corrected

The user-security report was not always reporting the correct information in the Custom Entities section, so I spent some type to track down the issue and correct the report. While I was in that area, I also enhanced the report to make it better resemble the Security Role display. The entities are now sorted alphabetically and when no security privilege is found, the white circle is displayed.