CWM Documentation Generation
Overview
This skill covers generating comprehensive Collaborative Work Management (CWM) documentation from ServiceNow project data:
- Creating automated project status reports with milestone progress, budget, and timeline health
- Generating risk summaries with impact assessments and mitigation plans
- Building stakeholder communications tailored to audience (executive, sponsor, team)
- Producing portfolio-level dashboards summarizing multiple project health indicators
- Extracting project insights from task data, resource allocation, and activity history
- Generating meeting-ready project update presentations
When to use: When preparing weekly/monthly status reports, communicating project health to stakeholders, summarizing portfolio status for leadership, or generating risk and issue digests.
Prerequisites
- Roles:
project_manager,program_manager,portfolio_manager, oradmin - Plugins:
com.snc.project_management(Project Portfolio Management) or CWM workspace - Access: Read access to
pm_project,pm_project_task,planned_task,risk,issue,pm_resource_plantables - Data: Active projects with populated tasks, milestones, and status data
- Related Skills:
spm/cwm-tasks-generationfor task breakdown,spm/project-insightsfor analytics
Procedure
Step 1: Retrieve Project Overview Data
Pull the core project record with key health indicators.
MCP Approach:
Tool: SN-Get-Record
Parameters:
table_name: pm_project
sys_id: [PROJECT_SYS_ID]
fields: sys_id,number,short_description,description,state,phase,priority,percent_complete,planned_start_date,planned_end_date,actual_start_date,actual_end_date,budget_cost,actual_cost,project_manager,sponsor,portfolio,program,health,schedule_health,cost_health,scope_health,resource_health
REST Approach:
GET /api/now/table/pm_project/[PROJECT_SYS_ID]
?sysparm_fields=sys_id,number,short_description,description,state,phase,priority,percent_complete,planned_start_date,planned_end_date,actual_start_date,actual_end_date,budget_cost,actual_cost,project_manager,sponsor,portfolio,program,health,schedule_health,cost_health,scope_health,resource_health
&sysparm_display_value=true
Step 2: Retrieve Milestone and Task Progress
Get milestone completion status and task progress metrics.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: pm_project_task
query: project=[PROJECT_SYS_ID]^milestone=true^ORDERBYplanned_start_date
fields: sys_id,number,short_description,state,percent_complete,planned_start_date,planned_end_date,actual_start_date,actual_end_date,assigned_to
limit: 50
Tool: SN-Query-Table
Parameters:
table_name: pm_project_task
query: project=[PROJECT_SYS_ID]
fields: sys_id,state,percent_complete,priority
limit: 500
REST Approach:
GET /api/now/table/pm_project_task
?sysparm_query=project=[PROJECT_SYS_ID]^milestone=true^ORDERBYplanned_start_date
&sysparm_fields=sys_id,number,short_description,state,percent_complete,planned_start_date,planned_end_date,actual_start_date,actual_end_date,assigned_to
&sysparm_display_value=true
Step 3: Retrieve Risks and Issues
Pull active risks and issues associated with the project.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: risk
query: task=[PROJECT_SYS_ID]^state!=closed
fields: sys_id,number,short_description,category,probability,impact,risk_score,response,state,assigned_to,mitigation_plan
limit: 30
Tool: SN-Query-Table
Parameters:
table_name: issue
query: task=[PROJECT_SYS_ID]^state!=closed
fields: sys_id,number,short_description,priority,state,assigned_to,resolution,sys_created_on
limit: 30
REST Approach:
GET /api/now/table/risk
?sysparm_query=task=[PROJECT_SYS_ID]^state!=closed
&sysparm_fields=sys_id,number,short_description,category,probability,impact,risk_score,response,state,assigned_to,mitigation_plan
&sysparm_display_value=true
GET /api/now/table/issue
?sysparm_query=task=[PROJECT_SYS_ID]^state!=closed
&sysparm_fields=sys_id,number,short_description,priority,state,assigned_to,resolution,sys_created_on
&sysparm_display_value=true
Step 4: Retrieve Resource Allocation Data
Get resource plan information for capacity and utilization insights.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: pm_resource_plan
query: project=[PROJECT_SYS_ID]^state=active
fields: sys_id,resource,role,planned_hours,actual_hours,remaining_hours,start_date,end_date,utilization
limit: 50
REST Approach:
GET /api/now/table/pm_resource_plan
?sysparm_query=project=[PROJECT_SYS_ID]^state=active
&sysparm_fields=sys_id,resource,role,planned_hours,actual_hours,remaining_hours,start_date,end_date,utilization
&sysparm_display_value=true
Step 5: Generate Project Status Report
Compile all data into a structured status report.
=== PROJECT STATUS REPORT ===
Report Date: [current_date]
Project: [number] - [short_description]
Project Manager: [project_manager]
Phase: [phase] | State: [state]
OVERALL HEALTH: [health_indicator]
Schedule: [schedule_health] | Cost: [cost_health]
Scope: [scope_health] | Resources: [resource_health]
PROGRESS SUMMARY:
Percent Complete: [percent_complete]%
Planned Timeline: [planned_start] - [planned_end]
Actual Timeline: [actual_start] - [projected_end]
Schedule Variance: [days ahead/behind]
BUDGET STATUS:
Budget: $[budget_cost]
Actual Spend: $[actual_cost]
Remaining: $[budget - actual]
Cost Variance: [percentage]% [over/under]
MILESTONE STATUS:
| Milestone | Planned Date | Status | Variance |
|-----------|-------------|--------|----------|
| [name] | [date] | [on-track/at-risk/complete/late] | [days] |
| [name] | [date] | [status] | [days] |
TASK METRICS:
Total Tasks: [count] | Complete: [count] | In Progress: [count]
Overdue Tasks: [count] | Blocked: [count]
RISKS ([count] active):
| Risk | Probability | Impact | Score | Response |
|------|------------|--------|-------|----------|
| [description] | [H/M/L] | [H/M/L] | [score] | [mitigate/accept/transfer] |
ISSUES ([count] open):
| Issue | Priority | Owner | Status |
|-------|----------|-------|--------|
| [description] | [P1-P4] | [name] | [investigating/resolving] |
KEY ACCOMPLISHMENTS (This Period):
- [Accomplishment 1]
- [Accomplishment 2]
PLANNED ACTIVITIES (Next Period):
- [Activity 1]
- [Activity 2]
DECISIONS NEEDED:
- [Decision 1 with context]
Step 6: Generate Executive Summary
Create a concise executive-level communication.
=== EXECUTIVE SUMMARY ===
Project: [name]
Status: [GREEN/YELLOW/RED]
HEADLINE: [One-sentence project status]
KEY METRICS:
- Progress: [%] complete ([ahead/behind] schedule by [days])
- Budget: $[actual] of $[budget] spent ([%] utilized)
- Next Milestone: [name] due [date] - [status]
TOP RISKS:
1. [Risk description] - Mitigation: [action]
2. [Risk description] - Mitigation: [action]
DECISIONS REQUIRED:
1. [Decision needed with recommendation]
FORECAST: [Project on track for [date] completion / Recommend [action] to recover schedule]
Step 7: Generate Stakeholder Communication
Tailor communications for different audiences.
Sponsor Update:
Subject: [Project Name] - Status Update [Date]
Dear [Sponsor Name],
[One paragraph summary of project health and progress]
Key highlights this period:
- [Highlight 1]
- [Highlight 2]
Items requiring your attention:
- [Decision or escalation needed]
Next milestone: [name] targeted for [date].
Full status report attached for reference.
Team Update:
Subject: [Project Name] - Weekly Update [Date]
Team,
Progress this week:
- [Completed item 1]
- [Completed item 2]
Focus for next week:
- [Priority 1] - Owner: [name]
- [Priority 2] - Owner: [name]
Blockers:
- [Blocker description] - Need: [what is needed]
Reminders:
- [Upcoming deadline or meeting]
Step 8: Generate Portfolio Summary
For portfolio-level reporting across multiple projects.
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: pm_project
query: portfolio=[PORTFOLIO_SYS_ID]^state=active
fields: sys_id,number,short_description,health,percent_complete,schedule_health,cost_health,budget_cost,actual_cost,planned_end_date,project_manager
limit: 50
=== PORTFOLIO STATUS SUMMARY ===
Portfolio: [name]
Report Date: [date]
Active Projects: [count]
HEALTH OVERVIEW:
Green: [count] | Yellow: [count] | Red: [count]
| Project | Health | Progress | Schedule | Budget | PM |
|---------|--------|----------|----------|--------|-----|
| [name] | [G/Y/R] | [%] | [on-track/late] | [$actual/$budget] | [name] |
PORTFOLIO BUDGET:
Total Budget: $[sum]
Total Spend: $[sum]
Overall Variance: [%]
ATTENTION REQUIRED:
- [Project X]: [issue requiring attention]
- [Project Y]: [risk or escalation]
Tool Usage
| Tool | Purpose | When to Use |
|---|---|---|
| SN-Query-Table | Retrieve project tasks, risks, issues, resources | Data collection for reports |
| SN-Get-Record | Get detailed project record | Core project data retrieval |
| SN-Natural-Language-Search | Find projects by natural language description | Exploratory project lookup |
| SN-Create-Record | Create status report records in ServiceNow | Persisting generated reports |
Best Practices
- Automate report generation on a weekly cadence to maintain consistency
- Lead with health indicators -- stakeholders want to know status at a glance
- Tailor depth to audience -- executives need summaries, teams need details
- Highlight variances -- focus on deviations from plan rather than restating the plan
- Include actionable items -- every report should have clear next steps or decisions needed
- Use consistent formatting -- standardize report templates across the portfolio
- Track report history -- maintain status report records for trend analysis
- Validate data freshness -- ensure task and milestone data is current before generating reports
- Flag stale projects -- highlight projects with no activity in the past 2 weeks
- Include forecast -- always project forward, not just report backward
Troubleshooting
| Issue | Cause | Resolution |
|---|---|---|
| Health indicators blank | Health calculation not configured or not run | Trigger project health recalculation; check health rule configuration |
| Milestone dates missing | Milestones not flagged on tasks | Verify milestone=true is set on key project tasks |
| Budget data shows zero | Budget fields not populated on project record | Check budget_cost and actual_cost fields; may use separate financial tables |
| Resource data incomplete | Resource plans not created or not linked | Verify pm_resource_plan records exist for the project |
| Risk scores not calculated | Risk assessment not completed | Ensure probability and impact fields are populated on risk records |
| Portfolio query returns no projects | Projects not linked to portfolio | Check portfolio reference field on project records |
Examples
Example 1: Weekly Status Report
Scenario: Generate weekly status report for an ERP implementation project.
Tool: SN-Get-Record
Parameters:
table_name: pm_project
sys_id: abc123def456
fields: number,short_description,health,percent_complete,schedule_health,cost_health,budget_cost,actual_cost,planned_end_date
Generated Report:
PROJECT STATUS - PRJ0010234: ERP Phase 2 Implementation
Week of March 15, 2026 | Health: YELLOW
Progress: 62% complete (target: 68%) - 6% behind plan
Budget: $1.2M of $2.0M spent (60%) - on track
Schedule: 8 business days behind due to vendor delay
MILESTONES:
- Data Migration Complete: Mar 10 - DONE
- UAT Start: Mar 22 - AT RISK (dependency on data validation)
- Go-Live: Apr 15 - AT RISK (cascading delay)
ACTION NEEDED: Approve additional vendor resources to recover schedule ($45K)
Example 2: Executive Portfolio Briefing
Scenario: Generate monthly portfolio summary for CIO review.
PORTFOLIO: Digital Transformation 2026
12 Active Projects | Budget: $8.5M
Summary: 8 Green, 3 Yellow, 1 Red
Overall Portfolio Health: YELLOW
RED PROJECT: Cloud Migration Phase 3
- 3 weeks behind schedule
- Key risk: Legacy system dependencies
- Recommendation: Extend timeline by 2 weeks, add integration resources
BUDGET: $3.2M spent of $8.5M (38%) - on track for year
Related Skills
spm/cwm-tasks-generation- Generate task breakdowns from requirementsspm/project-insights- Project analytics and trend analysisspm/planning-summarization- Summarize project planning dataspm/agile-story-generation- Generate agile stories for project workspm/acceptance-criteria- Define acceptance criteria for deliverables