“Evaluate rules” in the context of Azure DevOps work item rules and security groups refers to how Azure DevOps checks whether a rule that depends on user or group membership applies to the current user when they modify a work item.
Why this is used
Rules can be scoped so they only apply to certain users or groups. For example:
- Make a field required only for a specific group.
- Make a field read-only for everyone except a specific group.
To do this, Azure DevOps must evaluate (check) the current user’s group membership when the rule runs. That is the “evaluation” of the rule against security groups.
How rule evaluation works with groups
From the context:
- When a work item is modified via web portal, REST API, or
azure boards command, Azure DevOps calls Microsoft Entra ID / Active Directory to check if the user is in the specified group.
- When modified via older clients using the WIT Client Object Model (Visual Studio, Excel, custom tools), evaluation uses a client-side cache that does not understand AD groups.
Because of this, guidance is:
- Use Azure DevOps security groups (not raw AD groups) in rules that depend on membership. This avoids inconsistent behavior across clients.
Concrete scenarios
- Make a field required only for a specific group (on-premises XML example)
<FIELD name="Second Approver">
<REQUIRED for="Example1\Junior Analysts"/>
</FIELD>
Scenario: Only “Junior Analysts” must fill in “Second Approver”. When a user edits the work item, Azure DevOps evaluates whether the user is in Example1\Junior Analysts. If yes, the REQUIRED rule applies; if not, it does not.
- Make a field read-only for everyone except a triage group
<FIELD name="Triage Description">
<READONLY not="[Project]\\Triage Committee" />
</FIELD>
Scenario: Only members of [Project]\Triage Committee can edit “Triage Description”. For all other users, the field is read-only. Azure DevOps evaluates whether the current user is in that group each time the work item is edited.
- Different behavior for different groups on the same field
<FIELD name="Severity">
<REQUIRED for="[Project]\\Project Members" not="[Global]\\Project Admins"/>
</FIELD>
Scenario: “Severity” is required for normal project members but not required for project admins. If a user belongs to both groups, the for condition wins and the field is required. Again, this is decided by evaluating group membership when the rule runs.
Why this matters
- Security and governance: Ensures only the right people can change critical fields or are forced to provide certain data.
- Consistency: Using Azure DevOps security groups ensures rule evaluation works reliably across different clients (web, REST, etc.).
- Least privilege: Combined with security groups, rules help enforce that only specific roles can perform sensitive updates.
References: