Update Sets
What Update Sets Do
Update Sets are ServiceNow's built-in mechanism for moving configuration changes between instances — typically from a Development environment to Test, then to Production. They act as a container that records every metadata change made while they are active.
The Two Core Tables
sys_update_set
Stores the update set container — the metadata about the update set itself: its name, state, description, application scope, and who created it.
Think of this as the "folder" that holds all the changes.
sys_update_xml
Stores the individual captured changes — each row is one configuration change recorded inside an update set. The actual XML payload of each change lives here.
Think of this as each individual "file" inside the folder.
Purpose: Controlled Promotion Path
The primary use case for update sets is promoting configuration changes through a defined pipeline so that untested changes never reach production directly.
Configuration changes flow through environments via Update Set XML files
Update Set States
Every update set exists in one of four states. Understanding the lifecycle of an update set — and what each state means — is essential for the exam.
| State | Meaning | What You Can Do |
|---|---|---|
| In Progress | The update set is active and capturing changes. Any configuration changes made while this is the current update set are recorded here. | Add changes, set as current, rename, add description |
| Complete | The update set has been closed. No new changes will be added. It is now ready to be exported as an XML file. | Export to XML, reopen (set back to In Progress) |
| Loaded | The update set has been imported into a target instance (from an XML file) and is pending preview and commit. This state only exists on the receiving instance. | Preview, Commit, or mark as Ignore |
| Ignore | The update set has been explicitly marked to skip. It will not be committed to the instance. Used when a loaded update set is not needed or superseded. | Reopen as Loaded to revisit |
What Gets Captured (and What Does Not)
Knowing exactly what is and is not captured by update sets is one of the most frequently tested topics. The rule is straightforward: configuration (metadata) yes, data (records) no.
Captured — Configuration Objects
Scripting
- Business Rules
- Client Scripts
- Script Includes
- Scheduled Jobs (Scheduled Scripts)
- Fix Scripts
Form & UI
- Form layouts (sys_ui_view)
- UI Policies
- UI Actions
- Dictionary entries (custom fields)
- List layouts
Security & Access
- ACLs (Access Control rules)
- Roles (custom roles)
- System properties (sys_properties)
Notifications & Email
- Notification rules
- Email templates
- Inbound email actions
Service Catalog
- Catalog items
- Catalog variables
- Order guides
- Record producers
Process Automation
- Workflows (legacy)
- Flow Designer flows (partially)
- SLA definitions
- Assignment rules
NOT Captured — Data Records
- Incident, Problem, Change records — transactional ITSM data
- User records (sys_user) — account data, profiles
- Group records (sys_user_group) — group memberships
- CMDB records — configuration items and relationships
- Attachments — file uploads on records
- Import set data — staging table contents
Update Set Workflow — End to End
The full update set workflow spans two instances: the source (where changes are made) and the target (where changes are applied). Each step must be performed in the correct order.
Phase 1: Capture Changes on DEV
| Step | Action | Where |
|---|---|---|
| 1 | Navigate to System Update Sets › Local Update Sets and create a new update set (give it a clear name) | DEV — top right corner or nav |
| 2 | Click "Set as Current" — the update set name now appears in the top-right header bar of the instance | DEV — update set record form |
| 3 | Make all configuration changes (create business rules, modify forms, build workflows, etc.) | DEV — anywhere in the instance |
| 4 | Navigate back to the update set and change its State to "Complete" — this closes it to new changes | DEV — update set record |
Phase 2: Export from DEV
| Step | Action |
|---|---|
| 5 | Open the completed update set and click "Export to XML" — downloads a .xml file to your computer. This file is stored as a sys_remote_update_set record. |
Phase 3: Import and Apply on TARGET (TEST or PROD)
| Step | Action | Notes |
|---|---|---|
| 6 | Navigate to System Update Sets › Retrieved Update Sets and click "Import Update Set from XML" | TARGET instance |
| 7 | Upload the exported .xml file. The update set appears with state Loaded |
TARGET — file upload dialog |
| 8 | Click "Preview Update Set" — ServiceNow checks for conflicts and missing dependencies | TARGET — ALWAYS do this before commit |
| 9 | Review any Preview Problems. Resolve issues (accept remote version, skip, or fix manually) | TARGET — review each problem row |
| 10 | Click "Commit Update Set" — applies all changes to the target instance | TARGET — this is irreversible without backout |
Set Current → Make Changes → Complete → Export XML → Import → Preview → Commit
Any question asking about the order of steps in an update set workflow maps to this sequence. "Preview" always comes before "Commit" — never skip it.
Preview and Commit — Conflict Resolution
Preview is the most important safety gate in the update set process. It identifies problems before changes are applied to a live or production instance — making it possible to resolve conflicts without risk.
What Preview Checks For
Missing Parent Records
A change depends on a parent record that does not exist in the target. For example, a business rule references a table that hasn't been created on the target instance.
Resolution: ensure the parent object exists before committing.
Conflicting Changes
The same configuration object was modified on both the source and the target since the last sync. Preview shows both versions and lets you choose which to keep.
Resolution: accept remote (from update set) or keep current (target version).
Deleted on Target
An object in the update set was already deleted from the target instance. The update set is trying to modify something that no longer exists.
Resolution: skip the change or recreate the base object.
Scope Mismatches
The application scope of a change doesn't align with an installed application on the target instance. Scoped app changes require the app to be present.
Resolution: install the application scope on the target first.
Preview Problem Resolutions
| Resolution Option | Meaning | When to Use |
|---|---|---|
| Accept Remote | Use the version from the incoming update set (overwrite what's on target) | The source DEV version is the correct one to use |
| Skip | Do not apply this particular change — leave the target as-is for this object | The target version is correct, or the change is not needed here |
| Accept Local | Keep the target instance's current version for this object | Equivalent to Skip in most scenarios |
Commit and Backout
Committing applies all previewed changes to the target instance. Once committed, changes take effect immediately — there is no undo button. However, ServiceNow provides a Backout mechanism.
- Backout only works if no subsequent changes have been made to the same objects
- Backout restores the state at the time of commit — any work done after the commit on those objects may be lost
- It is not a guaranteed rollback — it is a best-effort reversal
- You cannot uncommit an update set — only back it out
Batch Update Sets
Batch Update Sets allow multiple related update sets to be grouped and deployed together as a single unit. This is critical for feature development where changes are spread across several individual update sets.
Parent and Child Structure
Parent Update Set
The container that holds child update sets. The parent itself may contain changes, or it may be an empty container used only for grouping purposes.
Committing the parent commits all children in the correct order.
Child Update Sets
Individual update sets that belong to a parent. Each child captures a subset of the overall feature's changes — for example, one per developer working on the same feature.
Children can be merged into the parent before deployment.
Merge Operation
Children can be merged into the parent update set to consolidate all changes into a single deployable unit. This simplifies the deployment process — one import and one commit instead of many.
The Default Update Set
Every ServiceNow instance has a system-provided update set called "Default". It is always present and acts as the fallback capture container when no other update set has been set as current.
How Default Works
- The Default update set is always "In Progress" — it cannot be completed or deleted
- If a user makes configuration changes without first selecting a specific update set, those changes go into Default
- The current update set is always shown in the top-right corner of the ServiceNow instance header
- If the header shows "Default" — changes are going into the Default update set
| Scenario | What Happens | Recommendation |
|---|---|---|
| No update set is set as current | Changes are silently captured in the Default update set | Always set a named update set as current before working |
| Developer forgets to switch update sets | Changes go to Default — mixed with other unrelated changes | Check the top-right header before making any changes |
| Trying to export Default set | Must first set it to Complete — but this blocks all future "accidental" captures | Avoid relying on Default; use named sets from the start |
Global Scope vs. Application Scope Update Sets
ServiceNow distinguishes between changes made in the global application scope and changes made within a scoped application. Update sets operate differently depending on the scope context.
Global Scope
- All platform-level customizations (not inside a scoped app) are in the Global scope
- Global update sets capture changes to any global-scope configuration object
- Most CSA exam scenarios involve global scope update sets
- Created and managed via System Update Sets › Local Update Sets
Application Scope
- Scoped applications (built with the Application Development framework) use their own update sets
- Changes inside a scoped app are automatically captured by that app's update set
- You cannot mix global and scoped changes in the same update set
- Scoped app deployment is often handled through the Application Repository or Store rather than manual update set exports
| Aspect | Global Scope | Application Scope |
|---|---|---|
| Where changes live | Platform-wide configuration tables | Scoped app-specific tables and records |
| Update set type | Standard global update set | Application-scoped update set |
| Can they mix? | No — global and scoped changes cannot share an update set | |
| CSA exam focus | Primary focus | Awareness only — not deep-dived at CSA level |
Key Exam Facts & Traps
This section consolidates every critical, frequently tested fact about update sets. Review this list before your exam.
sys_update_xml stores the individual captured changes (each row = one configuration change). The table sys_update_set stores the container/header. Know both table names — the exam uses them.
Quick-Reference Summary
Update Sets capture: CONFIG (metadata), NOT data
States: In Progress → Complete → Loaded → Committed
Export format: XML file (sys_remote_update_set)
Individual changes: sys_update_xml table
Container/header: sys_update_set table
Current set shown: Top-right corner of the instance header
Must do before export: Set state to COMPLETE
Must do before commit: Run PREVIEW first
Reversing a commit: BACKOUT (not uncommit)
Default update set: Always exists, always In Progress, not for prod use
Global vs Scoped: Cannot mix in same update set
- A developer on DEV creates a named update set and sets it as current (visible top-right)
- All configuration changes made are automatically captured in
sys_update_xmlunder that update set - When done, the developer sets the update set to Complete and exports it as an XML file
- A release manager imports the XML into the TEST instance — the set appears as Loaded
- Preview is run to check for conflicts or missing dependencies
- Issues are resolved, then the update set is Committed — changes are applied to TEST
- After successful testing, the same XML is imported and committed to PROD