Change Request State Transition via REST API Returns 200 but state does not change
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi Everyone,
I'm looking for confirmation/clarification around Change state transitions via REST APIs, specifically when attempting to move a normal/standard Change Request through the Change State Model.
Scenario:
- Table: change_request
- Change types tested: Normal and Standard
- State model configured with standard transitions (New, Assess, Authorize, Scheduled, Implement, Review, Closed)
- REST calls made using an approved mech ID with Change Management API-related roles
- Requests executed via external REST client and REST API Explorer
Observed behavior I’m attempting to transition the state from Scheduled → Implement by sending a PATCH. I tested both the Table API and the Change Management API endpoint and observed the same behavior. In both cases, valid state transitions return 200 but do not execute the Change State Model.
/api/now/table/change_request/{sys_id}
/api/sn_chg_rest/change/{sys_id}
Other fields in the same PATCH request update successfully. In the UI, the Implement button works as expected when conditions are met (planned window, etc.)
When attempting to PATCH an invalid transition (e.g., Scheduled to Review or Scheduled to Authorize) correctly returns a 400 error.
Questions:
Is it correct that:
- Change lifecycle transitions (Scheduled → Implement, etc.) cannot be executed via direct REST PATCH updates, even with correct roles and approvals?
- Are there any ACLs or server-side rules that intentionally prevent direct updates to the state field when the Change State Model is not invoked (i.e., via REST), even though other fields update successfully?
- A REST PATCH can update fields but will not invoke the state model, resulting in a 200 response with no state change?
Appreciate any confirmation or guidance on the correct pattern for implementing change integrations via REST.
Thank you!
