Approval Delegations
Approval delegations let a user who normally approves requisitions, purchase orders, invoices, or related documents temporarily transfer that authority to a trusted colleague. Delegations are time-bound, optionally scoped by department and amount, and respect a clear state machine so audit trails stay intact.
Why use delegations?
- Planned leave — Approvers remain out of office without blocking procurement.
- Coverage — A backup approver acts within limits you define.
- Transparency — Delegator, delegate, date range, and approval types are recorded; delegated actions can be listed on the delegation detail view.
Delegations do not replace permanent role changes; they are temporary substitutes for approval workload.
Who can participate
- Any authenticated user can open the Approval delegations area to see:
- Delegations given — requests they created for others to approve on their behalf.
- Delegations received — requests where they are the delegate.
- The page also shows a summary of delegation activity computed for the current user.
Only the delegator and delegate may open a specific delegation’s detail page; other users receive 403 Forbidden.
Creating a delegation
Start Create delegation and complete the form:
| Field | Requirement | Notes |
|---|---|---|
| Delegate | Required | Choose another user in the tenant (you cannot delegate to yourself) |
| Starts at | Required | Date/time when coverage may begin; must be today or later |
| Ends at | Required | Must be after the start |
| Approval types | Required (one or more) | See below |
| Max amount | Optional | Monetary cap for delegated approvals; leave empty for no cap |
| Department | Optional | Restrict coverage to one department |
| Reason | Optional | Explains leave, project coverage, etc. |
| Notify delegator | Optional flag | Controls whether the delegator receives notifications per product rules |
Approval types you can delegate
The creator picks at least one category (stored as an array on the delegation):
- All approvals — Broad coverage across supported types.
- Purchase requisitions
- Purchase orders
- Invoices
- Payments
- Contracts
Narrower types reduce risk when the delegate should not touch every workflow.
After saving
Successful creation redirects to the delegation detail screen with a success message. The service layer may enforce extra rules (for example conflicts with overlapping delegations); errors return to the form with messages.
Delegation statuses
| Status | Meaning |
|---|---|
| Pending | Created; waiting for the delegate to accept or reject |
| Active | Accepted and within the start/end window |
| Expired | End date passed or system marked as expired |
| Revoked | Cancelled early by the delegator |
| Rejected | Delegate declined the request |
While active, the delegate can approve matching work items according to workflow integration (subject to max amount and department scoping on the delegation record).
Accepting or rejecting (delegate)
When a delegation is pending, the delegate may:
- Accept — Confirms they will cover approvals in scope. The UI exposes Accept when business rules allow (pending requests awaiting confirmation).
- Reject — Declines responsibility. An optional reason can be supplied (up to 500 characters) so the delegator can choose someone else.
Only the delegate performs these actions; attempts by other users fail.
Revoking (delegator)
The delegator may revoke a delegation that is still pending or active. Revocation stops future delegated authority immediately (subject to app processing). An optional reason documents why coverage ended early.
Revocation is not offered for delegations already rejected, expired, or revoked.
Periods and expiry
- Start and end define the intended window. The system evaluates active state using both the stored status and whether now falls between
starts_atandends_at. - When the window passes, delegations naturally expire from a practical standpoint; expired records remain visible for history.
- Plan starts_at on or after the day you create the request to satisfy validation (
after_or_equal:todayon the start date).
Detail page insights
The delegation show screen loads:
- Delegator and delegate names and emails
- Optional department (including Arabic name when present)
- Recent delegated approvals (limited list) with who approved
Flags on the page indicate whether you are the delegator or delegate and which actions (Accept, Revoke) are currently available.
Governance tips
- Prefer least privilege: delegate only the approval types and department needed.
- Set a realistic max amount when financial authority should not fully transfer.
- Ask delegates to accept early so pending work is not stuck before leave begins.
- Revoke as soon as you return if the product does not auto-end visibility for you.
- Use the reason field for audit clarity (“Annual leave”, “Maternity cover”, etc.).