IT & Security package

ServiceNow change approval

ServiceNow sends a change for approval; CI criticality and a risk table route it, the CAB approves, rejects or asks for info, and the approval is written back.

Connects to ServiceNow

OfficialHeadless / APIIntermediate~25 min setupv1.0.0

About this package

What it does

ServiceNow change approval moves CAB decisions into a focused review task while ServiceNow stays the system of record. When a change request reaches Authorize, a business rule or flow posts its sys_id to the workflow.

The workflow reads the change from the Table API (type, risk, impact, CI, window, implementation / backout / test plans and conflicts), looks the CI up in the CI criticality table and evaluates the Change risk route decision table: emergency changes go to the ECAB, standard changes are approved automatically, high-risk changes and critical CIs go to the CAB and the rest to the change manager.

It finds the pending sysapproval_approver record for the change. The reviewer gets a task with the plans, the checks for the route and Approve, Request info and Reject buttons. Approve and Reject PATCH the approval record with the comments, so the ServiceNow change model moves on by itself; Request info adds a work note to the change. The change team is emailed the decision.

Headless / API

Starts from ServiceNow: a business rule on change_request (state changes to Authorize) posts {"sys_id": current.sys_id} to the workflow webhook.

Another system starts it over REST or an inbound webhook. No UI is needed; people only appear where a decision needs a human.

The flow

Step by step

  1. 1

    Change sent

    ServiceNow posts the change_request sys_id when it reaches Authorize.

  2. 2

    Read the change

    GET /table/change_request/{sys_id} returns type, risk, CI, window and plans with display values.

  3. 3

    Route by risk

    The CI criticality table and the Change risk route table pick ECAB, CAB, change manager or pre-approved.

  4. 4

    Find the approval

    GET /table/sysapproval_approver finds the requested approval record for the change.

  5. 5

    CAB decides

    The reviewer checks the plans and window and chooses Approve, Request info or Reject.

  6. 6

    Write back

    PATCH the approval record (approved / rejected with comments) or add a work note to the change; the change team is emailed.

ServiceNow change approval — ServiceNow posts a change request awaiting approval; the CI criticality and the Change risk route decide the approval, the CAB (or change manager) approves, rejects or asks for information, and the decision is written to the sysapproval_approver record. The same canvas you get in the designer after installing.

Forms

Inputs and task forms

The inputs a caller passes when it starts a run, and the forms people complete when the process needs a decision.

Start inputs

ServiceNow change approval

Passed by the calling system

Change sys_id * sys_id · textThe change_request sys_id (current.sys_id when the change reaches Authorize / an approval is requested)
Change number number · textOptional: the change number (current.number)
Notify notify_email · emailname@company.comOptional: where the decision email goes (the change team or requester)

User Task

CAB review

{{route}}: {{number}} {{short_description}} (risk {{risk}}) · 3-column grid · own header and theme

Implementation, backout and test plans are adequate plans_ok · boolean
Window and conflicts are acceptable window_ok · boolean
Business / service owner agrees business_ok · boolean
Residual risk * residual_risk · choice
LowModerateHigh
Approval conditions conditions · text
Comments for the change owner * comments · textarea
ApproveRequest infoReject

Headless

Call it from your systems

Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.

REST

shell
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
  -H "Authorization: Bearer $USERTASKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id":"<workflow id>","variables":{"sys_id":"c286d61347c12200e0ef563dbb9a71df","number":"CHG0030457","notify_email":"payments-platform@example.com"}}'

CLI

shell
usertasks workflows inputs <workflow id>          # the start form: keys, types, required
usertasks workflows run <workflow id> --input sys_id=c286d61347c12200e0ef563dbb9a71df --input number=CHG0030457 --input notify_email=payments-platform@example.com --wait

Inbound webhook

shell
usertasks webhooks create <workflow id>          # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
  -H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
  -d '{"sys_id":"c286d61347c12200e0ef563dbb9a71df","number":"CHG0030457","notify_email":"payments-platform@example.com"}'

What's included

9 assets, ready to adapt

TypeNameDetails
Email templateChange decisionSent to the change requester's team when the CAB decides or asks for more information.
Data tableCI criticalityHow critical each configuration item is: the workflow looks the change's CI up by name to set the risk route. Unknown CIs count as medium.
IntegrationServiceNowServiceNow Table API (/api/now). Use an OAuth bearer token (or Basic auth) for an integration user that can read change_request and update sysapproval_approver records.
API referenceAdd change work notePATCH /table/change_request/{{sys_id}} — Add a work note to the change request (PATCH /table/change_request/{sys_id}), e.g. the CAB's questions when more information is needed.
API referenceFind pending approvalGET /table/sysapproval_approver — Find the requested approval record for the change (GET /table/sysapproval_approver?sysparm_query=sysapproval={sys_id}^state=requested).
API referenceGet change requestGET /table/change_request/{{sys_id}} — Read the change request with display values (GET /table/change_request/{sys_id}?sysparm_display_value=all): type, risk, CI, window, plans and requester.
API referenceSet approvalPATCH /table/sysapproval_approver/{{approval_sys_id}} — Approve or reject the approval record (PATCH /table/sysapproval_approver/{sys_id} with state approved / rejected and comments). The change workflow in ServiceNow then moves the change on.
Decision tableChange risk route6 rules — Which approval a change needs, from its type (normal / standard / emergency), the ServiceNow risk and the criticality of the CI. First matching rule wins.
WorkflowServiceNow change approval20 steps — ServiceNow posts a change request awaiting approval; the CI criticality and the Change risk route decide the approval, the CAB (or change manager) approves, rejects or asks for information, and the decision is written to the sysapproval_approver record.

CI criticality · 5 sample rows

CI nameCI classCriticalityBusiness serviceSupport groupExempt from change freeze

Requirements

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • REST API — A REST API integration: set its base URL and credentials on install.
  • Inbound webhook — An inbound webhook created for the workflow, so other systems can start it.
  • Assignees — People in your workspace to receive the User Tasks (picked on install).
  • Email — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. ServiceNow integration: base URL https://<instance>.service-now.com/api/now and an OAuth bearer token (or Basic auth) for an integration user with change_manager or approval admin rights on sysapproval_approver.
  2. Assignee: pick the CAB chair or change manager who receives the reviews. In ServiceNow, make the integration user (or a group it is in) the approver the change model asks, so its approval record is the one the workflow updates.
  3. Add a business rule on change_request (after update, state changes to Authorize) that posts {"sys_id": current.sys_id, "number": current.number} to the workflow webhook URL.
  4. Replace the CI criticality rows with your CIs (or sync them from the CMDB) and tune the Change risk route rules.
  5. Email: configure EMAIL_PROVIDER so decision emails are delivered (the step continues on error).

Asked for on install

  • Integration “ServiceNow”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://acme.service-now.example.com/api/now· optional
  • Workflow “ServiceNow change approval” assigneesRequired

    • User for step “CAB review”nodes.9.config.assignee_id

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download servicenow-change-approval-1.0.0.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
curl -fLO https://usertasks.com/gallery/servicenow-change-approval-1.0.0.utpkg
usertasks packages inspect servicenow-change-approval-1.0.0.utpkg       # offline: checksum, hashes, signature
usertasks packages install servicenow-change-approval-1.0.0.utpkg --dry-run
usertasks packages install servicenow-change-approval-1.0.0.utpkg       # prompts for each requirement
usertasks packages install servicenow-change-approval-1.0.0.utpkg --keep-incomplete --yes   # in CI; finish with:
usertasks packages complete servicenow-change-approval -f values.yaml

Verify the download

File SHA-256
c4bcdb99b1ab001a421dff2bb219fbef923b9ec30c8cb2e78af5d0a5a1320297
Package checksum (what is signed)
sha256:39c71569f5fb244050072964a5c5df31bade8ba151d125ae6e4aff7dc0d1639c
Signer
Unsigned preview build — compare the SHA-256 above

shasum -a 256 servicenow-change-approval-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-10-28First release.

Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work

More packages

Related

Browse the whole gallery