Best practices while using RSO – Part 1

Below are the few best practices that I’ve learnt along the way of using RSO in my projects. I hope these tips will be helpful for anyone who is using RSO in their projects on achieving certain business functionalities or for anyone who is learning RSO. I have split this to 2 parts series to keep it short.

Prioritizing high priority customers or specific work order type

It is common for a business to have a high priority customers who needs to be given priority while scheduling the technicians. It could based on their membership status, support package, VIP customers etc. Also, it’s quite common to give priority to the specific work order type like a critical fixing, maintenance issues over a new installation.


In the Goal->Objective add ‘High Priority Requirements’. This will evaluated by RSO and it gives priority to the resource/booking combination with the highest score. Pre-requisite for this is having the priority level set at the resource requirement.

Pre-requisite: Priority level should be set at the resource requirement. In the below example, Platinum Member’s are given the highest priority (Level 10).

You can also choose the priority color, which helps Scheduler to identity the priority bookings in schedule board. Check here for more details on the different settings that impacts colors in schedule board.

Preserving Promised Time and/or Resource while Optimizing

Primary purpose of the RSO is utilizing the resources effectively, it’s not restricted for creating booking/scheduling for the first time but also to optimize the already created bookings. This is extremely useful to optimize the bookings created through other mediums like schedule board, scheduling assistant, self service portals, custom applications, manual creation etc. I strongly recommend using this even for the bookings that was previously created by RSO itself. This helps to keep the bookings optimized and utilize the resources effectively as much as possible.

An important thing to be noted in this is, the committed date and time (promised date time) to the customer shouldn’t be changed due to the optimization.

Setup: In the goal, Scheduling Windows’ and Scheduling Lock Options to be set as constraints. This instructs RSO to not to violate the current promised date and time of the booking and/or the resources if opted. Also, to avoid the resource double booked i.e. avoid the existing locked booking to be ignored while optimization. To achieve this, ‘Locked Booking’ has to be added an objective with high ranking.


  • Once booking created, have an automation like a flow, workflow to update the promised date time and/or resource of the booking and scheduling lock options set as given below.
  • Also make sure the ‘Scheduling Method’ is set to ‘Optimize’ for booking status Scheduled.

Segregating RSO rules

Biggest advantage of using RSO is it provides the flexibility for organizations to run RSO for to achieve different business scenarios and ensure that one of them doesn’t affect the others. Organizations can have an daily RSO schedule that runs every night, schedule that runs every hours, RSO to run within the scope of certain region, RSO to be triggered on specific scenario like customer cancelling the booking or when technicians takes emergency leave etc.

For these cases, segregating the RSO runs scoping it to cater certain business scenarios and scheduling it accordingly is the recommended approach.

Sample use case

Let’s consider where an organization has RSO scheduled once in every 8 hours to schedule their technicians to address the maintenance issues. Let’s assume the truck gets break down while technician was travelling, immediately the work order has to be assigned to another technician and this case, waiting for the next schedule is not a viable option.

In this case, either scheduler can use the Single Resource Optimization’ or have a separate RSO configured to address these issues by having a separate Status or so in the work order. This RSO can be a triggered on-demand by a Flow or from code, check my previous blog post to know more about On-demand trigger.

RSO to normal orders:

In this case, RSO schedules/creates booking for all the unscheduled work orders under North East region. We handle this controlling the scope of jobs by using the appropriate requirement view. Note that the resource view is scoped within the resources workers from North East region.

RSO to handle emergencies:

Hope the best practices mentioned above are useful, there will be a part 2 of this blog series published soon. Please feel free to drop your comments/feedback if any.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s