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:

<ScriptErrorDetails>
  <Message>Object doesn't support property or method 'down'</Message>
  <Line>426</Line>
  <URL>/tools/systemsettings/dialogs/systemsettings.aspx</URL>
  <PageURL>/tools/systemsettings/dialogs/systemsettings.aspx</PageURL>
  <Function>anonymousr:Objectdoesn'tsupportpropertyormethod'down'</Function>
  <FunctionRaw>TypeError: Object doesn't support property or method 'down'</FunctionRaw>
  <CallStack>
   <Function>anonymousr:Objectdoesn'tsupportpropertyormethod'down'</Function>
  </CallStack>
 </ScriptErrorDetails>

 

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:

https://community.dynamics.com/crm/f/117/t/115766.aspx

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.

Recap

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.

SnapShot! 3.6 is now available. You can read more about it by visiting the SnapShot! product page.

You may also download a sample of the reports SnapShot! generates here.

 

What’s in this Release?

This release includes the following:

 

New Reports

The following new reports are available:

Entity Maps

Shows the source and target entities used by the Relationship Mapping process.

 

Attribute Maps

Shows the source and target entities and attributes (fields) used by the Relationship Mapping process.

 

Email Server Profiles

Lists information for the Email Servers configured in Dynamics CRM 2013 and 2015.

 

Mailboxes

Lists information for the Mailboxes configured in Dynamics CRM 2013 and 2015.

 

Custom Code Validation

The Dynamics CRM team at Microsoft released the Microsoft Dynamics CRM 2013 Custom Code Validation Tool to allow an organization to scan their JavaScript for issues that would either not work in different browsers or not work in Dynamics CRM 2013. The only drawback is that you could only review the output one web resource at a time.

I have taken the technique used by the Code Validation Tool and created a single report that shows all of the code issues for the entire organization.

 

New Features and Changes

The following features have been added or changed:

 

Automation Testing Matrix

JavaScript form events have been added to the Automation Testing Matrix report.

 

Open Folder Upon Completion

The functionality that would open the main Excel worksheet when the SnapShot! was complete has been replaced by an open folder operation, since the SnapShot! now generates so many different files and folders.

When this option is checked, it will open a Windows Explorer pointing to the folder created for that particular SnapShot! run.

 

New Folder and Report Structure

Due to the sheer amount of data being reported, I thought it was time that I split up the reports into more manageable segments.

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

 

Microsoft Dynamics CRM JavaScript Upgrade Strategies

http://msdynamicsworld.com/event/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.

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.

 

Requirements

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.

 

Solution

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.

 

Conclusion

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.

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.

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.

I find it very helpful to have a textual copy of error reports found in dialogs such as the one below:

image

 

If you didn’t already know it is actually possible to get the text of a dialog in Microsoft Windows, in any version that I have ever used, up to and including Windows Server 2012.

Just press Ctrl+C and all of the text, buttons included, will be copied to the clipboard.

Open your favorite text editor and just paste the text into a document like you would any other.

I hope that saves you some time.

The 9th year, I have been awarded the Most Valuable Professional award by Microsoft.

Still one of the greatest honors I have ever been given, and I am in the most excellent company.

IMG_2682

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

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

 

Enhancements

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.

Sign up for our new KnowledgeBits service and get news, tips and tricks and more, delivered straight to your inbox.