关于 update-set-management
此 ServiceNow 技能指导开发和测试实例中的更新集管理,适用于负责配置变更与部署准备的管理员和开发者。内容涵盖创建、设为当前集、检查记录、整理变更及迁移前验证。
主要功能
- 01创建并命名更新集
- 02设置当前更新集
- 03检查已捕获的记录
- 04在更新集间移动记录
- 05完成及验证部署准备
适用场景
- 01按功能隔离配置变更
- 02查找误入默认集的记录
- 03部署前检查更新集内容
- 04准备更新集以迁移到其他实例
MCP 相关
通过 SN-Create-Record、SN-Set-Update-Set 和 SN-Inspect-Update-Set 等 MCP 工具创建、设为当前并检查更新集,也可移动记录。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill update-set-management安装后在 Claude Code 中输入/update-set-management确认已加载。
详细介绍
更新集管理
概述
更新集是 ServiceNow 配置管理的基础。本技能涵盖:
- 创建命名规范正确的更新集
- 设置开发时的当前更新集
- 跟踪更新集中捕获的内容
- 在更新集之间移动记录
- 准备更新集以供部署
- 迁移前验证更新集
**使用场景:**在 ServiceNow 开发或测试实例中进行配置更改时。
前置条件
- 角色:
admin或update_set_admin - **访问权限:**sys_update_set 和 sys_update_xml 表
- **环境:**开发或测试实例(切勿在生产环境中创建更新集)
流程
步骤 1:创建新更新集
按照命名规范创建描述清晰的更新集。
命名规范:
[PROJECT]-[TYPE]-[DESCRIPTION]-[VERSION]
Examples:
- PROJ123-FEAT-NewTicketForm-v1
- HR-FIX-OnboardingWorkflow-v2
- ITSM-ENH-IncidentAutoAssign-v1
使用 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
使用 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"
}
步骤 2:设置为当前更新集
激活新更新集,以便捕获更改。
使用 MCP(自动化!):
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: [sys_id from step 1]
验证:
Tool: SN-Get-Current-Update-Set
预期响应:
{
"name": "PROJ123-FEAT-CustomerPortal-v1",
"sys_id": "abc123...",
"state": "in progress"
}
步骤 3:进行配置更改
现在可以进行配置更改。所有自定义内容都会被捕获:
自动捕获:
- UI 策略
- 业务规则
- 客户端脚本
- 脚本包含项
- 表单和列表
- ACL
- 属性
- 计划作业
不会自动捕获:
- 数据记录(使用 Data Preservers)
- 用户记录
- 组成员关系
- 部分系统属性
步骤 4:监控更新集内容
定期检查捕获的内容。
使用 MCP:
Tool: SN-Inspect-Update-Set
Parameters:
update_set_sys_id: [your_update_set_sys_id]
或直接查询:
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
预期输出:
| 名称 | 类型 | 操作 | 创建日期 |
|---|---|---|---|
| 我的业务规则 | sys_script | INSERT | 2026-02-06 |
| 事件表单 | sys_ui_policy | INSERT | 2026-02-06 |
步骤 5:处理位于错误更新集中的记录
如果记录意外进入 Default 或错误的更新集:
使用 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()
手动操作:
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]
步骤 6:完成更新集
开发完成后,将更新集标记为已完成:
使用 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"
步骤 7:部署前验证
导出到更高级别的环境之前:
检查问题:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=[sys_id]^type=sys_script^actionINinsert,update
fields: name,payload
验证清单:
- 没有硬编码的 sys_id
- 没有硬编码的实例 URL
- 不包含测试数据
- 所有脚本都包含错误处理
- 脚本中没有凭据
- 已记录依赖项
步骤 8:导出并迁移
导出为 XML: 导航至更新集 → 相关链接 → 导出为 XML
对于远程实例:
- 在目标实例上:System Update Sets → Retrieved Update Sets → Import from XML
- 预览更新集
- 检查冲突
- 提交更新集
更新集状态
┌─────────────┐ ┌──────────┐ ┌───────────┐
│ In Progress │────►│ Complete │────►│ Exported │
│ (build) │ │ (ready) │ │ (shipped) │
└─────────────┘ └──────────┘ └───────────┘
│
▼
┌──────────┐
│ Ignore │
│ (voided) │
└──────────┘
工具使用摘要
| 操作 | MCP 工具 | REST 端点 |
|---|---|---|
| 创建 | SN-Create-Record | POST /sys_update_set |
| 设置当前项 | SN-Set-Update-Set | Custom API |
| 获取当前项 | SN-Get-Current-Update-Set | GET /sys_user_preference |
| 列出 | SN-List-Update-Sets | GET /sys_update_set |
| 检查 | SN-Inspect-Update-Set | GET /sys_update_xml |
| 移动记录 | SN-Move-Records-To-Update-Set | PATCH /sys_update_xml |
| 克隆 | SN-Clone-Update-Set | POST /sys_update_set |
最佳实践
- **每个更新集对应一个功能:**不要混合无关更改
- **名称清晰:**始终遵循命名规范
- **定期提交:**逐步完成更新集,不要一次性全部完成
- **提升前先测试:**务必先在较低级别的环境中测试
- **记录依赖项:**注明是否必须先应用其他更新集
- **切勿在生产环境中编辑:**始终在开发或测试实例中进行开发
故障排除
记录进入 Default 更新集
**原因:**未设置当前更新集,或当前更新集已被重置 **解决方案:**进行更改前务必确认当前更新集:
Tool: SN-Get-Current-Update-Set
更新集中的记录缺失
**原因:**记录类型未被跟踪,或是在设置更新集之前创建的
解决方案:
- 检查是否跟踪了该记录类型(sys_update_set_source)
- 使用“添加到更新集”相关链接手动添加
提交时发生冲突
**原因:**同一记录在多个更新集中被修改
解决方案:
- 先预览更新集
- 仔细检查冲突
- 选择保留本地版本或跳过
- 记录冲突解决情况
更新集过大
**原因:**单个更新集包含的更改过多
解决方案:
- 克隆到新的更新集
- 按功能合理拆分
- 移除不必要的记录
相关技能
admin/deployment-workflow- 完整的部署流程admin/application-scope- 范围应用的最佳实践itsm/change-management- 部署变更流程
参考资料
评论
支持 Markdown