knowledgecenter-breadcrum

Knowledge Center

25 Sep, 2025

How To Extend Schedule Board With Custom Filters In D365 Project Operations / Field Service

Posted on 25 Sep, 2025 by Javed Shaikh, Posted in Project Management Dynamics 365 Project Service Automation Dynamics 365 Field Service Dynamics 365

SB_Details Blogs

Introduction:

The Schedule Board in Dynamics 365 Field Service and Project Operations is an essential tool for efficiently managing resource assignments. Out of the box, users can filter resources by roles, skills, territories, and more.

However, unique business requirements may call for custom filtering, such as filtering by Region, Department, etc. This blog details a step-by-step approach to achieve this, empowering organizations to tailor the resource scheduling experience to their needs.

Requirement:

The customer wants to filter resources on the Schedule Board by custom fields – Region and Department, in addition to standard fields such as roles, business units, and territories.

We will walk through step-by-step instructions to add a custom filter Department to the Schedule Board in D365 Project Operations.

Step 1: Establish Entity Relationships

We need to establish a relationship between the Resource (bookableresource) and Department (nisl_department) entity.

  1. Create a custom entity called Department (nisl_department).
    Fields: nisl_departmentid (primary key), Name (nisl_name) are automatically created.

     
  2. Create a field on the Resource entity.
    Field Name: Department (nisl_department)
    DataType: Lookup
    à Department table

The Schedule Board filter passes selected department identifiers (IDs) to the query engine. By linking Resources records to the Department entity, the system can evaluate which resources match the selected filter criteria.

Step 2: Update Filter Layout (Add Department Filter)

The Filter Layout XML governs which filters are visible in the Schedule Board UI.

Navigate to Project Operations App à Schedule Board in sitemap à Select SJM Schedule Board à Click on “:” dots à Select Board Setting.

The Board Settings Dialog box will appear. Select Other from sitemap à Scroll down à Under Filter Layout, click on the “ + ” icon. You can also edit the existing filter.

Add the following code inside the tag:

<control type="combo" source="entity" key="ResourceDepartment" label-id="Department" entity="nisl_department" multi="true" />

Here,

  • key="ResourceDepartment"  à the key used in the Retrieve Resource Query ($input/ResourceDepartment).
  • entity="nisl_department"  àdetermines that filter values are sourced from the custom Department entity.
  • multi="true" → allows selecting multiple countries at once

Open Visual Studio Code àAdd the above code as shown below:

Copy the code and paste it inside the filter layout, and click on the Save as new button shown in the image below.

After adding the Resources filter layout, click on the Save button and refresh the form.

This Filter Layout XML snippet introduces a new dropdown filter for Department. When users select departments from the filter panel, their GUIDs are pushed into the scheduling query.

 

 

 

 

 

 

 

 

 

 

Step 3: Modify the Retrieve Resource Query

Next, extend the Universal FetchXML (UFX) for resource retrieval, enabling filtering by the selected Department.

Like Filter Layout, we will add the Retrieve Resource Query under the Board Settings.

Add a link-entity and a filter condition for Department as follows:

<link-entity ufx:if="$input/ResourceDepartment/bag" name="nisl_department" from="nisl_departmentid" to="nisl_department" link-type="inner" alias="department">

<attribute name="nisl_departmentid" alias="departmentid" groupby="true" />

<attribute name="nisl_name" alias="departmentName" groupby="true" />

<filter>

<condition attribute="statecode" operator="eq" value="0" />

filter>

link-entity>

<filter type="and" >

<condition ufx:if="$input/ResourceDepartment/bag" entityname="bookableresource" attribute="nisl_department" operator="in">

<ufx:apply select="$input/ResourceDepartment/bag">

<value>

<ufx:value select="@ufx-id" />

value>

ufx:apply>

condition>

filter>

Retrieve Resource Code Image:

The Board Settings Dialog box will appear. Select Other from sitemap à Scroll down à Under Retrieve resource query, click on the “ + ” icon. You can also edit the existing query.

Copy the code for the Retrieve resource query and paste it inside the SJM Retrieve Resource Query, and click on the Save as new button shown in the image below.

After adding the Retrieve Resource Query, click on the Save button and refresh the form.

 

 

 

 

 

 

 

 

 

 

 

Step 4: Test the Department Filter

After updating both the Filter Layout and Retrieve Resource Query:

  • Save the Schedule Board tab configuration.
  • Refresh the Schedule Board; the Department filter appears in the sidebar.
  • Assign Department values to Bookable Resource records.

The matched resources will be filtered and appear as shown below:

Summary:

  • The Filter Layout XML defines the UI panel, generating the $input/ResourceDepartment/bag variable.
  • Selecting a department passes its GUID(s) to the Retrieve Resource Query.
  • The Universal FetchXML logic ensures only matching resources are surfaced for assignment.

 

Conclusion:

With this technique, users can make the Schedule Board more flexible and align it perfectly with their organization’s unique scheduling needs.

Comment

This is a Required Field

Loading

Recent Updates

Blogs
20 Jan, 2026

How to Add Dataverse as a Data Source in Power Apps Code Apps

In my previous blog, I explained what Power Apps Code Apps are and how we can build apps using React…

READ MORE
Blogs
12 Jan, 2026

Why Power Apps Component Framework (PCF) Is Becoming a Game-Changer in Power Apps Development

Introduction Power Apps is one of the most widely used platforms for building business applications. As organizations grow, they expect…

READ MORE
Blogs
01 Dec, 2025

Dynamics 365: Why One User Could Edit a Field and Another Couldn’t

Recently, we faced an issue in Dynamics 365 where the field was locked for one user but editable for another. The field…

READ MORE