# Csm Case Summarization

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

- Skill: `happy-technologies-llc/csm-case-summarization` (Agent Skill)
- Install (CLI): `npx skillmds@latest add happy-technologies-llc/csm-case-summarization`
- Raw SKILL.md: https://api.skillmd.com/api/skills/happy-technologies-llc/csm-case-summarization/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: Happy-Technologies-LLC (https://skillmd.com/u/happy-technologies-llc)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/happy-technologies-llc/csm-case-summarization

---


# Case Summarization

## 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:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
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

| Tool | When to Use |
|------|-------------|
| `SN-Natural-Language-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-Get-Record` | Retrieve a single record by sys_id with all fields |

### REST API Reference

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

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

