How to customize the Dynamics 365 Field Service schedule board
- Posted on February 19, 2019
- Estimated reading time 4 minutes
![D365FieldServiceboard_hero](/-/media/d365fieldserviceboard-hero.jpg?vs=2&w=1120&la=en&hash=1120DA285B6C9069791B5BB04EF76401)
This article was originally written by Avanade alumn Jandost Khoso.
The Microsoft Dynamics 365 Field Service schedule board is a masterpiece. It allows resources and schedules to be viewed on a nicely designed user interface. I have been working on a project where we had to customize the board, and would like to share my experience as well as some practical tips that may help others in the D365 community.
Field Service Schedule Board Customization Capabilities
Before going further and talking about actual customization, let's set the stage. The schedule board functionality can be extended using the "Scheduling Board Setting" button on the schedule board.
The setting tab allows you to change the information displayed in the scheduling assistant, requirements section, and tooltips on various items on the board.
![Dynamics-365](/-/media/images/blogs/tech-and-specs/dynamics-365.png?vs=2&la=en&hash=0331A3C16E258BB8EADABECAE56D306F)
The setting tab allows you to change some important components of the schedule board:
Filter Layout where you can configure the way the filter section of the board behaves
Resource Cell Template where you can configure what information to display on cells in the board
Retrieve Resources Query where you can configure what resources and resource attributes to retrieve
If you want to make extensive changes in the layout of the filter section and resource information, I highly recommend reading this article. The concept behind configuring the schedule board is based on Universal FetchXML, or UFX, which you will need to understand before configuring the schedule board. UFX is an xml-based query language which provides dynamic query capabilities that you can use to manipulate data. A sample of UFX in action can be seen here.
The Challenge
Let’s look at a real organization’s needs based on two requirements:
1. The requirement was to see resources automatically sorted on load of the schedule board based on their distance to work order location.
2. We were dealing with contacts as resources and each contact belonged to an organization. The challenge was that many contacts had the same name (ex. “John Smith”) so when the client was looking for resources, the schedule board displayed many duplicate names in the list. The requirement was to show the contacts’ parent organization in a separate column so that users could differentiate contacts based on that context.
The Solutions
1. The solution to the first requirement is not yet available. The schedule board provides the sorting capability based on each column, however, users should click on the column header manually to sort records. The platform itself provides the capability of sorting by Name and Rating; but otherwise, sorting is not available for any other fields. We provided our feedback to Microsoft’s support team and look forward to seeing additional sorting capabilities in the platform in the future.
2. While the current version of D365 does not offer a way to add a contact's parent organization as a column to the schedule board, through UFX we found a way to add a contact's parent organization as a string to the contact name. The good news is that sorting based on parent organization (or any other field available in the Retrieve Query) works perfectly on the schedule board.
The first step to add a contact's parent organization is to include the required data elements to the Retrieve Query. This can be done by including additional data elements directly from the Bookable Resource entity or by using LinkedEntity to connect data from related entities. For our client’s scenario, the default query brings the msdyn_organizationalunit field as part of the original query.
Since msdyn_organizationalunit is a lookup, we took one additional step to retrieve the "value" of the lookup and include it in our query results. We added the following snippet into the query:
![dynamics-365-techs-specs-three](/-/media/images/blogs/tech-and-specs/dynamics-365-techs-specs-three.jpg?vs=1&la=en&hash=CBC99555F528F2123BA1F14DC3032626)
To do it, we had to scroll down to the last part of the query and insert this code before the closing: </bag>. If you look closely you will see that we used msdyn_organizationalunit/@ufx-formatvalue to obtain the name of the lookup. Then, we assigned the name of lookup to a tag with the name of "orgname". The explanation of all UFX directives is here.
At this stage we retrieved the value of parent organizations and in the next step we had to display the value in the first column. Since we already stored the value of organizational unit in the variable "orgname", all we had to do was to include the "orgname" in the Resource Cell Template. Here is how we did it:
We just added a "-" and {{orgname}} directive to get the value of organizational unit from the Retrieve Query, and below is the output.
For the last step, we sorted resources based on the Resource Type and we did it just by changing the sort order in the Retrieve Resource Query as following:
Looking to connect your field service program with the right data to improve your operations? Contact our Sales and Service team to get started.
Comments