-
Notifications
You must be signed in to change notification settings - Fork 15
Catalogue Request Approvals
Set it up: Forms β the π‘οΈ shield icon on a form's row β Approval settings Approve requests: Forms β Approvals What the customer sees: their portal dashboard β Your requests
Some requests shouldn't go straight to the service desk. A new laptop, a software licence, access to a system β these often need a manager or a budget-holder to say yes first. A catalogue item can now be set to wait for approval, and only become a ticket once someone signs it off.
This is optional and per-item: leave it off and the catalogue behaves exactly as before.
A catalogue item is a form you've offered in the portal (see Portal Request Catalogue). On the Forms list, each row has a π‘οΈ shield button β Approval settings:
- Tick Require approval before a ticket is raised.
- Choose an approver β the member of staff who signs these off.
- Save.
The form's row then shows an amber Needs approval pill.
π‘ Approval only bites on catalogue (portal) requests. If the form isn't in the catalogue yet, the setting is saved but does nothing until you publish it β the modal says so. A member of staff filling the form in internally is never gated; there's no customer to raise the ticket for.
π‘ A form set to "require approval" but with no approver chosen does nothing. It's treated as unconfigured rather than trapping requests with nobody able to clear them.
Instead of the request sitting in Forms β Submissions waiting for someone to notice, it goes to the chosen approver as a pending approval. The approver β and only the approver (or an administrator) β can decide it.
The person who was named as approver is fixed at the moment of submission. If you later change the catalogue item's approver, requests already waiting stay with the person the customer was originally told would handle them; only new requests go to the new approver.
Open Forms β Approvals. Three views down the side:
- For me β requests waiting on you.
- All pending β every request awaiting anyone (oversight).
- Decided by me β your recent approvals and rejections.
Each card shows the request, who asked, when, and every answer they gave. Add an optional note, then:
- Approve β a ticket is raised automatically. It's opened as the requester, under their company, with the submitted answers in the body, and the request is linked to it. The desk picks it up like any other ticket.
- Reject β the decision is recorded and no ticket is raised.
π Approving is how the request becomes a ticket. There's no separate "raise a ticket from this submission" step for a gated request β approval is that step.
A pending request isn't a ticket yet, so it would otherwise vanish from the customer's view until it was approved. Their portal dashboard now has a Your requests section showing each request they've submitted and its state:
- Awaiting approval β submitted, waiting on the approver.
- Approved β with a link straight to the ticket it became.
- Declined β the approver turned it down.
The section only appears when they actually have requests.
The approver's note stays internal for now β a declined request shows as Declined without the reason. If you want the reason shared with the requester, that's a small future change.
The assigned approver, or an administrator. Everyone else is refused β the whole point of naming an approver is that they're the one who signs it off.
β οΈ An approver needs access to the Forms module to open the Approvals inbox β the same rule as Change Management's approvals page. If you name someone who doesn't normally use Forms, give them Forms access, or the requests will wait unseen.
Equipment Request is in the catalogue and set to require approval, with Priya (IT Manager) as approver.
- Tom requests a docking station. His dashboard shows Docking station β Awaiting approval.
- Priya opens Forms β Approvals β For me, sees Tom's request and his answers, and clicks Approve.
- A ticket RPT-402-11890 is raised as Tom, with his answers in the first message. Priya's inbox no longer lists it; Tom's dashboard now shows Approved β RPT-402-11890, linking to the ticket.
Had Priya clicked Reject, Tom would see Declined and no ticket would exist.
- The approver is a member of staff, not the requester's manager. Routing to "whoever the requester reports to" needs a manager relationship the portal doesn't hold yet β a later step.
- One approver, not a board. There's no multi-approver / majority vote here (Change Management has that for changes).
- No approval reason shown to the customer (see above).
- Portal Request Catalogue β offering forms to customers in the first place
- Forms β building forms and reading submissions
- Catalogue Request Approvals β Developer Guide β how it works under the hood
- Self-Service Portal β the customer's side
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)