Universal Resource Scheduling

Completed

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.

Screenshot of required columns for a table that is scheduled with Universal Resource Scheduling.

Table relationships

The table that you want to schedule requires two one-to-many relationships from the table:

  • Resource Requirement

  • Bookable Resource Booking

Screenshot of required relationships for a table that is scheduled with Universal Resource Scheduling.

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.

Screenshot of the choice column on a booking status.

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.

Screenshot showing available booking statuses.

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.

Screenshot of enabling a table for scheduling with Universal Resource Scheduling.

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.

Screenshot of the Booking Status Field Logical Name option in the Booking Setup Metadata section.

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.

Screenshot of the Booking Setup Metadata Settings section.

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.

Screenshot of the Attribute Mapping section in Booking Setup Metadata.

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.

Screenshot of the resource requirement view columns.

The view should filter resource requirements for only your table and where remaining duration is greater than zero.

Screenshot of the resource requirement view filter.

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.

Screenshot of the gear icon on the schedule board.

Expand the Requirement panels section, and enter a title. Select the view that you created, select the plus (+) icon, and then select Apply.

Screenshot of the Requirement Panels settings on the schedule board.

Your view should display in the requirements panel on the schedule board.

Screenshot of the requirements panel on the schedule board.

Book records

You can now book records by using the Book button.

Screenshot of the Book button in a record.

Selecting this button will open the schedule assistant, where you can book a resource.

Screenshot showing the schedule assistant.

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.

Screenshot showing a schedule board and booking.

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.

Screenshot showing a sample quick booking process.

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.

Screenshot showing a flow to create requirements.

After you have implemented the flow, the requirements for your table will display in the Requirement Panels section on the schedule board.

Screenshot showing a schedule board and requirement.

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.

Screenshot showing 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.

Screenshot of the Timestamp Frequency option.

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.

Screenshot of the Time Entry Generation Strategy setting.

To view the journals from with a Bookable resource booking record, go to Related > Booking Journals.