Service Catalog Approval Workflows

SkillDev tools

Complete guide to configuring catalog approval rules, multi-level approvals, delegation, and escalation

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Service Catalog Approval Workflows skill

What this skill tells your AI

The instructions your AI receives, as published by happy-technologies-llc/happy-platform-skills in skills/catalog/approval-workflows/SKILL.md and read by ahel’s review.

Overview

This skill covers approval management for service catalog items:

  • Understanding approval architecture
  • Configuring approval rules and conditions
  • Multi-level and parallel approvals
  • Approval delegation and coverage
  • Timeout, reminder, and escalation configuration
  • Monitoring and managing approval requests

When to use: When setting up approval processes for catalog items, troubleshooting stuck approvals, or implementing complex approval routing.

Prerequisites

  • Roles: catalog_admin, approval_admin, or admin
  • Access: sysapproval_approver, sc_ic_aprvl_type_defn, sc_ic_aprvl_defn tables
  • Knowledge: Service catalog structure, approval concepts
  • Related Skills: catalog/item-creation should be completed first

Procedure

Step 1: Understand Approval Architecture

Approval Tables:

TablePurpose
sysapproval_approverIndividual approval records (one per approver)
sysapproval_groupGroup-based approvals
sc_ic_aprvl_type_defnCatalog approval type definitions
sc_ic_aprvl_defnCatalog-specific approval definitions
sys_approval_ruleSystem-wide approval rules

Approval Flow:

Request Submitted
      ↓
Approval Rule Evaluated
      ↓
Approval Records Created (sysapproval_approver)
      ↓
Approvers Notified
      ↓
Approver Takes Action
      ↓
Next Level (if multi-level) OR Complete

Approval States:

StateValueDescription
Not Yet Requestednot yet requestedApproval not triggered
RequestedrequestedWaiting for approver action
ApprovedapprovedApprover approved
RejectedrejectedApprover rejected
CancelledcancelledApproval cancelled
DuplicateduplicateDuplicate approval skipped
Not Requirednot_requiredApproval waived

Step 2: Query Existing Approvals

Find pending approvals for a request:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: sysapproval=[ritm_sys_id]
  fields: sys_id,approver,state,due_date,source_table,sys_created_on
  limit: 50

Find all pending approvals for a user:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: approver=[user_sys_id]^state=requested
  fields: sys_id,sysapproval,document_id,source_table,sys_created_on
  limit: 100

Find overdue approvals:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^due_date<javascript:gs.nowDateTime()
  fields: sys_id,approver,sysapproval,due_date,source_table
  limit: 100

Step 3: Create Approval Rules (Legacy Method)

Note: This uses the legacy approval rule system. For new implementations, consider using Flow Designer or Catalog Builder approval types.

Create basic approval rule:

Tool: SN-Create-Record
Parameters:
  table_name: sys_approval_rule
  data:
    name: "Manager Approval for Hardware > $1000"
    active: true
    table: sc_req_item
    condition: cat_item.price>1000^cat_item.category.title=Hardware
    approval_type: "single"
    approver_field: "opened_by.manager"
    order: 100

Step 4: Configure Catalog Approval Types

Catalog approval types define reusable approval patterns.

Query existing approval types:

Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_type_defn
  query: active=true
  fields: sys_id,name,description,approval_type
  limit: 50

Create approval type definition:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Manager Approval"
    description: "Requires approval from requester's manager"
    active: true
    approval_type: "approver_user_field"
    approver_user_field: "requested_for.manager"
    wait_for: "everyone"  # everyone, anyone
    mandatory: true

Approval Type Options:

approval_typeDescription
approver_user_fieldUser from field on record
approver_group_fieldGroup from field on record
specific_userHardcoded user
specific_groupHardcoded group
scriptCustom script determines approver

Step 5: Configure Multi-Level Approvals

Multi-level approvals execute in sequence based on order.

Create Level 1 - Manager Approval:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Manager Approval"
    approval_type_definition: [manager_approval_type_sys_id]
    order: 100
    active: true
    condition: ""  # Always apply

Create Level 2 - Director Approval (for high-value requests):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Director Approval"
    approval_type_definition: [director_approval_type_sys_id]
    order: 200
    active: true
    condition: "price>5000"  # Only for requests over $5000

Create Level 3 - Finance Approval (for very high value):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Finance Approval"
    approval_type_definition: [finance_approval_type_sys_id]
    order: 300
    active: true
    condition: "price>10000"

Step 6: Configure Parallel Approvals

Parallel approvals execute simultaneously at the same level.

Create Parallel Approvers (same order = parallel):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "IT Security Review"
    approval_type_definition: [security_approval_type_sys_id]
    order: 100  # Same order as other parallel approval
    active: true
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Legal Review"
    approval_type_definition: [legal_approval_type_sys_id]
    order: 100  # Same order = parallel execution
    active: true

Wait For Options:

  • everyone - All approvers must approve
  • anyone - First approval completes the level
  • majority - Majority of approvers must approve

Step 7: Configure Group Approvals

Create group-based approval type:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Change Advisory Board"
    description: "CAB approval required for major changes"
    active: true
    approval_type: "specific_group"
    approver_group: [cab_group_sys_id]
    wait_for: "everyone"

Query group approval status:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_group
  query: parent=[ritm_sys_id]
  fields: sys_id,group,approval,sys_created_on

Step 8: Configure Approval Delegation

Delegation allows users to assign approval authority to others during absence.

Query existing delegations:

Tool: SN-Query-Table
Parameters:
  table_name: sys_user_delegate
  query: delegate=[user_sys_id]^active=true
  fields: sys_id,user,delegate,starts,ends,approval
  limit: 50

Create delegation record:

Tool: SN-Create-Record
Parameters:
  table_name: sys_user_delegate
  data:
    user: [original_approver_sys_id]
    delegate: [delegate_user_sys_id]
    starts: "2026-02-10"
    ends: "2026-02-24"
    approval: true  # Delegate approvals
    active: true

Step 9: Configure Timeout and Escalation

Approval with Due Date:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    due_date: "2026-02-13 17:00:00"

Create Escalation via SLA: Configure through SLA Definitions (sla) table:

Tool: SN-Create-Record
Parameters:
  table_name: contract_sla
  data:
    name: "Approval Escalation - 48 Hours"
    table: sysapproval_approver
    condition: "state=requested"
    duration: "2 00:00:00"  # 48 hours
    workflow: [escalation_workflow_sys_id]
    active: true

Step 10: Process Approvals Programmatically

Approve a request:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "approved"
    comments: "Approved - budget verified and manager confirmed need"

Reject a request:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "rejected"
    comments: "Rejected - request exceeds department budget. Please resubmit next quarter."

Cancel pending approvals:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "cancelled"
    comments: "Approval cancelled - request withdrawn by user"

Step 11: Monitor Approval Metrics

Count pending approvals by group:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^sys_created_on>=javascript:gs.beginningOfLastMonth()
  fields: sys_id,approver.u_group,state
  limit: 1000

Find approval bottlenecks:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^sys_created_onRELATIVELE@dayofweek@ago@5
  fields: sys_id,approver,sysapproval,sys_created_on
  limit: 100

Complete Example: Multi-Level Hardware Approval

# 1. Create Manager Approval Type
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Requester Manager"
    description: "Approval from requester's direct manager"
    active: true
    approval_type: "approver_user_field"
    approver_user_field: "requested_for.manager"
    wait_for: "everyone"
    mandatory: true
# Result: sys_id = "type_manager"

# 2. Create IT Director Approval Type
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "IT Director"
    description: "IT Director approval for large hardware purchases"
    active: true
    approval_type: "specific_user"
    specific_user: [it_director_sys_id]
    wait_for: "everyone"
    mandatory: true
# Result: sys_id = "type_director"

# 3. Create Level 1 Approval Definition (always required)
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [hardware_item_sys_id]
    name: "Manager Approval"
    approval_type_definition: "type_manager"
    order: 100
    active: true
    condition: ""

# 4. Create Level 2 Approval Definition (only for > $2000)
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [hardware_item_sys_id]
    name: "IT Director Approval"
    approval_type_definition: "type_director"
    order: 200
    active: true
    condition: "price>2000"

# 5. Verify configuration
Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_defn
  query: catalog_item=[hardware_item_sys_id]
  fields: name,approval_type_definition,order,condition,active

Approval State Transitions

                        ┌──────────────────┐
                        │  not yet requested│
                        └─────────┬────────┘
                                  │ Workflow triggers
                        ┌─────────▼────────┐
                        │    requested      │
                        └─────────┬────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          │                       │                       │
┌─────────▼────────┐   ┌─────────▼────────┐   ┌─────────▼────────┐
│    approved      │   │    rejected      │   │    cancelled     │
└──────────────────┘   └──────────────────┘   └──────────────────┘
          │
          │ All approvals approved
┌─────────▼──────────────────────┐
│  Request proceeds to fulfillment│
└────────────────────────────────┘

Tool Usage Summary

OperationMCP ToolTable
Query approvalsSN-Query-Tablesysapproval_approver
Process approvalSN-Update-Recordsysapproval_approver
Create approval typeSN-Create-Recordsc_ic_aprvl_type_defn
Create approval definitionSN-Create-Recordsc_ic_aprvl_defn
Configure delegationSN-Create-Recordsys_user_delegate
Query group approvalsSN-Query-Tablesysapproval_group

Best Practices

  • Minimize Approval Levels: Each level adds delay; use conditions to skip when appropriate
  • Use Groups Over Individuals: Groups survive personnel changes
  • Set Due Dates: Ensure approvals don't stall indefinitely
  • Configure Escalation: Auto-escalate overdue approvals
  • Document Conditions: Make approval conditions clear and auditable
  • Test All Paths: Test approval, rejection, and cancellation flows
  • Monitor Metrics: Track approval time and bottlenecks
  • Enable Delegation: Allow coverage during PTO

Troubleshooting

Approval Not Generated

Symptom: Request submitted but no approval record created Causes:

  1. Approval rule condition not met
  2. Approval type inactive
  3. Workflow not triggering approval activity Solution:
Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_defn
  query: catalog_item=[item_sys_id]^active=true
  fields: name,condition,active,order

Approval Stuck in "Requested"

Symptom: Approval pending but approver claims to have acted Causes:

  1. Multiple approval records (one approved, one pending)
  2. Approver acted on wrong record
  3. Multi-level approval waiting for previous level Solution:
Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: sysapproval=[ritm_sys_id]
  fields: sys_id,approver,state,order,sys_updated_on

Request Rejected But Still Processing

Symptom: Request continues despite rejection Cause: Business rule or workflow not honoring rejection Solution: Check workflow for proper rejection handling

Delegation Not Working

Symptom: Delegate not receiving approval requests Causes:

  1. Delegation record inactive
  2. Date range expired
  3. approval flag not set Solution:
Tool: SN-Query-Table
Parameters:
  table_name: sys_user_delegate
  query: user=[original_user_sys_id]^active=true
  fields: delegate,starts,ends,approval,active

Related Skills

  • catalog/item-creation - Creating catalog items (prerequisite)
  • catalog/request-fulfillment - Processing approved requests
  • admin/workflow-creation - Building approval workflows
  • development/notifications - Approval notification setup

References

Signals

GitHub stars
37
Forks
13
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
approval-workflows
Source
github.com/happy-technologies-llc/happy-platform-skills