Decode the Error Codes in Dynamics CRM

Microsoft has done a fine job in documenting the web service error codes for all versions of CRM. The web service error codes for CRM 2013 can be found here.

The Error IDs documented on MSDN and CRM SDK are in hexadecimal format. For example, the error code ‘80040516’ translates to a ‘The opportunity cannot be closed’ error message. But when you encounter an error or an exception in your application, the error log displays the error ID in a decimal format. The same exception is displayed with an error code ‘-2147220202’. Searching for this error code on MSDN or CRM SDK may not fetch you the desired results.

What do you do next?

Open the Windows Calculator. Set the view to ‘Programmer’ (ALT + 3). Copy the decimal number and then select the ‘Hex’ option to convert it to a Hexadecimal number. The result displayed would be something like ‘FFFFFFFF80040516’. Strip the ‘FFFFFFFF’ and search SDK for the error code ‘80040516’. This will give you the required information on the error code.

Cracking the UAT puzzle

The purpose of User Acceptance Testing (UAT) is to conduct user testing and also to obtain user acceptance sign-off for the Microsoft Dynamics CRM solution.


This involves testing of the end-to-end system to ensure that the system meets the customer business requirements.  These tests are performed on the UAT environment using actual transactions that would provide a good sample of their business.  The test results are then analyzed and compared to the original requirements and design.

Although the analysis may determine that the tests were successful, the customer may still request changes to the feature, data migration, or integration process. These changes are then taken up through the Change Control process. Once the changes are approved and implemented, the changes made to the system will be subject to individual unit and function testing, and will have to undergo UAT again.

Below are some of the considerations for a successful UAT:

Define the Test Objectives– The key here is to define test objectives for UAT testing. This is because a complete test execution for large application may not be possible in UAT phase. Testing should be carried out by prioritizing critical business objectives first. Think of what are the most important use cases or business processes that you would like to execute as part of UAT. One of the ways of identifying this is to understand how many different modules of CRM a specific process touches upon.

Create a Sandbox EnvironmentIdentify the key set of users who have defined the requirements and those who would potentially play a role during UAT. These are the power users. Deploy the configurations and customizations to the Sandbox environment and get these set of users to familiarize the work-in-progress solution. The benefits of a Sandbox environment are multi-fold – (1) the users get a feel of the application that is being rolled out for them. (2)Collecting valuable feedback which can be incorporated into the product either as part of the current release or the future releases. (3) No surprises to the customer and the system implementer during the UAT (4) both parties have a head-start through these informal trainings.

Drive Product Familiarization WorkshopsInvite the power users for a product familiarization workshop. The product familiarization workshops can happen at various milestones of the project – for e.g. – midway of design phase, end of design phase, midway of development phase, end of development phase. The aim of the product familiarization workshops is to introduce the new set of configurations and customizations made to the CRM system. This is another way of acclimatizing the users to the work-in-progress solution.

Setup the UAT Environment and Real-world test dataProvide a heads-up to the customer IT team on the UAT Plan and execution dates will in advance. This information would help the customer IT team to organize the servers required to model the production environment setup, along with the real-world test data. Prepare a Pre-UAT checklist which defines the tasks that the customer IT team and your development team are responsible for. Track the check-list to completion.

Pre-UAT TrainingBy now, you will have the list of all the users who will participate in UAT. You already have a head-start as a subset of the UAT users (power users) knows how to operate the system. These power users can be your advocate during the Pre-UAT training and the UAT phase.

a.    Set the UAT AgendaIt is very important to set the UAT Agenda and UAT users accept the agenda. The time allotted will vary depending on the functionality being tested. Ensure that the test schedule allows for the resolution of issues and discussion.

b.    Highlight the Acceptance CriteriaHighlight the criteria to determine system acceptability. Your reference should always be the use cases, functional requirements and functional design gathered as part of the earlier stages of the project.

Collect User FeedbackHandhold the UAT users. Even though the product familiarization workshops and pre-UAT trainings have been imparted, some of the UAT users might lose their way. It is the responsibility of the Functional Consultant to bring them back on track. During UAT, collect feedback from the end-users – the feedback could be related to the processes or the usability or the design. The feedback could be the first step in building a scope for the next phase of the CRM implementation.

Trending CRM product suggestions on Microsoft Connect

If you have a suggestion or a feature improvement that you would like to pass on to Microsoft product team, then you can do so on Microsoft Connect.

The CRM Community has requested numerous new features and product suggestions on Microsoft Connect, of which some have been fixed and others have been tracked as a future roadmap.

Below are the top 5 Dynamics CRM product suggestions so far on Microsoft Connect based on the votes, comments and ratings.

‘NOT IN’ searches in Advanced Find

This feature tops the list as the most required feature in CRM. This has been resolved as fixed by Microsoft. So, they may just plug this into the next version of the product.

A very common requirement from customers is to find records without a certain related record – e.g. Show me a list of all open opportunities which do not have any future activities.  Since this is not doable through Advanced Find queries, you had to provision this through a custom report.

Field Level Security on System Fields

The ability to configure field level security on system fields is also one of the most requested features. This product suggestion has been resolved as tracking which means you will see this feature in one of the next versions of CRM.

Custom Composite Lookups

Currently, the composite lookups are limited only to a few OOB entities (e.g. – for example Customer on opportunity, Partylist on email, Regarding on activities). It would be extremely useful if this feature can be extended to all entities.

This product suggestion has been resolved as tracking which means you will see this feature in one of the next versions of CRM.

Customization to the CRM Navigation Bar

The CRM Community have asked for some improvements on the behaviour of the CRM 2013 Navigation Bar. The navigation bar disappears from view if the mouse is navigated to the bottom of the navigation bar. There’s no ability to pin the navigation bar and some of the customers I work with have usability issues with the new navigation bar.

The feedback that I have received from Microsoft is that they are aware of this need when the Navigation bar was built and the experience will continue to evolve in the future.

Enabling Full-Text operator (“CONTAINS”) instead of the current ‘LIKE’ operator

Scott Sewell (CRM MVP) has illustrated the need for enabling the full-text operator on Microsoft Connect. Scott explains –”There would be added advantages of enabling CRM to use a Full-Text operator (“CONTAINS”) instead of the current ‘LIKE’ operator when searching defined and indexed text fields (specifically large memo fields, like Activity Description). The CONTAINS operator would allow the criteria to support more complete search terms – such as “salary AND confidential” to return emails where both words were in the email description. Modifying the way CRM generates this condition maintains the security of the emails – (in contrast to external search services/indexes that don’t consider the user’s security profile when determining which emails to display in the results.)”

So, these were the top product suggestions on Microsoft Connect. If you have a suggestion or a feature improvement that you would like to pass on to Microsoft product team, I would strongly recommend you to register on Microsoft Connect, log your suggestions and vote for existing suggestions.

More information on how Microsoft Connect works can be located at

Using Quick Find to search for Active and Inactive records

Time is money in all businesses, more specifically in a contact center. When a case is logged, the customer is provided with a case number. The customer can reference the case number when they call the contact center to check the status of a case.

In CRM 4.0, the customer service agent had to use Advanced Find to search for a case using a case number. Using the Advanced Find for an operation such as this is time consuming. The other option in hand was to hack the customization.xml to enable the customer service agent search for all cases (active, resolved, cancelled) using the ‘Quick Find’ feature.

The Out-of-Box ‘Quick Find’ feature is no different in CRM 2011 and CRM 2013. i.e. the user can only search for active records. But there is an ability to customize the ‘Quick Find’ view to search for all records.

Here’s how this is done:

1. Open the ‘Quick Find’ view from System View CustomizationImage

2. On the view editor, click on the ‘Edit Filter Criteria’ link to modify the filter criteria. You will notice that the default filter criteria which is setup is Status = Active, which translates to searching active records only. Clear this filter criterion and publish your customization. 


Now, set your default view to ‘All Cases’ and search for any case record. It should show up on the list view.