← Help & Docs

Service Catalog Administration

For Admins: designing catalog items, categories, fulfillment routing, and approval workflows. Last updated 2026-05-17

The Service Catalog turns ad-hoc "submit a ticket" requests into structured, routed, approval-aware service items. Each catalog item carries form schema + fulfillment profile + approval flag + owner team + ETA, so submissions become well-formed TaskerTasks the right team can act on immediately.

For end-user behavior, see Submitting Requests & Tracking Them.

The data model

Seeding the defaults

Run POST /api/service-catalog/seed-defaults (Admin) once per org. Idempotent - re-running upserts. Installs 5 starter categories (Hardware / Software & Applications / Access & Permissions / User Lifecycle / IT Support) and 13 starter items: 8 service requests (Request New Laptop, Software Installation, Application Access Request, Password Reset, VPN Access, MFA Re-enrollment, New User Onboarding, User Off-boarding), 4 issue reports bound to the ITIL Incident profile (Report a Software Issue, Report a Hardware Issue, Network / Connectivity Issue, Email & Calendar Issue), and Shared Mailbox / Distribution List. All seeded items have isSystem: true - editable but not deletable.

From the app: TATER Manage → Connections → Service Catalog → + Seed Defaults. The same page lists, edits, activates/deactivates, and deletes catalog items and categories.

From MCP: there's no seed_defaults tool - call the REST endpoint directly or use the UI button.

Authoring custom catalog items

Use POST /api/service-catalog (Admin) with the schema documented in api/src/functions/serviceCatalog.ts. Key fields:

Form field design tips

Managing categories

Categories are hierarchical via parentId. Recommend a flat list of 5-7 top-level categories for browsability; sub-categorize only if any one has 8+ items.

Fulfillment routing

Submissions create TaskerTasks with:

The TaskerProfile (§12by) drives the status workflow + SLA defaults. The ITIL Service Request profile has stages: Open → Approval Pending → In Progress → Fulfilled → Closed. If your item has approvalRequired: true, the workflow starts at Approval Pending.

Workflow fulfillment (multi-step, ServiceNow-style)

For requests that need a coordinated set of tickets rather than one — onboarding, off-boarding, hardware provisioning with approval — set the item's Fulfillment workflow. Submissions then trigger a TATER Ops workflow instead of a single task:

Building workflows: TATER Ops → Workflows → Templates. Design the steps, assignees, dependencies, and approvals there; then pick the workflow from the dropdown in the catalog item editor (TATER Manage → Connections → Service Catalog → Edit item).

Safety net: if the configured workflow is later deleted or deactivated, submissions never fail — they fall back to a single task with a visible warning, and the API logs the fallback.

The same behavior applies on every submission surface: TATER Ops, My TATER → Self-Service Requests, and the MCP submit_catalog_request tool.

Approval workflow design

Items marked approvalRequired: true require a human approver before fulfillment starts. The approver is:

  1. The submitter's direct manager (if known from Entra / org chart)
  2. A named approver on the catalog item's metadata (future)
  3. Otherwise, the catalog item's ownerTeam lead

Approval happens via the Tasker task's status workflow - the approver opens the task, reviews the form values + justification, and transitions status from Approval Pending → In Progress (approve) or Approval Pending → Closed (reject, with a comment explaining why).

Popularity ranking

Every successful submission increments the catalog item's popularity counter (best-effort, non-fatal if it fails). The listing endpoint sorts by popularity desc → name. This surfaces top-requested items at the top so users find them fast. Reset to 0 on the item record if you need to manually de-rank an item.

MCP integration

Three MCP tools (HTTP + stdio parity):

Pattern for AI assistants: a user says "I need Salesforce access" → agent calls list_service_catalog to find the right item → get_catalog_item for the schema → asks user for required fields it doesn't know → submit_catalog_request. Every action audit-logged with via: 'mcp' or via: 'copilot' / via: 'claude'.

Pitfalls