Zurich Patch 3
The Zurich Patch 3 release contains important problem fixes.
- Zurich Patch 3 was released on October 30, 2025.
-
- Build date: 10-24-2025_0919
- Build tag: glide-zurich-07-01-2025__patch3-10-16-2025
For more information about the release cycle, see the ServiceNow Release Cycle.
For a downloadable, sortable version of the fixed problems in this release, click here.
Overview
Zurich Patch 3 includes 109 problem fixes in various categories. The chart below shows the top 10 problem categories included in this patch.
Changes in Zurich Patch 3
- Conversational intake for sourcing and procurement agentic workflow
- The Conversational intake for sourcing and procurement agentic workflow addresses your procurement needs by providing product recommendations, guided checkout, off-catalog processes, and detailed product information. It also answers questions and tracks related records.
- Monitor inbound API integration usage
- Monitor inbound integration usage requests through the Inbound API Integration Usage dashboard.
- Use agentic workflows in Now Assist for Sourcing and Procurement Operations
- View Inbound API Integration Usage dashboard
- The Inbound API Integration Usage dashboard enables you to view statistics for requestors and their API calls. Filter data by application or resource requested.
Notable fixes
The following problems and their fixes are ordered by potential impact to customers, starting with the most significant fixes.
| Problem | Short description | Description | Steps to reproduce |
|---|---|---|---|
|
Configuration Management Database (CMDB) PRB1930654 |
The legacy health dashboard doesn't tell the user that the dashboard is deprecated/no longer supported | Users have bookmarked, saved, or edited links to the legacy health dashboard, meaning they can still access it. There's a lot of confusion on why the dashboard is no longer working as intended. There should be a message to tell the user this dashboard has been migrated to CMDB Workspace. |
Expected behavior: When users navigate to the legacy dashboard, they should be able to see a message telling them to use the new health dashboard and that the legacy dashboard is no longer supported. Actual behavior: See that the legacy health dashboard has some broken widgets, no colors, etc., but there is no indication that this dashboard is retired or has been migrated. |
|
HR Service Delivery PRB1943958 |
There's a 'You do not have permission to read the created record' error when creating an HR Case | A race condition in the UI happens when a form is submitted before the GUID is created and an empty sys_is is passed. The server-side code was not handling this. It happens intermittently. |
Notice the error, but the case gets created in backend with an empty case number. |
|
List Administration PRB1932703 |
Display values aren't showing for reference fields within the 'List' component | When including a table on the 'List' component that contains reference fields, it's showing empty. Where as in platform, it shows a value. |
Refer to the listed KB article for details. |
|
Virtual Agent PRB1905962 |
Link, text and icon menu items aren't working in Virtual Agent branding in Dynamic Window |
Expected behavior: All type of menu items should display. Actual behavior: Only the phone and email are working. |
All other fixes
| Problem | Short description | Description | Steps to reproduce |
|---|---|---|---|
|
Activity Stream PRB1942003 |
Work notes/Comments are unexpectedly cleared when saving a form with an empty mandatory field and the work is lost | When there are any unfilled mandatory fields on the form, the text in the comments/work notes is getting cleared on selecting the Save button. It's impacting the user experience. Verified that it works fine in Xanadu and Yokohoma and on other workspaces like CSM/FSM Configurable workspace. |
Expected behavior: The Comments/Work notes should remain. Actual behavior: The Comments/Work notes are cleared. |
|
Advanced Work Assignment for Case Service channel PRB1946390 |
The case task isn't working properly for CCaaS external routing | The assignment isn't happening since there's no mapping field available for CCaaS partners to use and store their external ID onto the 'Case task' table. |
Expected behavior: The case task should be picked up by the CCaaS events and assigned to the identified agent. Further events should also be triggered for this task. Actual behavior: Currently the case task doesn't get assigned to the agent. |
|
Advanced Work Assignment PRB1938992 |
High AWA assignment cycle times for impact voice call routing | A user is uptaking in NVC and they are facing slow response times for call routing. It's taking ~12 seconds to route the call to agent. Each AWA assignment cycle is taking ~11 secs and out of which ~8 secs is being spent for Agent Map creation. Expected response times should be less than a second as there's no other load in the system. | |
|
Advanced Work Assignment PRB1942061 |
Lack of ability to track end-to-end AWA Assignment times | There's currently a gap in performance measurement of the AWA offer work API and manual assignment API, where there is no way to accurately determine the time difference between when an external AWA assignment API call was made and when the work item assigned_to would be updated to the assigned agent. The admin lacks context as to when the request actually gets processed and the work item gets assigned (and by extension, the inbox card shows up in the agent's inbox). Another limitation with the current design is that it only persists the offered_on for the final API invocation, which led to work item acceptance. If there were multiple agents which were offered the work item via these APIs, this context is lost. | |
|
Advanced Work Assignment PRB1944387 |
The 'Create Segment On WorkItem Accept' business rule runs unnecessarily when a previous accepted work item exists |
Expected behavior: The 'Create Segment On WorkItem Accept' business rule shouldn't be triggered for the old work item. Actual behavior: The 'Create Segment On WorkItem Accept' business rule is triggered for the old work item. |
|
|
AI Search PRB1940661 |
The hasPendingIndex API is broken | The sn_ais.AisUtil. hasPendingIndex (tableName, recordSysId, embeddingModelName, semanticIndexName); call fails. | |
|
AI Search UX PRB1941065 |
Response loads even after a 15 second timeout on the portal | The portal stops the loading sign, which means it's reached the 15 second timeout. The response to the user's query loads after that. |
Expected behavior: Once the portal times out, it doesn't load the response. Actual behavior: The portal stops the loading sign, which means it's reached the 15 second timeout, but the response loads after that. |
|
Analytics Data API PRB1926918 |
The 'Process analytics cache prefetch queue' job leads to OutOfMemoryError and the node restarts | When the user runs the 'Process analytics cache prefetch queue' job, it loops in ChangeCheckConflictsSNC script include. | |
|
Analytics Data API PRB1945218 |
Memory leak of JSON serializer in multivis API | Each time a data request is processed, a new serializer is created and not released unless a GC is performed, which causes a memory leak. |
Observe that there are ~1000 results. Each time a data request is processed, a new serializer is created and not released unless a GC is performed, which causes a memory leak. |
|
Automated Test Framework (ATF) PRB1922654 |
Automated Test Framework test UI action fails due to a timeout error | There appears to be a race condition introduced in Yokohama. Tests that previously passed in Xanadu are now failing some of time when waiting for a response from the intent channel. |
Expected behavior: The test should pass every time. Actual behavior: The tests fails intermittently due to an 'Timed out waiting for intent feedback' error. |
|
Case and Knowledge Management for HR Service Delivery PRB1880009 |
Attachments aren't uploaded in the 'Agent Chat' window from HR Agent Workspace | This is happening for HR Core. | |
|
Condition Builder PRB1939399 |
The search function on the third-level panel keeps loading continuously on the now-dot-walk v2 | When searching on the third-level panel, it enters an infinite loading state instead of displaying the client-side filtered data. | |
|
Customer Operations for Customer Service Management PRB1918447 |
The responsibility framework allows the selection of dot-walked fields in the UI, but in the backend it's not granting the access | The previous implementation used relationshipGR.isValidField() for validating dot-walked field paths, but this method only validates if a field exists directly on a table and doesn't properly traverse dot-walked paths. In the responsibility framework UI, it is possible to select dot-walked fields, but the backend wasn't properly validating these paths, resulting in access being denied for records even when the configuration should allow it. | |
|
Database Persistence - Data Access PRB1792470 |
Some alters to increase max length are running twice during an upgrade | Multiple updates happen because a sys_dictionary record has an incorrect field length after finishing the bootstrap batcher. | |
|
Database Persistence - Data Access PRB1907199 |
Two schemas marked as default simultaneously | There are two graph schemas which are marked as default. One is the Global graph and other is the newly created graph which is marked as default. |
Notice that two graph schemas are marked as default. |
|
Database Persistence - Data Access PRB1923704 |
Due to an ordering change on Raptor post migration, certificate authentications for API calls may fail and cause '500' errors | When mutual authentication is configured using both protocol profile and system properties, the system property takes precedence. This causes the SSL exchange to utilize the socket factory for client certificate provisioning, bypassing the keystore defined in the protocol profile. Additionally, when mutual authentication is enabled via property configuration, all certificates from the sys_certificate table are loaded. This can lead to intermittent outbound call failures if expired certificates are cached and used for mutual authentication, resulting in HTTP 500 responses. | |
|
Database Persistence - Data Access PRB1936199 |
Apostrophe in the cypher query causes an error | ||
|
Database Persistence - Data Access PRB1944376 |
Order tables in the view deterministically | Currently, when constructing the view to return from a cypher call, it creates the view from the set of the tables being requested based on enumerating the keyset. This has a nondeterministic order that depends on the underlying structure and the table prefixes. While that wouldn't be an issue at some layers, it means the ACL evaluation differs based on the ordering, which is hard for debugging and also hard to configure around. Instead, it should sort the order of the tables in the view alphabetically by the table name. |
|
|
Database Persistence - Data Access PRB1946284 |
Response columns are returned without node aliases for normal non-aggregate cypher queries | Choice value in quotes and setFixupEdges are failing for the WDF and physical table. For choice value scenario, the cypher u.calendar_integration is a choice column, and passing the value of the choice column on quotes is failing here. For the setFixupEdges scenario, passing setFixupEdges as a true persistence isn't honored. | |
|
Database Persistence - Data Management PRB1927640 |
Duplicate entries are created for extension tables in both the physical and logical tables in both SNC and information schema |
Expected behavior: There should be only one entry for the primary database. Actual behavior: There are two entries for the primary database. |
|
|
Database Persistence PRB1861812 |
EncodeQuery doesn't return the correct value on Data Fabric tables | After choosing 'North America' in the Region and applying, the module gets updated with North American data, but the filter box became 'unavailable option'. | |
|
Database Persistence PRB1937018 |
dbi.truncateTable(table_name) is truncating a table name when the table name is bigger than 29 characters and the daily schedule job isn't able to drop that table | In recent releases, DBTruncateUtil.truncateTable() calls for tables with long names leave orphaned tables behind in the DB and causes backup to fail. | |
|
Database Persistence - WDF PRB1938101 |
The 'Database' view for Workflow Data Fabric (WDF) incorrectly assumes the sys_id when caching underlying glide records | add/getCache in the 'Database' view has a hardcoded assumption that there's a sys_id element in the source and doesn't check for a null result. The copyValue code calls into GlideElement, which short circuits due to the WDF table being a foreign table. This needs to skip the cross scope check but still copy the value. | |
|
Discovery PRB1862106 |
Global IP exclusion isn't working for a cloud VM schedule | Not all the global exclusions are working for a Cloud Discovery. |
Refer to the listed KB article for details. |
|
Discovery PRB1902780 |
The log pattern cloud errors only once | Currently, the cloud pattern errors are incorrectly being logged twice. It ends with two separate errors for the same pattern, one for the exception in the log and one for the 'Pattern Failed'. | |
|
Discovery PRB1937992 |
Discovery Schedule doesn't support the Discovery of more than 5000 IPv6 addresses | If the user creates a Discovery Schedule with over 5000 IPv6 addresses, the Discovery Status is instantly canceled and an error message appears. |
Observe that the Discovery Status is created and instantly canceled with the following error message under the Discovery logs related list: 'IP lists with IPv6 addresses can only contain 5,000 IPs but have X'. |
|
Document Management Services PRB1920126 |
Export to PDF for a scheduled report doesn't export in the proper alignment | ||
|
Dynamic Translation for Agent Chat PRB1942231 |
agent_translated_msg column is overwritten with empty value when the agent is in English and the chat requester is non-English |
Expected behavior: agent_translated_msg on outbound message should be populated with English text. Actual behavior: The agent_translated_msg gets overwritten with empty values. |
|
|
Encryption PRB1923672 |
A Session API getting encryption contexts causes a performance impact | Flow engine performance is impacted by the database calls required to encryption contexts. This API is called billions of times per month and amounts to a pretty significant impact to performance. | |
|
Event Management PRB1639714 |
Alerts on an Application Service have empty PRCs | Alerts on an Application Service appear in the list of 'Impacted Services/CIs' of some change request. These alerts have empty PRCs and they have only one change request instead of two. |
Observe that the alert has only one change request, but it should have two. |
|
Event Management PRB1934096 |
There's a regex preview mismatch in Enrich due to Java vs JavaScript engine differences | In the 'Enrich' page, the regex preview incorrectly shows no match even when the regex is valid and works correctly on actual events. This discrepancy, caused by differences between Java and JavaScript regex engines, has been observed by multiple users and leads to confusion when building enrichment rules. | |
|
Flow Engine PRB1891187 |
There's a high query count when running a flow as a current user | During performance tests of order processing, there's costly queries when flows RunAsUser. Counts can be over 40 million queries executed. | |
|
Flow Engine PRB1941990 |
Trigger inputs aren't accessible after a do-until loop execution | This issue is caused by the changes to GlideFlowStages Updater.java (older name GlideStage UpdateListener.java). It's observed that, in this specific flow structure, the 'in.request_item' flow input isn't passed to the 'Create Catalog Task' action. Querying the sys_flow_value table, there are 2 entries for 'in.request_item' one for the flow input and another with the parent loop associated. As the same key 'in.request_item' is now associated with parent loops, it can only be accessed in the loop body (and for the specific iteration), and all other references to it out side the loop aren't available. | |
|
Flows (Family Channel) PRB1945637 |
Existing scripted fields are set to the 'fd-scripted' static value when there are more than 1 scripted inputs present in the case of templated fields on an update | ||
|
HR Service Delivery PRB1939177 |
User can't view the attachment on a HR case | ||
|
HR Service Delivery PRB1940947 |
Remove license meter dependency from Manager Hub in the OOB-apps properties file | Manager Hub apps must be dependent on EC Pro (which is already existing) and not on License Meter. And hence, remove the Manager Hub app dependency on License Meter. | |
|
Identity PRB1891185 |
There's a high query count running a flow with roles | During a performance load test where 50k orders were created in 1 hour, the query was a significant contributor to the overall execution time. This appears to be triggered when flows run with additional roles. When running as system user or without additional roles, this query pattern isn't observed. | |
|
Inbound API Integration Usage Framework PRB1943106 |
Inbound API integration usage and system metadata tracking for integration requests | This is a product update. | |
|
Inbound API Integration Usage Framework PRB1943108 |
System metadata access tracking for GlideRecord wrapper APIs | This is a product update. | |
|
List Controller PRB1937947 |
Additional logging for Splunk to build more context around legitimate use cases | ||
|
MID Server PRB1923497 |
Deadlock occurred due to two threads | The issue is caused by a conflict between two internal processes that manage and refresh OAuth credentials and MID Server connections. The platform periodically checks and refreshes expired OAuth tokens using a scheduled job. When this happens, the system reloads the credentials and resets all related connection data to ensure security and consistency. At the same time, if a Discovery probe or integration is trying to establish a new connection, it might attempt to access the same shared connection resources. This overlap can lead to both processes waiting for each other to finish, resulting in a temporary deadlock where neither process can proceed. | |
|
Mobile Platform PRB1940079 |
Add condition operators to support IN and MATCH_RGX with the field value in the UI Rule | The condition operators IN and MATCH_RGX don't work with values in a variable, which is needed to make uploading an attachment mandatory when a skip_code in the reference list is selected. |
Expected behavior: The State field is hidden when a user is selected. Actual behavior: The State field isn't hidden. |
|
Next Experience Unified Navigation PRB1945540 |
The 'Enable Analytics' preference property isn't passing the user_consent property | The telemetry-behavior is attempting to read the value from the payload, but it's not passing a payload object when dispatched. |
Notice the 500 error. |
|
Now Assist Panel PRB1942697 |
The Now Assist Panel (NAP)/NASS window can't be found after closing and not pinning it | On the header, the icon for NAP should be visible, but there's no option for opening it. | |
|
Now Assist Panel PRB1943530 |
High frequency one_extend_rate_ limit_violation_cache flushes, causing system slowness | During routine operations, multiple nodes experienced high memory usage and glide.cs.worker thread pressure, resulting in frequent node restarts. Investigation indicates that the one_extend_rate_limit_violation_cache flush events were triggered at an unusually high frequency (over 5000 times within a 30-minute window), which may have contributed to the observed slowness. Analysis suggests that excessive cache flushes can create significant memory and performance pressure on the system. | |
|
OneExtend PRB1940891 |
The prompt field in the 'Generative AI Log' table has extra escaped characters when using Java subflow implementation | In Java, a prompt is converted to a string even though it's already a string before inserting it into the Generative AI Log table. There's extra escaped characters in the prompt field. |
Expected behavior: Users shouldn't see extra escaped characters in the prompt. Actual behavior: Valid escaped sequences are escaped unnecessarily. |
|
Performance Analytics PRB1937240 |
The reports and PA widgets are displayed in the Migration Center without the bulk migration being triggered |
Notice that the artifacts for the reports and PA widgets are available on the Migration Center, without the migration being triggered. |
|
|
Performance Analytics PRB1939257 |
Increase guardrails threshold | RELATIVE_DATE_ CONDITION_AND_VOLUME: Increase the default value to 300M. INSERT_VOLUME_EXCEEDED: Increase the default value to 10M. DATA_VOLUME_EXCEEDED: Increase the default value to 300M. | |
|
Performance Telemetry PRB1938437 |
Move db.query.summary in db.client. operation.duration to an exemplar attribute | The db.query.summary should be set to exemplar only to reduce cardinality. | |
|
Platform Analytics Dashboard API PRB1917370 |
Missing localization strings on the CIO Dashboard | On the CIO dashboard, the localization strings are missing for the tab names, rich text contents, widget titles, info, and error messages. |
Observe that the translation prefixes are missing for most of the elements on the CIO dashboard. |
|
Platform Analytics Dashboard API PRB1946056 |
A C-suite category and error message isn't translated | The error message: 'Contact the administrator to review data collection jobs and the indicator configuration to display data for the selected criteria.' |
Expected behavior: The error message is translated. Actual behavior: The error message isn't translated. |
|
Process Mining PRB1939181 |
Dot-walk activity log collection is broken when the dot-walk value never changes | If the dot-walk value doesn't change, project mining fails, saying that no audit logs are found. |
Expected behavior: The project is mined and a map appears. Actual behavior: Mining fails, saying that no audit logs are found. |
|
Project Management PRB1905989 |
The Create Expenseline button from the new costplan split button doesn't create a system generated costplan | The widget is updated, but no new system generated costplan is created. |
The actuals widget is updated, but no new system generated costplan is created. |
|
Service Mapping PRB1944512 |
Turn off the mapped application services limit | ||
|
Service Portal PRB1947153 |
The lookup select box with a reference qualifier in MRVS displays incorrect labels on the 'SC Catalog Item' widget | The lookup select box in MRVS displays labels according to only a subset of the conditions defined in the reference qualifier ("javascript: xxx"). | |
|
Software Discovery PRB1579663 |
File-based discovery populates the version only on the first software install record for a DM |
Run file-based Discovery. Notice the software install record (cmdb_sam_sw_install) only has Publisher and Product (display names) populated. It would be good to also populate version with the normalized version if available. Some users have use cases that require a version on the install records. |
|
|
Transaction Management PRB1947766 |
When a new token is refreshed with OAuth, the transaction.fUser property is set to 'guest' even if the GlideSession is authenticated with the correct user, which breaks the integration usage GuestUserFilter | With OAuth 2.0, when the first integration request is sent, it refreshes the expired token. After the transaction is complete and the notifyTransactionComplete monitor list is executed, there is a discrepancy between the Transaction.fUser field and the GlideSession.get() .getUserName() value. This occurs for a fully authenticated session. When checking if the user is a guest, Transaction.getUser() isn't accurate. The check in GuestUserFilter only looks at the transaction object, when it needs to look at the GlideSession object. |
Observe the state. |
|
User Administration PRB1896603 |
There's a high sys_user query count when running a flow as a system user | During a 1 hour test that processes 50k orders, there's high query counts on sys_user for the system user. | |
|
UX Framework PRB1887044 |
The latest asset in sys_ux_lib_asset isn't used when multiple asset records exist for the same asset version | This impacts Now Assist Panel loading and Dirty State Management in workspaces. |
\ |
|
UX Framework PRB1892094 |
An ATF test UI action fails due to a timeout error | The intent library delivers context on generator registration for translators that don't exist on the page. | |
|
UX Framework PRB1918913 |
The js_atf_instrumentation.js script is missing when asset bundling is turned on | js_atf_instrumentation.js script, which instruments pages for component load detection and rollback during Automated Test Framework (ATF) testing, is missing when asset bundling is turned on. |
Notice js_atf_instrumentation.js is available. |
|
UX Framework PRB1927748 |
The Next Experience UI is broken when a sys_cb_metadata record doesn't have a macroponent associated | The Next Experience UI can't be used when a sys_cb_metadata record doesn't have a macroponent associated. After going to any Next Experience URL, the following error is seen in the console: 'SERVICE WORKER NOT FOUND'. | |
|
Virtual Agent Designer Legacy PRB1928396 |
Date time input when used in a topic block returns null on output parameters |
|
|
|
Virtual Agent PRB1937290 |
The New conversation button disappears when using certain custom branding colors | . | |
|
Virtual Agent PRB1941593 |
Using vaSystem.execute SkillWithResumeBehavior in a topic causes resume conversation to fail | ||
|
Virtual Agent PRB1943466 |
Now Assist Skill executing twice when running in sync mode | The main skill should execute only once. The main skill is executing twice. Please check the GenAI log and find two execution records. | |
|
Virtual Agent PRB1943976 |
Need to add expensive caches as hard reference caches to avoid GC | ||
|
Virtual Agent Web Client PRB1940975 |
Support more markdown for text messages and synthesized responses | ||
|
Virtual Agent Web Client PRB1941763 |
The New chat button is turned off after a flow execution is complete |
The New chat (plus button) is turned off. |
|
|
Virtual Agent Web Client PRB1948623 |
Uptake new versions of Unified Experience Framework (UXF) | UXF intent library changes to Zurich and Yokohama chat-components to uptake these versions. | |
|
Workspace List Menu PRB1935619 |
Intermittently the L1 (left side toolbar) menu doesn't render in workspaces |
The user may see left side menus not displaying. If it displays, refresh a few times, it may go away. It's intermittent. |
Fixes included
Unless any exceptions are noted, you can safely upgrade to this release version from any of the versions listed below. These prior versions contain PRB fixes that are also included with this release. Be sure to upgrade to the latest listed patch that includes all of the PRB fixes you are interested in.