Hi @Dmitry Baranov , there are 2 parts in your question.
- When state change to Approved, restrict changes
- Restrict changes to a group/role
But I'm afraid there is solution to each problem but not for the combination which you are looking for.
Option 1 — Using Permissions (applies to a specific group)
This is the only way to restrict a particular group of users from editing.
- Go to
Project Settings → Permissions → New GroupCreate a group, e.g.Test-ReadOnlyGroup, and add restricted users. - Go to Project Settings → Project configuration → Areas → [Select Area] → Security
- Select
Test-ReadOnlyGroup - Set Edit work items in this node → Deny
- Optionally also Deny:
- Manage test plans
- Manage test suites
- Select
- Test:
- A user in the group can open Test Cases, Test Plans, and Test Suites but cannot edit or save changes.
- Other users can edit normally.
Limitation: This applies all the time, not only when State = Approved.
Option 2 — Using Process Rules (applies to all users)
If you want all users to be restricted once the Test Case is approved:
- Go to
Organization Settings → Process → [Your Inherited Process] → Test Case → Rules → New rule - Condition:
- When
State = Approved
- When
- Action:
- Make field read-only → select fields like
Title,Steps,Priority,Description, etc.
- Make field read-only → select fields like
- Save and test:
- When any Test Case is moved to
Approved, everyone sees the fields as read-only.
- When any Test Case is moved to
Limitation: Cannot target specific users or groups. It applies to everyone.
Why you can’t combine both
Azure DevOps currently has no built-in feature that lets you apply a rule condition like
“Make field read-only when
State = ApprovedAND user is in group X.”
Rules can only check field data, not security context. Permissions can check security groups, but not work item state. That’s why this specific combination isn’t possible out-of-the-box.
The only workaround is custom automation (like a Service Hook + Azure Function that reverts changes if a restricted user modifies an Approved item), but that’s a custom-coded solution, not supported directly in UI.