skills/csm/case-summarization/SKILL.md
Summarize CSM cases including timeline, interactions, resolution status, related tasks, and communications history
npx skillsauth add happy-technologies-llc/happy-servicenow-skills csm-case-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 generating comprehensive summaries of Customer Service Management (CSM) cases in ServiceNow. It helps you:
When to use: When a CSM agent needs a quick overview of a case for shift handover, escalation review, management reporting, or returning to a case after time away.
sn_customerservice_agent, sn_customerservice_manager, or csm_adminsn_customerservice_case, interaction, sn_customerservice_task, sys_journal_field, and sys_email tablesFetch the primary case record with all relevant fields.
Using MCP (Claude Code/Desktop):
Tool: SN-Read-Record
Parameters:
table_name: sn_customerservice_case
sys_id: [case_sys_id]
fields: number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,opened_by,resolved_at,resolved_by,closed_at,closed_by,resolution_code,resolution_notes,escalation,severity,sla_due,business_duration,calendar_duration,reassignment_count,reopen_count,contact_type
If you only have the case number, search first:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: number=CS0012345
fields: sys_id,number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,resolved_at,closed_at,resolution_code,resolution_notes,escalation,severity,contact_type
limit: 1
Using REST API:
GET /api/now/table/sn_customerservice_case?sysparm_query=number=CS0012345&sysparm_fields=sys_id,number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,asset,assigned_to,assignment_group,opened_at,resolved_at,closed_at,resolution_code,resolution_notes,escalation,severity,contact_type&sysparm_limit=1&sysparm_display_value=true
Get the customer account and contact information to provide context.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: customer_account
query: sys_id=[account_sys_id]
fields: sys_id,name,number,account_code,industry,customer,notes,street,city,state,country,phone,customer_tier
limit: 1
Tool: SN-Query-Table
Parameters:
table_name: customer_contact
query: sys_id=[contact_sys_id]
fields: sys_id,name,email,phone,title,account,timezone,preferred_contact_method
limit: 1
Using REST API:
GET /api/now/table/customer_account/{account_sys_id}?sysparm_fields=sys_id,name,number,account_code,industry,customer_tier,phone&sysparm_display_value=true
GET /api/now/table/customer_contact/{contact_sys_id}?sysparm_fields=sys_id,name,email,phone,title,preferred_contact_method&sysparm_display_value=true
Retrieve all interactions (phone calls, chats, portal submissions) linked to the case.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: parent=<case_sys_id>^ORDERBYDESCopened_at
fields: sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,direction,duration
limit: 50
Using REST API:
GET /api/now/table/interaction?sysparm_query=parent=<case_sys_id>^ORDERBYDESCopened_at&sysparm_fields=sys_id,number,type,channel,state,opened_at,closed_at,short_description,assigned_to,direction,duration&sysparm_limit=50&sysparm_display_value=true
Pull journal entries (work notes, additional comments) to build the activity timeline.
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: 100
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=100
Identify any child tasks or related cases.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_task
query: parent=<case_sys_id>^ORDERBYDESCsys_created_on
fields: sys_id,number,short_description,state,assigned_to,assignment_group,priority,opened_at,closed_at
limit: 20
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: parent=<case_sys_id>^ORDERBYDESCsys_created_on
fields: sys_id,number,short_description,state,priority,opened_at,closed_at
limit: 10
Using REST API:
GET /api/now/table/sn_customerservice_task?sysparm_query=parent=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,assigned_to,assignment_group,priority,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=true
GET /api/now/table/sn_customerservice_case?sysparm_query=parent=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,priority,opened_at,closed_at&sysparm_limit=10&sysparm_display_value=true
Pull email records associated with the case.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=<case_sys_id>^ORDERBYDESCsys_created_on
fields: sys_id,subject,type,recipients,sys_created_on,sys_created_by,direct,content_type
limit: 30
Using REST API:
GET /api/now/table/sys_email?sysparm_query=instance=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,subject,type,recipients,sys_created_on,sys_created_by,direct&sysparm_limit=30&sysparm_display_value=true
Assemble all collected data into a structured summary:
=== CASE SUMMARY ===
Case Number: CS0012345
Status: [state] | Priority: [priority] | Severity: [severity]
Opened: [opened_at] | Duration: [business_duration]
CUSTOMER CONTEXT:
Account: [account_name] (Tier: [customer_tier])
Contact: [contact_name] | [email] | [phone]
Product: [product] | Asset: [asset]
Contact Method: [contact_type]
ISSUE DESCRIPTION:
[short_description]
[description - first 500 chars]
TIMELINE: (most recent first)
[date] - [activity_type]: [summary_of_entry]
[date] - [activity_type]: [summary_of_entry]
...
INTERACTIONS: [count] total
- [date] [channel] ([direction]): [short_description] - [state]
...
RELATED TASKS: [count] total ([open_count] open, [closed_count] closed)
- [task_number]: [short_description] - [state]
...
EMAILS: [count] total ([inbound_count] inbound, [outbound_count] outbound)
- [date] [type]: [subject]
...
RESOLUTION STATUS:
State: [state]
Resolution Code: [resolution_code]
Resolution Notes: [resolution_notes]
Reassignment Count: [reassignment_count]
Reopen Count: [reopen_count]
KEY OBSERVATIONS:
- [escalation status]
- [SLA status]
- [pending items]
- [risk factors]
| Tool | When to Use |
|------|-------------|
| SN-NL-Search | Natural language case lookup (e.g., "find open P1 cases for Acme Corp") |
| SN-Query-Table | Structured queries across case, interaction, task, email tables |
| SN-Read-Record | Retrieve a single record by sys_id with all fields |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/now/table/sn_customerservice_case | GET | Query case records |
| /api/now/table/interaction | GET | Retrieve case interactions |
| /api/now/table/sn_customerservice_task | GET | Get related tasks |
| /api/now/table/sys_journal_field | GET | Pull work notes and comments |
| /api/now/table/sys_email | GET | Retrieve email communications |
| /api/now/table/customer_account | GET | Customer account details |
| /api/now/table/customer_contact | GET | Contact details |
sysparm_display_value=true in REST calls to get readable names instead of sys_idsCause: Case number format incorrect or case is in a different scope
Solution: Verify the prefix (CS vs CSM vs other) and check if the case exists in a different application scope. Try searching with numberLIKECS001234.
Cause: Interactions may be linked via a different relationship field
Solution: Check the parent and document_id fields on interaction. Also query with document=sn_customerservice_case^document_id=<case_sys_id>.
Cause: Journal fields are stored separately and may require explicit access
Solution: Ensure your role has access to sys_journal_field. Try the case REST API with sysparm_fields=work_notes,comments which returns journal directly.
Cause: Account record is in a restricted scope or has ACL restrictions
Solution: Verify you have the customer_account_read or sn_customerservice_agent role.
Scenario: Agent needs a quick summary of case CS0056789 before taking over from a colleague.
Step 1 - Get case:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: number=CS0056789
fields: sys_id,number,short_description,state,priority,category,contact,account,assigned_to,assignment_group,opened_at,escalation
limit: 1
Step 2 - Get recent work notes:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=<sys_id>^element=work_notes^ORDERBYDESCsys_created_on
fields: value,sys_created_on,sys_created_by
limit: 10
Output Summary:
CASE CS0056789 - SHIFT HANDOVER SUMMARY
Status: In Progress | Priority: P2 | Escalation: Normal
Customer: Acme Corp (Tier: Gold) | Contact: Jane Smith
Issue: Unable to process returns through online portal
Opened: 2026-03-15 09:30 | Age: 4 days
RECENT ACTIVITY:
- Mar 18: Agent reviewed portal logs, identified session timeout issue
- Mar 17: Customer provided browser details and screenshots
- Mar 16: Initial triage, assigned to Portal Support team
- Mar 15: Case created via phone interaction
PENDING: Awaiting fix deployment for session timeout bug (DEF0034521)
Scenario: Manager requests a summary of all P1 escalated cases for a key account.
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: account=<account_sys_id>^priority=1^escalation!=0^stateNOT IN6,7
fields: number,short_description,state,priority,escalation,assigned_to,opened_at,sla_due
limit: 10
Output:
ESCALATED P1 CASES - GLOBEX CORPORATION
Total: 3 active P1 cases
1. CS0045001 - Production API gateway returning 503 errors
State: In Progress | Escalated: Level 2 | SLA Due: Mar 19 14:00
Owner: David Chen (Platform Support)
2. CS0045123 - Batch processing failure affecting invoicing
State: Awaiting Info | Escalated: Level 1 | SLA Due: Mar 20 09:00
Owner: Sarah Kim (Data Services)
3. CS0045200 - SSO authentication failing intermittently
State: In Progress | Escalated: Level 3 | SLA Due: Mar 19 10:00
Owner: Mike Johnson (Identity Team)
RISK: CS0045200 is at Level 3 escalation with SLA due in 2 hours.
csm/resolution-notes - Generate resolution documentation for case closurecsm/sentiment-analysis - Analyze customer sentiment across case communicationscsm/activity-response - Generate contextual responses for case activitiesitsm/incident-lifecycle - Related incident management processesreporting/sla-analysis - SLA tracking and reportingtesting
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