Start form
Access request
Filled in by whoever starts the process
IT & Security package
People request application access from a form; risk-based approvals route it, the grant is provisioned automatically and time-boxed access is revoked on expiry.
About this package
Access request and provisioning takes an application access request from a form through to a live grant. The requester picks the application, the role or entitlement, how long the access is needed (30 days, 90 days or permanent), who it is for and why.
The workflow looks the person up in the identity platform, reads the application from the Application catalogue (owner, risk level, privileged flag, provisioning group) and evaluates the Access approval path decision table. Every request goes to the line manager; medium-risk applications also need the application owner, and high-risk or privileged roles add a security review. Approvals run in sequence and any rejection stops the request and emails the requester.
Once approved, the grant is created through the identity API and the requester is emailed. For time-boxed access a sub-workflow waits 30 or 90 days and revokes the grant, so temporary access never outlives its approval. Adapt the catalogue, the approval rules and the identity API paths to your platform.
Starts from a form: the requester fills in the application, role, duration and justification (Run dialog, or your service portal posting to the start API).
Someone fills in a form to start it: the workflow inputs are the start form (Run dialog in the app, or your own portal posting to the API), and people complete User Task forms along the way.
The flow
Request access
The start form collects the application, role, duration, justification and the employee id of the person who needs it.
Look up user and application
Get user returns the person and department; the Application catalogue gives the risk level, privileged flag and provisioning group.
Decide the approval path
The Access approval path decision table chooses manager only, manager and owner, or manager, owner and security, and sets the request SLA.
Approve in sequence
The manager, then the application owner and security reviewer where required, approve or reject. Any rejection emails the requester and closes the request.
Provision the grant
The identity API adds the user to the provisioning group and returns a grant id; the requester is emailed.
Revoke on expiry
For 30- or 90-day access, the Revoke access on expiry sub-workflow waits out the period, revokes the grant and tells the requester.
Forms
The workflow inputs are the start form: the Run dialog renders them, and your own portal can post the same fields. User Tasks show their fields and outcome buttons to the assignee.
Start form
Filled in by whoever starts the process
User Task
Approve access: {{user_name}} → {{application}} ({{role}})
User Task
Owner approval: {{application}} {{role}} for {{user_name}}
User Task
Security review: {{application}} {{role}} for {{user_name}}
From your code
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
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":{"requester_name":"Morgan Ellis","requester_email":"morgan.ellis@example.com","employee_id":"E-2040","application":"Finance ERP","role":"Accounts payable clerk","justification":"Covering supplier invoice processing during the quarter-end close","duration":"90 days"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input requester_name="Morgan Ellis" --input requester_email=morgan.ellis@example.com --input employee_id=E-2040 --input application="Finance ERP" … --waitInbound webhook
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 '{"requester_name":"Morgan Ellis","requester_email":"morgan.ellis@example.com","employee_id":"E-2040","application":"Finance ERP","role":"Accounts payable clerk","justification":"Covering supplier invoice processing during the quarter-end close","duration":"90 days"}'What's included
| Type | Name | Details |
|---|---|---|
| Email template | Access expired | Sent to the requester when time-boxed access is removed at the end of its period. |
| Email template | Access granted | Sent to the requester when the access has been provisioned. |
| Email template | Access request declined | Sent to the requester when an approver rejects the request. |
| Data table | Application catalogue | Applications people can request, with the owner, risk level, whether roles are privileged and the directory group that grants access. Edit the rows to match your estate. |
| Integration | Identity platform | |
| API reference | Create access grant | POST /access-grants — Add the user to the provisioning group for the application and role. Returns the grant id used to revoke it later. |
| API reference | Get user | GET /users/{{employee_id}} — Directory record for the person who will receive the access: name, email, department and line manager. |
| API reference | Revoke access grant | POST /access-grants/{{grant_id}}/revoke — Remove a time-boxed grant when it expires. |
| Decision table | Access approval path | 5 rules — Which approvals an access request needs, from the application risk, whether the role is privileged and how long access is requested for. First matching rule wins. |
| Workflow | Access request | 25 steps — Someone requests access to an application; the catalogue and approval path decide which approvals it needs, then the grant is provisioned in the identity platform and removed automatically when time-boxed access ends. |
| Workflow | Revoke access on expiry | 9 steps — Waits for the length of a time-boxed grant, then revokes it in the identity platform and tells the requester. Started by the Access request workflow. |
Application catalogue · 7 sample rows
ApplicationApplication ownerRisk levelPrivilegedProvisioning groupNotes
Requirements
Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.
Integration “Identity platform”Required
Workflow “Access request” assigneesRequired
Install
Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.
curl -fLO https://usertasks.com/gallery/access-request-provisioning-1.0.0.utpkg
usertasks packages inspect access-request-provisioning-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install access-request-provisioning-1.0.0.utpkg --dry-run
usertasks packages install access-request-provisioning-1.0.0.utpkg # prompts for each requirement
usertasks packages install access-request-provisioning-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete access-request-provisioning -f values.yamlVerify the download
shasum -a 256 access-request-provisioning-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.
Versions
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
IT & Security
An RFC form scores change risk, routes to pre-approval, CAB or emergency CAB, then tracks implementation and the post-implementation review in your ITSM.
Needs:REST APIAssigneesEmail
IT & Security
Monitoring alerts open prioritised ITSM incidents automatically; repeat alerts are deduplicated and P1/P2 incidents page the on-call engineer with escalation.
Needs:REST APIAssigneesInbound webhook
IT & Security
A nightly job reads joiners, movers and leavers from the HR system and creates, updates or disables directory accounts with role-based groups, logging every action.
Needs:REST APIDirectory / HR system