You are currently browsing the tag archive for the ‘CRM 2013 Online’ tag.

Configuring Entitlements in Dynamics CRM allows us to define how many cases are available to a customer for a certain duration. This functionality was introduced with Dynamics CRM 2013 SP1 in spring 2014. You must upgrade your Dynamics CRM 2013 Organization to Service Pack 1 to take advantage of this functionality.

When configuring entitlements by channel, there is one trick to be taken into consideration. Let’s say for client ABC we need to define entitlements for regular communication channels, like Web, Phone and Email. We also need to define a separate set of entitlements for social channels like Twitter and Facebook.

You need to actually configure in all Entitlements all Channels in order to be able to filter by channel.

Read the rest of this entry »

As notified by the InsideView Team, v3.2 introduced with the Dynamics CRM Online Spring 2014 release has a bug which can produce JavaScript errors that pop-up sporadically in a contact record. A fix has been release, and v3.3 can be downloaded from here.

The recommended approach is to un-install the old package and then install the new one.


Other than using Bing, you can easily integrate other geo-location sources. One of the most enterprise level solution is of course Esri Maps. They have a very good solution for mapping. They can also be pricy, so if you are looking for a solution on the cheap, and are not afraid of doing very little coding, read on.

Google Maps provides a very robust mapping API. You can find more details HERE.

To integrate this into your existing CRM, you will use an iFrame, and a custom HTML web resource. Your HTML will include a div tag with an id of “geolocation”. You can use another id, we’re using “geolocation” in the context of this example. Basically, your div will look like so:

<div id="geolocation" style="width: 800px; height: 500px;"></div>

Define the style width and height as needed to render properly within the iFrame at a standard screen resolution set at the enterprise level.

Pass the context to the iFrame, so you can retrieve the address fields. You will use these to build the address string you pass to retrieve the longitude and latitude.

With the new v.3 of the maps API, you do not need a API Key anymore, which makes it a lot easier to move your solution between various environments, and to have the solution internal only (no IFD).

When calling the API, if your CRM is set to use HTTPS, use the HTTPS Google API URL, otherwise use the HTTP address.

Add in the header of your HTML web resource the reference to the JS library:

<script src=""></script>

In this example I am using HTTP.

In your HTML web resource, first function you want to call on page load is a function that takes the value of the address fields, and concatenates it all into a string. It will be along the lines of:

var _address = street + city + province + country + postalCode;

check and use only the fields where you have a value populated.

Once you have this address as a string, pass it to the first function that converts the address into latitude and longitude. This will look as follows:

ParseAddress: function(address) {
    var url = "" +
    "address=" + address +

    var xhr = base.createCORSRequest(‘GET’, url);
    if (!xhr) {
        alert(‘CORS not supported’);

    // Response handlers.
    xhr.onload = function () {
        var text = xhr.responseText;
        var _start = text.indexOf("\"location\" :") + 12;
        var _location = text.substring(_start, text.indexOf("}", _start) + 1);


    xhr.onerror = function () {
        $("#message-area").append("Woops, there was an error retrieving server data.");


This example is using CORS. CORS stands for “Cross-Origin Resource Sharing”, and for more details on CORS see the W3C documentation HERE.

This function makes a call to the Google API and on successful retrieval of data, calls another function called Initialize, passing the trimmed returned string that includes the location lat and lng.

The Initialize function takes this location, builds the map representation, sets the zoom on it, and drops a pin at the location provided by the coordinates:

Initialize: function (_location) {

    var jsonData = $.parseJSON(_location);
    var _bGeoLocation = new Array();
    _bGeoLocation = jsonData;

    var myOptions = {
        zoom: 16,
        center: new google.maps.LatLng(_bGeoLocation .lat, _bGeoLocation .lng),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    // Draw the map
    var mapObject = new google.maps.Map(document.getElementById(“geolocation”), myOptions);
    // Place the marker
    new google.maps.Marker({ map: mapObject, position: userLatLng });


Et voila, now you have a map with a pin on it pointing to the record’s address.



The Microsoft Dynamics CRM Spring ‘14 Release Preview Guide has been released. Get your copy from HERE.

New exciting features are being announced. It’s definitely worth a read. Some of the highlights include:

Enhancements to Marketing – visual campaign designer. There’s lots of hype around this one in the Marketing circles.

Lead scoring enhancements, including scoring on recency and frequency.

Power BI for Marketing – calculate ROMI.

Insight – bring in real-time organization and contact information. Social Buzz and breaking news features added. Aggregate data from various social networks and other sources (blogs, Facebook, Twitter, LinkedIn, Outlook and connection sharing).

Unified Service Desk – handle multiple sessions simultaneously, as well as better visibility into key metrics.

Enhanced Case Management – merge cases, relate cases (parent-child), SLA support, automatic case creation. Also Social Case monitors social networks and identifies trends.

Parature – customer portal, Facebook portal, real-time chat. In addition, Parature adds enhancements to mobile, and to KB, finally supporting extended formatting of articles, and support for various media files.

Server-Side Sync for Online

Definitely looking forward to this big one!

At odd times you will be faced with some of the confinements of the new UI. One example is using an Option Set at the bottom of a section. After publishing you find that the actual drop-down is only showing two lines at a time. This is an undesired effect of the new UI. You are confined to a container, and the dropdowns do not know to extend past the borders of the container they live in. Here is the design:


And here is what you end up with on the published form:


Indeed, not very user friendly, especially when your selection list is longer.

Of course, you could try to relocate the control somewhere up in the container, but what if that field makes logical sense to be at the bottom of that container?

The solution is quite simple, the friendly Spacer comes to the rescue. Take a Spacer and add it to the bottom of the container. Now your form designer will look like so:


And now the users can breathe easy, as they can see a proper drop-down with more lines:


Add as many spacers as needed until you get it looking the way you want. Be mindful of the blank space you create underneath though, don’t exaggerate.


Just a quick note, for those implementations taking advantage of script customizations, if you are using


when upgrading to UR2, remember to check your scripts. This method is now deprecated.

For more details see HERE.

Happy scripting!

The Dynamics team is at it again. They’ve added support for Sandboxed instances to Dynamics CRM Online. This is a great feature to customers using and evolving constantly their Online CRM environments.

Some of the key features I like include:

  • Clear visibility into which instance you are using. The Orange nav bar background stands out clearly to show you you’re not in production.
  • Reset and copy instances, with various copy options.
  • Admin mode – keep your sandbox closed until it’s ready, including stopping processes that might talk externally.


This is great news. For more information see their article HERE.


This promotion is getting close to an end, there’s less than a week left. For those interested, you can get Dynamics CRM Online for 40% off if signing up with more than 50 users, or 30% off for less than 50 users.


This promotion expires March 31, 2014.

See more details HERE.


This is another new feature of Dynamics CRM 2013. While in previous versions, we used to use JScript alerts to bring up field specific messages on forms, now we have two new functions available:




So how do we use then, and what do they do?

First off, let’s bring up a message on a field if a condition is met, or clear it otherwise:

function SetCustomNotification(controlName, controlMessage)
    var field = Xrm.Page.getControl(controlName);
    var condition = [evaluate your condition here];
    if (condition)

Pass in strings for controlName and controlMessage.

Set your function on either the onChange event of the field, or on the onSave event of the form. If you set it on form save, it’s a good idea to stop the save if the condition fails and the message comes up.

And the end results is your custom message showing as below:



Images are a new feature of CRM 2013. We can now easily associate an image to a record. In 2011 we had to add images either as Web Resources and reference them, or create custom scripts to pull images associated to Notes and display them on the records. Now, by default, CRM adds the image fields to 24 out of the box entities, and enables them to 8 of them. They are, in no particular order:

  1. Account
  2. Contact
  3. Competitor
  4. Lead
  5. Product
  6. Published
  7. Resource
  8. System User

It is very easy though to enable these images on to our new custom entities. These are the steps to follow:

1. Create a new field of type Image. Be aware that only one field of type Image can be added to an entity.


2. Go to the entity’s General tab, and set Primary Image to the entity image field created.


3. Go into form customization, and in Form Properties check the box for “Show image in the form”


4. Navigate to the record, click on the image container, and associate an image. The images have to be less than 5Mb in size. The actual rendered image is 62×62 pixels on the entity form:


or 40×40 pixels for the user profile in the top-right:


Some limitations include the fact that location is fixed to top-left corner of the form, and there is no direct way to resize it.


Data Grid “+” does either Add New or Add Existing

So, hypothetical situation, I need a data grid on a custom entity (call it Group) to allow me to add existing related records of Users.


Followed the steps as such:

  1. Go to User, add a new lookup field Group, and make it Business Required
  2. Go to the Group custom entity and add a data grid to Users
  3. Save and publish all customizations.


Now, the interesting behavior is that, once you navigate to Group, and click on the “+” sign to add a reference to a system user, you get prompted directly to create a new user. But that’s not what I want. I just want to associate an existing user to the Group.

Turns out that it matters a lot how you define the group lookup on the User form. Here’s how it works:

If the lookup to Group is defined as Business Required on the User form, then in the Group form data grid the “+” sign will create a New User record.

On the other hand, if the lookup to Group is defined as either Business Recommended or Not Required, then in the Group form data grid the “+” sign will open up a lookup field, allowing you to reference an existing User.

Just something to keep in mind when working with relationships.


Often times we created scripts with alerts to the user, or getting some sort of simplistic interaction with the user. Some of those do change in Dynamics CRM 2013.

If we used window.alert or window.confirm now it’s time to stop that. The new SDK has a warning for us to use the newly provided functions.


instead of using window.alert now the recommended way is to use

Xrm.Utility.alertDialog(message, onCloseCallback);


instead of using the old window.confirm now we should use

Xrm.Utility.confirmDialog(message, yesCloseCalback, noCloseCallback);

Observe the use of the callback function to continue processing your business flow.

Unfortunately these are only available for the entities where the UI has been updated, but they will definitely come in handy.

The change was prompted by the support for all browsers, and the use of tablets and other devices. On tablets, calls to functions that block the flow of code is not allowed.


MVP Reconnect

Check out my course [Video]

Dynamics 365 Customer Engagement Administration

Dynamics 365 Customer Engagement Administration

Check out my course [Video]

Configuring and Extending Dynamics 365 Customer Engagement

Configuring and Extending Dynamics 365 Customer Engagement

Check out my course [Video]

Getting Started with Dynamics 365 Customer Engagement

Reviewed Book

Implementing Microsoft Dynamics 365 for Finance and Operations

Implementing Microsoft Dynamics 365 for Finance and Operations

Reviewed Book

Microsoft Dynamics 365 Extensions Cookbook

Microsoft Dynamics 365 Extensions Cookbook

Check out my Book

Microsoft Dynamics CRM 2016 Customization - Second Edition

Microsoft Dynamics CRM 2016 Customization - Second Edition

Check out my Book

Microsoft Dynamics CRM Customization Essentials

Microsoft Dynamics CRM Customization Essentials

Check out my Book

Reviewed Book

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 609 other followers

Follow Dynamics 365 Wizardry on