Tip #1103: Chart styling cheat sheet

This post concludes chart week fortnight on CRM Tip of the Day. Thanks to Ulrik for these great tips.

It isn’t always obvious where to go in the chart XML to make changes to certain areas. We’ve created this handy cheat sheet so you can see where to go to change what in the chart.


Besides the chart type for the series, you can set

  • Color of the series
  • Custom text for the legend
  • Visibility in legend
  • Label and formatting of each data point
  • Borders on the bars/columns

Series CustomProperties

Special properties specific to the chart type chose for the series.

  • Label positioning (i.e inside/outside/left/right/etc.)
  • Width of bars/columns
  • Drawing styles (make bars look like wedges or cylinders)
  • For pie/donuts and funnel charts there numerous custom properties


Background colors and borders


The axis has the most properties. Here are some of the most commonly used.

  • Custom Axis Title, font size and alignment
  • Max and Min values for the axis
  • Line of axis width, color, and style
  • Interval between values on axis
  • Crossing if you need a break different than zero (useful for survey results)

Axis LabelStyle

Value formatting for the axis


Notes and comments to place on the chart in a specific place.

Tip #1102: Use hatch style in your charts and dashboards if you have color blind employees

One of the silent minorities in business are color blind people. Since dashboards rely on color coding to tell the different series apart, decoding those charts can be challenging for some users. Now, the palette of colors that comes out-of-the-box are generally chosen so people who have a form color blindness will still be able to distinguish the series, there can be situations where you need more than that.

About 4.5% of the population are color blind which equates to roughly 14.5 million Americans.

Imagine some of your users see your charts like this.

The quickest way to edit this is by using the Advanced Chart Editor for the XrmToolBox.

Open your chart and click on the visual editor.

 Navigate to the series and find the BackHatchStyle property and select a style. Do this for one of the series, or multiple if you have more than two.

Save and update the chart.

Now the users can distinguish between the different series based on the pattern.

(Facebook and Twitter cover photo by Anthony Menecola on Unsplash)

Tip #1101: Add a scale break to charts

Whenever you have a chart that combine very high and very low values, it can be difficult to assess individual columns. For these situations, you can add a scale break to the chart.

Adding a scale break gives you a better view of how the comparative segment are doing against each other, but you will lose some detail on how those segments are positioned in context of each other. Make sure you are only using this feature when relevant.

As usual, we will bypass the export, manual editing, and the import of the chart XML and just open the chart in the Advanced Chart Editor for the XrmToolBox.

Right click on the axis where you want to apply the scale break. This would almost always be the Y axis.

Insert the scale break.

In theScaleBreakStyle node options make a selection in the following settings.

Not all the settings are required, but make sure Enabled is always set to “True”.

Remember to click Save and the update the chart.

Scale breaks are great for emphasizing differences for similar values within a mixed set. If you have a set of data in a bar or column chart where all the values are very high with subtle, but important variations you can start the axis at a value that is not zero.

Instead of adding a scale break to the Y axis, find the property called IsStartedFromZero and set the value to False.

Then save and update the chart.

Now you have a chart where the variations in the values are easier to identify. It is possible to set your own starting value on the axis directly, but this property automatically identifies the best starting value. While you could use this property in conjunction with the scale break, it would be poor practice in most cases as the properties serve different purposes. When using the IsStartedFromZero = False option, we recommend either emphasizing the values on the axis itself, or adding an annotation notifying the user that this axis has a different starting point.

(Facebook and Twitter cover photo by Rainer Krienke on Unsplash)

Tip #1100: Consider using parallel workflows instead of if-then statements

(The chart fortnight by Ulrik “CRM Chart Guy” Carlsson is interrupted again. Well, we I did mess up the tipping sequence so you’ll see the same things reappearing during the week in case you went off the grid over the weekend. Back to you, Leon. – t.j.)

I am not a fan of the term ‘citizen developer’ when it is used as a synonym for ‘undisciplined developer’. There are plenty of ‘real developers’ who code for expediency, rather than for longevity. Whether we are using workflows, ‘real’ code or Flow, there are good habits we can adopt to make our work easier to manage and maintain.

This tip comes from discussions with my colleague Olena ‘disciplined developer’ Grischenko in regards to portal forms and workflows. Essentially, in this scenario, a form was submitted via the portal and then a workflow massaged the resulting record, as required. Initially we only had a few forms so it was tempting to have one workflow do the work.

If form is 'x' then do this

If form is 'y' then do that

If form is 'z' then do the other

If this, that, and the other were identical, we could call a child workflow or action, but this cannot be guaranteed.

The problem is there is a good chance we will be adding more forms in the future. It is easy to see that a few dozen forms later we have a really long workflow which we have to trawl through to find the steps which relate to our form. It will make debugging difficult and, if we are running an agile project with multiple developers working on different form stories, they could tread on each others’ toes as they all modify the same, long workflow.

The alternative is a workflow per form. Each ‘if’ becomes a different workflow. While this means dozens of workflows instead of dozens of ‘if’ conditions, we can manage this more easily through naming conventions and the search tools we have for views of records. It also means we can put a small change in a solution file instead of loading a huge workflow with only a tiny tweak (or multiple tweaks for multiple stories which we have to test en masse).

Using multiple, small workflows is easier to read, easier to manage, and we stop the developers from clashing with each other. A good, disciplined approach.

Tip #1099: Add Annotations to Charts

After a brief interruption, we continue the chart week fortnight by Ulrik “CRM Chart Guy” Carlsson.

Do you need more descriptions in your charts, or maybe add a little corporate branding, look no further than the Advanced Chart Editor for the XrmToolBox.

You can add more text to your charts via a node called annotations.

In the Advanced Chart Editor for the XrmToolBox, open the chart you want to add annotations to.

Sometimes the Annotations show up automatically. If they do not, complete these two steps first.

Right click on the main “Chart” property and add the Annotations.

Right click on the annotations and add a TextAnnotation.

Select the TextAnnotation and fill in the properties.

The X and Y values controls the positioning of the annotation.

You can add more than one TextAnnotation if you need more descriptions in different places on the chart.

Tip #1098: Dynamics 365 Connected Field Service Demo Builder

We interrupt the chart week fortnight by Ulrik “CRM Chart Guy” Carlsson to bring you the all important message from “Hey, look, kids: Big” Ben Vollmer.

Installing and configuring Connected Field Service for Dynamics 365 can seem confusing to some customers and partners. With the “hard” work done in Azure, it takes some getting used to.

Using this, you can literally install Connected Field Service from AppSource, click on https://builder.cfsdemo.com, sign in, and this will do all of the hard work for you. As you can see in the video below, I can change the Temperature and Azure Stream Analytics in under 3 minutes.


Tip #1097: Change chart labels on currency values to show in Millions or Thousands

The chart week by Ulrik “CRM Chart Guy” Carlsson continues!

Do you think it’s relevant to know if the pipeline for a given sales person is USD 2,878,345.13 or is a simple USD 2.88M in a big font just much quicker to read.

The chart XML allow you to modify the number formatting as above by adding LabelFormat=”##,##M” to the  chart XML’s series properties. Luckily, you don’t need to remember any of that if you have the XrmToolBox.

Open the desired chart in the Advanced Chart Editor for the XrmToolBox and navigate to the series you would like to change.

In the LabelFormat dropdown field, select the desired K, M or B (Thousands, Millions, Billions) formatting. You should also increase the font size at the same time.

Remember to click Save and then update the chart.


In the LabelFormat dropdown there are a few additional options. The items with multiple formats separated by a semicolon also indicates formatting for negative numbers and zero, so you can have different formatting for those and possibly suppress zeros.

You do not have to select any of the predefined options. In the field you can type in your own custom formatting and include text in single quotes. For example, you can add ‘USD ‘ to add a currency description.

If you run into issues with the text strings, adding the text part in single quotes can help.

For full details on what you can do with the LabelFormats, check out this cheat sheet.

Tip #1096: Apply Power BI theme to regular charts

The chart week by Ulrik “CRM Chart Guy” Carlsson continues!

Let’s be real. Everyone loves Power BI, but did you know that it is mostly because of the fancy colors.

Well, your regular old real-time charts, that updates way way faster than a DirectQuery Power BI visual can have fancy Power BI colors too.

Open up your XrmToolBox and open the Advanced Chart Editor.

Select your entity and chart and open the visual editor.

Click on the first property named chart and change the PaletteCustomColors to the second option.

Hit Save, then update the chart and refresh your view in Dynamics 365 to see the changes.

You can of course use the tool to further modify to get the chart style even closer to the Power BI look.

The two custom palette options are the standard color scheme in Dynamics 365 and the standard Power BI color scheme. The latter has been added to the tool as an Easter egg.

You can also add your own color schemes to the tool. More on that on CRM Chart Guy’s blog here.

Tip #1095: Add percentage labels to pie charts

Welcome to chart week! This week on CRM Tip of the Day, Ulrik “CRM Chart Guy” Carlsson brings us a chart tip every day.

When you create a pie chart on the est. revenue on opportunities broken down by account, or any other currency field, the pie chart automatically displays the value of the slice in the label.

Sometimes, showing the percentage instead of the actual value can be useful. Especially as the pie chart is really intended to show the relative proportions of the individual groups.

Luckily it is very easy to change the labels from the long, two decimal values to a percentage value.

Open the XrmToolBox and open the Advanced Chart Editor. If you don’t have it, you can find it in the plugins store.

  1. Load the entities
  2. Select the opportunity entity to retrieve the charts. Or whatever entity the pie chart you are changing is on.
  3. Select the chart by clicking on the name so it is highlighted in blue.
  4. Then click on Edit Chart.

Click on Open Visual Editor.

Navigate to the series node and change the following values.

  • Font Type to Verdana
  • Font Size to 20
  • IsValueShownAsLabel to False
  • Label #PERCENT

Don’t forget to click Save, then click Ok, to get back to the standard editor.

Click Update

Your updates to the chart XML will now be updated directly in Dynamics 365 without needing the export/import of the XML file.

In Dynamics 365, open view and chart, or if already open, simply refresh the grid to see the updates.

Tip #1094: It is Time to Go with the Flow

Microsoft is making lots of noise of late about the soon to be released Spring Release. One of the key takeaways from those announcements is that PowerApps and Flow are a key element of the future for app development in Dynamics (Canvas Apps, as they call them). If you still think PowerApps and Flow are the playthings of non-developers to do things poorly until a ‘real’ developer arrives, you are holding yourself back from a world of opportunity and it is time to embrace the new.

Of course, at TOTD we have encouraged you to embrace PowerApps and Flow before but here I will drill down into how Flow works, especially in regards to Dynamics 365.

First of all, you can go to flow.microsoft.com and sign up for a free trial account. Once you have done this you can look at the sample templates but there is not a huge amount for Dynamics 365 so I say jump straight in and build your own. You will need a Trigger (similar to the triggers used to run workflows in Dynamics 365) and, once triggered, you will need the Flow to do something via Actions (just like steps in a workflow).

The triggers we have are at the record level and are:

  • OnCreate
  • OnDelete
  • OnUpdate

While we can make all sorts of apps do something via an Action, for Dynamics 365, we can:

  • Create a record
  • Delete a record
  • Retrieve a record
  • Retrieve multiple records
  • Update a record

We can also run Flows on demand via the mobile Flow app and, unlike workflows, we can schedule Flows to run regularly at a specific time. There really is a lot of power here waiting to be unleashed.

If you are familiar with creating workflows, none of this should look too difficult and I assure you making the leap to Flows will not be a large one.