Research - ServiceNow - Update Sets

Mastering ServiceNow Update Sets

A Comprehensive Guide to Governance and Best Practices

Part 1: The Anatomy of a ServiceNow Update Set

To master the use of ServiceNow Update Sets, one must first understand their fundamental nature. They are not merely a convenience but a core mechanism of the platform’s change management capabilities, with specific technical underpinnings that dictate their behavior, strengths, and limitations. Misunderstanding these fundamentals is the primary source of deployment errors, instance instability, and process failures. This section deconstructs the update set to its core components, establishing the foundational technical knowledge required to comprehend the rationale behind the best practices detailed later in this report.

1.1 Defining the Update Set: A Container of Change

At its most basic level, an update set is a collection of configuration modifications that are grouped together to be transferred from one ServiceNow instance to another. It acts as a manifest or a container for changes, allowing administrators and developers to build and test new functionality in a non-production environment (e.g., Development) and then promote those changes as a single, cohesive unit to other instances, such as Test or Production.  

Physically, a completed update set is represented as an XML file. This file encapsulates three critical pieces of information:

  1. Identifying Details: A collection of record details that uniquely identify the update set itself, including its name, state, and creation metadata.  
  2. Configuration Changes: A compilation of the actual modifications made to tracked records within the platform.  
  3. Transport Status: A status that indicates whether a target instance is permitted to retrieve and apply the changes contained within the XML file.  

This XML-based architecture is the key to an update set’s portability, allowing for simple transfer between instances. However, it also means that the contents are a “point in time” snapshot of process records. Any changes made to the source instance after an update set is marked as  

Complete are not retroactively included, a crucial detail that impacts the entire deployment lifecycle.

1.2 The Capture Mechanism: How ServiceNow Tracks Your Work

The process of capturing changes in an update set is not arbitrary; it is governed by a precise and deliberate platform mechanism. When a developer or administrator modifies a configurable object in ServiceNow, that change is not directly written into the update set file. Instead, the modification is recorded as a new entry in a specific table called sys_update_xml, also known as the Customer Updates table. This new record in  

sys_update_xml is then associated with the developer’s currently selected update set. If no specific update set is selected, the change is captured in a system-generated Default update set, a common source of error for new users.  

The critical element that determines which objects are tracked is a dictionary attribute named update_synch. This attribute is found on the collection-level dictionary entry for a given table. If a table’s definition includes the attribute  

update_synch=true, any configuration changes made to records on that table will trigger the creation of a sys_update_xml entry and be captured in the current update set. In a fresh instance, approximately 300 tables have this attribute by default, a number that varies slightly by platform version.  

A critical governance principle, underscored by ServiceNow’s official documentation and support articles, is to never add the update_synch=true attribute to a table that does not have it out-of-the-box (OOB). Attempting to do so is unsupported and extremely dangerous. It can lead to the  

sys_update_xml table being inundated with false or unintended updates, which in turn causes severe performance degradation, an inability to commit legitimate update sets or install plugins, and can ultimately render an instance unavailable. The performance of the platform’s upgrade and deployment engine is tightly coupled to this predefined set of tracked tables. Circumventing this design via unauthorized dictionary changes is a high-risk action that can cripple an instance and must be strictly forbidden in any development environment.  

1.3 What Is Captured vs. What Is Not: The Configuration vs. Data Divide

The single most important concept to grasp about update sets is the fundamental distinction between what they are designed to capture—configuration and metadata—and what they are designed to ignore—transactional and operational data. This is not a technical limitation but a deliberate architectural choice that enforces a separation of concerns between environments. The development environment is for building the  

application, while the production environment is for running the business on that application. Failure to understand this distinction is the root cause of the majority of deployment failures.

Captured Items (Configuration & Metadata) These are the structural, logical, and behavioral elements that define how an application or the platform functions. They are considered part of the application’s design. Examples include:

  • Scripts: Business Rules, Client Scripts, UI Policies, Script Includes.  
  • Structure: Tables, Dictionary Entries (fields), Form Layouts, List Layouts, Views, Roles.  
  • Process: Workflows (only when published), Flow Designer flows (when published), Report Definitions.  
  • Configuration: System Properties, Dictionary Overrides, Reference Qualifiers.  

Even records that might appear to be data, such as choices for a catalog item question (records in the question_choice table), are captured by default. This is because they are considered metadata that defines the structure and behavior of the catalog item itself, rather than operational data generated by a user.  

Non-Captured Items (Transactional & Operational Data) This category includes the day-to-day records generated by users and automated processes as part of normal business operations. This data is specific to an instance and should not be promoted between environments via update sets. Examples include:

  • Task Records: Incidents, Problems, Change Requests.  
  • Core Data: Users, Groups, Companies, Departments.  
  • Asset/CMDB Data: Configuration Items (CIs).  
  • Operational Records: Scheduled Jobs, Schedules, Homepages (unless manually added), and critically, Number Counter records (sys_number_counter). The failure to capture number counters is a common reason why newly created tables in production do not increment their record numbers correctly.  

This deliberate separation means that any comprehensive deployment plan must account for manual or scripted procedures to set up necessary data in the target instance. This could involve using ServiceNow’s import sets to load user data or manually creating specific configuration records that are not tracked by update sets.  

Forcing Records into an Update Set In rare and specific circumstances, it may be necessary to include a non-tracked record in an update set. This should be treated as an exception, reserved for foundational configuration data that is essential for an application to function. There are two primary methods for this, which should only be used by experienced administrators with a full understanding of the implications:

  1. “Add to Update Set” UI Action: This is a context menu item that can be enabled on forms. It allows a user to manually force the current record into their selected update set. This is useful for one-off additions of records like a specific group or a configuration item needed for testing.  
  2. GlideUpdateManager2 Script: For programmatic additions, a background script can be used. By instantiating the GlideUpdateManager2 class and passing a GlideRecord object to its saveRecord() method, a developer can force any record into the current update set. This is a powerful but potentially dangerous tool that must be used with surgical precision.  

The following table provides a quick-reference guide to what is and is not captured, reinforcing the core principles of update set contents.

Component TypeExampleCaptured by Default?Rationale & Best Practice
Business LogicBusiness Rule, Client Script, UI PolicyYesThese define application behavior and are core configuration items.  
Structural ElementsTable, Dictionary Entry (Field), Form LayoutYesThese define the data model and user interface, which are fundamental configuration.  
Process AutomationPublished Workflow, Flow Designer FlowYesThese define automated processes. Crucially, they must be published to be captured.  
User & Group DataUser Record (sys_user), Group Record (sys_user_group)NoThese are considered instance-specific operational data. Users and groups must be created manually or via import sets in the target instance.  
Task DataIncident Record, Change Request RecordNoThis is transactional data generated during business operations and is specific to each instance.  
CMDB DataConfiguration Item (CI)NoCIs are operational data, typically populated by discovery or other integrations in each environment.  
System ConfigurationSystem Property (sys_property)YesSystem properties are key-value pairs used to control platform behavior and are considered configuration.  
SchedulingScheduled Job (sys_trigger)NoScheduled jobs are operational and often have instance-specific triggers or targets. They must be manually created or exported/imported as XML in the target instance.  
NumberingNumber Counter (sys_number_counter)NoThis is operational data that tracks the next available number for a table. It must be manually created in the target instance for new tables.  

Part 2: The Update Set Lifecycle: From Creation to Deployment

Understanding the end-to-end lifecycle of an update set is essential for establishing a reliable and repeatable deployment process. This lifecycle can be broken down into three main phases: creation and management, the standard deployment workflow, and post-deployment considerations. Each stage has its own set of procedures and potential pitfalls. Adhering to this structured lifecycle is not merely a matter of following steps; it is a risk mitigation framework designed to ensure changes are promoted safely and predictably.

2.1 Creation and Management: Setting the Stage for Success

The journey of an update set begins in the development instance. Proper creation and state management at this initial stage are critical to prevent downstream problems.

Creating and Activating an Update Set To begin capturing work, a developer navigates to System Update Sets > Local Update Sets and selects the “New” button. After filling in the required fields (most importantly, a name that adheres to the established naming convention), the developer has two choices: “Submit” or “Submit and Make Current.” The “Submit and Make Current” action is crucial; it creates the update set record  

and immediately sets it as the active container for all subsequent tracked changes. Forgetting this step is a frequent mistake, causing developers to inadvertently save their work to the  

Default update set, from which it must be manually moved later.

Understanding Update Set States An update set progresses through several states during its lifecycle, each with a specific meaning and purpose:

  • In Progress: This is the initial, active state. The update set is open and will collect any configuration changes made by the developer who has it selected as their current set.
  • Complete: When development work is finished and the changes are ready for migration, the state is manually changed to Complete. This is a read-only state that signals to the platform that the set can be retrieved by other instances. Once an update set is retrieved by a target instance, its state in that target instance is   Loaded.  
  • Ignore: This is a terminal state used on a production instance after a successful deployment. Setting a committed update set to Ignore is a critical best practice that prevents the set from being reapplied if the production instance is ever cloned over a development or test instance. This avoids overwriting newer development work with the older changes contained in the cloned update set.  

2.2 The Standard Deployment Workflow: Retrieve -> Preview -> Commit

The promotion of an update set from a source to a target instance follows a mandatory three-step process: Retrieve, Preview, and Commit. This sequence is a foundational quality gate. Bypassing or improperly executing any step introduces significant risk to the stability of the target instance.  

Step 1: Retrieve Retrieval is the process of moving the completed update set from the source instance (e.g., DEV) to the target instance (e.g., TEST). There are two established methods for this:

  1. Retrieve from Update Source (Recommended): This is the preferred and more controlled method. The target instance is configured with the URL and credentials of the source instance under System Update Sets > Update Sources. From the Update Source record, an administrator can click “Retrieve Completed Update Sets” to automatically pull all sets marked as Complete from the source. This method centralizes control and reduces the chance of manual error.  
  2. Export/Import from XML (Manual): This method involves manually exporting the update set to an XML file from the source instance via a UI action on the update set record. This XML file is then imported into the Retrieved Update Sets table on the target instance. While more manual, this approach is essential for moving update sets between instances that are not network-connected or for creating backups of critical releases before deployment.  

Step 2: Preview This is the most critical, non-negotiable step in the deployment process. Before any changes are applied, the update set must be previewed. The preview process performs a dry run of the commit, comparing the changes in the update set with the current state of the records on the target instance. It identifies potential problems such as collisions (where a local record is newer than the one in the update set) and missing dependencies. Committing an update set without first running a preview and carefully analyzing its results is a reckless act that violates all established best practices. The types of errors encountered during preview and their resolutions are covered in detail in Part 5 of this report.  

Step 3: Commit Committing is the final action of applying the changes to the target instance. The “Commit Update Set” button only becomes available after a successful preview has been run. Once committed, the changes are applied to the database, and the update set’s state in the target instance changes from  

Loaded to Committed.

For very large update sets, it is important to note that the user interface may display the “Committed” status almost immediately, while the actual database operations are still running as a background job. To confirm that the commit process has fully and successfully completed, an administrator should navigate to System Diagnostics > Progress Workers and search for the update set name. The job’s state should be Completed, not Running.  

2.3 The Peril of “Backing Out”: Why Fix-Forward is the Gold Standard

ServiceNow provides a “Back Out” UI action on committed update sets, which attempts to revert the applied changes. When an update set is backed out, an OOB business rule also removes the associated  

sys_upgrade_state record, which tracks the version of the committed object.  

Despite its existence, the “Back Out” feature is widely considered dangerous, unreliable, and is strongly discouraged by both community experts and official guidance. The back-out process is notoriously fragile and often fails, particularly if the update set involved creating new dictionary entries (tables or fields) or deleting records. A failed back-out can leave the system in an inconsistent and unstable state, creating more problems than it solves.  

The universally accepted best practice is the “fix-forward” approach. This methodology aligns with modern DevOps principles of immutability, where production changes are never “undone” but are instead superseded by new, corrective changes. If a deployment introduces a bug, the proper procedure is as follows:

  1. A developer creates a new update set in the development instance to correct the issue.
  2. This “fix” update set is put through the full testing and QA cycle.
  3. The fix update set is then deployed to the higher environments, following the standard Retrieve -> Preview -> Commit process.  

This fix-forward approach maintains the integrity and synchronization of the instance pipeline, provides a clear and auditable history of all changes, and avoids the high-risk gamble of the back-out feature. The only conceivable scenario where a back-out might be considered is in a catastrophic production outage where a fix-forward is not immediately possible. Even in such an emergency, it should be viewed as a last resort, high-risk maneuver. This preference for fixing forward reflects a core principle of mature release management: the deployment pipeline should always move in one direction to prevent the chaos of state divergence between instances.  

Part 3: Governance and Core Best Practices

Technical knowledge of the update set lifecycle is insufficient without a strong framework of governance and established best practices. These rules are not bureaucratic overhead; they are a collective body of wisdom, often learned through past failures, designed to ensure a stable, scalable, and manageable development process. Adherence to these practices mitigates risk, improves predictability, and enables effective collaboration in a multi-developer environment. The biggest challenges with update sets are often human and process-related, not technical.

3.1 Structuring Your Work: Small, Focused, and Purposeful

The structure and granularity of update sets have a direct impact on the risk and complexity of a deployment. A disciplined approach to organizing development work is the first line of defense against deployment issues.

  • Align with Business Value: Every update set should be logically tied to a specific unit of business value, such as a User Story from an Agile backlog, a Defect ticket, or an Enhancement request. This practice provides essential context and traceability. When a change needs to be reviewed or audited months later, linking it back to the original requirement (   STRY12345, for example) is invaluable.
  • Keep Them Small and Focused: Large, monolithic update sets are a significant source of risk. They are difficult to review, challenging to troubleshoot, and their deployment has a larger “blast radius” if something goes wrong. The principle should be one discrete feature or fix per update set.
    • Recommended Size: While there is no absolute number, a widely accepted guideline is to keep the number of customer updates (records in sys_update_xml) below 100 per set. Some sources suggest a maximum of 500-1000 entries, but this should be treated as an absolute upper limit for major features, not a routine target. If update sets are consistently exceeding this size, it is a strong indicator that the associated user stories are too large and should be broken down into smaller, more manageable components.  
  • Organize by Feature, Not by Developer: Changes should be grouped logically by the feature or functionality they implement, not simply by who worked on them or on what day. This ensures that all components of a single feature are deployed together, respecting their internal dependencies.  

3.2 The Naming Convention: A Universal Language for Deployments

A standardized and strictly enforced naming convention is non-negotiable for any ServiceNow development team, regardless of size. It provides immediate, at-a-glance clarity on the purpose, scope, and origin of every change, which is critical during release planning and troubleshooting. A good naming convention is not about tidiness; it is a primary tool for preventing deployment errors.  

A robust naming convention should include several key components:

  • Work Item Identifier: The unique ID of the associated Story, Defect, Enhancement, or Project task (e.g., STRY12345, DEF001122). This is the most critical component for traceability.  
  • Application Scope: A short, standardized acronym for the application scope in which the work was done (e.g., GBL for Global, HR for HR Scoped App, FIN for Finance). This is extremely helpful for organizing releases and is essential for managing batch update sets with cross-scope changes.  
  • Short Description: A brief, human-readable summary of the update set’s purpose (e.g., “Onboarding Form Updates,” “Incident Priority Fix”). This should be concise, avoiding redundant information like dates or developer initials, which are already captured in other fields on the update set record.  
  • Version/Sequencing (Optional but Recommended): For complex features that require multiple update sets or for subsequent fixes, a version number (e.g., v1, v2, Fix1) can be very useful.  

Example Naming Convention: [Work Item] - - - [Version]

  • STRY12345 - HR - Onboarding Form Updates - v1
  • DEF001122 - GBL - Incident Priority Calculation Fix

3.3 The Golden Rules: Critical “Do’s and Don’ts”

These are foundational rules of update set management. Violating them often leads to overwritten changes, missed updates, and deployment failures.

  • DON’T Re-open a “Complete” Update Set: Once an update set’s state is changed to Complete, it must be considered immutable and read-only. If additional changes are required for the same feature, the correct procedure is to create a new update set (e.g., “Feature X v2”) and ensure both sets are deployed in the correct order. The technical reason for this rule is critical: once a target instance retrieves a completed update set, it caches that version. If the source update set is re-opened, modified, and re-completed, the target instance will   not automatically re-retrieve the new version, leading to the deployment of an outdated set and missed updates.  
  • DON’T Touch the Default Update Set: The Default update set is a system-level backstop and should never be used to transport changes. It should not be marked as Complete, and its contents should not be manually deleted or modified. Any work accidentally captured in the   Default set must be moved to a proper, named update set before migration.
  • DO Clean (“Scrub”) Your Update Sets: Before marking an update set as Complete, it is a critical quality assurance step to review its contents. Developers should navigate to the Customer Updates related list and meticulously check for any accidental or unnecessary changes. Common examples include personal list layout preferences, changes to user records, or modifications to unrelated records touched during testing. The best practice for handling these unwanted updates is to move them to the Default update set rather than deleting them. This removes them from the deployment package while preserving the records in the source instance in case they are needed later.  
  • DO Publish Workflows Before Completing: Changes made to a workflow in the Workflow Editor are only captured in an update set at the moment the workflow is published. Forgetting to publish a workflow before completing the update set is a very common and frustrating cause of deployment failure, where the new workflow logic is simply absent in the target instance.  
  • DON’T Manually Move Updates Between Sets (Unless Absolutely Necessary): Directly changing the update_set field on a sys_update_xml record to move a change from one set to another is highly discouraged. This action corrupts the audit trail and can lead to duplicate updates for the same object within a single update set, causing unpredictable behavior. The correct, safe procedure to fix a change made in the wrong update set is the “trivial change” method:
    1. Switch to the correct update set and make it current.
    2. Navigate to the object that was changed (e.g., the Business Rule form).
    3. Make a trivial, non-impactful change (e.g., add a space to the description) and save the record. This captures a new, full version of the object in the correct update set.
    4. Immediately back out the trivial change and save the record again. This ensures the captured version is clean and identical to the intended state.  

3.4 Deployment Discipline: Planning for a Smooth Release

A successful deployment is a planned activity, not an impromptu one. Discipline around the release process is essential.

  • Document Deployment Order: When a release consists of multiple update sets, their commit order is often critical. Dependencies between sets (e.g., one set creates a table, a second set adds a field, a third adds a business rule) must be respected. Committing them out of order will result in errors. The release plan or change request must explicitly document the correct sequence for committing the update sets.  
  • Account for Manual Steps: A deployment is more than just committing update sets. The release plan must include a detailed checklist of all manual configuration and data-loading tasks that are required pre- or post-commit. These often include:
    • Activating necessary plugins in the target instance.
    • Configuring instance-specific values in System Properties.
    • Importing transactional or foundational data records that are not captured in update sets, such as users, groups, or choices for a lookup table.  
  • Deploy During Off-Peak Hours: This is a critical practice for large, heavily-used instances. Committing an update set, especially one containing dictionary changes (new tables/fields), can trigger a system-wide cache flush. This forces the instance to rebuild its cache from the database, which can cause significant, noticeable performance degradation for all concurrent users. To avoid impacting business operations, deployments should be scheduled during off-peak hours or approved maintenance windows whenever possible. A cache flush during peak hours can easily become a P1 performance incident.  

Part 4: Advanced Management: Batching and Merging

As development efforts scale and releases become more complex, managing a multitude of individual update sets becomes untenable. ServiceNow provides two mechanisms for grouping update sets: merging and batching. However, these are not equal options. The choice between them reflects the maturity of a team’s deployment process, with batching representing the modern, superior standard and merging being a legacy, high-risk alternative.

4.1 Merging Update Sets: The High-Risk Option

The “Merge Update Sets” module provides functionality to combine multiple completed update sets into a single, new, monolithic update set.  

The Process and Logic When update sets are merged, the system examines all the sys_update_xml records from the source sets. If the same object (e.g., the same business rule) was modified in multiple source sets, the merge process applies a simple rule: “last update wins.” The newly created merged update set will only contain the version of the object from the source set where it had the most recent sys_updated_on timestamp. All older versions of that object from other source sets are discarded.  

The Risks and Why It’s Not Recommended While seemingly a simple way to consolidate changes, merging update sets is fraught with risk and is strongly discouraged by experienced practitioners.  

  • Destructive Loss of Traceability: The single greatest drawback of merging is the loss of context. The final merged set is completely divorced from the original update sets, which were likely tied to specific user stories or defects. It becomes incredibly difficult, if not impossible, to troubleshoot a problem by tracing a specific change back to its original requirement or developer.  
  • Unpredictable and Complex Conflicts: While the “last update wins” logic sounds straightforward, it can mask complex underlying issues. Merging dozens or hundreds of changes can create a tangled web of dependencies that results in unforeseen conflicts during the preview of the merged set. Diagnosing these conflicts in a massive, opaque set is a nightmare scenario.  
  • Irreversible Action: To prevent confusion, the standard (though flawed) practice after merging is to delete the original source update sets. This makes the merge a one-way, destructive action. There is no simple “unmerge” process. If the merge creates a problematic set, the only recourse is to painstakingly reconstruct the changes.  
  • Community and Expert Consensus: The overwhelming consensus in the ServiceNow community is to avoid merging. It is considered an outdated practice from an earlier era of the platform. If it must be used, it should be done with extreme caution, with full XML backups of all source sets taken beforehand.  

4.2 Batching with Parent/Child Hierarchies: The Modern Standard

Update set batching is the ServiceNow-endorsed, modern, and vastly superior method for managing and deploying groups of related update sets. It addresses all the major shortcomings of merging.

The Concept and Process Batching works by creating a logical hierarchy. Instead of physically combining changes, you simply establish a parent-child relationship between update sets. A developer creates a “parent” update set (which is often just an empty container) and then, on each “child” update set record, populates the Parent field with a reference to the parent set.  

The deployment process is then streamlined: an administrator only needs to retrieve, preview, and commit the single parent (or “base”) update set. The platform is intelligent enough to process the entire batch, automatically handling the commit order of the children based on their creation dates and dependencies.  

Key Advantages over Merging The benefits of batching are significant and directly address the risks of merging:

  • Preserves Full Traceability: This is the most important advantage. Each child update set remains a distinct, individual record. It is easy to open the parent set, view the list of children, and see exactly which changes are tied to which user story, developer, and scope. This makes auditing and troubleshooting straightforward.  
  • Non-Destructive and Flexible: Creating a batch is a non-destructive act of linking records. Child update sets can be easily added to or removed from a parent (as long as the parent is still In Progress), providing immense flexibility during release planning. If a feature needs to be pulled from a release at the last minute, its corresponding child update set can simply be un-parented.  
  • Superior Dependency and Conflict Handling: The batch preview process is far more robust than a merged preview. It evaluates all changes across the entire hierarchy simultaneously. This means it can correctly resolve dependencies where, for example, one child update set creates a table and another child adds a business rule to that table. If committed individually out of order, this would fail; as a batch, it succeeds.  
  • The Standard for Multi-Scope Deployments: Batching is the essential and standard method for deploying changes that span multiple application scopes. In modern ServiceNow development, it is common to have changes in the Global scope and one or more custom application scopes that need to be deployed together. The standard practice is to create a parent update set in the Global scope and link the child update sets from all relevant scopes to it. When the Global parent is committed, the system will intelligently handle the necessary scope-switching during the commit process to apply all changes correctly.  

The evolution from merging to batching reflects a maturation of ServiceNow’s deployment capabilities. Batching is a more robust, flexible, and engineered solution designed for the complexities of modern, multi-scope application development. Therefore, any modern training curriculum must present batching as the default best practice and relegate merging to a historical footnote, to be used only in exceptional circumstances. Mastering batching is a prerequisite for any developer working effectively in today’s ServiceNow environment.

Batch Size and Performance While powerful, batching is not without performance considerations. For very large releases, it is wise to limit the number of update sets within a single batch to avoid long preview and commit times. A general guideline is to limit batches to 5 update sets for small-to-medium projects and a maximum of 10 for large-scale projects.  

Part 5: Troubleshooting and Conflict Resolution

Even with disciplined processes, deployment issues can arise. The update set preview mechanism is the primary tool for identifying these issues before they impact a target instance. Understanding the errors it presents is not just a technical skill; it is a diagnostic process that often reveals underlying failures in development or release management procedures. This section serves as a field guide for developers, providing systematic approaches to diagnosing and resolving the most common update set problems.

5.1 Decoding Preview Errors: A Systematic Approach

When an update set is previewed, the system generates a list of problems in the Update Set Preview Problems related list. These problems are stored in the sys_update_preview_problem table. Each problem requires a manual decision. Ignoring these errors and committing anyway is a direct path to an unstable instance.  

Collision: “Found a local update that is newer than this one.”

  • Type: Collision.  
  • Cause: This is the most frequent error encountered. It signifies that the version of a record on the target instance has a more recent update timestamp than the version of the same record in the incoming update set. This typically happens for one of two reasons: 1) An out-of-process change or “hotfix” was made directly in the target environment, or 2) Another update set containing a newer version of the same object was already committed. The system is correctly preventing you from overwriting a newer change with an older one.  
  • Resolution: This error requires careful analysis. The preview screen provides a “Compare with local” UI action that shows a side-by-side comparison of the two versions. The developer must review the differences and make an informed decision:
    • Accept Remote Update: This action forces the version from the update set to overwrite the newer local version. This should only be chosen if the incoming change is definitively the correct and intended state of the record.  
    • Skip Remote Update: This action discards the change from the update set and preserves the existing local version. This is the correct choice if the local “hotfix” or change is the desired state. If in doubt, skipping the update is often the safer initial choice to avoid data loss.  

Missing Dependency: “Could not find a record in [table_name] for column [field_name] referenced in this update.”

  • Type: Missing object.  
  • Cause: This error indicates that a record in the update set has a reference to another record that does not exist on the target instance. For example, a business rule references a specific system property, but the update set containing that system property has not yet been committed. Another common cause is when a user reference is captured, but the user record itself was not created in the target instance.  
  • Resolution: The resolution is to identify the missing dependency. The error message provides the table and often the specific reference that is missing. The developer must then find that missing record in the source instance, capture it in a new, separate update set (or add it via XML export/import), and deploy that dependency first. After the dependency is successfully committed, the original update set can be re-previewed, and the error should be resolved.  

Uncommitted Dependency: “Could not find a table field (case.reference) referenced in this update, but did find it in another uncommitted update set.”

  • Type: Uncommitted update.  
  • Cause: This is a variation of the missing dependency error. In this case, the required record does exist on the target instance, but it is contained within another retrieved update set that is in a Loaded state but has not yet been committed.
  • Resolution: The solution is straightforward. Either commit the other remote update set first or, preferably, combine both update sets into a single batch update set. The batch preview process will resolve this type of cross-set dependency automatically.  

Scope Mismatch Error: “Cannot commit Update Set because: Update scope is not the same as update [Update Name] scope “.”

  • Type: Invalid scope.
  • Cause: This error occurs when an update set created in one application scope (e.g., Global) contains one or more customer updates (sys_update_xml records) that belong to a different application scope (e.g., a custom HR application). The platform enforces scope integrity and will not allow a mixed-scope update set to be committed.  
  • Resolution: This issue must be resolved in the source (DEV) instance before re-exporting the update set. The developer must identify the sys_update_xml records that are in the wrong scope and move them to a new, separate update set that has been created in the correct corresponding scope. Proactive tools can be installed from sources like SN Pro Tips to run a business rule that prevents a mixed-scope update set from ever being marked as   Complete, thus catching the error at the source.  

The following table summarizes these common errors and provides a quick-reference guide for resolution.

Error Message (or a variation thereof)TypeCommon Cause(s)Recommended Resolution(s)
Found a local update that is newer than this one.CollisionA hotfix was applied directly to the target instance. An out-of-order deployment occurred.Use the “Compare” feature to analyze differences. Choose “Accept Remote Update” to overwrite the local change or “Skip Remote Update” to keep it. Re-evaluate deployment processes to prevent out-of-process changes.  
Could not find a record in [table] for column [field] referenced in this update.Missing DependencyThe update set depends on a record (e.g., a user, group, property) that does not exist in the target instance.Identify the missing record in the source instance. Capture it in a new update set or export its XML. Deploy and commit this new dependency set first, then re-preview the original set.  
...but did find it in another uncommitted update set.Uncommitted DependencyThe required dependency exists on the target but is in another retrieved update set that has not been committed yet.Commit the other update set first. The best practice is to use update set batching to manage and commit all related sets together, which resolves this automatically.  
Cannot commit Update Set... because: Update scope is not the same as update scope...Scope MismatchThe update set contains records from multiple application scopes.This must be fixed in the source (DEV) instance. Move the out-of-scope updates to a new update set created in the correct scope. Use batching with a Global parent to deploy multi-scope changes correctly.  
The table (table_name) is going to be deleted including all data.WarningThe update set includes an action to delete a table that contains data on the target instance.This is a high-impact change. If deleting the table and all its data is the intended action, accept the remote update. If not, skip the update. This requires careful validation with stakeholders.  

5.2 Handling Overwritten Changes and Unintended Updates

Beyond explicit preview errors, other issues can arise from poor update set hygiene and a lack of process discipline.

  • Identifying Overwritten Changes: A common complaint is that a change was deployed but does not appear on the target instance. This is almost always due to the change being overwritten by a subsequent deployment. Because the last update applied to an object “wins,” the commit order of update sets is paramount. If two update sets modify the same business rule, the one that is committed   last will define the final state of that rule on the instance. Troubleshooting this requires a careful audit of the sys_update_set_log and sys_upgrade_history_log tables to reconstruct the exact sequence of commits.
  • Correcting Changes in the Wrong Update Set: As detailed in Part 3, if a change is accidentally captured in the wrong update set, it must be corrected using the “trivial change” method. Manually editing the update_set field on the sys_update_xml record is not a supported or safe practice and can lead to duplicate entries for the same object in one set, causing unpredictable commit behavior.  
  • Scrubbing Unwanted Updates: The process of “scrubbing” or cleaning an update set before migration is a critical quality gate. Developers must review the Customer Updates related list on their update set form to identify and remove any changes that are not related to the specific feature or fix. This includes personalizations like list layouts, changes to their own user record, or records on unrelated tables that were modified during testing. As a best practice, these unwanted updates should be moved to the Default update set, which effectively removes them from the deployment without permanently deleting the change record from the source instance.  

Ultimately, the conflict resolution model of update sets is a manual, point-in-time process. It is effective for simple cases but is inherently less efficient and more prone to human error than the proactive conflict detection and automated merging capabilities of modern source control systems like Git. This reality is a driving force behind the platform’s strategic shift towards source control for complex application development.  

Part 6: The Strategic Context: Update Sets in the Modern ServiceNow Ecosystem

To use update sets effectively, it is not enough to understand their mechanics; one must also understand their strategic place within the broader and evolving ServiceNow development ecosystem. The choice of a deployment tool—be it an update set, the Application Repository, or a source control pipeline—is an architectural decision that reflects the nature of the change being made and the maturity of the development organization. This final section positions update sets correctly against modern alternatives, providing a framework for making informed decisions.

6.1 Update Sets vs. Scoped Applications & The Application Repository

The introduction of scoped applications fundamentally changed the landscape of ServiceNow development. A failure to understand the relationship between update sets and this modern application model leads to inefficient and often incorrect deployment strategies.

  • Scoped Applications: A scoped application is a self-contained package of functionality with its own private namespace (scope). This scope acts as a protective boundary, preventing the application’s files and data from conflicting with other applications, whether OOB or custom. For any new, discrete business functionality, building it as a scoped application is the definitive best practice.  
  • The Application Repository: The Application Repository is the primary deployment mechanism for scoped applications. It is a central registry where versions of custom applications can be published. Other instances can then install or upgrade the application from this repository. It automates the management of application files and handles versioning, ensuring a consistent installation across the enterprise.  

The Dividing Line: When to Use Which The choice between update sets and the Application Repository is not arbitrary; it is based on the type of payload being delivered.

  • Use the Application Repository when:
    • Installing a new, custom-built scoped application for the first time.
    • Upgrading an entire scoped application to a new, published version.
    • Deploying a completed, self-contained product to end-users.  
  • Use Update Sets when:
    • Deploying small patches, hotfixes, or configuration changes to an existing application (whether scoped or global).  
    • Migrating any and all changes made in the global scope. The Application Repository is for scoped apps only.  
    • Moving miscellaneous configuration records that are not part of a formal, versioned application.
    • Storing a specific, historical version of an application for backup or rollback purposes, as the App Repo typically only serves the latest version.  

A critical rule is to not mix deployment methods for a single application’s lifecycle. If an application is initially installed via the Application Repository, all subsequent major upgrades should also be deployed via the repository. Using update sets to apply major changes to a repo-installed app can break the versioning and dependency chain, leading to an inconsistent state.  

6.2 Update Sets vs. Team Development

Team Development is another platform feature often confused with update sets, but they solve different problems at different stages of the development lifecycle.

  • Team Development: This feature is a distributed version control system designed to manage parallel development when multiple developers are working on separate, individual development instances. It establishes a parent-child hierarchy between these development instances, allowing developers to “push” their local changes to the parent and “pull” changes from the parent to synchronize their work. Its primary purpose is to facilitate code sharing and manage collisions   during the development phase, before a formal release is assembled.
  • The Difference: Team Development is about coordinating work among developers on disparate instances. Update sets are the vehicle used to promote a finished product from a development environment to a testing or production environment. They are not mutually exclusive. A team might use Team Development to reconcile all their work onto a single parent DEV instance, and from that instance, the final, consolidated changes would be captured in update sets (or a scoped application) for promotion up the environment stack.  

6.3 The Future of Deployments: Source Control and CI/CD

The most mature ServiceNow development organizations are aligning their practices with mainstream software engineering by embracing a model centered on external source control and CI/CD (Continuous Integration/Continuous Deployment) pipelines. This represents the strategic future of enterprise-scale ServiceNow development.  

  • The Model: In this paradigm, scoped applications are linked to an external Git repository (like GitHub or GitLab), which becomes the single source of truth for the application’s code. Developers work on features in separate branches, use pull requests for peer code reviews, and merge changes into a main branch upon approval. This process is managed entirely outside of ServiceNow’s update set mechanism.  
  • The Pipeline: Automated CI/CD pipelines are triggered by merges in the Git repository. These pipelines programmatically handle the process of publishing the application to the ServiceNow Application Repository, deploying it to the TEST instance, and running a suite of Automated Test Framework (ATF) tests to validate the deployment. If tests pass, the pipeline can then promote the application to Production.  
  • The Role of Update Sets in this Future: In a mature source control model, the role of update sets becomes highly specialized and tactical. They remain absolutely essential for any configuration that must be done in the global scope, as global changes cannot be managed within a scoped application’s Git repository. They also remain the tool of choice for emergency hotfixes that need to bypass the full CI/CD pipeline. However, for all new, self-contained business applications, the source-controlled scoped app becomes the default standard.

This shift from a platform-centric model (tweaking a live system and capturing changes in update sets) to a software-centric model (building versioned applications from an external source of truth) is the most profound trend in the ServiceNow ecosystem. A forward-looking training program must prepare developers for this reality, positioning update sets as one tool in a larger toolbox, rather than the only tool.

The following table provides a strategic comparison of these deployment methodologies.

MethodologyPrimary Use CaseKey CharacteristicsWhen to UseWhen to Avoid
Update SetsMigrating individual configuration changes and global scope modifications.Captures changes to tracked tables into an XML file. Requires manual promotion (retrieve, preview, commit). Prone to human error if governance is weak.For all global scope changes. For small patches/hotfixes to existing applications. For moving miscellaneous configurations not part of a formal app.  For installing new applications. For deploying large, complex, versioned applications. For development without strong governance and naming conventions.  
Application RepositoryInstalling and upgrading versioned, custom scoped applications across instances.Centralized repository for scoped apps. Manages application versions. Simplifies installation and upgrades to a one-click process.For the initial installation of any new scoped application. For major version upgrades of a scoped application.  For moving global scope changes. For deploying minor, un-versioned hotfixes where a full application publish is overkill.  
Team DevelopmentCoordinating parallel development across multiple, separate development instances.Distributed version control between instances. Uses a push/pull model to share code and resolve collisions during development.For large teams where developers cannot work on a single shared DEV instance and require their own sandboxes.  For teams working on a single development instance. As a replacement for a formal deployment process to TEST/PROD.  
Source Control & CI/CDEnd-to-end, automated lifecycle management of scoped applications.The “gold standard” for mature development. Git is the source of truth. Uses automated pipelines for build, test, and deployment.For all new, significant, self-contained business applications. For organizations requiring high levels of automation, governance, and auditability.  For simple global scope changes. For organizations without the resources or maturity to manage a full CI/CD toolchain.

Conclusion

ServiceNow Update Sets are a foundational and powerful tool for managing and deploying configuration changes. Their effectiveness, however, is not inherent in the tool itself but is a direct result of the discipline, governance, and process rigor with which they are used. A mastery of update sets requires a deep understanding of their technical underpinnings—the configuration-versus-data divide and the update_synch mechanism—as well as strict adherence to a lifecycle of structured creation, meticulous cleaning, and planned, multi-stage deployment.

Best practices such as small, focused sets tied to business value, enforced naming conventions, and the unwavering “fix-forward” approach are not suggestions but necessities for maintaining stable and synchronized instances. Advanced techniques, particularly the use of batching over the outdated and risky practice of merging, are critical for managing the complexity of modern, multi-scope releases.

Ultimately, developers and architects must view update sets within the strategic context of the entire ServiceNow platform. While they remain the essential and correct tool for managing changes in the global scope and for deploying tactical fixes, they are part of a larger suite of more modern and robust tools. For new, self-contained functionality, the development of versioned, scoped applications deployed via the Application Repository—and ideally, managed in an external source control system with a CI/CD pipeline—represents the clear and definitive future of enterprise ServiceNow development. By using the right tool for the right job, organizations can leverage the full power of the platform, moving from simple configuration management to mature, scalable, and automated application delivery.

Leave a Reply

Your email address will not be published. Required fields are marked *