Case Summarization

SkillProductivity

Summarize CSM cases including timeline, interactions, resolution status, related tasks, and communications history

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 Case Summarization skill

What this skill tells your AI

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

Overview

This skill provides a structured approach to generating comprehensive summaries of Customer Service Management (CSM) cases in ServiceNow. It helps you:

  • Retrieve and consolidate all case details including contact, account, and product information
  • Build a chronological timeline of interactions, activities, and communications
  • Identify current resolution status and any pending actions
  • Summarize related tasks, child cases, and escalation history
  • Produce a concise executive summary suitable for handoffs or management review

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.

Prerequisites

  • Roles: sn_customerservice_agent, sn_customerservice_manager, or csm_admin
  • Access: Read access to sn_customerservice_case, interaction, sn_customerservice_task, sys_journal_field, and sys_email tables
  • Knowledge: Familiarity with CSM case lifecycle states and your organization's case categories

Procedure

Step 1: Retrieve Core Case Details

Fetch the primary case record with all relevant fields.

Using MCP (Claude Code/Desktop):

Tool: SN-Get-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

Step 2: Retrieve Customer and Account Context

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

Step 3: Gather Interaction History

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

Step 4: Retrieve Case Activities and Work Notes

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

Step 5: Check Related Tasks and Child Cases

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

Step 6: Retrieve Email Communications

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

Step 7: Build the Case Summary

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 Usage

MCP Tools Reference

ToolWhen to Use
SN-Natural-Language-SearchNatural language case lookup (e.g., "find open P1 cases for Acme Corp")
SN-Query-TableStructured queries across case, interaction, task, email tables
SN-Get-RecordRetrieve a single record by sys_id with all fields

REST API Reference

EndpointMethodPurpose
/api/now/table/sn_customerservice_caseGETQuery case records
/api/now/table/interactionGETRetrieve case interactions
/api/now/table/sn_customerservice_taskGETGet related tasks
/api/now/table/sys_journal_fieldGETPull work notes and comments
/api/now/table/sys_emailGETRetrieve email communications
/api/now/table/customer_accountGETCustomer account details
/api/now/table/customer_contactGETContact details

Best Practices

  • Use display values: Always pass sysparm_display_value=true in REST calls to get readable names instead of sys_ids
  • Limit journal entries: Work notes can be very long; summarize rather than including full text
  • Check SLA status: Always note if the case is approaching or has breached SLA targets
  • Identify patterns: Look for repeated reassignments or reopens as indicators of complexity
  • Respect privacy: Omit sensitive personal data from summaries shared with non-authorized personnel
  • Note escalation history: Highlight any escalation changes and the reasons behind them

Troubleshooting

"Case not found"

Cause: 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.

"No interactions found"

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>.

"Journal entries are empty"

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.

"Cannot read customer account"

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.

Examples

Example 1: Open Case Summary for Shift Handover

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)

Example 2: Escalated Case Executive Summary

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.

Related Skills

  • csm/resolution-notes - Generate resolution documentation for case closure
  • csm/sentiment-analysis - Analyze customer sentiment across case communications
  • csm/activity-response - Generate contextual responses for case activities
  • itsm/incident-lifecycle - Related incident management processes
  • reporting/sla-analysis - SLA tracking and reporting

Signals

GitHub stars
38
Forks
13
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
csm-case-summarization
Source
github.com/happy-technologies-llc/happy-platform-skills