Universal Resource Scheduling
Scheduling in Microsoft Dynamics 365 is provided by Universal Resource Scheduling, a feature that is used across Dynamics 365 Field Service, Customer Service, and Project Operations to schedule work orders, service activities, and projects, respectively. Universal Resource Scheduling provides most of the scheduling functionalities that you will have experienced in Field Service, such as resources, characteristics, fulfillment preferences, working time, bookings, and the schedule boards. You can use Universal Resource Scheduling to schedule the records for any table within Microsoft Dataverse.
Use cases for Universal Resource Scheduling
Many field service operations might include other jobs that field technicians need to be booked for, such as internal training courses. Now, you can use the time-off feature; however, you will encounter a couple of issues with this approach. First, on the schedule board, time off shows as non-working time in a light gray color with no detail. As a result, the only information that the scheduler knows is that the resource is not available.
Second, when training many field resources, you will want to schedule their training according to their availability. Scheduling records for a custom table displays the course as a booking on the schedule board, enabling the scheduler to see why the resource isn't available.
Another example is internal maintenance jobs that are performed by field technicians for the organization rather than for customers. Instead of customizing work orders to meet this requirement, it is more efficient to create a custom table and schedule the job records for the internal maintenance work.
You can use different colors for the other tables to clarify on the schedule board where resources aren't available for customer work.
How Universal Resource Scheduling works
Three tables are used to schedule an item:
The item to be scheduled (for example, work order)
Resource requirement
Bookable resource booking
When an item that needs to be scheduled, such as a work order, is created in Dynamics 365, it includes information that will affect how it will be scheduled, including location, skills, time window, and preferences. After a work order record is created, a resource requirement record is automatically created. When you are scheduling an item, the work order isn't being scheduled; rather, it's the resource requirement record that is used by Universal Resource Scheduling that is being scheduled. The Resource requirement defines the specific information that is required to schedule the item.
A resource requirement for a work order might include:
Customer location as latitude and longitude
Service territory
Characteristics (skills) and/or roles that are required
Duration
Date and time windows or promises
Fulfillment preferences
Resource preferences
Resource requirements are displayed at the bottom of the schedule board in the Requirements panel, where you can view items such as Unscheduled Work Orders.
After you have scheduled the resource requirement, a bookable resource booking (commonly abbreviated to booking in the Field Service app) is created that defines the selected date and time slot and the resource(s) chosen time to deliver the item. The specific details are included around the resource who is responsible for completing the item. It provides more details, such as estimated and actual arrival times and status of the booking.
A resource booking for a resource requirement would include:
The resource who is responsible for completing the work
Estimated travel time and distance
Duration
Actual start and end times
Actual travel distance
Booking status
Bookings are displayed in the cells in the main body of the schedule board and are the main items that technicians can view in the Field Service mobile app.
Table columns
To be able to schedule a table with Universal Resource Scheduling, make sure that you include the following columns in your table within Microsoft Dataverse:
Latitude - The latitude of the location where the work will take place as a Floating Point Number to 5 decimal places with minimum value -90 and maximum value 90.
Longitude - The longitude of the location where the work will take place as a Floating Point Number to 5 decimal places with minimum value -180 and maximum value 180.
From Date - A date and time column for the requested start of the work.
To Date - A date and time column for the requested end of the work.
Duration - A whole number column of type Duration. This column indicates the number of minutes that are required to perform the work.
Territory - A lookup to the Territory table. This column is optional and only required if you need to filter resources by territory when scheduling.
Work Location - A choice column that uses the global Work Location choice. Work Location should default to OnSite to be scheduled.
Table relationships
The table that you want to schedule requires two one-to-many relationships from the table:
Resource Requirement
Bookable Resource Booking
Add mappings to these relationships to help with populating the requirement and booking records.
Booking statuses
Make sure that you define booking statuses for your table. This table is shared by other Universal Resource Scheduling-enabled tables, so make sure that you restrict booking status items for your table by adding a choice column to the booking status table.
After you have created the choice column and added it to the form, you can add booking statuses in the Field Service app by going to Resources > Booking Settings > Booking Statuses.
Create booking statuses for at the least the following entities:
Scheduled
In Progress
Edit the existing booking status for Completed and set your choice column to Completed, and then edit the existing booking status for Canceled and set your choice column to Canceled.
Note
You can associate colors and icons with each booking status. These colors and icons will be used when you are displaying bookings on the schedule board.
Enable a table for scheduling
After you have created the columns and relationships, you can enable the table for scheduling in the Resource Scheduling app. To enable the table, go to Settings > Scheduling > Administration and select Enable Resource Scheduling for Entities.
Select the table and the two relationships, as shown in the following screenshot.
Select Publish Customization to open the Booking Setup Metadata form.
In the first section, enter the schema name for the choice column that you added to the booking status table in Booking Status Field Logical Name, as shown in the following screenshot.
In the Settings section, select these options, as shown in the following screenshot:
Default Booking Duration - Set to the start time for the work, for example 30 minutes.
Cancel Bookings When Moving - Set this option to Yes.
Default Booking Committed Status - Select the scheduled booking status that you created.
Default Booking Canceled Status - Select the canceled booking status.
Default Requirement Active Status - Select Active.
Default Requirement Canceled Status - Select Canceled.
Default Requirement Completed Status - Select Completed.
Disable Requirement Auto Creation for Bookings - Set this option to No initially.
Resource Availability Retrieval Limit - This option limits the number of resources that are returned in the schedule assistant.
Available Duration Minimum(%) - Leave this option set at 100%.
Enable Quick Book - Set this option to No initially.
In the Attribute Mapping section, select the following options by using the columns that you created on your table:
From Date
To Date
Duration
Territory
Latitude
Longitude
Work Location
Select Save.
Note
The columns should automatically map based on the data types of the columns.
Resource requirement view
Before you can schedule records for your table, you need to create a new view on the Resource requirement table to show a list of records that have not been booked.
This view should include columns from the Resource requirement table and your table.
The view should filter resource requirements for only your table and where remaining duration is greater than zero.
Select Save and then Publish.
Add the view to the schedule board
Now, you need to add the view to the schedule board. Go to the schedule board and select the gear icon.
Expand the Requirement panels section, and enter a title. Select the view that you created, select the plus (+) icon, and then select Apply.
Your view should display in the requirements panel on the schedule board.
Book records
You can now book records by using the Book button.
Selecting this button will open the schedule assistant, where you can book a resource.
Booking a resource creates the resource requirement and the bookable resource booking, and you will be able to view the booking on the schedule board.
Quick Book
The Quick Book option can help simplify the process of selecting resources. To use this option, edit the Booking Setup Metadata and then set Enable Quick Book to Yes. Selecting the Book button will open the Quick Book pane, as shown in the following screenshot.
Use Power Automate to populate a resource requirement
Dynamics 365 Field Service includes processing to create the resource requirement automatically when you create a work order. Field Service also updates the resource requirement when the work order is changed.
The setup that has been performed so far for your table will only allow you to book from within the form of the record; it doesn't consider skills or other scheduling properties. The resource requirement record is only created when you book your record. If you want to make full use of scheduling, you will need to replicate the processing on a work order for your table. One option is to create the resource requirement by using Power Automate cloud flows.
An example cloud flow is shown in the following screenshot.
After you have implemented the flow, the requirements for your table will display in the Requirement Panels section on the schedule board.
Important
You need to edit Booking Setup Metadata and set Disable Requirement Auto Creation for Bookings to Yes; otherwise, you will have a duplicate requirement when you book your record.
For more information, see Universal Resource Scheduling in Microsoft Dynamics 365 for Field Service and Enable an entity for scheduling in Dynamics 365 Field Service.
Booking timestamps
In Dynamics 365 Field Service, booking timestamps record the date and time that the Booking Status changes for a work order. Booking timestamps are useful for:
Reporting, to see how technicians spend their time.
Time-keeping, to provide a level of detail for invoicing.
Booking journals, to see a holistic view of time spent on any given work order.
You can view the timestamps from with a Bookable resource booking record from Booking Timestamps.
By default, booking timestamps are only generated when the booking status that you change to shows a different field service status choice value from the existing booking status.
Timestamp frequency setting
You can force booking timestamps to be created by changing the Timestamp Frequency setting in the Field Service Setting section.
In the Timestamp Frequency field, choose one of the following options:
Per Field Service Status Change - Create timestamps only when a booking status change results in a field service status change. This setting is the default.
Per Booking Status Change - Creates timestamps with every booking status change.
Booking journals
Booking journals are created automatically from booking timestamps when the booking status is set to Completed. Booking journals record the total travel time and working time for the booking and can be used to generate time entries.
You can automatically generate time entries by setting the Time Entry Generation Strategy to Auto-Generate from Booking Timestamps in the Field Service Setting section.
To view the journals from with a Bookable resource booking record, go to Related > Booking Journals.