update-set-management
Update Set Management
Overview
Update sets are the foundation of ServiceNow configuration management. This skill covers:
- Creating properly named update sets
- Setting the current update set for development
- Tracking what's captured in an update set
- Moving records between update sets
- Preparing update sets for deployment
- Validating update sets before migration
When to use: Whenever making configuration changes in ServiceNow development or test instances.
Prerequisites
- Roles:
adminorupdate_set_admin - Access: sys_update_set and sys_update_xml tables
- Environment: Development or test instance (never create update sets in production)
Procedure
Step 1: Create a New Update Set
Create a descriptive update set following naming conventions.
Naming Convention:
[PROJECT]-[TYPE]-[DESCRIPTION]-[VERSION]
Examples:
- PROJ123-FEAT-NewTicketForm-v1
- HR-FIX-OnboardingWorkflow-v2
- ITSM-ENH-IncidentAutoAssign-v1
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: sys_update_set
data:
name: "PROJ123-FEAT-CustomerPortal-v1"
description: "New customer portal feature including:
- Custom catalog items
- Portal widgets
- Service catalog categories"
application: [app_sys_id] # For scoped apps
state: in progress
Using REST API:
POST /api/now/table/sys_update_set
Content-Type: application/json
{
"name": "PROJ123-FEAT-CustomerPortal-v1",
"description": "New customer portal feature...",
"state": "in progress"
}
Step 2: Set as Current Update Set
Make your new update set active so changes are captured.
Using MCP (Automated!):
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: [sys_id from step 1]
Verification:
Tool: SN-Get-Current-Update-Set
Expected response:
{
"name": "PROJ123-FEAT-CustomerPortal-v1",
"sys_id": "abc123...",
"state": "in progress"
}
Step 3: Make Configuration Changes
Now make your configuration changes. All customizations will be captured:
Automatically Captured:
- UI Policies
- Business Rules
- Client Scripts
- Script Includes
- Forms and Lists
- ACLs
- Properties
- Scheduled Jobs
NOT Automatically Captured:
- Data records (use Data Preservers)
- User records
- Group memberships
- Some system properties
Step 4: Monitor Update Set Contents
Periodically check what's being captured.
Using MCP:
Tool: SN-Inspect-Update-Set
Parameters:
update_set_sys_id: [your_update_set_sys_id]
Or query directly:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=[your_update_set_sys_id]
fields: name,type,action,sys_created_on
limit: 100
Expected Output:
| Name | Type | Action | Created |
|---|---|---|---|
| My Business Rule | sys_script | INSERT | 2026-02-06 |
| Incident Form | sys_ui_policy | INSERT | 2026-02-06 |
Step 5: Handle Records in Wrong Update Set
If records accidentally went to Default or wrong update set:
Using MCP:
Tool: SN-Move-Records-To-Update-Set
Parameters:
source_update_set: Default # or sys_id
target_update_set: [your_update_set_sys_id]
query: sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()
Manual Method:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=[wrong_set_sys_id]^sys_created_onONToday
fields: sys_id,name,type
# Then for each record:
Tool: SN-Update-Record
Parameters:
table_name: sys_update_xml
sys_id: [record_sys_id]
data:
update_set: [correct_update_set_sys_id]
Step 6: Complete the Update Set
When development is complete, mark as complete:
Using MCP:
Tool: SN-Update-Record
Parameters:
table_name: sys_update_set
sys_id: [your_update_set_sys_id]
data:
state: complete
description: "COMPLETED: [original description]
Contains:
- 3 Business Rules
- 2 UI Policies
- 1 Script Include
- 5 Form modifications
Tested by: [tester name]
Test date: 2026-02-06"
Step 7: Pre-Deployment Validation
Before exporting to higher environments:
Check for Issues:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=[sys_id]^type=sys_script^actionINinsert,update
fields: name,payload
Validation Checklist:
- No hardcoded sys_ids
- No hardcoded instance URLs
- No test data included
- All scripts have error handling
- No credentials in scripts
- Dependencies documented
Step 8: Export and Migrate
Export to XML: Navigate to the update set → Related Links → Export to XML
For Remote Instances:
- On target instance: System Update Sets → Retrieved Update Sets → Import from XML
- Preview the update set
- Review conflicts
- Commit the update set
Update Set States
┌─────────────┐ ┌──────────┐ ┌───────────┐
│ In Progress │────►│ Complete │────►│ Exported │
│ (build) │ │ (ready) │ │ (shipped) │
└─────────────┘ └──────────┘ └───────────┘
│
▼
┌──────────┐
│ Ignore │
│ (voided) │
└──────────┘
Tool Usage Summary
| Operation | MCP Tool | REST Endpoint |
|---|---|---|
| Create | SN-Create-Record | POST /sys_update_set |
| Set Current | SN-Set-Update-Set | Custom API |
| Get Current | SN-Get-Current-Update-Set | GET /sys_user_preference |
| List | SN-List-Update-Sets | GET /sys_update_set |
| Inspect | SN-Inspect-Update-Set | GET /sys_update_xml |
| Move Records | SN-Move-Records-To-Update-Set | PATCH /sys_update_xml |
| Clone | SN-Clone-Update-Set | POST /sys_update_set |
Best Practices
- One Feature Per Update Set: Don't mix unrelated changes
- Descriptive Names: Follow naming conventions consistently
- Regular Commits: Complete update sets incrementally, not all at once
- Test Before Promoting: Always test in a lower environment first
- Document Dependencies: Note if other update sets must be applied first
- Never Edit in Production: Always develop in dev/test instances
Troubleshooting
Records Going to Default Update Set
Cause: Current update set not set or got reset Solution: Always verify current update set before making changes:
Tool: SN-Get-Current-Update-Set
Missing Records in Update Set
Cause: Record type not tracked or created before setting update set Solution:
- Check if record type is tracked (sys_update_set_source)
- Manually add using "Add to Update Set" related link
Conflicts During Commit
Cause: Same record modified in multiple update sets Solution:
- Preview update set first
- Review conflicts carefully
- Choose to keep local or skip
- Document conflict resolution
Update Set Too Large
Cause: Too many changes in single update set Solution:
- Clone to new update set
- Split logically by feature
- Remove unnecessary records
Related Skills
admin/deployment-workflow- Full deployment processadmin/scoped-app-development- Scoped application best practicesitsm/change-management- Change process for deployments
References
More from happy-technologies-llc/happy-platform-skills
happy-platform-skills
Reusable development patterns and automation recipes for enterprise platforms - 180+ skills across 23 categories
17scheduled-jobs
Comprehensive guide to creating and managing ServiceNow scheduled jobs - run frequencies, conditional execution, performance optimization, error handling, and debugging
4flow-generation
Generate ServiceNow Flow Designer flows from natural language descriptions including triggers, actions, conditions, subflows, approval flows, notification flows, and data manipulation flows
4application-scope
Manage scoped application development including setting application context and update set alignment
4scripted-rest-apis
Comprehensive guide to creating, securing, and testing Scripted REST APIs in ServiceNow for custom integrations and external system connectivity
4automated-testing
Comprehensive Automated Test Framework (ATF) guide for creating, managing, and executing automated tests in ServiceNow
4