skills/procurement/procurement-summarization/SKILL.md
Summarize procurement cases including vendor communications, approval status, spend analysis, pipeline reports, and bottleneck identification
npx skillsauth add happy-technologies-llc/happy-servicenow-skills procurement-summarizationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides a structured approach to summarizing procurement operations in ServiceNow Sourcing and Procurement Operations. It helps you:
sn_proc_caseproc_po and sn_proc_invoiceWhen to use: When procurement managers need an overview of case workload, spend trends, pipeline health, or when preparing executive reports on procurement operations.
sn_procurement.manager, sn_procurement.analyst, or procurement_admincom.sn_procurement (Sourcing and Procurement Operations) activatedsn_proc_case, proc_po, proc_po_item, sn_spo_requisition, sn_proc_invoice, core_companyQuery active procurement cases to understand current workload and status distribution.
Using MCP (Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sn_proc_case
query: active=true^ORDERBYDESCsys_updated_on
fields: sys_id,number,short_description,state,priority,category,vendor,assigned_to,assignment_group,opened_at,sys_updated_on,approval,requested_by
limit: 50
To filter by date range or category:
Tool: SN-Query-Table
Parameters:
table_name: sn_proc_case
query: opened_at>=javascript:gs.beginningOfLast30Days()^category=contract_request
fields: sys_id,number,short_description,state,priority,category,vendor,assigned_to,opened_at
limit: 50
Using REST API:
GET /api/now/table/sn_proc_case?sysparm_query=active=true^ORDERBYDESCsys_updated_on&sysparm_fields=sys_id,number,short_description,state,priority,category,vendor,assigned_to,assignment_group,opened_at,sys_updated_on,approval,requested_by&sysparm_limit=50&sysparm_display_value=true
Pull journal entries to summarize vendor interactions and internal notes.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[case_sys_id]^element=work_notes^ORelement=comments^ORDERBYDESCsys_created_on
fields: sys_id,element,value,sys_created_on,sys_created_by
limit: 30
Using REST API:
GET /api/now/table/sys_journal_field?sysparm_query=element_id=[case_sys_id]^element=work_notes^ORelement=comments^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,element,value,sys_created_on,sys_created_by&sysparm_limit=30
Query approval records to identify pending approvals and bottlenecks.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: document_id=[case_sys_id]^ORDERBYDESCsys_updated_on
fields: sys_id,approver,state,sys_updated_on,comments,source_table,group
limit: 20
For a pipeline-wide view of pending approvals:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: state=requested^source_table=sn_proc_case^ORDERBYsys_created_on
fields: sys_id,approver,document_id,state,sys_created_on,group
limit: 50
Using REST API:
GET /api/now/table/sysapproval_approver?sysparm_query=document_id=[case_sys_id]^ORDERBYDESCsys_updated_on&sysparm_fields=sys_id,approver,state,sys_updated_on,comments,source_table,group&sysparm_limit=20&sysparm_display_value=true
Query purchase orders to build a spend summary.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: proc_po
query: ordered_date>=javascript:gs.beginningOfLast90Days()^state!=cancelled
fields: sys_id,number,vendor,total_cost,state,ordered_date,currency,category
limit: 200
Aggregate by vendor:
Tool: SN-Query-Table
Parameters:
table_name: proc_po
query: ordered_date>=javascript:gs.beginningOfLastQuarter()^state!=cancelled^vendor=[vendor_sys_id]
fields: sys_id,number,total_cost,state,ordered_date
limit: 100
Using REST API:
# All POs from last 90 days
GET /api/now/table/proc_po?sysparm_query=ordered_date>=javascript:gs.beginningOfLast90Days()^state!=cancelled&sysparm_fields=sys_id,number,vendor,total_cost,state,ordered_date,currency,category&sysparm_limit=200&sysparm_display_value=true
# Spend for a specific vendor
GET /api/now/table/proc_po?sysparm_query=vendor=[vendor_sys_id]^ordered_date>=javascript:gs.beginningOfLastQuarter()^state!=cancelled&sysparm_fields=number,total_cost,state,ordered_date&sysparm_limit=100&sysparm_display_value=true
Query across requisitions, POs, and invoices to show the procurement pipeline.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_spo_requisition
query: state!=cancelled^sys_created_on>=javascript:gs.beginningOfLast30Days()
fields: sys_id,number,state,requested_by,total_estimated_cost,sys_created_on,approval
limit: 50
Tool: SN-Query-Table
Parameters:
table_name: sn_proc_invoice
query: state!=cancelled^sys_created_on>=javascript:gs.beginningOfLast30Days()
fields: sys_id,number,state,vendor,invoice_amount,due_date,po_number
limit: 50
Using REST API:
# Requisitions in pipeline
GET /api/now/table/sn_spo_requisition?sysparm_query=state!=cancelled^sys_created_on>=javascript:gs.beginningOfLast30Days()&sysparm_fields=sys_id,number,state,requested_by,total_estimated_cost,sys_created_on,approval&sysparm_limit=50&sysparm_display_value=true
# Invoices in pipeline
GET /api/now/table/sn_proc_invoice?sysparm_query=state!=cancelled^sys_created_on>=javascript:gs.beginningOfLast30Days()&sysparm_fields=sys_id,number,state,vendor,invoice_amount,due_date,po_number&sysparm_limit=50&sysparm_display_value=true
Assemble the data into a structured report:
=== PROCUREMENT OPERATIONS SUMMARY ===
Period: [start_date] to [end_date]
CASE WORKLOAD:
Total Active Cases: [count]
By State: New [n] | In Progress [n] | Pending Approval [n] | Resolved [n]
By Priority: P1 [n] | P2 [n] | P3 [n] | P4 [n]
Avg Case Age: [days] days
APPROVAL BOTTLENECKS:
Pending Approvals: [count]
Oldest Pending: [case_number] - waiting [days] days for [approver_name]
Top Delayed Approvers:
1. [approver] - [count] pending, avg [days] days
2. [approver] - [count] pending, avg [days] days
PIPELINE STATUS:
Requisitions: [count] open ($[total_value])
Purchase Orders: [count] open ($[total_value])
Invoices: [count] pending ($[total_value])
SPEND ANALYSIS (Last 90 Days):
Total PO Spend: $[amount]
Top Vendors:
1. [vendor_name] - $[amount] ([count] POs)
2. [vendor_name] - $[amount] ([count] POs)
3. [vendor_name] - $[amount] ([count] POs)
KEY OBSERVATIONS:
- [bottleneck or risk identified]
- [trend noted]
- [action recommended]
| Tool | When to Use |
|------|-------------|
| SN-Query-Table | Query cases, POs, requisitions, invoices, and approvals |
| SN-NL-Search | Natural language searches (e.g., "show all procurement cases from last week") |
| SN-Read-Record | Retrieve a single case or PO record by sys_id |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/now/table/sn_proc_case | GET | Query procurement cases |
| /api/now/table/proc_po | GET | Retrieve purchase orders for spend analysis |
| /api/now/table/sn_spo_requisition | GET | Query requisitions in pipeline |
| /api/now/table/sn_proc_invoice | GET | Query invoices for payment tracking |
| /api/now/table/sysapproval_approver | GET | Check approval statuses |
| /api/now/table/sys_journal_field | GET | Retrieve case work notes and comments |
| /api/now/table/core_company | GET | Vendor details |
sysparm_display_value=true in REST calls for readable vendor and user namesCause: The sn_proc_case table may not be populated if your organization uses a custom case table
Solution: Check with your admin for the correct table name; some orgs extend task directly for procurement cases
Cause: Cancelled or duplicate POs may be included, or currency conversion is needed
Solution: Ensure the query excludes state=cancelled; check the currency field and convert to a base currency before summing
Cause: Approvals may be handled via workflow rather than the sysapproval_approver table
Solution: Check wf_context and wf_executing tables for workflow-based approvals tied to the case
Cause: The com.sn_sourcing plugin may not be activated
Solution: Verify plugin activation; requisition data requires com.sn_sourcing or com.sn_procurement
Scenario: Procurement manager needs a weekly status summary.
Steps:
Output:
WEEKLY PROCUREMENT SUMMARY (Mar 12-19, 2026)
CASES: 42 active (8 new this week)
Pending Approval: 8 | In Progress: 22 | Awaiting Vendor: 12
BOTTLENECK ALERT:
3 approvals stalled 5+ days - Finance VP approval queue
PIPELINE:
Requisitions: 18 open ($412,000 estimated)
Purchase Orders: 15 new this week ($234,500)
Invoices: 12 pending match ($89,200)
SPEND THIS WEEK: $234,500 across 6 vendors
Top: TechSupply Inc - $98,000 (3 POs)
Scenario: Analyst needs to summarize all communications for a vendor dispute case.
Tool: SN-Query-Table
Parameters:
table_name: sn_proc_case
query: number=PROC0005678
fields: sys_id,number,short_description,state,vendor,category,opened_at,assigned_to
limit: 1
Then retrieve work notes and comments:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[case_sys_id]^element=work_notes^ORelement=comments^ORDERBYDESCsys_created_on
fields: element,value,sys_created_on,sys_created_by
limit: 50
Output:
CASE PROC0005678 - VENDOR COMMUNICATION SUMMARY
Vendor: Global Parts Ltd | Category: Price Dispute | State: In Progress
TIMELINE:
Mar 18 - [Analyst] Vendor agreed to credit $2,400 for overcharge
Mar 16 - [Vendor] Responded: pricing error on catalog item SKU-4421
Mar 14 - [Analyst] Sent formal dispute letter with PO and invoice evidence
Mar 12 - [System] Case created from invoice exception INVCASE0001234
RESOLUTION PATH: Credit memo expected by Mar 25
procurement/invoice-management - Invoice matching and exception handlingprocurement/purchase-order-summarization - Detailed PO status and delivery trackingprocurement/sourcing-summarization - Sourcing event and bid analysisprocurement/supplier-recommendation - Vendor performance evaluationreporting/executive-dashboard - Build executive-level dashboardstesting
Manage supplier onboarding, qualification, performance monitoring, and offboarding with auditable lifecycle controls
tools
Identify emerging risks, prioritize intake signals, and route candidates into formal GRC risk assessment workflows
documentation
Screen inbound documents for completeness, policy risk, and routing readiness before extraction or case workflows
testing
Generate concise task summaries with status, timeline, blockers, SLA risk, and recommended next actions