Universal Resource Scheduling is all about booking skilled resources to the right work, at the right time, regardless of workstream. This means you can book resources for work orders, cases, projects, leads, or any custom entity. For more information, see Scheduling anything in Dynamics 365 with Universal Resource Scheduling.
Opening up the booking entity and the schedule board for any schedulable entity adds a ton of power. At the same time, while your resources are able to work on bookings from any of these workstreams, the business processes vary greatly for each workstream, and that includes tracking the statuses and the entire lifecycle of each booking.
Work orders traditionally follow a specific flow: Scheduled > Traveling > In Progress> On Break> In Progress > Complete. Or some derivative of that.
Projects may have a different flow: Proposed > Committed > Complete
Cases: Accepted > In Progress > Researching > Complete
Dynamics 365 customers can manage these different stages by changing the booking status attribute on the booking.
Here is where you can find the booking status:
What you may notice if you were to right click on a booking related to a work order, is that the initial status group is split into groups. Right clicking on bookings from different entities have different grouping values.
We wanted our customers to be able to maintain unique processes and statuses, despite unifying our scheduling feature set.
When you right click on a work order booking you can see the statuses grouped into 6 categories, each category containing one or many statuses.
When you right click on an opportunity booking, you will see the statuses grouped differently.
Additionally, there are some statuses that don’t even appear for work orders that do for opportunities! For example, the “committed” status.
Lastly, if I were to open up a work order booking and try to set the booking to the status “committed”, which is not appearing within the schedule board status list, you will notice an error.
We just demonstrated the following:
- There is a way to associate certain booking status records with certain schedulable entities.
- There is a way to filter out unassociated statuses within the schedule board right click menu.
- There is a way to group these statuses uniquely per schedulable entity.
- There is a way to enforce that statuses cannot be selected on unassociated schedulable entities even outside the schedule board.
Here is how you set it up:
- You need an option set attribute on the booking status entity. This option set is the key to the grouping, filtering, and enforcement.
- By way of example, the field service solution ships an option set called “Field Service Status”.
- On the booking setup metadata record, for each schedulable entity, you can set which option set field on the booking status entity to use for sorting and filtering for bookings of that type. You need to enter the logical attribute name of the option set on the booking status that you wish to use. Here is what the value is for Field Service out of the box:
- If you leave this field empty, which is the default whenever you enable a new entity for scheduling, the attribute that is used for sorting and filtering is the option set is the option set called “status” which ships out of the box with the booking status entity and is a required field.
- In order to sort and filter entities for let’s say the case entity, you can either reuse an existing option set such as new_fieldservicestatus, which of course locks you into the same status filter and groups as work orders, or, you can create a new option set field on the booking status entity. We will create a new option set called new_casestatuses and add three options to the option set.
- Now we need to update the Booking Setup Metadata case record with the logical name of the newly created field.
- If you were to go to your schedule board now and right click on a case booking, you would see that there are no groups and no statuses to choose from since we have set the filtering yet have not associated statuses to this newly created new_casestatuses attribute yet.
- Now simply add the new field to your booking status form, and associate existing statuses that are part of the case flow to the appropriate case group. I have chosen to reuse two existing statuses. This is a very important point. You can share a single status record across multiple workstreams. Below you can see that Canceled is unique to field service, and entities grouping by the default “status” attribute. Completed and In Progress is shared by Field Service work orders, cases, and entities filtering by the out of the box status field.
- In addition to reusing two existing statuses, I have also created 2 new statuses to be used by cases, but not work orders. “Triage in progress” and “Research Paused”. You will notice you always have to fill in the default status field, this is by design.
- That’s it!
- If I right click my case booking on the schedule board, you will see statuses grouped into the option set values on the case status attribute created in step 4.
- Any statuses that do not have a value in the “new_casestatus” field are filtered out completely.
- If you try and set a status not created for cases via form, an error will display.
Remember you can also set your default status for when you FIRST create a booking, and also a default status should you want to cancel a booking per each schedulable entity on your booking setup metadata record!
Thanks for taking the time to read about this feature. I do hope it helps when it comes to implementation of Universal Resource Scheduling.
For more information, see Scheduling anything in Dynamics 365 with Universal Resource Scheduling.
Sr. Program Manager, D365 Engineering.