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

Tooltips in Dynamics CRM 2013

Developer 1: How do you set up tooltips in the previous versions of Dynamics CRM?

Developer 2:  That was quite simple actually. I had to write the following two lines of javascript which fired on load of the CRM Form.

crmForm.all.<field name>_c.title = ‘Tooltip text’;

crmForm.all.<field name>_d.title = ‘Tooltip text’;

Developer 1:  The new feature in CRM 2013 will save you some time as you don’t have to develop any scripts.  All you need to do is to specify a user friendly text on the attribute description in the attribute properties.


Developer 2: Ah, that’s handy!

Solution | CRM 2013 Outlook Client – (407) Proxy Authentication Required Exception

Recently, we had a customer who upgraded their CRM 2011 Online to CRM 2013 Online. They had a few users who used CRM Outlook Client (Offline and Online).

Upon migration, they installed the CRM 2013 Outlook Client and were unable to open or create any CRM records from CRM Outlook Client.  They would see a “Waiting for webpage to Load from CRM server” popup.

Upon further investigation, the below exception was displayed in the trace file.

Exception occurred when authenticating with serverType: Remote Exception: System.InvalidOperationException: Metadata contains a reference that cannot be resolved: ‘;. —> System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Description.MetadataExchangeClient.MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper)
at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper)
— End of inner exception stack trace —
at System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve(TimeoutHelper timeoutHelper)
at System.ServiceModel.Description.MetadataExchangeClient.ResolveNext(ResolveCallState resolveCallState)
at System.ServiceModel.Description.MetadataExchangeClient.GetMetadata(MetadataRetriever retriever)
at System.ServiceModel.Description.MetadataExchangeClient.GetMetadata(Uri address, MetadataExchangeClientMode mode)
at Microsoft.Xrm.Sdk.Client.ServiceMetadataUtility.RetrieveServiceEndpointMetadata(Type contractType, Uri serviceUri, Boolean checkForSecondary)
at Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1..ctor(Uri serviceUri, Boolean checkForSecondary)
at Microsoft.Xrm.Sdk.Client.OrganizationServiceConfiguration..ctor(Uri serviceUri)
at Microsoft.Xrm.Sdk.Client.ServiceConfigurationFactory.CreateConfiguration[TService](Uri serviceUri)
at Microsoft.Crm.Outlook.ClientAuth.ClientAuthProvidersFactory`1.GetAuthProvider(Uri endPoint, Credential credentials, AuthUIMode uiMode, Uri webEndPoint, IClientOrganizationContext context, Form parentWindow)
at Microsoft.Crm.Application.SMWrappers.ClientOrganizationContextFactory.ClientOrganizationContext.Authenticate(CrmServerType serverType)


Quite obviously, the request was not able to make it through the proxy.  In my customer’s case, they had specified a proxy PAC file within the internet options and the settings were driven by Group policy. Upon further analysis, I understood that when a proxy PAC file is specified within the user’s Internet Options it will establish a new .NET AppDomain to be created to process the PAC file in the Outlook process. The Microsoft Dynamics CRM for Outlook must switch between the one being used for the client and the newly created AppDomain for the proxy PAC file into the .NET AppDomain which happens to more restricted. The solution is to instruct Microsoft.Crm.Application.Outlook.WebFormsHost.exe to use the default Windows proxy settings.


1. Close Microsoft Outlook
2. Navigate to ‘C:\Program Files\Microsoft Dynamics CRM\Client\res\web\bin’ folder
3. Create a file with the name ‘Microsoft.Crm.Application.Outlook.WebFormsHost.exe.config’
4. Copy the below contents to the file

<?xml version=”1.0″ encoding=”utf-8″?>
<defaultProxy enabled=”true” useDefaultCredentials=”true” >
<proxy autoDetect=”True” scriptLocation=http://yourproxy/yourpacfile;

5. Save the file and reopen Microsoft Outlook

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.

New Feature: Modifying a Qualified Lead in CRM 2013

Often, we come across scenarios where the users would have qualified a Lead to an Opportunity, and would later decide to include additional details on the Lead form.  For e.g., they would like to include information on the lead such as lead source or the source campaign, which are key to measure the success of closed loop marketing. CRM does not allow modifying a closed or a deactivated record without re-activating it.  In CRM 2011 and the earlier versions of the product, if the user chose to re-activate a qualified lead, keyed in some additional information and then qualified it, the system would have created another opportunity record. To counter this, a plug-in development was required which fired upon creation of an opportunity record, and deactivated the previously created opportunity.

Thanks to Ben Hosking, who shed some light on how this is done in CRM 2013.

In CRM 2013, the Lead-to-Opportunity process flows allows the user to re-activate a lead, and qualify it by selecting the same opportunity, instead of having to create another opportunity and writing a plug-in to deactivate the opportunity that had resulted out of the lead qualification.

Here’s how this is done:


  • The lead is already qualified as an opportunity.
  • The lead how has now been re-activated by the user.

Step 1


Step 2