How to configure the frequency of Booking Timestamps

One of the latest features announced for Release Wave 1 2020 in Dynamics 365 Field Service is the ability to ‘configure’ when the system should be generating Booking Timestamps.

What is it and why does this matter?
Booking timestamps is an entity which gets auto-populated to record updates on the status of booking/work orders. It records two important things: status and timestamp.

When a Work Order and associated Booking goes through status changes, booking timestamp maintains a record for each change with a timestamp. This information helps in reporting variety of useful data, for example total billable duration, total travel time, time entries etc.

What is NEW?

The change (still in preview) in this area is to configure ‘when’ the system should generate a timestamp. There are two configurable options now:

To understand how this works, let’s have a look at Booking Status in the test environment:

We have added Depot training, Risk assessment, Quality check and Waiting for Parts as ‘Booking Status’ records for the corresponding Field Service Status. The list of Field Service Status is fixed but Booking Status can be added or modified based on project requirements.

Next, we changed a booking’s status as follows (Booking Status/Field Service Status):

Scheduled/Scheduled -> Traveling/Traveling -> Depot training/On Break -> On Break/On Break -> Risk Assessment/In Progress -> In Progress/In Progress -> Quality Check/In Progress

Following time stamps are created under two different settings:

Per Field Service Status Change

Per Booking Status Change

As we can see the ‘per booking status change’ gives a more granular view into the specific of booking status which could be useful if there are such reporting or billing requirements. Otherwise the ‘per field service status change’ gives a high-level overview of the status changes.

Looking back to previous implementations, I think this is a small but very significant change in the way booking facts are recorded which will help in reporting on actuals and billing. Hope you will find this useful too. Feel free to share if you have any queries.

How to send a Microsoft Teams notification from Dynamics 365

The story behind this article is a challenge faced by one of the customers to reduce ‘delay’ between ‘urgent’ issue (case) creation in the system and bookings of resource to address the issue. The cases were created in the system by the Customer Service team, who then send those cases to Warranty team based on the nature of the issue, equipment type etc. The Warranty team then review the case, create Work Order and book resources to visit and solve the reported issue. Since Warranty team was always busy, some sort of notification mechanism was required to be sent on urgent issues, to enable Warranty team to reshuffle resources bookings to address higher priority issues earlier.

At that point several notification media were evaluated and, no surprises; most effective notifications were found to be sent in Microsoft Teams since both back office and field force technicians were already in touch with each other using Teams. Luckily the solution (based on Power Automate) was also found to be the one with the shortest time for readiness to go-live!

Following are the steps if you’d like to implement the same for your customers:

  1. Goto Power Automate
  2. Click on Create on the left and create a flow if type ‘Automated flow’
    Create a flow with a trigger on new record creation using Common Data Service connector
  1. Add Microsoft Teams action (you’ll have to log in to your Teams account)
  2. Add teams, channel and the message (you can use Case number and other fields as dynamic content)

Here is the complete flow:

And this is the output:

Hope this was useful. Please feel free to share your feedback.

How to show current weather on Bookings form

In this post, I will walk you through my experiment last week to show the weather information in a booking screen in Dynamics 365 Field Service. The business drivers behind this information could be for the planners/schedulers to see weather conditions in the specific areas where the field technicians are scheduled to work/are currently working. Take PowerApps out and this becomes another ‘data integration’ project. I did the following without writing code by embedding a Canvas PowerApp app in Dynamics 365 Field Service:

Following are the steps:

  1. Go to PowerApps Make Portal
  2. Click on Data
  3. Select Bookable Resource Booking entity
  4. Open Main form
  1. Click on Switch to Classic. This will open a legacy form builder
  2. You’re going to show weather per latitude/longitude information on the Booking record. Bring the latitude field to the General tab above Notes
  1. Select Latitude and click on Properties. Go to the last tab ‘Controls’, select ‘Canvas app’, and then click on Customize. What you’re doing here is to tell the system that Latitude information is not going to be shown in a boring textbox, instead, a Canvas app (which you are yet to configure) will show this information
  1. Clicking Customize in the previous step will spin-off a canvas app creation process and you’ll be led (in a couple of minutes) to a new Canvas app builder
  2. Click on the tree view on the left, get rid of any existing controls and add 5 labels. We’ll use them to show the current temperature, UV index, humidity, weather conditions and to display weather unit (Centigrade/Fahrenheit).
  1. The key thing to understand here is a control called ‘ModelDrivenFormIntegration’. This is your window into the Booking record in Dynamics 365 Field Service which can be used to retrieve the value of any field (not just the ‘latitude’ field)
  2. To get the weather information, go to Data Sources, find and add MSN Weather
  1. We will use MSNWeather.CurrentWeather to get the weather details. The function uses latitude and longitude to be passed and we use ‘metric’ as the unit. Following ‘Text’ value is get the current weather:
Text(
MSNWeather.CurrentWeather(
Text([@ModelDrivenFormIntegration].Item.Latitude) & "," & Text([@ModelDrivenFormIntegration].Item.Longitude),
"Metric"
).responses.weather.current.temp
) & "°"
  1. Accordingly set the values of other fields to get UV Index, Humidity and Weather Conditions
  1. Save the app and publish
  2. Go back to Bookings form editor in Dynamics 365, save and publish the form

Feel free to download the app and share your feedback 😊.

How to create a roster for resources

The Schedule Board shows working and non-working hours in different colours (non-working hours are greyed) to help planners in creating bookings for resources per their roster. In this article, we will have a look at the steps to set up a roster for individual / multiple resources, and will also look at a Pro Tip in the end.

For setting up work hours for a single resource, follow these steps:

  1. Go to Bookable Resources view
  2. Select a resource and click on Show Work Hours
  3. Click on Setup -> Weekly Schedule for selecting work hours, lunch break etc.
  4. Save and exit

Easy, isn’t it. Next for setting up work hours for multiple resources or assigning the same roster to multiple resources, it is best to create Work Hours Templates. Follow these steps:

  1. Go to Settings under Resources Scheduling
  2. Goto Work Hours Templates, click New to create a new record
  3. Give it a distinctive name, select a ‘Template Resource’. Work hours must be already set up for the resource select as Template Resource
  4. Save and exit

  1. Next click on resource(s), click on Set Calendar
  2. Select the Work Hour Template record you just created and click on Save

What happened in point 4 above was copying of work hours schedule from the Template Resource’s calendar to Work Hour Template record. This way several rosters could be created for field staff working on different days and different work timings.

Pro Tip!
Imagine your field staff works in two schedules: weekday and weekends. A Pro Tip, in this case, is to create two resources of type ‘Generic’ and name then as ‘Weekend Template Resource’ and ‘Weekday Template Resource’. Then set work hours for these resources appropriately and use them in the Work Hour Template record. This is better than referencing a real resource in Work Hour Template as real resources may move around working in different hours, are on holidays and may leave the organisation and when this happens, it could potentially impact the Work Hour Template and subsequently the calendar of other resources.

That’s all. Hope it helped. Thanks for reading!

How to setup preferred resources for Customers in Field Service

The question which led to this article was:

We respect customer’s preferences in terms of who is coming over to their houses (this was in maid and cleaning services business), so if a customer was happy with a certain staff member, we try our best to assign the same staff member for next service. How can I do that in the new system (Dynamics Field Service)?

This, admittedly, led to some head-scratching but the solution that we discovered was pleasantly an ‘out of the box’ one. Following is how you can set it up:

Step 1:
Go to Customer profile (Account) and click on Related. Then click on ‘Resource Preferences’

Step 2:
Click New to create a new Resource Preference. Select the Bookable Resouce who this customer would like to work with and select ‘Preferred’ as Preference Type

Step 3:
When you will next create a Work Order against this customer, a new Requirement Resource Preference record will be automatically created and linked to both Work Order and Resource Requirement screen:

And when you click on Book button, you will only see that preferred resource in Schedule Assistant:

Note the little heart in front of Customer Name 🙂

This way multiple preferred resources could be nominated against customer.

…this leads to the next question:

How to restrict certain resources to be booked against particular Customer?

Just like a customer may like some of your field service staff, he/she may have complained against any of your field staff members in past and you’d not like to assign same field staff members in future.

This is also achievable using the same steps. The only difference is, instead of selecting Preferred as Preference Type, select ‘Restricted’:

When you will now ‘Book’ a Work Order of this customer, restricted resource will not be shown in the resource list:

Hope it helped. I think the last point to mention in the above context is the relevance of ‘Resource Preferences’ record for RSO. RSO also refers to these same preferences when simulating or generating bookings for the customer.

Thanks for reading!

Showing current weather on Schedule Board bookings

The fascinating thing about Schedule Board is, it is as much a planning tool, as it is for monitoring. Talking to one of our customers, we noticed ‘planners’ had opened an additional tab on browsers in addition to Schedule Board. It turned out, since the field technicians, go to different cities and towns (long distances), and the work and equipment involved were impacted by weather conditions (rains, dust storms etc.), the weather was a significant factor for service delivery. This prompted planners to keep an eye on the weather conditions in on-going work areas, and also in the areas where work is going to start in near future, to ensure crews are carrying necessary safety measures, additional equipment etc.

While we understood the need, it was a hassle for the planners to click on the booking, check the location, go to another tab, Ctrl+C/Ctrl+V, hit Enter and see weather conditions in next 12 hours. A lot of clicks, error-prone etc. Is there a better way to do that? You bet.

Following is what we came up with – without writing a single line of code:

The Schedule Board now show (almost) current weather conditions. Following is an under-the-hood view of how this was achieved:

  1. Areas of service were setup as territories
  2. A new ‘Weather’ option-set field was created in Territory with weather icons for rain, sunny, cloudy etc.
  3. Power Automate Flow was created with MSN Weather to run every hour on three territories (cities) to get the latest weather update and then update the Territory record with Weather option-set appropriately
  4. Schedule Board was configured to show Weather option-set field from the Territory field by configuring Booking Template

Hope it helped. Feel free to share your feedback. Happy 365-ing!

The ‘Currency’ error on Work Order

I was reminded of this gem from XKCD today:

The context is a customer call who found this annoying error on the creation of a work order in Dynamics 365 Field Service:

The error message is a bit cryptic but what it means is simple: currency should be consistent on a work order AND records mentioned in work order. Three currency fields are at play here:

  1. Currency in the price list of a selected Billing Account
  2. Currency in the price list of a selected Work Order Type
  3. Currency in the price list of Work Order itself

If any of these three currencies are different, you’ll see this error on work order creation. For our customer, it turned out a change was made in price list without understanding the consequence here. The bottom line is:

Keep the currency and, in turn, price list consistent in Billing Account, Work Order and Work Order Type records.

Hope it helps. Thanks for reading!