2021 Release Wave 2 Plan – Top 5 Features [2/2]

Continuing the review of Release Wave 2, this is the second post in this series. As I am going through 2021 Release Wave 2 documents (Dynamics 365 and Power Platform), it is great to see so many amazing features are on the way. It is evident that innovation and product enhancements are underway in all three areas – propelling the entire platform’s growth:

  • each product is getting stronger with the organic enhancement of existing features and/or introduction of new capabilities,
  • products are complementing each other resulting in a sum greater than parts (eg. Dynamics 365+ Teams, Power Automate + Dynamics 365 etc.), and
  • Trickle-down effect of all these improvements into specialized industry vertical products

Let’s jump on to few more ‘Top 5’ features:

Thanks for reading!

Feel free to share your feedback, I’d love to hear your thoughts 😊

2021 Release Wave 2 Plan – Top 5 Features [1/2]

The plan for Release Wave 2 is out last week and it is time to check out the exciting list of all the amazing features arriving later this year. Since this is a long document (in addition to a similar plan for Power Apps), this post will be an-going series as I read, rank and share top 5 features per product/app. Are you ready? 😀

More to come later.. watch this space.

Thanks for reading!

Feel free to share your feedback, I’d love to hear your thoughts 😊

Building Crowd Counting Model using AI Builder

Counting the number of people in a photo or video feed is one of the interesting problems in the world of AI, and for a good reason because “number of people/given area” is a useful metric for number of practice purposes. For example:

  1. Retail: Knowing foot traffic in a specific store area or floor indicates how impactful the discount promotion is, or how popular a particular brand/product is
  2. LGAs/councils/city governments: Lot of smart cities want to know near real-time information on how many people are in a particular public space, park, or tourist spot to ensure adequate resources are available to ensure city services are functioning correctly
  3. Police/law enforcement/emergency services: Knowing the crowd size, helps emergency services to deploy resources appropriately

Also worth mentioning, like any other use of AI models, this is an area where functioning under the theme of AI for good is very important.

Data and tool

To experiment how AI Builder can help in crowd counting with #nocode approach, the first to-do is to secure data. Kaggle is one of the best resources for publicly available data. You can search and find a lot of data sets related to any topic. I found this one interesting and downloaded the data set on my laptop.

The tool is an AI Builder Object Detection model.

Let’s dive in…

  1. Goto Power Apps maker portal and click on AI Builder on the left. Click on Object Detection (it is under preview at the moment).
  1. A new window will open, give a name to your model
  1. You can select objects from CDS or your local machine.
  1. Select device..
  1. ..and add images (downloaded previously from Kaggle dataset). Images will upload
  1. Mention which object(s) you want AI model to auto-detect. In our case, this is only ‘Person’
  1. Next, we need to identify the object (Person – in our case) in each of the images. Click on each image..
  1. and tag all the persons
  1. AI Builder screen will show your progress on this tagging exercise
  1. When all the images are tagged, click on ‘Done tagging’
  1. Click Next
  1. This data will be then fed into training the model
  1. When the training will complete (may take a few minutes), it will show the degree of accuracy

It is not ideal but is not too bad for a #nocode experiment. Click on Publish. There are two ways to use this model; in a Power Automate Flow or in a Power Apps app. For this experiment, we will create a quick Canvas App. Click on Power Apps.

  1. This will open a familiar Power Apps maker portal. Add a button with the label ‘Analyze’ and a Data table.
  1. Behind a button, set output of the AI model to a ‘Persons’ collection
  1. Bind Data table with ‘Persons’ collection
  1. Save and experiment. Select image, let the AI model run and click on Analyze.

The model is returning the number of objects (persons) it identified with quite an impressive accuracy.

Please do let me know your feedback, always love to hear back from #PowerApps community. Happy Power-apping!

Dynamics 365 Field Service – 2020 Release Wave 1 Plan

The Wave 1 Release Plans 2020 for Dynamics 365 and Power Platform are out and my first impression is; it is going to be a very very exciting year. Dynamics 365 Field Service is getting more tightly integrated with Azure and Power Apps and that push is leading to a lot of new features and functionality improvements. The early peek view will available from 3rd Feb and will be GA from April this year. Following is a round-up of most exciting new features in Dynamics 365 Field Service for me:

NEW Schedule Board
The Schedule Board is the linchpin of the Dynamics 365 Field Service and therefore nothing is more exciting to know that entire Schedule Board screen is re-written and a ‘next generation’ and ‘reimagined’ is on its way. This will address all the performance-related issues and enable planners to do their work faster.
Details here

Scheduling work ‘sequentially’
Often work needs to happen in a specific sequence the field. For example, you need to first do a risk assessment, run telemetry diagnosis and then decide to fix or replace equipment. This feature is now in the pipeline.
Details here

In the business of keeping assets up and running (think of any everything-as-a-service company), inspections of the assets and equipment are important. Since it was not part of the product, I have seen plenty of solutions for support this (surveys, power app, custom entities etc.). The good thing is this is under works and we’ll soon have inspection designer, inspections and ability to link inspections with work orders – all out of the box!
Details here

Timesheets and time capturing per work order
For service-based companies, work orders mean billing and billing mean revenue – therefore billing the right cost of work orders is a must-have. In this context, I can’t overstate how significant it is to know time entries are going to be an inherent part of Field Service (previously, you need to add Project Service Automation solution for time entries) and there will be enhancements to configure granularity of time capture, per your business, for work orders.
Details here and here

‘Suggested’ Incident Type
This is one of those ‘wow’ features which, I feel, will result in a major productivity boost for Dynamics 365 Field Service users. As per the release plan, the system will automatically suggest Incident Type based on the historical data (read work orders, cases etc.) – all thanks to machine learning algorithms.
Details here

Suggested action for IoT alert
Take a step ahead and this machine-learning based feature is also going to help to keep the asset up and running by auto-suggesting the action on IoT alerts. Imagine you have hundreds or thousands of devices in the field and your engineers respond to IoT alert based on each device type, manufacturer guide, type of alerts etc.; the system will now ‘learn’ by keeping a track of your engineers’ actions and then start suggesting those actions automatically. Should save lot of hours and midnight oil burning.
Details here

Thanks for reading. We will keep an eye on enhancements as they are rolled out and watch out this space for further exploration and review of new features. Till then, feel free to 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!

Setting up Booking Recurrence

Work Orders can be automatically generated and bookings can be auto-generated by Dynamics 365 Field Service, thanks to the Agreements functionality in the system. Agreements are used for setting up preventative maintenance schedule, audits, equipments/fleet service schedule etc. in the system, which then generates work orders and booking automatically – resulting in obvious productivity gains.

One of the key steps in setting up agreements is to setup recurrence of the work orders (and subsequently but optionally, bookings) generated by the system. This option is part of the ‘Agreement Booking Setup’.

Booking Recurrence – how to setup?

Clicking on the Booking Recurrence in ‘Agreement Booking Setup’ record, opens up a screen similar to (but more complex than) meeting invite recurrence screen of Outlook:

The screen lets you define following recurrence patterns:

  • Daily
    • every day or every work day
    • every # of day(s)
  • Weekly
    • day of the week
    • every # of week(s)
  • Monthly
    • day of the month OR day of the specific week of the month
    • every # of month(s)
  • Yearly
    • day of the month OR specific day of the month & week of the year
  • Duration:
    • Start and End dates (end date is optional)
  • Custom dates: Any custom dates for generating work orders and bookings (for example, you may want to setup servicing assets more frequently during the holiday season)

Booking Recurrence – how to import?

The use case here is when you would like to import service agreement into Dynamics 365 field service, you may want to import recurrence as well. The challenge here is that there is only /one/ field behind the entire recurrence screen:

Recurrence SettingsMultiple line of text Data is stored in XML format

Couple of examples here to see how it works:

  1. On setting up recurrence as ‘daily’ and start & end dates as 1/1/2020 to 31/12/2020, data saved in Recurrence Settings field is:
		<days every='1'>
  1. On setting up recurrence as ‘weekly – every Sunday’ and start & end dates as 1/1/2020 to 31/12/2020, data saved in Recurrence Settings field is:
		<weeks every='1'>
  1. On setting up recurrence as ‘weekly – every Saturday’, 30/1 and 31/1 as custom dates, and start & end dates as 1/1/2020 to 31/12/2020, data saved in Recurrence Settings field is:
		<weeks every='1'>

As you can see, data is saved as xml which is based on standard format (called XSD). This XSD is not published but the format is consistent.

Therefore, to import booking recurrence, the first consideration is how the data extract to be imported is fashioned. If to-be imported records need to have the same recurrence, xml can be created manually per above format and added to the excel/csv before import. If there are different recurrence patterns, a code-based solution or excel macro can be used to fashion xml, per above format, against each row of data extract.

Thanks for visting, please feel free to share if you have any feedback or questions. Cheers.


We have discussed Work and Resources before this article, now Scheduling is where the fun begins. Put simply, scheduling lets ‘resources’ to be ‘booked’ against ‘requirements’ of ‘work’.

A keyword in the above sentence is ‘booked’. Traditionally in Power Apps model-driven app, every record has an owner. If you want to change an owner, you ‘assign’ record to a new owner (user).

A ‘booking’ is a bit similar to ‘assignment’ in the sense that it also involves record and a user (read resource) but booking also involves (a) date-time and (b) requirement for the work. In a way, this adds two more dimensions to ‘booking’.

I think date/time is self-explanatory but ‘requirement’ requires a little explanation. When you create a work order for customer work (eg. Installation of a new device), you may want work to happen in two phases:

a) first phase is the installation of the device, and
b) the next phase is to do a follow-up in a week’s time to confirm with the customer there are no complaints or issues.

Turns out, this is a pretty common scenario in field service work planning where the ‘work’ is a singular thing but execution in multiple batches. Now each of this batch requires certain resources to be booked to do the work. Going back to our example, for the work order, we have two set of resource needs: (a) first one to do the installation of device which may take 2 hours and may require 2 engineers, and (b) to go to customer and confirm there are no issues – this may require an hour only and may need a visit of 1 engineer only. Now to do the booking of work, two bookings will have to be created on the calendar for each of these two requirements against a same work order. Therefore from the database design perspective, the relationship between Work Order and Resource Requirement is one-to-many.

The Schedule Board is a screen in Dynamics 365 Field Service that brings all these four components together on one screen. That is why, it is sometimes called a glorious calendar which has dimensions other than date, time and event (record) only.

There are four ways to schedule resource against resource requirements for work order:

  1. Manually – by clicking on Book button on Work Order, which opens Schedule Assistant
  2. Manually – by dragging and dropping a Work Order requirement on the Schedule Board
  3. Manually – by selecting an open requirement and creating a booking through ‘Create Booking’ screen on the Schedule Board
  4. Automatic – through Resource Scheduling Optimisation AI-based engine (this is an add-on and comes with the cost)

Further readings:
* Schedule with travel time and distance | Microsoft Docs