Dynamics 365 Field Service provides several ways to schedule and assign work to be done to technicians. This can be manual, suggestive, semi-automatic or fully automatic.

Manual scheduling

Firstly you can schedule work by creating a Booking manually. Or schedule a Work Order by dragging it onto the Scheduling Board to the right technician. One of the downsides is that there are no checks being performed whether this technician is the right man (or woman šŸ˜‰) for the job. He or she may not have the skills to perform the job properly. Or the work he or she must complete before the job you are trying to plan may be miles away. Of course, if it’s an urgent matter and you don’t have many options, that’s probably okay.

Dynamics 365 Field Service Scheudling Board

Suggestive scheduling

To help planners make better decisions, Field Service also provides the Booking Assistant. In this assistant you can filter on several parameters. Like the maximum distance a technician should be removed from the work you need to schedule, whether the work is located in a particular service territory, or the skills needed to perform that type of work, and many more. The results will then be filtered to your parameters and the best possible technicians will be shown to you.

But when planners have to manage a relatively large team of technicians and a lot of tasks, these options aren’t really the best to get the most optimal and efficient work schedule possible. These will also only allow scheduling a single job at once. Plus, there are probably many parameters to consider when scheduling the right man for the job or the most optimal route between jobs. This could mean that many wrong decisions can be made, with all the consequences that entails.

Resource Scheduling Optimization (RSO) Add-on

And this is where the Resource Scheduling Optimization (RSO) Add-on comes into play. RSO is an add-on provided by Microsoft, and can be enabled for Field Service, Customer Service, and Project Service Automation projects. You can see this as a fully automated solution to calculate the most efficient work schedule for all your tasks to be performed, based on, among other things, the location of the jobs and technicians who will perform the jobs. In short, it takes a list of jobs, a list of technicians and makes the best possible decisions based on some parameters you configure within its settings.

How it works


First of all the RSO needs a scope to work in. In this scope you determine which jobs should be optimized, and which technicians these jobs can be assigned to. But also for what timeframe it should make a schedule, for example from today until 1 week in the future. For the lists of jobs and technicians, the RSO uses system views that you can configure with the necessary filters, which you can then select from a drop-down list within the scope.

When the RSO runs, it will retrieve the records of these views and send them to the engine for optimization. The Add-on itself is hosted on the Azure platform. So while the optimization is running, there will be no performance issues or whatsoever inside of your Dynamics 365 environment. When it’s done optimizing, the add-on starts creating the optimized schedule for all the tasks and technicians it could find a good match for.

Existing Bookings

If there would be existing, already planned bookings on the schedule, the optimizer is capable of moving them around if necessary. But only if it’s allowed based on the setting for the Booking Status the Booking currently has.

For each Booking Status, we can specify to the RSO what to do with it. For example, a Canceled booking can be ignored but a booking that’s In Progress should not be touched at all.


For the RSO to make decisions based on the needs of your company, you’ll need to configure the Goal. A goal holds some additional configuration like engine effort. This can be set from Very Light to Very Intensive. Based on this setting RSO will take less or more time to calculate the most optimal and efficient working schedule and route. Another setting we find here is whether it should calculate travel time with historical data of traffic on the same route. For this setting RSO makes use of AI to calculate the route as accurate as possible, based on historical data from Bing Maps on the route the technician should be taking throughout his workday. This one is still in Preview, but already looks very promising to me!

Next things to configure on the goal are Constraints and Objectives. They come pre-defined and can not be altered or created.


Constraints can be seen as yes or no, black or white, there isĀ noĀ grey zone.

  • Schedule Within Working Hours
    • RSO will only plan jobs inside the timespan of the working hours of the technicians. This includes travel time to the first booking andĀ travel time from the last booking to the technicians ending point.
  • Meets Required Characteristics
    • The technician to be assigned should holdĀ allĀ of the skills necessary to complete the job, as specified on the work order characteristics.
  • Meets Required Roles
    • The technician to be assigned should have the required role, as specified on the work order characteristics.
  • Scheduling Lock Option
    • RSO will respect the lock options specified on the booking records individually
      • Time Range
        • The Booking will only be scheduled between the start and end time provided on the work order.
      • Resource
        • The Booking will notĀ be moved from one resource to another. It will stay assigned to the resource specified on the initial Booking but it could potentially be moved around in time.
      • Time
        • The Booking will be fixed on the exact time it was created for.
      • Resource + Time
        • The Booking will notĀ be moved from one resource to anotherĀ and it will be fixed on the exact time it was created for.
  • Scheduling Windows
    • Work Order will be scheduled within the scheduling windows specified on it.
  • Meets Resource Preferences
    • If a customer has one or more preferred technicians they want to complete the job, RSO will only assign the work to one of them.
  • Matches Territories
    • Only technicians that work in the territory where the customer is located will be assigned for the job.


Objectives are more like goals that the RSO should consider in order of preference. If all work orders to be scheduled score equally on the first goal, the second goal will be more decisive, and so on. So here it really is a matter of deciding what is most important for your company. Some of the possible parameters here are: minimizing travel time, maximizing utilization, handling high priority jobs and scheduling jobs as soon as possible.Ā 

One important thing to remember here is that the “Minimize travel time” canĀ notĀ be selected as first in line. In this case RSO might not schedule anything with the travel time as 0 minutes in order to meet the first objective.

Wrapping it up

Overall this is a very interesting and profitable add-on Microsoft provided to manage (large) teams of technicians and jobs. It can sure lift the heavy workload off of your team of planners. But also make sure your work orders will be planned and executed in the most optimal and efficient way possible.

Thanks for reading!

If you would like more information about the Dynamics 365 Field Service module, or would like to know whether the Field Service module can add value to your company, feel free to contact us! We are happy to help you.