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
31 Mar, 2026

Debugging Power Pages Server Logic Using Visual Studio Code

Power Pages Server Logic allows developers to execute secure backend JavaScript directly within Power Pages. It is commonly used for…

READ MORE
Blogs
31 Mar, 2026

Create and Deploy a Single Page Application (SPA) in Power Pages

In this blog, we’ll build and deploy a Single Page Application (SPA) using React + Vite and host it on…

READ MORE
BuildAndDeployPCF_Thumbnail.png
Blogs
25 Mar, 2026

Build And Deploy Your First Dataset PCF Control In Dynamics 365

Introduction In Dynamics 365, subgrids are commonly used to display related records, such as Opportunities under an Account. While out-of-the-box…

READ MORE