Condition Nodes

Self Service Guide

Version
R2025.2.1
ft:lastEdition
2025-12-01
Condition Nodes

You can use Condition nodes in logical expressions that are evaluated in workflows. They evaluate to either true or false, based on the expression configured for the node, and the outcome determines the way the workflow progresses from that point.

For example, a Job Assignment and Compensation Change workflow is configured with a Condition node that has the following expression:

<<List_EmployeeEmploymentStatus.Item.List_EmployeeEmploymentStatusChangeReason.Item.Amount>> GreaterThanEquals 5

The workflow examines the percentage by which the affected employee’s pay increases if the change is approved. If the employee’s pay increases by less than 5%, the condition is false, and the request is routed to a manager for approval. If the employee’s pay increases by 5% or more, the condition is true, and the request is routed to a payroll administrator for approval.

Condition nodes must have at least one incoming link. They can have two outgoing links representing true and false outcomes.

Note: You must enter an expression before you can save the Condition node. If the expression can’t be evaluated, the outcome automatically defaults to false.

Condition nodes have one property.

Grouping functions

You can also filter a list, then use Any, All, or None grouping functions to apply a condition to the filtered list. The result of your expression returns a true or false value that routes the workflow.

  • Any returns true if one or more items in the list match the condition.
  • All returns true if every item in the list matches the condition.
  • None returns true if zero items in the list match the condition.

The basic syntax for filtering and grouping functions is:

List.<<Filter/Any/All/None>>(<<Condition>>)

In the following example, a list of work assignments is filtered to consider only primary work assignments. The expression returns a true value if all of the primary work assignments have a rate greater than zero:

List_EmployeeWorkAssignment.Filter("IsPrimary Equals True").All(Rate GreaterThan 0)

Also, you can use Filter, Any, All, and None by themselves to build simple expressions. For example:

List_EmployeeWorkAssignment.Filter(IsPrimary Equals True)

List_ManagerEmployeeWorkAssignment.Any("ManagerId EQUALS 2")

List_ManagerEmployeeWorkAssignment.All("ManagerId EQUALS 2")

List_ManagerEmployeeWorkAssignment.None("ManagerId EQUALS 2")

You can include UpdateStatus to evaluate list items. UpdateStatus can evaluate the following statuses:

  • None
  • Insert
  • Update
  • Delete

UpdateStatus uses the following basic syntax, where the status names must be in quotes:

List.Any/All/None(UpdateStatus Equals "None/Insert/Update/Delete")

For more examples of grouping functions, see Example: Ensuring That Basic Contact Details Are Available After Form Submission

Expression

Click Create Expression and enter the expression evaluated in the workflow. The conditional expression can include database fields from the expression field tree, such as <<List_PersonAddress.Item.CountryCode>>, and the values that the property can have in Dayforce, such as “USA”.

For more information on the logical operators you can use in these expressions, see Appendix: Operator Types and Values.

For more information on the database fields you can select from the expression field tree, see the Workflow Tokens Guide.

Note: An advanced understanding of Dayforce database fields is required to configure expressions for Condition nodes. For more information on configuring Condition nodes to meet your organization’s needs, contact your Dayforce representative.

Expression functions for Condition node
Function Example
HasCurrentEmploymentStatusChanged HasCurrentEmploymentStatusChanged(sessionid,<<EmployeeId>>,<<List_EmployeeEmploymentStatus>>)
HasCurrentPayGroupChanged HasCurrentPayGroupChanged(sessionid,<<EmployeeId>>,<<List_EmployeeEmploymentStatus>>)
HasCurrentPayClassChanged HasCurrentPayClassChanged(sessionid,<<EmployeeId>>,<<List_EmployeeEmploymentStatus>>)
HasCurrentPayTypeChanged HasCurrentPayTypeChanged(sessionid,<<EmployeeId>>,<<List_EmployeeEmploymentStatus>>)
HasCurrentPrimaryJobChanged See Example: Primary Job Change.
HasCurrentPrimaryWorkLocationChanged See Example: Primary Work Location Change.
HasFutureRecord

See Example: Existing Current or Future Dated Employment Status Record.

Note: Can be used to evaluate four entities: EmploymentStatus, WorkAssignment, Address, and ContactInfo.

HasPositionPropertyChanged

Note: This expression is available only to users of Position Management.

HasPositionPropertyChanged(<<PMEntityName>>,<<PropertyName>>)

Example: Primary Job Change

When the Job Assignment and Compensation Change form is submitted, it’s routed to the HR department for approval if there is a change to the employee’s primary job assignment, but it’s routed to the manager for approval if the primary job assignment doesn’t change. The Condition node is configured with the following expression:

HasCurrentPrimaryJobChanged(sessionid, <<EmployeeId>>, <<List_EmployeeWorkAssignment>>)

The Condition node is configured with true and false outcomes, which determine where the form is routed based on the outcome of the condition:

Condition node with two outbound links to two different routing nodes.

A supervisor submits a job assignment change form for an employee, which updates her primary job assignment. When the workflow runs, the condition evaluates to true, and the form is routed to the HR department for approval.

Example: Primary Work Location Change

When the Job Assignment and Compensation Change form is submitted, it’s routed to the HR department for approval if there’s a change to the employee's primary work location. It’s routed to the manager for approval if the primary work location doesn’t change. The Condition node is configured with the following expression:

HasCurrentPrimaryWorkLocationChanged(sessionid, <<EmployeeId>>, <<List_EmployeeWorkAssignment>>)

The Condition node is configured with true and false outcomes, which determine where the form is routed based on the outcome of the condition:

Condition node with two outbound links to two different routing nodes.

A supervisor submits a job assignment change form for an employee, which updates their primary work location. When the workflow runs, the condition evaluates to true, and the form is routed to the HR department for approval.

Example: Existing Current or Future Dated Employment Status Record

To configure an expression that evaluates if the employee has a current or future-dated employment status record, under the 'EmploymentStatus' entity:

hasfuturerecord(SessionId, "List_EmployeeEmploymentStatus",
<<EmployeeId>>, <<GlobalEffectiveStart>>)

To configure an expression that evaluates if the employee has a current or future dated address record, under the 'Address' entity:

hasfuturerecord(SessionId, "List_PersonAddress", <<EmployeeId>>,
<<List_PersonAddress.Item.EffectiveStart>>)

Example: Ensuring That Basic Contact Details Are Available After Form Submission

In this example, the expression evaluates a contact details form to make sure that a phone number and email address are available. If not, the condition node routes the workflow back to the submitter:

List_PersonContactPhoneNumber.Any(NOT UpdateStatus EQUALS "delete" AND NOT COALESCE(ContactNumber, "NULL") EQUALS "NULL") OR List_PersonContactElectronicAddress.Any(NOT UpdateStatus EQUALS "delete" AND NOT COALESCE(ElectronicAddress, "NULL") EQUALS "NULL")

This expression uses the Any grouping and UpdateStatus to check phone number and email address submissions. The expression returns true if there is any nondeleted record in the list and the phone number and email address is null. If nothing is in the list, this expression returns false.