ServiceNow Update Set Explained
Definition and Purpose
An Update Set is a container that captures changes you make to your ServiceNow instance—new tables, modified workflows, customized forms, business rules—so you can move those changes from one instance to another (such as from development to production). Instead of manually recreating every change in each environment, you export an update set, test it in a staging environment, and import it into production.
Every customization in ServiceNow belongs to an update set. If you create a new field on the incident table, that field is recorded in the current update set. When you export the update set and import it elsewhere, that field gets created automatically on the target instance.
Creating and Recording Update Sets
Update sets are stored in the `sys_update_set` table. When you start working, you select an active update set (or create a new one with a descriptive name like “Incident Routing Improvements”). All subsequent changes—adding fields, modifying scripts, creating flows—are automatically tracked in that update set until you mark it complete or switch to a different one.
You can have multiple update sets in progress on a single instance, but only one is active at a time. This prevents accidental mixing of unrelated changes into one export. Once an update set is complete, you export it as an XML file and share it with other environments.
Exporting, Testing, and Importing
Exporting an update set generates an XML file containing all the changes. You import this file into another instance, and the platform applies the changes: creating new tables, modifying fields, updating business rules, etc. Before importing into production, you import the update set into a staging environment, run test suites, and verify that no conflicts arose from environment-specific data.
If the target instance already has a different version of an object you are trying to import, ServiceNow flags it as a conflict. You can choose to overwrite the existing version or skip the change. A failed import typically leaves partial changes on the target, requiring manual rollback or correction.
Update Set Resolution and Conflicts
A conflict occurs when the same object (such as an incident workflow) was modified differently in the two instances. When you import an update set, the platform shows conflicts and asks how to resolve each one: keep the target version or use the imported version. Rushing through conflicts without understanding them often breaks production.
Always review conflict details, test the resolution in staging, and have a rollback plan. Some teams prevent conflicts by freezing changes in production during deployments, but this is operationally complex for high-volume teams. Better practice is to keep development, staging, and production environments in sync through disciplined update set management.
Common Update Set Problems
Capturing test data or debugging code in an update set and then deploying it to production is a common source of production incidents. Update sets do not include certain platform metadata—like data in tables you created in production—so you can lose records if you rely on update sets alone for environment replication.
Merging unrelated changes into a single update set makes troubleshooting difficult if one change breaks production; you cannot easily identify and revert just the problematic change. Use one update set per logical feature or enhancement.
Update Set Best Practices
Name update sets descriptively (such as “P000123 – Incident Priority Automation”) to track which change request or business initiative they support. Limit each update set to a single feature or fix; avoid mixing unrelated work. Test all imports in a staging environment first. Create a summary document explaining what each update set does, which tables it modifies, and any dependencies on other update sets. Track version numbers and deployment dates in a central register.
Splitting changes into update sets that can be reverted
The unit of promotion should match the unit of rollback. If one update set bundles a business rule, a catalog item and a report, a fault in any one of them means the whole set is backed out, including the parts that worked. Group changes by the outcome they deliver rather than by the developer who made them or the table they touch. When two developers work on one feature, a single set with a clear owner often beats two sets whose order has to be remembered. The mechanics of capturing changes are covered in the update sets and release management guide.
| Change type | Own update set? | Promotion risk to plan for |
|---|---|---|
| A new form field and the business rule that uses it | Yes, together | The rule references a field the set has not yet created on the target |
| A script include shared by several features | Separate set, promoted first | Later sets that depend on a changed method fail in ways that are hard to trace |
| A catalog item with its variables and flow | Yes, together | The flow references a group that exists only in the source environment |
| Reference data corrections | Not in a feature set | Reference data differs between environments, so it needs its own review |
Ordering dependent sets and checking the result
Dependencies between update sets cause many promotion surprises, and they are often unwritten. Before promoting, list which sets depend on which, and promote in that order. After each import, read the target’s conflict list rather than moving on when the import completes, because a set can finish with warnings that matter. Keep a short written sequence for each release so a repeat does not rely on memory.
- List every set in the release and the tables, scripts and groups each one touches.
- Draw the dependency order, and mark any set that changes something another set reads.
- Import into a copy of production rather than only into staging, because staging may already hold data that hides the problem.
- Resolve each conflict with a recorded decision that names who approved keeping the target version or the incoming one.
- Run the regression suites and the business checks for each changed feature before the production window opens.
Writing a back-out plan that works on the day
Backing out is not the same as removing an update set from the target. Some changes, such as a new table or a data migration, cannot be undone by reverting the set, and the back-out plan has to say what happens to records created in the meantime. For each set, state whether it can be reverted in place, whether the fix is a forward correction, and who has the authority to choose between them. Write this down before the window, not during it. A cutover plan is a common place to hold the sequence.
Environment drift makes back-outs harder. If someone has edited a record directly in production since the last sync, a reverted set may overwrite that edit or conflict with it. Ask the production support team to confirm that no direct changes were made to the affected objects, and record the answer with the release notes.
Keeping scope and application boundaries visible
Changes made inside a scoped application and changes made in the global scope behave differently when they move. A team that builds part of a feature in the global scope and part inside an application may find that one half promotes cleanly and the other does not. Decide the scope before the first change is made, and keep feature-level work inside one scope where possible. The application scope guide explains how to check which scope a change belongs to, and the custom application boundaries article covers the design side.
Questions release managers ask about update sets
Can I edit an update set after it has been completed?
Avoid it. Completing a set is what makes its export a stable record. Changes made afterwards belong in a new set, so the history of what was promoted stays accurate.
Should an incident fix wait for the next scheduled release?
Often not. An emergency fix should be its own set, promoted through the expedited path, and then carried back into the development history so the next release does not reintroduce the defect.
Why does the target show a change nobody made in this release?
Someone has changed the target directly, or an earlier set touched the same object. Compare the object’s history on both sides before deciding which version survives.
Is a passing test suite enough to promote?
It is necessary but not sufficient. Automated checks do not cover every business path, so a named business owner should confirm the changed features as well.
Next step
A release calendar that lists every set, its dependencies and its back-out route is a small document with a large effect on promotion risk.
Frequently asked questions
What should I do if an update set import fails halfway?
Stop the import and check the error logs. Common causes include missing dependencies (an imported object references another object that doesn't exist), naming conflicts, or permission errors. Fix the issue on the source instance, create a new update set, and retry on a fresh target environment. Partial imports are difficult to rollback manually.
Can I edit an update set after exporting it?
You can re-activate an update set, make additional changes, and re-export it. This is useful when you find a bug before importing into production. However, once you import an update set into a target environment, further edits in the source will require creating a new update set and managing the deltas manually.
Do update sets include data, or just schema and code?
Update sets include configuration (tables, fields, workflows, scripts) but not data records. If you need to migrate records (such as old incident data), use import sets or REST API jobs instead. Update sets are for code and configuration only.
Related guides
Related Oblytech services
Where this topic turns into delivery work, these are the Oblytech services that cover it.
Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.
Contact us