skills/csm/resolution-notes/SKILL.md
Generate comprehensive resolution notes for closing CSM cases including issue summary, root cause analysis, steps taken, resolution details, and preventive measures
npx skillsauth add happy-technologies-llc/happy-servicenow-skills resolution-notesInstall 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 generates comprehensive, well-structured resolution notes for closing Customer Service Management (CSM) cases. It helps you:
When to use: When a CSM agent is ready to resolve or close a case and needs to create thorough resolution documentation. Also useful for post-incident reviews, knowledge base article creation, and compliance auditing.
sn_customerservice_agent, sn_customerservice_manager, or csm_adminsn_customerservice_case, sys_journal_field, sn_customerservice_task, interaction, sys_email, kb_knowledge, sn_customerservice_sla, and customer_account tables; write access to case resolution_notes and close_notes fieldsFetch the full case record including all resolution-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,close_notes,escalation,severity,sla_due,contact_type,reassignment_count,reopen_count,cause,business_duration,calendar_duration,made_sla
Using REST API:
GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_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,resolution_code,resolution_notes,close_notes,escalation,severity,reassignment_count,reopen_count,cause,business_duration,calendar_duration,made_sla&sysparm_display_value=true
Retrieve the complete work note history to reconstruct the investigation and resolution timeline.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=<case_sys_id>^element=work_notes^ORDERBYsys_created_on
fields: sys_id,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^ORDERBYsys_created_on&sysparm_fields=value,sys_created_on,sys_created_by&sysparm_limit=100
Check child tasks for additional resolution details and completed actions.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_task
query: parent=<case_sys_id>^ORDERBYsys_created_on
fields: sys_id,number,short_description,state,assigned_to,assignment_group,opened_at,closed_at,close_notes,work_notes
limit: 20
Using REST API:
GET /api/now/table/sn_customerservice_task?sysparm_query=parent=<case_sys_id>^ORDERBYsys_created_on&sysparm_fields=number,short_description,state,assigned_to,assignment_group,opened_at,closed_at,close_notes&sysparm_limit=20&sysparm_display_value=true
Retrieve customer-facing communications to confirm resolution acknowledgment.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=<case_sys_id>^element=comments^ORDERBYDESCsys_created_on
fields: value,sys_created_on,sys_created_by
limit: 20
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=<case_sys_id>^ORDERBYDESCsys_created_on
fields: sys_id,subject,type,body_text,sys_created_on,sys_created_by
limit: 10
Using REST API:
GET /api/now/table/sys_journal_field?sysparm_query=element_id=<case_sys_id>^element=comments^ORDERBYDESCsys_created_on&sysparm_fields=value,sys_created_on,sys_created_by&sysparm_limit=20
GET /api/now/table/sys_email?sysparm_query=instance=<case_sys_id>^ORDERBYDESCsys_created_on&sysparm_fields=subject,type,body_text,sys_created_on&sysparm_limit=10&sysparm_display_value=true
Retrieve SLA data to document whether resolution met service level targets.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_sla
query: task=<case_sys_id>
fields: sla,stage,has_breached,planned_end_time,end_time,business_duration,percentage,business_percentage
limit: 10
Using REST API:
GET /api/now/table/sn_customerservice_sla?sysparm_query=task=<case_sys_id>&sysparm_fields=sla,stage,has_breached,planned_end_time,end_time,business_duration,percentage&sysparm_limit=10&sysparm_display_value=true
Check if a KB article exists for this issue or if one should be created.
Using MCP:
Tool: SN-NL-Search
Parameters:
query: [short_description + resolution keywords]
table: kb_knowledge
limit: 5
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^short_descriptionLIKE[key_terms]
fields: number,short_description,text,kb_category,sys_updated_on
limit: 5
Using REST API:
GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKE<key_terms>&sysparm_fields=number,short_description,kb_category&sysparm_limit=5&sysparm_display_value=true
Identify if other open cases might benefit from this resolution.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: category=[category]^subcategory=[subcategory]^stateNOT IN6,7,8^sys_id!=<case_sys_id>^short_descriptionLIKE[key_terms]
fields: number,short_description,state,assigned_to,account
limit: 10
Using REST API:
GET /api/now/table/sn_customerservice_case?sysparm_query=category=<category>^subcategory=<subcategory>^stateNOT IN6,7,8^sys_id!=<case_sys_id>^short_descriptionLIKE<key_terms>&sysparm_fields=number,short_description,state,assigned_to,account&sysparm_limit=10&sysparm_display_value=true
Assemble all gathered information into comprehensive resolution documentation.
Resolution Notes Structure:
=== RESOLUTION NOTES ===
Case: [number]
Resolved By: [agent_name] | Resolution Date: [resolved_at]
Resolution Code: [resolution_code]
1. ISSUE SUMMARY
Customer [contact_name] from [account_name] reported [short_description]
on [opened_at]. The issue affected [product/service] and was categorized
as [category]/[subcategory] with [priority] priority.
Detailed Description:
[description - summarized]
Impact:
- Business Impact: [impact description]
- Users Affected: [scope]
- Duration of Impact: [from opened_at to resolved_at]
2. INVESTIGATION TIMELINE
[date_1] - Case created via [contact_type]. Initial triage performed.
[date_2] - [investigation action and finding]
[date_3] - [investigation action and finding]
[date_4] - [escalation if applicable]
[date_5] - Root cause identified.
[date_6] - Fix applied and verified.
3. ROOT CAUSE
[Detailed root cause description]
Contributing Factors:
- [factor_1]
- [factor_2]
4. RESOLUTION
Resolution Code: [Solved Permanently / Workaround / Not Reproducible /
Duplicate / etc.]
Resolution Details:
[Step-by-step description of the fix applied]
Verification:
- [How the fix was verified]
- [Customer confirmation of resolution - date and method]
5. STEPS TAKEN
1. [step_1 with date]
2. [step_2 with date]
3. [step_3 with date]
...
Steps Attempted But Unsuccessful:
1. [failed_step_1 - reason it did not work]
2. [failed_step_2 - reason it did not work]
6. RELATED TASKS
- [task_number]: [description] - [outcome]
- [task_number]: [description] - [outcome]
7. SLA PERFORMANCE
- Response SLA: [Met/Breached] ([actual] vs [target])
- Resolution SLA: [Met/Breached] ([actual] vs [target])
- Business Duration: [duration]
- Calendar Duration: [duration]
- Reassignment Count: [count]
8. PREVENTIVE MEASURES
- [recommendation_1 - e.g., "Apply patch X to all production servers"]
- [recommendation_2 - e.g., "Update monitoring to detect this condition"]
- [recommendation_3 - e.g., "Add this scenario to runbook Y"]
9. KNOWLEDGE BASE
- Existing KB Referenced: [KB number and title, if applicable]
- KB Article Recommended: [Yes/No]
If Yes: [suggested article title and key content points]
10. RELATED CASES
- Similar Open Cases: [list of case numbers that may benefit]
- Previously Resolved: [case numbers with same root cause]
Close Notes (shorter summary for the close_notes field):
Issue: [one-line description]
Root Cause: [one-line root cause]
Resolution: [one-line resolution description]
Preventive Action: [one-line preventive measure]
KB Reference: [KB number or "N/A"]
Customer Confirmed: [Yes/No - date]
| Tool | When to Use |
|------|-------------|
| SN-NL-Search | Find related KB articles and similar resolved cases |
| SN-Query-Table | Retrieve work notes, tasks, emails, SLA data, similar cases |
| SN-Read-Record | Fetch complete case record with all resolution fields |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/now/table/sn_customerservice_case | GET | Case details and similar case search |
| /api/now/table/sys_journal_field | GET | Work notes and comments history |
| /api/now/table/sn_customerservice_task | GET | Related task outcomes |
| /api/now/table/sys_email | GET | Email communications and confirmation |
| /api/now/table/interaction | GET | Interaction records |
| /api/now/table/kb_knowledge | GET | KB article references |
| /api/now/table/sn_customerservice_sla | GET | SLA performance data |
| /api/now/table/customer_account | GET | Account context |
Cause: Resolution codes vary by organization and CSM configuration
Solution: Query the choice list for available codes: GET /api/now/table/sys_choice?sysparm_query=name=sn_customerservice_case^element=resolution_code&sysparm_fields=label,value. Common codes include: Solved (Permanently), Solved (Workaround), Not Reproducible, Duplicate, Known Error, User Error, Configuration Change.
Cause: Root cause may not have been explicitly documented during investigation Solution: Review the full work note timeline and look for the turning point where the issue was understood. Check escalation notes and task close notes for technical details. If root cause is truly unknown, document it as "Root Cause: Undetermined" with the closest hypothesis.
Cause: Customer may not have responded to the resolution notification
Solution: Check sys_email for any bounced resolution emails. Review comments for indirect confirmation. If no confirmation after the standard waiting period, document "Customer confirmation: Not received within [X] day waiting period. Auto-resolved per policy."
Cause: SLA may have been paused incorrectly or the clock was not stopped at resolution
Solution: Check the pause_duration and pause_time fields on the SLA record. Verify the case state transitions in the audit log (sys_audit table) to confirm correct SLA stage transitions.
Scenario: Resolving a case about a recurring application error.
Step 1 - Get case and work notes:
Tool: SN-Read-Record
Parameters:
table_name: sn_customerservice_case
sys_id: [case_sys_id]
fields: number,short_description,description,state,priority,category,subcategory,product,contact,account,opened_at,resolved_at,resolution_code,cause,reassignment_count,made_sla,business_duration
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=<sys_id>^element=work_notes^ORDERBYsys_created_on
fields: value,sys_created_on,sys_created_by
limit: 50
Generated Resolution Notes:
RESOLUTION NOTES - CS0075432
1. ISSUE SUMMARY
Customer Amy Chen from DataFlow Inc. reported that the reporting
module throws a "NullPointerException" when generating monthly
summary reports with more than 10,000 records. Issue began after
platform upgrade to version 3.4.1. Priority: P2.
2. INVESTIGATION TIMELINE
Mar 10 - Case created via email. Initial triage by L1 Support.
Mar 11 - Reproduced in test with 15K record dataset.
Mar 12 - Identified exception in ReportGenerator.java line 847.
Mar 13 - Escalated to Engineering (Level 2).
Mar 14 - Engineering confirmed pagination bug in v3.4.1.
Mar 17 - Hotfix 3.4.1-HF02 deployed to customer instance.
Mar 18 - Customer confirmed reports generating successfully.
3. ROOT CAUSE
A pagination logic error introduced in version 3.4.1 caused a
null reference when the result set exceeded the default page size
of 10,000 records. The cursor object was not being re-initialized
between page iterations.
Contributing Factors:
- Insufficient test coverage for large datasets in v3.4.1 release
- Customer's dataset grew past 10K threshold in February
4. RESOLUTION
Resolution Code: Solved (Permanently)
Applied hotfix 3.4.1-HF02 which corrects the pagination cursor
handling in ReportGenerator.java. Fix verified with 50K record
dataset in staging before production deployment.
Verification:
- Agent verified fix in test environment with 25K records
- Customer confirmed successful report generation on Mar 18
via email reply
5. SLA PERFORMANCE
- Response SLA: Met (2 hours vs 4 hour target)
- Resolution SLA: Met (6 business days vs 10 day target)
- Reassignment Count: 1 (L1 to Engineering)
6. PREVENTIVE MEASURES
- Engineering to add large dataset tests (10K, 50K, 100K) to
regression suite for reporting module
- Proactive notification to all customers on v3.4.1 to apply HF02
- Monitoring alert added for NullPointerException in reporting
7. KNOWLEDGE BASE
- KB0045678 created: "Reporting Module NullPointerException
Fix for v3.4.1 - Apply Hotfix HF02"
Scenario: Quick resolution for a misconfigured integration.
Step 1 - Get case:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: number=CS0076100
fields: sys_id,number,short_description,state,priority,category,product,contact,account,opened_at,resolution_code
limit: 1
Generated Close Notes:
Issue: SSO integration failing with "invalid_redirect_uri" error
Root Cause: OAuth redirect URI in customer's identity provider
configuration contained a trailing slash that did not match the
registered callback URL
Resolution: Removed trailing slash from IdP redirect URI
configuration; SSO authentication now working correctly
Preventive Action: Added redirect URI format validation to
integration setup checklist (KB0045700)
KB Reference: KB0045700 - SSO Integration Redirect URI Configuration
Customer Confirmed: Yes - Mar 19 via email
csm/case-summarization - Summarize the case before writing resolution notescsm/activity-response - Document investigation activities throughout the case lifecyclecsm/sentiment-analysis - Check customer sentiment to confirm positive resolution outcomecsm/email-recommendation - Generate resolution notification email to the customerknowledge/article-generation - Create KB articles from resolution findingstesting
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