Archive for the ‘MS Dynamics CRM’ Category

Microsoft Dynamics CRM turn off the welcome screen (navigation tour)

October 28, 2015

When people first start Microsoft Dynamics CRM, they are offered a quick overview of CRM. They can start the navigation tour by choosing Let’s go.

Startup navigation tour for Dynamics CRM Disable navigation tour in Dynamics CRM

If they don’t want to see the welcome screen (navigation tour) each time they start, they can select the Don’t show me this again check box, to turn it off. However, they will see the welcome screen again, if they log in from a different device, use a new browser, or delete their cache. As an administrator, you can turn off the welcome screen (navigation tour) permanently for the whole organization, so, it doesn’t re-appear every time the users sign in to Microsoft Dynamics CRM.

To do that:

  1. Go to Settings > Administration. (How do I get there?)
  2. Choose the System Settings > General tab.
  3. In Set whether users see navigation tour, set the Display navigation tour to users when they sign in to No, as shown below:

Microsoft Dynamics CRM Editable Grid

October 27, 2015

D CRM Editable Grid is a zero code (Html5 JavaScript) add on for Dynamics CRM 2013 and 2015 to easily implement custom editable grids.



Set-up and Overview of D CRM Editable Grid

Launch in another window

Setting up multiple entities with or without relationships

  • Entity1 (Not Related) Entity2, …
  • Parent (1:N) Child
  • Parent (1:N) Child1 (1:N) Child2 (1:N) Child3, …
  • Parent1 (1:N) Child1 (Not Related) Parent2 (1:N) Child2

ChildParent 1 to 3 are not related to each other, however they all have a N:1 relationship with Parent entity

  • Parent ChildParent1 ChildParent2 ChildParent3
Launch in another window


  • In-line editing
  • Editing multiple records at the same time
  • Allows for multiple entity relationships to be represented in a single CRM form
  • JavaScript call back mechanism for Validation, Delete, and Save operations
  • Ability to query any record, whether related to the current record or not
  • Navigation via keyboard arrows or tab keys
  • Unlimited undo – Place focus on a cell that has gone through one/multiple changes, use undo button to traverse back through the changes until reaching the original value.
  • Undo all changes – Resets all changed cells to their original value.
  • Open record from the grid (in the same window or in a new window)
  • Display sum for numeric fields
  • User settings (currency symbol, numeric separator, decimal symbol, date and time formats) are used for formatting currency, numeric, and date time values.
  • Built in validation for Required, MaxLength, MinValue, and MaxValue field attributes
  • Sorting
  • Paging
  • Searching
  • Inherits CRM Security Model (User Create, Write, and Delete privileges are used to enable/disable New, Delete, and Save grid functionalities)


Text and Numeric
textEditor.PNG NumericEditor.PNG


LookupEditor.PNG LookupMultiEditor.PNG


Two option

Date and Time
DateEditor.PNG DateTimeEditor.PNG


All Editors

Date and Time


Microsoft Dynamics CRM Data Detective

October 19, 2015

CRM Data Detective allows you to see what CRM fields your users are actually using.


I’ve setup this project to be a managed solution so you can easily drop the latest version into your environment. I’ve also provided the full source so you can enhance this project any way you see fit.

The purpose of the CRM Data Detective is to provide some extra visibility into CRM. You can easily see which fields are not getting the user adoption you’re looking for. You might find a lowly populated field and realize it’s buried deep on the form and so you simply need to give it more attention. You may see a field is rarely populated and determine it should be removed. Either way, the CRM Data Detective gives you a great first step into enhancing user adoption.


Microsoft Dynamics CRM Easy Grid

October 16, 2015

EasyGrid is a Full HTML5 Dynamics CRM (2013-2015) Add-On for easily implementing custom editable CRM Sub-Grids


Full Documentation

Video Preview

Other Previews

Context Menu

Delete Dialog

Main Query Interface

Main Query Interface : Lookup Customization


Step 1 : Assign EasyGrid Role to all users
Go to solution Page > Configuration to assign EasyGrid Role to all users

Step 2 : Set Translations

Microsoft Dynamics Marketing 2015 – Resources for download

September 16, 2015

For the Microsoft Dynamics Marketing 2015 release, download and install resources that let you connect Microsoft Dynamics Marketing with Microsoft Dynamics CRM, install additional languages, and build marketing analytics with Microsoft Excel and Power BI for Office 365.



Microsoft Dynamics CRM 2013/2015 Basic HTML Editor / Rich Text

September 1, 2015



CRM by default doesn’t allow us to create our own custom fields using rich text or HTML, similar to the email Description out of the box. However, if we’re building forms that push data to a website dynamically, we may need the ability to build some HTML in CRM. In the past there’s been a few solutions available to do this in CRM. Some are more unsupported than others (e.g. hacking into a field on the form and converting it into a rich text editor).

One of the nicer solutions involves embedded a web resource on the form, and then taking the HTML generated by the web resource, and updating a field on the parent form. A good example of this, and the baseline of my solution is shown here, by Thomas Unzeitig:

This solution is using CKEditor, which is a tidy HTML/JavaScript based html editor, which means we can upload all of the web resources into a CRM solution and keep everything packaged nicely.

How it Works

I have made the solution dynamic enough so that it can be dropped into any form by simply embedding the html editor web resource into the form, and passing in the field name to store the HTML data.


You can also set the Formatting to display the number of rows required, and to disable the iframe scrolling and border for a nicer look and feel. The HTML Editor will automatically expand to fill the space available inside the iframe, however big you choose to make it.


You can also pass a default value into the HTML editor, which will be applied when there is no existing value (e.g. for new records). This can be useful when you want to ‘guide’ users into entering the HTML in a specific format, rather than just letting them loose.

The default value needs to be encoded, and then included in the custom parameters of the web resource. You can get the encoded URL string from the following webpage by pasting in some HTML and then clicking ‘Encode’: Copy the encoded string and add it to the web resource parameters after the field value, e.g. field=new_html&defaultValue=%3Cb%3EHello%3C%2Fb%3E


The defaultValue parameter is optional, and if not specified, the HTML editor will simply display nothing initially.

Next we can preview our form and see that the html editor just works. We can see the default value being applied, including the ‘bold’ styling, and our basic editing tools are available.


The data from the HTML editor will be saved to the ‘HTML’ field every time you click out of the iframe. This means you don’t need to manually ‘save’ the HTML, it will just automatically keep up to date by itself. After we’ve saved the form, we can reload the page and the HTML editor will load up the HTML from our field automatically.


We can now hide that HTML field (as long as it remains on the form), and the HTML editor will continue to work and look pretty.

The buttons/editing tools available in this solution are based on the ‘Basic’ package provided by CKEditor. This is because the basic package seemed to meet our particular needs as we didn’t require a full blown HTML editor, just some basic rich text editing tools. This also means the entire solution is only 17 web resources.

If however you do require any additional editing tools, you can check out the CKEditor download page and create yourself a custom download package, and then just be sure to upload the missing web resources using the same publisher prefix, and same file names, then update the config.js file to load those plugins as well.

Note that this solution works in CRM 2013 as well as CRM 2015, and works on any entities. You can also add the HTML editor to the same form multiple times, each referencing different fields.


Microsoft Dynamics CRM 2013/2015 Custom Alerts and Popup Dialogs JavaScript Lightbox

August 24, 2015



This JavaScript library for CRM 2013 and CRM 2015 allows us to create custom popup alerts in CRM forms and views.

CRM 2013 introduced light-boxes for most popups to make the UI look cleaner with less browser alerts and popups. However, these internal functions were not included in the SDK, so as developers we couldn’t access them for our custom code. Instead, we’ve been forced to use alertDialog and confirmDialog which under the hood just calls the browsers alert and confirm functions.

The main problems with this is that we cannot customize the buttons, and the alerts look ugly.

Using this library we can now hook into those internal functions allowing us to create our own seamless alerts and popups using custom buttons and custom callback functions for each button. We can also specify different types of icons to display in the alerts, instead of being forced to use the alert ‘exclamation mark’ or confirm ‘question mark’.

While technically unsupported, this code is manageable if it ever does break in future CRM releases, so it will be as simple as updating the solution files and everything will just work. In the event that the CRM Lightbox doesn’t work or isn’t supported (like in outlook), a modalDialog will be displayed.

How it Works

Download and install the unmanaged solution, then simply add a reference to mag_/js/alert.js wherever you want to use the custom alerts. This will work from forms, views, command bars, and pretty much anywhere in CRM that supports JavaScript.

Next simply call the function. All other dependent web resources will be loaded automatically.

Parameters: Title (main message), Subtitle (smaller message), Buttons (array), Icon, Width (px), Height (px), CRM Base URL

All the parameters are technically optional. If no buttons are specified, a default ‘OK’ button with no callback will be added. If no icon is specified, then no icon will be displayed. If height is not specified, it will default to 225. If width is not specified it will default to 450. The URL only needs to be specified if the alert is being called from somewhere that doesn’t have Xrm.Page access (e.g. web resource).

Each button object in the buttons array needs to have a ‘label’ (text displayed on the button), and optionally a ‘callback’ (function called if the button is clicked).

The following icons are supported: “INFO”, “WARNING”, “ERROR”, “SUCCESS”, “QUESTION”."Would you like to create a new Sale?", null,
        label: "Create Sale",
        callback: function () {
  "Sale created successfully!", null, null, "SUCCESS", 500, 200);
        label: "Not now"
    }], "QUESTION", 500, 200);



Microsoft CRM 2013/2015 Custom Notifications in JavaScript

August 17, 2015



This library gives developers the ability to create nice CRM notifications on forms and views, similar to the Xrm.Page.ui.setFormNotification SDK function, but better!

It gives us all the same functionality as the setFormNotification SDK function, but has the following additional features:

  • Allows you to add buttons and/or hyperlinks into the notification, with custom JavaScript triggered on click.
  • Supports additional icons, including SUCCESS, QUESTION, and LOADING
  • Supports custom HTML tags to be used manually in the notification message for greater flexibility
  • Ability to manually close a notification using the ‘X’ on the right hand side
  • Has smooth slide in and out transitions when adding and removing notifications
  • Ability to specify a duration after which that particular notification will disappear
  • Supports displaying notifications inside views from command bar buttons (only in web client – must specify duration)


Add Notification

Adds or overwrites a notification on the custom notification bar. Note that this notification bar is separate to the CRM Notification bar.

Parameters: Message, Icon, Unique ID, Buttons (array), Duration (seconds – optional)

All parameters are technically optional, if there’s no icon specified the icon will be removed, if the unique ID is not specified, the ID will be null (and any new notifications with no ID will overwrite that one), the buttons are optional and will display after the message in the order they are added to the array, duration is optional, and if not specified the notification will only disappear if the user manually dismisses it or if other code removes it.

Supported Icon types are: “INFO”, “WARNING”, “ERROR”, “SUCCESS”, “QUESTION”, “LOADING”

Each button object in the array should have a ‘text’ to display on the button or hyperlink, a ‘callback’ function to call when the button or hyperlink is clicked, and optionally a ‘type’ of ‘link’ or ‘button’ (defaults to button if not specified)

Notify.add("Would you like to create a new <b>Sale</b>?", "QUESTION", "sale",
        type: "button",
        text: "Create Sale",
        callback: function () {
            Notify.add("Sale created successfully!", "SUCCESS", "sale", null, 3);
        type: "link",
        text: "Not now",
        callback: function () {


Remove Notification

Removes one or all notifications from the custom notification bar. If an ID of a notification is passed to this function, that notification will be removed. If no ID is passed to this function, all notifications will be removed.

Parameters: Unique ID (optional)

// Remove a single notification


// Remove all notifications


Microsoft Dynamics CRM 2013/2015 Call Action, Workflow, or Dialog from JavaScript

August 10, 2015


This simple JavaScript library allows you to easily call workflows, dialogs, and actions in CRM from forms, views, web resources, or anywhere that supports JavaScript.

In the past if you’ve needed to call a workflow or action from JavaScript, you need to build a massive XML SOAP request making sure to pass in the correct attributes and conditions to get the request working.

This is tedious and messy, especially when there are many places you need to do this in a solution. It’s also not good if something breaks in the future and you need to go back and fix up all instances of where the code is being used.

For these reasons, I’ve created this library to simplify calling processes, and to make the code manageable going forward. But most of all, it’s so I don’t have to keep finding the correct way to build the SOAP requests!

For completeness, I’ve also included a function for calling dialogs, which simply pops open the specified dialog.

Call Workflow

Runs the specified workflow for a particular record asynchronously. Optionally, you can add callback functions which will fire when the workflow has been executed successfully or if it fails.

Parameters: Workflow ID/Guid, Record ID/Guid, Success Callback (function), Error Callback (function), CRM Base URL (not required on forms/views)


    function () {
        alert("Workflow executed successfully");
    function () {
        alert("Error executing workflow");

Call Action

Calls the specified action and returns the response from the action asynchronously. Useful when needing to run C# code from web resources or command bar buttons when only JavaScript is available.

Parameters: Action Unique Name, Input Parameters (array), Success Callback (function), Error Callback (function), CRM Base URL (not required on forms/views)

Each Input Parameter object should contain key, value, and type. Types are defined by Process.Type enum. EntityReference values should be an object containing id and entityType.

The Success Callback function should accept 1 argument which is an array of output parameters, each containing key, and value


        key: "Target",
        type: Process.Type.EntityReference,
        value: { id:, entityType: "lead" }
    function (params) {
        // Success
        for (var i = 0; i < params.length; i++) {
            alert(params[i].key + "=" + params[i].value);
    function (e) {
        // Error

Call Dialog

Opens the specified dialog for a particular record in a CRM light-box, or Modal Dialog if run from Outlook. Once the dialog is closed, the form or view is refreshed to display any new data changed by the dialog.

Parameters: Dialog ID/Guid, Entity Name, Record ID/Guid, CRM Base URL (not required on forms/views)


Process.callDialog("C50B3473-F346-429F-8AC7-17CCB1CA45BC", "contact",,         
    function () {; 


Multiselect for Microsoft Dynamics CRM

August 7, 2015

Supported way for multiple value selection in Dynamics CRM.
Tested on Dynamics CRM 2013, CRM 2015.



Get every new post delivered to your Inbox.

Join 32 other followers