Experiences on CRM, .Net and DHTML


  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

Update: CrmXpress Drag-n-Drop Upload Control for Dynamics CRM 2016/2015/2013

 have written a post detailing this control here so I am not going to write the whole story. I am bit surprised that Microsoft Dynamics CRM 2016 does not support drag-n-drop support yet. It allows you to upload templates for Word and Excel (maybe it is directly coming from OneDrive family). Anyways, here is a screenshot and a brief tutorial on how to use this control.

  1. Download the suitable solution from here.
  2. Import the solution in your organization and publish it.
  3. This control provides adding files via drag-n-drop to Email and Notes so you have to add (AttachmentsUpload.htm or NotesUpload.htm respectively) as a web resource.
    For example, in the screenshot below, you can see NotesUpload,htm has been added as a web resource for Contact entity form.

Figure 1 Add a WebResource on Form Designer

  1. Set Properties as shown below. Please note you must un-check Restrict cross-frame scripting, where supported and check Pass record object-type code and unique identifier as parameters.

Figure 2 Set Properties

  1. You can format the control as per your requirements. For recommended format options, see the screenshot below

Figure 3 Set Format

  1. Save the form and Publish Changes.
  2. When you are creating a record you will see appropriate message is displayed.

Figure 4 Create Record

  1. Once the record is saved, you can start using Drag-n-Drop to upload files.

Figure 5 Saved Record


Happy Holidays J

Microsoft Dynamics CRM migration from On-Premises to Online

Microsoft is adhering to the cloud first strategy for Dynamics CRM. There has been an increased time gap to when the CRM On-Premises customers receive the new features (or even bug fixes) as compared to the CRM Online customers. There are also features like Office 365 integration, Social apps etc., which are better suited for CRM Online users. This has triggered an interest among the CRM On-Premises customers to migrate to CRM Online. There could also be a number of other reasons like reduced infrastructure cost, maintenance etc. Moving to CRM Online isn’t just a database restore as Microsoft will not support that. Instead, the Solution files must be imported and the data has to be migrated. Here are a few things to plan for

  1. License: Licensing is different for CRM Online and On-Premise. A Microsoft partner can help you get the required licenses. Ideally, licenses (cost) should also be a factor in making the migration decision.
  2. Customizations: Import any managed solutions that you may have into CRM Online. Then import the unmanaged solution from the On-Premise version.
  3. Data Migration: Depending on the amount of data and the complexity of the data structure, you can choose from Import wizard, SSIS based migration (Kingswaysoft), or use third party tools is Scribe/ Synchronicity Echo. This step is the complex one of all. In that, fields like system fields ( like ModifiedOn, ModifiedBy, ActualClose, ActualStart etc.), have to be taken care of, record status (especially activities) might have to be set, multiple currencies and exchange rates have to be managed, plugins/workflows might have to be disabled during the data migration.

It is also worth noting that, if you are upgrading in addition to migration ( moving from an older version of CRM On-Premises to CRM Online), then an analysis of whether the features in new version can alleviate the existing customizations will be beneficial. This is also a good time to check on what exactly is being used/unused in the CRM implementation.

If for some reason, you decide to go back to CRM On-Premises, all you need is to request the support team for a database backup and restore it on the On-Premises instance. Here is a document that details the steps needed for migration. Keep in mind that you might not be seeing some of the features that were available on CRM Online but not yet released in the On-Premises version.


Lead and Opportunity management in AX 2012

A lead is someone who may be interested in doing business with you and is sometimes referred to as a Suspect. Leads in AX 2012 are part of the Sales and Marketing module. An abstract on the Lead management in AX 2012 and the details of the Form elements are on Microsoft TechNet. In this blog I shall discuss the functionality available in AX 2012 R3 CU9 in detail. 

Lead Creation

Below are the different ways to create leads in AX. We will only discuss the options provided OOB (Out Of the Box) in the AX rich client.

  1. Manual: The step-by-step instructions are provided in technet.
  2. Import: There is an option to import Leads in Sales and Marketing –> Periodic –> Import –> Leads. However, I haven’t been able to get it to work due to the lack of formats. Haven’t been able to get help from Microsoft too. So, if you know how to get this to work, let me know! Another way to import leads is using DIXF (Data Import eXport Framework.. it works! Smile ).
  3. Generate Leads from Campaign: A Campaign Response can be converted to a Lead as shown below. The Campaign will be set as the Source on the Lead so the relationship detail is available for Campaign performance analysis.


Qualify Process

Qualify Process is essentially the series of steps/activities that the sales rep has to follow to help nurture the lead. There is no default process that comes OOB. However, it can be configured easily using a Click-to-configure utility available in Sales and Marketing –> Setup –> Leads –> Qualify Process.

Once the required actions are performed on the lead according to the qualify process, then the lead can be qualified or disqualified, if it doesn’t meet the required criteria. Here is how to qualify/disqualify a lead. Once qualified / disqualified, the status of the lead is updated. However, the record is not deactivated.

A setting in Sales and Marketing parameters helps configure if an opportunity or customer has to be created on lead qualification.


Background Process
  1. When a Lead is created for a new Party (When you type in a new Name instead of selecting from the dropdown) then AX auto creates Prospect and Party records.
  2. When an existing Party record is used to create the Lead then a new Prospect is not created until the Lead is qualified. Note that Prospect is an individual/organization with potential business.
  3. When an existing Customer is used to create Lead then Prospect is not created. Ideally, for an existing Customer, an Opportunity has to be created instead of a Lead.
What are Party and Prospect?

A party is a person or organization that is either internal or external to your organization. Some examples are Worker, Customer, Vendor etc. Party records are maintained in the global address book (GAB) and can be created in the following ways:

  • Create a party record when you do not know the entity type – When you create a party record and you do not know the entity type, for example you do not know if the entity is a customer or an opportunity, you create the record in the GAB. You can select the entity type later.

  • Create a party record when you know the entity type – If you know the entity type for the party, you can create a record in the applicable form for that type. For example, for a customer, you create a record in the Customer form. When you create and save a record by using the applicable form, the record is automatically created in the GAB.


Prospects are the organizations and individuals with whom you will potentially interact for business purposes. They are most likely to be external to your organization. Prospects records can be used to store details like sales demographics, delivery defaults, financial dimensions, credit & tax etc. All the details that the sales reps gather as part of the sales process have to be captured in the opportunity and prospect records

I would suggest not to create Party records from the GAB directly but to instead use a Prospect or Lead when you know that it is a potential sale.


Opportunity Creation

An opportunity is a lead who is now almost ready to buy —in other words, it's a deal that you're ready to win and have details like budget, timeline, requirement etc. Summary of Opportunity management and the form level details are on Microsoft TechNet. Opportunity can be auto created when a lead is qualified or can be created manually. Step-by-step procedure to create opportunity is also detailed on TechNet.  When an Opportunity is created for a new Party then AX auto creates Prospect and Party records. Oddly, the owner of the Opportunity/Lead is not set by default and is commonly desired to be the current user. So, remember to customize it as part of the initial setup.

There is no pre-defined sales process that comes with AX installation. It could be because the process varies by industry. Configuring a sales process is easy and can be done using a click-to-configure utility available in Sales and Marketing Setup.
Sales Process

There is no pre-defined sales process that comes with AX installation. It could be because the process varies by industry. Configuring a sales process is easy and can be done using a click-to-configure utility available in Sales and Marketing –> Setup –> Opportunities –> Sales Process.

By default, the product of interest cannot be associated with an opportunity. Customization is required to relate a product family/category with an opportunity. There are a few settings that can help create an opportunity or update its status based on the quotation. When you create a quotation from the opportunity, you would be able to associate the product, price list etc.,


Once an opportunity is Won (status is changed to won), the opportunity details are made inactive and are not editable. However, when an opportunity is lost, the record is still editable and can also be reactivated.


Hope this helps!

XrmToolBox - A Must have tool for CRM/XRM Developers

If you are a seasoned CRM/XRM developer, you must have heard about XrmToolbox. If you have, you can simply ignore this post. BUT if you have not then you MUST read on.

This post is about XrmToolbox (http://www.xrmtoolbox.com/) and its plugins which can improve your efficiency and accelerate overall development speed. I intend to list all the default plugins and provide more details on plugins as and when time permits. So here is a list of plugins which gets installed by default.

Sr. No.
1Access Checker
This plugin allows you to check access rights for a user. This can come extremely handy to figure out if you have provided proper security privilege or not.
2Assembly Recovery Tool
This plugin lets you export Plugin Assemblies from a CRM deployment.
3Attribute Bulk UpdaterIt allows to quickly set the following properties of attributes of a given entity. 1. Valid for Advanced Find 2. Valid for Audit 3. Requirement Level
4Audit CenterIt allows you to define audit settings - from Global Audit Settings to Attributes on Entities. It gives you everything that you would do with Audit settings in one screen.
5Bulk Form Attribute Manager

This plugin provides a single window to set the following settings on multiple attributes.
1. Add/Remove attribute to the form
2. Show/Hide/Edit Text of the label
3. Lock/Unlock a field on the form
4. Set a field read-only
5. Set visibility of a field
This plugin allows you to select Attributes in various manners (Attributes on all forms or not in any form)

6Chart ManagerIt allows you to import/export chart definitions in bulk. It also allows you to make changes to the ChartML.
7Easy TranslatorThis plugin exports and imports translations with contextual information
8FetchXML TesterDoes this one need description? :-/
9FLS Bulk UpdaterMany CRM/XRM implementations require you to configure Field Level Security. If you try doing it using just the Dynamics CRM Web Interface it can be really time consuming and headache inducing.
10Form Libraries ManagerThis plugin helps you to add multiple JavaScript libraries to multiple forms.
11Form Parameter ManagerIf you need to pass parameters to Dynamics CRM forms, this plugin simplifies the process.
12IconatorThis plugin helps you to add icons to custom entities in Dynamics CRM.
13Import/Export NN RelationshipsThis plugin helps in importing and exporting N:N relationships.
14Metadata BrowserGood ol' Metadata browser (on steroids ... just give it a try to experience how fast it is).
15Metadata Document GeneratorThis plugin generates very nice Excel and Word document based on Metadata
16Privileges DiscoveryThis plugin will help you find roles which implement a given security privilege
17Role UpdaterA simpler UI to update set or role/s with Security privileges
18Script FinderIf you ask yourself how many JavaScript libraries are being used in a given CRM solution and where... this plugin is what you need.
19SiteMap EditorThis plugin provides you finer control over SiteMap elements. It allows you to import/export and understand how SiteMap actually work.
20Solution Components MoverThis plugin helps you to move Solution components from one solution to another.
21Solution ImportYet another simple solution to a terrible user experience (due to limitations of web browsers and web applications in general). This plugin allows you to select a folder and allows it to import it or if you already have a zip ready then do a simple drag-n-drop.
22Solution Transfer ToolHow many times you find yourself in a situation in which you already have a solution deployed on one server and you need to transfer (Copy) it to other server? If you are in regular CRM/XRM development then I'd say every other day. It is true, you copy solutions from Dev to Test to UAT to Pre-Prod and finally Prod. If you do this via regular CRM Web UI the process is quite cumbersome. Use this plugin to make the solution transfer process a breeze.
23Sync Filter ManagerThis plugin helps you manager Offline, Outlook and Server side Sync. As such with advent of Dynamics CRM 2015 I am not sure how useful and meaningful this plugin will be.
24User Roles ManagerManage all roles for the users and teams available in a given CRM deployment
25User Settings UtilityHow would you change User Settings for 7000 users? Yes... I don't need to explain what this life-saver plugin does.
26View Layout ReplicatorMost of the CRM deployment we do, we need to keep layout (columns, order and width) of views in a sync. For a large implementation it can be a huge pain. This plugin simplifies the process. Define the layout in one view and then replicate it to other views in a single click.
27View Transfer ToolTwin brother of View Layout Replicator, allows you to quickly transfer Views from one CRM deployment to another.
28Web Resources ManagerThe Ultimate Web Resource Manager for Dynamics CRM. Forget about copy pasting content (for HTML, JavaScript, CSS, XML etc.) just select the files and upload them in a click. Additionally, this plugin beautifies the code and also provides you a nice way to organize Web resources
29Early Bound GeneratorI am not very PRO early bound code (for sole reason of flexibility), but every now and then we encounter a situation where people would want to use Early Bound code. This plugin provides a nice UI to the command line operations of CrmSvcUtil.exe (part of CRM SDK). It is the most comprehensive plugin available today in case you are using Early Bound Code. In one case, I was able to reduce EBC size by 1/3rd (from 7 MB to 2 MB). Please note that this doesn't come bundled with Xrmtoolbox and needs to be downloaded from: https://xrmearlyboundgenerator.codeplex.com/
30FetchXmlBuilderThis plugin allows you to write/edit FetchXml and test it from the same screen and provides a nice UX. It has many other features that will help any developer, no matter S/he is a novice or an expert. A MUST have plugin. Please note that this is not a standard plugin of Xrmtoolbox and needs to be downloaded separately from: http://fxb.xrmtoolbox.com/

I have deliberately not included the following plugins (not that they are not important. I just didn't find them being used as widely as others)

  1. Sync event execution order editor

There are many other important resources which you can find at: http://www.xrmtoolbox.com/. Including installation, configuration and basic troubleshooting.