Dynamics 365 Portal – When the Custom CSS won’t load.

Recently, I’m working on a demo that I need to skin the Dynamics 365 portal to have a look and feel based on the client’s theme. One of the pages is the dashboard/landing page that showing some charts.

Let say the URL of the page is called “Dashboard”.dashboard.png

It’s showing up the chart nicely. However, I would like to hide the out of the box chart title, as it seems always giving me a static name (based on the chart name in Dynamics 365, where sometimes I would like to label it to something else).


My approach is to hide this using CSS (display:none;). So, the usual way I change this is by opening up the Web Page record and add the CSS under the Custom CSS part of the web page.Web_Page_Custom_CSS.png

However, it doesn’t change the layout and even after I reset the cache from the “/_services/about” page of the portal.

My problem was solved by editing the web page via the portal itself. So, I navigated to the page, click on Edit and under the Options tab, I add the CSS there.


Once I’ve used this part to set the CSS, now the undesired element is gone.







Just Some Tips Working with Virtual Entities

Recently I spent some time working on Virtual Entities, one of the new features in Dynamics 365 v9.0. To learn more about Virtual Entities, you can read the official documentation here and how to set it up here. In this post, I would like to share my tips and findings working with Virtual Entities and connecting it to a custom oData v4.0 Web API.

During my attempt setting up Virtual Entity, I encountered a very generic error: “Entity could not be retrieved from data source.” for different problems.


The error message is not that descriptive and doesn’t provide further information for me to troubleshoot. I’ve submitted a feedback for this, if you also encounter the similar issue: https://ideas.dynamics.com/ideas/dynamics-crm/ID0003358

The tips in this post hopefully can be helpful to fix the above issue 🙂


So, to set the context, in my sample scenario I have a custom oData data source with metadata as below:


Tip #1 – Make sure the path is in the correct case (Upper/Lower)


I was under an assumption: oData seems to be just an URL, so if I throw in the path as all lower case it should be fine…

Well, one of the reason the error being thrown is because oData seems to expect case sensitive path. I entered “movies” instead of “Movies” and in the field mapping I put “rating” instead of “Rating”. So, make sure the mapping and path is the same as the metadata.


Tip #2 – Missing Field Mapping

In my experiment, I created a few extra fields that doesn’t match the metadata definition. Well, this should not create any harm right, just like other custom entity…

Apparently, when there is a missing field in the mapping, the virtual entity is showing the above error.

So, make sure you have the all fields to be mapped correctly and do not create any field that is not in the oData definition. Luckily, you can still omit fields that you don’t like (e.g: when I don’t have “ReleasedYear” field, the VE still works fine).


Tip #3 – Setting Field Requirement(s)

If you noticed my oData definition for Rating field, it is mentioned there: Nullable=”false”. If the oData set up the field to be mandatory, the corresponding field in the VE also need to be set “Business Required”VE-Field Requirement.PNG

Tip #4 – Be Careful with the “Numbers”

In my oData definition, I have the Rating field, which is a decimal field. But how about in Dynamics 365 we want it to be stored as a different field type, whole number or float instead? Well, VE doesn’t support that, so we need to ensure the field data type is the same from the data source to the VE’s field.

VE-Data type.png

That’s all for today. Hope this helps!

Dynamics 365 v9.0 Hidden Gems – #2 Configurations for a better UX

I’m continuing the hidden gems series of the Dynamics 365 v9.0. Today’s topic is about the UI/UX Configuration that is introduced in the Dynamics 365 v9.0. This is not about the “Hub” features that you can use the custom control, that would be a separate topic on the unified client. The configuration options that I’m going to share here is about the refreshed web UI.

Configuration Option #1: Multi-Select Option Set

It’s been a long waiting ask from the Dynamics Community to have multi-select option sets. In the past, workarounds for this are either using Many-to-Many relationship or flatten the selection within the entity. With this new enhancement to the platform, we can tailor the UX of the data entry to be simpler. The old workaround using Many-to-Many relationship requires the user to click the (+) button at the subgrid and it will pop-up the lookup window to select (lots of clicks here)


Compared to the new Multi-Select Option Set, where we can capture the data in a single location and less clicks.


Findings on the multi-select option sets:

  • Behind the scene, it is stored similar to the regular option set (a pair of value and label), which is good for reporting, it is not stored as just plain text, separated by comma or a specific character that makes it harder to report.
  • We are not able to update existing option sets to be multi-select option sets.

Configuration Option #2: Colour-coded Sub Grids

Another UX enhancement that we can apply with the v9.0 is around the Panel header color for Subgrids. In my example, I’m colour-coding case subgrids under account entity to be able to see open cases with the account by glancing the colour coded cases by priority.


The end result is:


Configuration Option #3: Allow Text Wrapping

In the past, it is another common feedback when we are configuring fields on the form, some of the fields are a bit more descriptive than the other. When it’s longer than the pre-defined label width within the section, the text will be truncated. The almost immediate feedback from the end users would be: I want them to be visible!

With the update of v9.0, the Web UI addressed this feedback to a certain degree. There is an option under the System Settings to allow text wrapping in form fields labels and value.

Allow Text Wrapping.PNG

So, I gave it a go and see a long text label for a single-field text. And it wrapped up to a few lines, which addresses the common feedback. yay!



From my perspective, these configuration options to the UI are giving some improvements to the usability and UX aspect of the application. With simple change and minimum effort, as well as doing it in a supported way, we can improve the UX of the system.


Dynamics 365 v9.0 Hidden Gems – #1 Autonumber

The Dynamics 365 v9.0 for the online deployment has become available since a few days ago. I believe we are all excited with this new release. There are major improvements in a lot of areas such as the unified client (a.k.a refreshed UI and great potential ahead), platform enhancements (Virtual Entities, Microsoft Flow integration directly from Dynamics 365), Hubs – this was the Interactive Service Hubs, being extended for other modules (Sales, Service, Project Service, Field Service) and many more.

Yet, there are few hidden gems that can be uncovered from the v9.0 update that could be a life saver in the Dynamics 365 projects. I’m starting the v9.0 Hidden Gems series to run through the hidden gems. I’m going to start with the first one: Autonumber. And no, this is not the same Autonumber that is available for some of the out of the box entities like case, invoice, order, etc

not the autonumber.png

This feature was announced by Matt Barbour at Microsoft Ignite Conference, the recording is available at this Youtube video. At this moment, this feature is available from the API only and there is no explicit documentation available yet.

At high level, this Autonumber features could generate the number with below features:

  • Date format
    • Syntax: {DATETIMEUTC:[format]}
  • Sequential Numbers
    • Syntax: {SEQNUM:size}
  • Random String
    • Syntax: {RANDSTRING:6}
  • Static string
    • Any string component that is not using the above syntax will be treated as static string.

Sample code snippet from Matt’s presentation:

Autonumber code snippet.png

Given at this moment the documentation is not available yet and it is only available via the API, this is a bit tricky for Admins/System Customisers to work on this feature. Luckily, the Dynamics 365 community is really reactive to this and there are few helper tools available.

Option 1: AutoNumManager – XrmToolBox Plugin by Jonas Rapp


You can read the instruction on how to use it at: http://anm.xrmtoolbox.com/ and download the plugin from GitHub: https://github.com/rappen/AutoNumManager/releases

Option 2: Easy AutoNumber by Dimitri Chevkov

Another option if you would like to configure the Autonumber from the Dynamics 365 itself. This solution is provided as Dynamics 365 managed solution: https://dynamics365heroes.com/2017/10/02/easy-autonumber-utility-dynamics-365-july-2017-update-v9/



So, I’ve tried the Autonumber features and would like to share some of my findings here:

  1. This autonumber attributes apparently more robust from the Workflow/Plugins workarounds that some people might have developed. It could handle a good degree of parallelism. My PoC was using KingswaySoft to load 5k contact records with bulk operation enabled and using balanced data distributor to do 2 parallel runs. I cannot find any duplicate number with this testing. While the other Workflow/Plugins workarounds produced duplicate records on Dynamics 365 Online environment.
  2. A common question that often been asked by customers: can we specify the starting number? The answer is yes. I looked at Jonas’ XrmToolBox plugin and there is a field to fill in called “Seed”. Here you can specify the starting number for the sequence. Note: from Jonas’ blog post, modifying Seed could potentially generate duplicate numbers.
  3. Multiple Number Sequence within a single Autonumber field is not possible. It seems it is using the same “counter”.
  4. It could not refer to other values within the entity or related entity, where some of autonumber requirements asked for the number to be sequential based on the parent entity. E.g: Custom Case numbering with parent child case, where the child case should use the parent case number as prefix and add the sequence at the end).
  5. At this moment there is no known way to update existing “bespoke” autonumber fields to use this autonumber feature. I read Jonas’ experiment and it seems there are some placeholders within the entity metadata where the autonumber definition is stored. And it seems a bit risky to re-engineer the existing field with something new. If organisations would like to leverage this new autonumber feature, they might consider using a new field, which might impact existing reporting/integration.



Hide the Dynamics 365 script error pop-ups

A colleague of mine recently mentioned that one of our clients is complaining about the script errors that keep pop-ing up. It happens even on a new sandbox instance.


This issue seems to be a classic recurring theme for everyone. So, I would share it here as a “reminder” for myself as well.

First, as an admin, navigate to Settings > Administration > Privacy Preference 


And select either to automatically send the error report or never send


Extra Info

If you would like to see what is going to be sent to Microsoft (in case there is a legitimate error). Click the “view the data that will be sent to Microsoft” to see the real error.


So far, I’ve seen very few informative log there. But it has saved me once or twice in troubleshooting real issues.




What matters with the Dynamics 365 v9.0

A quick disclaimer: this article is based on the preview program where the actual might differs.

Last week, I spent some more time watching again the recording of the Executive Briefing for Dynamics 365 July 2017 Preview Program. There is a massive load of good content and updates to Dynamics 365 in this next release. Traditionally, the preview program is under NDA and things that mentioned there are not for public consumption. However, a shift has happened in the direction of the preview program, where the information available there is no longer under NDA. A fellow MVP, Jukka Niiranen, posted a really good summary of this information on his blog: http://survivingcrm.com/2017/06/all-you-need-to-know-about-dynamics-365-v9-0-for-now/.

After spending a few hours digesting again the recording, I would like to share a few key things that I’ve learned and thought as the outcome of the Executive Briefing as well as from documentations that are currently available.

An Exciting UI Revamp


The Unified Client that was mentioned during the Executive Briefing addressed quite significant issues of usability of the system. Reduction of white spaces, better tab navigation, text not to be wrapped anymore is a good sign for the usability. With this change, we all hope that users adoption would become much better. Now, when we are talking about user adoption, Dynamics 365 customers might need to start considering and thinking the plan for the change management. From my perspective, the more preparation of the change is the better user adoption will be.

Business EditionGuided Setup For Business.jpg

During the Executive Briefing, it was mentioned that the Business Edition (BE) will start with Sales & Marketing module and other capabilities will follow. The setup experience with the Business Edition seems to be simplified that much for the admin to setup, which is positive in a way. However, since it’s a new thing, everyone needs to learn it.

Simplified Settings.jpg

A few things that I noticed, would be as usual on what can/cannot be done in Business Edition. This screenshot from the presentation slide outlines the high-level limitation on Business Edition when it’s compared with the Enterprise Edition.

Business Limitation.jpg

And as per the first release, based on the question during the briefing, it seems there is no downgrade path for Enterprise Edition to Business Edition, at least for now.

No Downgrade.jpg

However, it seems to be possible to run Business and Enterprise edition in the same environment (still TBC though..)


And with the Business Edition, the configuration experience will also be different


My quick takeaway from the Business Edition: Be prepared to learn something (completely) new!

Platform Changes, Shift of Paradigm

With these exciting updates to the platform. Designing a Dynamics 365 solution is now no longer silo-ed within the Dynamics 365. Noticed that Microsoft Flow and Azure Logic Apps are becoming an integral part of Dynamics 365 solution. More and more integration and solutions will leverage this “native” capabilities (also become a space for us, Dynamics 365/CRM professional to start investing our time to learn).


With the Webhook supports, it opens up greater possibilities for Event-Driven processes/integration. This will work nicely with Azure function or any other APIs that support Webhook.


And Virtual Entity (this could be the end of data replication mindset)


Deprecation Announcements

With the release of v9.0, there are some components that are made deprecated.

  • Outlook Client
  • Service scheduling in Dynamics 365 for Customer Service
  • Dialogs
  • Parature knowledge base as the Dynamics 365
  • Project Service Finder app
  • Contracts, Contract Line Items, and Contract Templates
  • Standard SLAs
  • Relationship Roles
  • Mail Merge
  • Announcements
  • Silverlight (XAP) web resource

For more detail, have a read on Microsoft’s official documentation on this: https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming

The deprecation announcement is important for us to start planning on how to handle the deprecation and move on with the latest available feature and start adopting the new feature for new implementations. The interesting ones are around Outlook Client, Dialogs, Contract-related entities and SLA. I believe this will require more planning.

For example, rolling out the new Outlook App might have some infrastructure/desktop rollout impact, as the current Outlook App has some compatibility gap with older version Exchange Server and Desktop Outlook (ref: https://technet.microsoft.com/en-us/library/dn946901.aspx). Office 365 definitely solves the upgrade/infrastructure compatibility issue (another compelling reason where organisations should start considering moving to the cloud ;)).

Currently, Dialogs are there as the only way to prompt users for a value that can be consumed by the processes/workflow. Without any equivalent replacement, this could be a tricky situation. Some organisations might still using the contract-related and older SLA, and they work fine. If it becomes deprecated, then a change to the system is required.

Changes for Developers

Within the same documentation above, there is a section on “Some client APIs are deprecated” and I noticed the popular Xrm.Page library is now deprecated. This is in-line to support the new Unified Client structure. This means a really good planning needs to happen to be prepared with this release and start learning the new Client API/library.

For more details, there is another documentation from Microsoft for developers: https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/new-in-july-2017-update-for-developers


Dynamics 365 v9.0 is indeed a major upgrade, not only from the versioning, but also with the content. We all need to be ready to learn A LOT of new things and start embracing the latest and the greatest of the features to stay supported and ready for “undeniably” rapid changes to the platform. At this moment, we are just scratching the surface of the Dynamics 365 v9.0, I believe there are more to be unveiled and really excited about it!

Last but not least, even though the “briefing” for the upcoming preview program has completed, nothing is too late. Please feel free to sign up at https://connect.microsoft.com/DynamicsCustomerEngagement/

Microsoft Teams: Tips to Change Date/Time Format

We, at Barhead has just started our Microsoft Teams journey earlier this month. One thing that we noticed is that by default of standard installation every date/time formatting are in US format. Below is a sample of conversation log between me and my colleague. The conversation was happening a few weeks ago, which is still in the month of April, but the one showing below seems to be reverse of Australian time format (dd/MM/yyyy) and showing US format (MM/dd/yyyy).

Chat Log

So, I found out the way to change the date time format is by changing the Language. To change the language: Click on the “profile” icon at the bottom left of the application, and click on Language:


This then will open the selection of the language. Select your language. Note: in this window, Microsoft Team also specify that language will determine the date and time format.


Click Save and Restart to see the changes being applied!