---
sourceDocument: Zurich Release Notes
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/zurich/release-notes

 Release :

    - zurich

ft:locale :

    - en-US

ft:publication_title :

    - Zurich Release Notes

ft:clusterId :

    - rn

bundleId :

    - rn


---

# Zurich Patch 13

# Zurich Patch 13 {#ariaid-title1}

Release version: Zurich  
Updated October 8, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 124 minutes to read  
The Zurich Patch 13 release contains important problem fixes.

Zurich Patch 13 was released on October 08, 2026.
:
    * Build date: 10-06-2026_0908
    * Build tag: glide-zurich-07-01-2025__patch13-09-17-2026

Important:  
For more information about how to upgrade an instance, see [ServiceNow upgrades](https://servicenow-prod.fluidtopics.net/fUsB9lFROd1_5jM2lwjOwQ "The upgrade process moves your instance to a new ServiceNow release version. Understand the difference between upgrading and patching, release definitions, rollback and backup options, and how to test your non-production and production instance upgrades.").

For more information about the release cycle, see the [ServiceNow Release Cycle](https://support.servicenow.com/kb_view.do?sysparm_article=KB0547244).{#zurich-patch-13__p_download-version}  
Note:  
This ServiceNow AI Platform® major family release is now available in ServiceNow's Regulated Market environments. For more information about services available in isolated environments, see [KB0743854](https://support.servicenow.com/kb_view.do?sysparm_article=KB0743854). For a downloadable, sortable version of the fixed problems in this release, click [here](https://downloads.docs.servicenow.com/enus/zurich/rn/patches/PRBs-Z013.00.xlsx).
Zurich Patch 13 includes 915 problem fixes in various categories. The chart below shows the top 10 problem categories included in this patch.  
Figure 1. Top 10 problem categories

## Security-related fixes {#zurich-patch-13__security-related-fixes}

Zurich Patch 13 includes fixes for security-related problems that affected certain ServiceNow® applications and the ServiceNow AI Platform®. We recommend that customers upgrade to this release for the most secure and up-to-date features. For more details on security problems fixed in Zurich Patch 13, refer to [KB3159341](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3159341).

## Changes in Zurich Patch 13 {#zurich-patch-13__changes-in-patch}

[Agentic Usage Overview Dashboard](https://www.servicenow.com/docs/access?context=agentic-usage-overview-dashboard&version=zurich&pubname=zurich-intelligent-experiences&ft:locale=en-US)
:   Monitor usage from inbound agentic connections to MCP servers from the Agentic Usage Overview Dashboard.

[Monitoring Now Assist usage in Subscription Management](https://www.servicenow.com/docs/access?context=monitoring-now-assist-usage&version=zurich&pubname=zurich-platform-administration&ft:locale=en-US)
:
    * Track Now Assist usage, including Moveworks Assists, across your production and non-production instances.
    * View Moveworks assists broken down by skill. Moveworks skill names are distinguished by the "MW" prefix.

[Subscription Management release notes](https://servicenow-prod.fluidtopics.net/24aIEXEGZDFWFgs89VRR1g#subscription-management-rn "The ServiceNow Subscription Management application enables you to manage your subscriptions proactively and monitor subscription usage on your instances. Subscription Management was enhanced and updated in the Zurich release.")
:   Starting in Zurich patch 13, Moveworks consumption can now be measured as part of your Assist meter, following the same subscription rules as other assist-based products. For more information about the timeline and required steps for integration, see [Moveworks Assist in Subscription Management: Rollout Timeline, Customer Actions \& FAQ \[KB3147691\]](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3147691) on the Now Support Knowledge Base.

## Notable fixes {#zurich-patch-13__section-notable-fixes}

The following problems and their fixes are ordered by potential impact to customers, starting with the most significant fixes.
{#zurich-patch-13__notable-fixes__entry__4}

| Problem | Short description | Description | Steps to reproduce |
|-|-|-|-|
| AI Search UX PRB2073716 [KB3148324](https://hi.service-now.com/kb_view.do?sysparm_article=KB3148324) | For non-admin users, search results and suggestion navigation on portals are redirecting to platform view | After upgrading to Australia Patch 5 or Zurich Patch 12, non‑admin users performing a search on a portal (for example, /esc) experience incorrect navigation. Selecting a regular search result or a suggested search result opens the record in the platform view rather than within the portal. | Refer to the listed KB article for details. |
| Core UI Responsive Dashboards PRB2034505 [KB3085059](https://hi.service-now.com/kb_view.do?sysparm_article=KB3085059) | A Platform Analytics (PA) dashboard overview can't load any dashboards | If all of the following conditions are met, the dashboard doesn't appear on the 'All' tab of PA dashboard 'Overview' page. | Refer to the listed KB article for details. |
| List Administration PRB2009991 [KB3090094](https://hi.service-now.com/kb_view.do?sysparm_article=KB3090094) | 'Workflow'-type fields are displaying as 'Pending - has not started' for all values | This requires a single-line change that adds a defensive .clone() call to deep-copy the choice list before WorkflowIcons.process() mutates it. This prevents the shared cache from being poisoned by in-place label overwrites. | Refer to the listed KB article for details. |
| List Administration PRB2031478 [KB3074807](https://hi.service-now.com/kb_view.do?sysparm_article=KB3074807) | The 'List edit' pop-up is not working in UI16 view with the Next Experience disabled view | The user is not able to edit values from the List view, and the 'List edit' pop-up is partially or not visible at all. The 'List edit' pop-up should be visible for every row and for every column. | Refer to the listed KB article for details. |
| Time Card Management PRB2051508 [KB3139332](https://hi.service-now.com/kb_view.do?sysparm_article=KB3139332) | The user.manager field shows as empty when opening the 'Pending Approval' module for time sheets | The filter is empty for the user.manager field. | 1. Impersonate a user with submitted time sheets. 2. Navigate to Time SheetPending Approval. {#zurich-patch-13__ol_mg2_45w_skc} Notice that the filter shows empty for User.Manager. |
[ ]

{#zurich-patch-13__notable-fixes}

## All other fixes {#zurich-patch-13__other-fixes}

{#zurich-patch-13__all-other-fixes__entry__4}

| Problem | Short description | Description | Steps to reproduce |
|-|-|-|-|
| Activity Stream Compose Component PRB2032875 | Highly threaded emails with multiple block quotes render as unreadable in the 'Conversation' tab |   | 1. Navigate to any workspace, such as Service Operations Workspace. 2. Open any record from the list. 3. Reply to that email from the inbox. This reply should appear in the 'Conversation' section. 4. Reply back to this new email. 5. Repeat for 7-8 replies. It reaches a point where users see one letter per row. {#zurich-patch-13__ol_e1d_45w_skc} |
| Activity Stream PRB1991852 | Base64 coded attachments can't be loaded in the activity stream in the workspace | This likely has to do with processing large content. | 1. Navigate to any record page. 2. Create an email with a base64 encoded image. 3. Set the email to 'sent' status. 4. Navigate to the record and select Show more for the email. {#zurich-patch-13__ol_ups_bs2_vkc} Expected behavior: The full body of the email is displayed. Actual behavior: The email is loading for a long time and eventually crashes the page. |
| Activity Stream PRB2017633 | ActivityDBListener fires too many AMB messages on bulk deletes |   | 1. Open an incident in a workspace. 2. Create two emails. 3. Open sys_email_list.do. 4. Set both emails' type to 'sent' 5.Notice that when returning back to the 'Incident' page, there should be two emails now. 5. Open the Network panel in the DevTool's inspect window. 6. Reload the page. 7. Filter by 'amb'. 8. Select the AMB message. 9. Select the Messages tab. 10. Clear all of the messages. 11. In the sys_email_list.do, select one of the emails from step 4 and delete it. Observe that in the 'Network tab', there should be an AMB message for the deleted email. 12. In /sys_email_list.do, delete multiple emails that are 'send-ready'. Observe that in the 'Network' tab, there should be no messages for those deleted emails. 13. In /sys_email_list.do, delete multiple emails that are 'send-ready' and the other email from step 4. {#zurich-patch-13__ol_t1d_45w_skc} Observe that in the 'Network' tab, there should only be 1 message for the other email. |
| Activity Stream PRB2032224 | Orphaned dependent fields in the initial audit event causes an exception in SysAuditRule | When the support audit is passed to findFirst, which filters out support audits, it finds an empty stream and throws 'IllegalStateException: Unreachable code reached.' The exception is caught, but it causes retrieveEvents to return zero events, leaving the workspace activity stream completely empty. |   |
| Activity Stream PRB2060131 | When table rotation is set up for sys_audit_relation, audit relationship events don't display in a workspace |   | 1. Navigate to Table Rotations (sys_table_rotation). 2. Add a record for sys_audit_relation. 3. Set the type to 'Extension' and the 'Duration' to 1 hour or less. 4. Create audit relationship changes. {#zurich-patch-13__ol_hbd_45w_skc} Expected behavior: The audit relationship changes are displayed in the workspace activity stream. Actual behavior: The audit relationship changes are not displayed. |
| Activity Stream PRB2073311 | Build backend graphQL endpoint for List Activity | This is a product update. |   |
| Activity Stream PRB2073313 | Provide supplemental data for returned records on the new back-end for list activity | This is a product update. |   |
| Activity Stream PRB2073315 | Review DT APIs for security |   |   |
| Advanced Work Assignment PRB2060584 [KB3143279](https://hi.service-now.com/kb_view.do?sysparm_article=KB3143279) | The 'Set logged out agent offline' script action shouldn't touch presence states when 'disable_inactivity_check' is set to true | A live human agent is made offline whenever they log out. However, the log out script action should bypass the agents in those presence states that have 'disable_inactivity_check' set to true. | Refer to the listed KB article for details. |
| Agent Chat PRB2053704 | Confusing '_​live_​agent_​support_​offglide_​' is triggered in non-off Glide LLM conversations |   | 1. Start an LLM conversation. 2. Request a live agent transfer. 3. Check the corresponding topic being triggered in the sys_cs_conversation record. {#zurich-patch-13__ol_nbd_45w_skc} Observe that the topic '_​live_​agent_​support_​offglide_​' is triggered even though the conversation is not an off Glide conversation. |
| Agent Chat PRB2057904 | When an agent's Async Message Bus (AMB) connection breaks, they silently stop receiving work-item events with no indication that anything is wrong | They appear available but never get offered work. | 1. Log in as an agent. 2. Open Service Operations Workspace (SOW). 3. Make the agent online. 4. Log in as an admin in another window. 5. Navigate to the 'sys_amb_channel_presence' table and disconnect AMB. 6. Navigate to SOW. {#zurich-patch-13__ol_sbd_45w_skc} Expected behavior: See a modal that AMB got disconnected. When users selectrefresh, it auto connects. Actual behavior: Users aren't seeing the modal that AMB got disconnected, so the agent never knows. |
| Agent Chat PRB2058031 | Add a missing flag on 'Requires ACL authorization' | A fix has ensured that the 'Requires ACL authorization' flag on 'Conversation Server' graphQL schema is set to true. However, due to a discrepancy in syncing branches, only the ACL changes added are live and not the graphQL schema changes. |   |
| Agent Chat PRB2063949 | Some messages are hidden on the agent's side when hideControl is true and contains searchText |   |   |
| Agent Chat PRB2068933 | A workspace error is observed when handling incoming messaging interactions in Agent Workspace | In both scenarios, the error modal occurs. | Scenario 1: 1. Open a messaging interaction in the CSM workspace. 2. As a agent, navigate to any other tab than the ongoing interaction. 3. Send one or more messages from the requester. 4. Ensure that the ongoing messaging count is visible. 5. Switch to the current interaction. {#zurich-patch-13__ol_ybd_45w_skc} Observe the error modal. Scenario 2: 1. Open a messaging interaction in CSM workspace. 2. Send one or more messages from the agent/requester. 3. Refresh the page. {#zurich-patch-13__ol_zbd_45w_skc} Observe the error modal. |
| Agent Chat PRB2077124 | A tab subheading displays 'Call is in wrap-up' while a call is still active in an agent-initiated wrap-up scenario | When an agent selects Open Wrap-Up MID-call, the tab subheading immediately changes to 'Call is in wrap-up' even though the voice call is still ongoing. This is misleading. The label implies the interaction is in wrap-up state, but the call has not yet ended. UX has confirmed the label should be changed to 'Wrap-up initiated' --- a generic label that works accurately for both MID-call and post-call scenarios. | 1. Configure an NVC/CCaaS integration with supportExternalWrapUp = true on the Wrap Up macroponent. 2. Start a voice call as an agent. 3. While the call is still active, select the Open Wrap-Up button. {#zurich-patch-13__ol_vcd_45w_skc} Observe the tab subheading. It immediately displays 'Call is in wrap-up' even though the call is still ongoing. |
| Agile Development PRB2057888 | Add script include to gate PWS-CWM functionalities |   |   |
| AI Agents (Glide Family) PRB2059351 | Record scope should override the user session scope | For AI Agents, when any record of a user instance is used, the record scope should override the user session scope of the MSP as per the domain separation policy. However, that's not happening. For example, when an AI Agent with a retriever tool is triggered by any record in a user instance (like C1), it fetches KBs/results from all the user instances under that MSP. |   |
| AI Agents (Glide Family) PRB2059390 | Role masking isn't unset when running a workflow |   |   |
| AI Agents (Glide Family) PRB2085529 | AI Agent execution tool 'AIA RAG Retriever' returns faulty URLs for search result items in VA and ES | When the RAG/semantic-search result's URL omits the leading forward slash, the resulting link is corrupted and unusable. |   |
| AI Experience Framework - Glide PRB2059453 | True up version for the AIXF Store app |   |   |
| AI Experience Framework - Glide PRB2061584 | True-up the AI UX Builder Store app |   |   |
| AI Experience Framework - Glide PRB2062421 | The ACL 'Type' drop-down list does not include aiux_page, aiux_widget, or aiux_dashboard options | None of these types are available when they should be included as selectable options. | 1. Navigate to sys_security_acl.list. 2. Select New to create an ACL record. 3. Open the 'Type' drop-down list. 4. Search for aiux_widget, aiux_page. {#zurich-patch-13__ol_cdd_45w_skc} Expected behavior: The 'Type' drop-down list should include aiux_page, aiux_widget, and aiux_dashboard as selectable options. Actual behavior: The AIUX types are not present in the 'Type' drop-down list. |
| AI Experience Framework - Glide PRB2072025 | sys_ux_theme_asset records associated 'sys_attachment' records have an incorrect state | It should be 'available' and not 'available_conditionally'. |   |
| AI Gateway - Security PRB2041348 | The auto-generated fake sys_ids in AIG should be fixed | Fix the files sys_id and corresponding ITs and UTs. |   |
| AI Search (Glide) PRB1859571 | A search retrieval agent returns an incorrect catalog item URL |   |   |
| AI Search (Glide) PRB2033435 | TSTranslationReference loads all sys_translated rows for a field instead of filtering to the indexed record's value | When indexing a record that has a Reference field pointing to a table whose Display field is a translated_field type, TSTranslationReference calls Translation​Util.​get​Translated​Field​Values()​,​ which queries sys_translated with only name=\&lt;table\&gt; and element=\&lt;field\&gt; --- no VALUE filter. This loads all translations for every value of that field across all records. | 1. Have a large sys_translated table with 50k+ rows for a single table/field combination. 2. Enable a language plugin. 3. Index a record that has a Reference field pointing to a table whose Display field is a translated_field type. For example, a table referencing a question where the question_text is translated_field. {#zurich-patch-13__ol_hdd_45w_skc} Observe that index events take 5s to 8s each, and the message at occurs, 'QueryWarning: 'Large Table' on sys_translated with query name=\<table\>\^element=\<field\> (no value filter).'. |
| AI Search (Glide) PRB2052168 | No_answer Genius Result is streamed intermittently | A Genius Result rarely shows, but it should not show at all. | 1. Navigate to /sp. 2. Search for something that gives a no_answer result, like 'baseball world series'. {#zurich-patch-13__ol_nqs_bs2_vkc} Observe that a Genius Result rarely shows. It should not show at all. |
| AI Search (Glide) PRB2070763 | Impersonation for RAGRetrivalAPI isn't required | This feature isn't required anymore. Going forward, it will be implemented in a different way. It is currently behind ais_admin role but requires other impersonation checks which are missing currently. |   |
| AI Search (Glide) PRB2074141 | Changing a retention policy on an indexed source doesn't enforce guard rail recalculation |   | 1. See that the retention policy for an 'Incident' indexed source is two years. 2. Verify that Semantic Index configuration in enabled. 3. Verify that there's an entry in the ais_guard_rail_limit_data_source table. 4. Change the retention policy on the indexed source to three years. {#zurich-patch-13__ol_pdd_45w_skc} The entry isn't recalculated in ais_​guard_​rail_​limit_​data_​source.​ |
| AI Search (Glide) PRB2084573 | In the 'Live Search' API, if a userId passed in x-run-as doesn't exist, then it throws an error | This is a product update. |   |
| AI Search (Glide) PRB2084574 | IncludeSources and ExcludeSources support for the 'Live Search' API | This is a product update. |   |
| AI Search (Glide) PRB2084575 | REST API policy configurations in Moveworks API V2 | This is a product update. |   |
| AI Search (Glide) PRB2086827 | Handle duplicates with version, embedding model gracefully in ServiceNow Security Center (SSC) | This is metadata, so business rules aren't guaranteed to run (for example, when coming in through an update set), which is why there should be graceful handling of duplicates. |   |
| AI Search (Glide) PRB2095212 | SSC details override Next Wave request payload when both are present | When a Next Wave request is made with explicit parameters/details in the payload AND SSC (Service Search Configuration) details exist for the same context, the SSC details are taking precedence and overriding the values passed in the Next Wave request payload. |   |
| AI Search for Service Portal PRB1998368 | AI Search in Enhanced Chat's full page experience throws a console error | The error, 'Uncaught TypeError: ((n.event.special\[g.origType\] \|\| {}).handle \|\| g.handler).apply is not a function : js_includes_sp_libs.jsx at HTMLDivElement.dispatch' occurs in the console. |   |
| AI Search for Service Portal PRB2062818 | The sparkle Otto icon in a portal search input has an incorrect color when Enhanced Chat is turned on | The sparkle Otto icon before the input placeholder is not visible because it is same color as the background. |   |
| AI Search PRB1893398 | Attempting to recreate a scenario where entries in the search term is empty in the sys_search_event table |   |   |
| AI Search PRB2064865 [KB3151377](https://hi.service-now.com/kb_view.do?sysparm_article=KB3151377) | Now Assist search results overlap when keyboard tabbing is used | During keyboard navigation through the interactive elements in the AI component, overflowed content overlaps with other elements, making the response/answer difficult to read. This was identified as an accessibility finding during a recent audit by the Accessibility Center. | Refer to the listed KB article for details. |
| AI Search UX PRB1939328 | A 'No Answer Found' Genius Result response shouldn't cause 'Has Results' to be true |   | 1. Open Virtual Agent. 2. Search for something that return a 'No Answer Found' (NAF) response. 3. Open the sys_cs_fdih_invocation table and find the recent entry that corresponds to the search. 4. Copy the 'searchAnalyticsPayload' object from the outputs json. 5. Send that payload as a SEARCH_EVENT to the Signals API, either via Scriptable or the REST API. 6. Open the sys_search_event table and inspect the record corresponding to the payload just submitted to Signals. In particular, look at the Has Results field. 7. Open the sys_search_signal_event table and find the corresponding record. 8. Inspect the Genius Results field. {#zurich-patch-13__ol_wdd_45w_skc} Expected behavior: TheGenius Results field on sys_search_signal_event should be empty. Has Results should be false. Actual behavior: TheGenius Results field indicates a synthesized response was displayed, and Has Results is true. |
| AI Search UX PRB1988057 [KB3220629](https://hi.service-now.com/kb_view.do?sysparm_article=KB3220629) | Hyperlinks in synthesized responses don't open in a new tab | When the user attempts to open a hyperlink from the synthesized result, it fails to open. | Refer to the listed KB article for details. |
| AI Search UX PRB2057349 | Rename Now Assist to Otto for typeahead suggestions | This is a product update. |   |
| AI Search UX PRB2083562 | Support right-click behavior for Service Portal search results | This is a product update. |   |
| Analytics Data API PRB1973007 | The Platform Analytics 'pivot table' unit type doesn't persist | When creating a pivot table using two tables as the data sources, the 2nd and 3rd columns swap their values. | 1. Create a pivot table visualization within a dashboard. 2. Add in two tables as data sources. 3. Create four columns on the pivot table, with the first two column being a count of each respective table and the last two columns a sum of all the values with other columns. 4. Save the visualization. 5. Exit editing mode. 6. Refresh the dashboard. {#zurich-patch-13__ol_h2d_45w_skc} When the order of the columns is the count of table 1, count of table 2, sum of table 1's column, sum of table 2's column, and when users refresh the dashboard, the 2nd and 3rd columns values swap, with the values from column 3 appearing in column 2 and vice versa. |
| Analytics Data API PRB1974104 | The 'Sort by' value does not work in time series visualizations | The order changes, but in a pattern that is neither ascending or descending. | 1. Add a timeseries column chart. 2. Add an incident table with the following: 1. Trend by: Year by Activity due 2. Group by: Assignment group 3. Sort data by value: ASC {#zurich-patch-13__ol_q2d_45w_skc} 3. Hover on a chart. Observe the values in the legend. 4. Change sorting to 'DESC'. 5. Hover on a chart. Observe the values in the legend. 6. Repeat the steps with 'Group by: State'. 7. Change the group by aggregation to 'Hour of day by Opened'. 8. Change DESC to ASC in all cases. {#zurich-patch-13__ol_p2d_45w_skc} Observe that the sorting by value is applied incorrectly -- it's sorted, but in a strange order that is not ascending or descending. By changing the order, the values position changes, but the order is still not ASC or DESC. |
| Analytics Data API PRB2002190 | The error log should be suppressed in a prefetch job | The user is getting the error log, 'com.​glide.​rest.​domain.​Service​Exception:​ Invalid configuration in their syslog daily at an interval of 15 minutes. This is a cause of concern as the error logs are frequent and does not give complete information to the user to stop them. | 1. Open any Zurich instance. 2. Open the syslog table. {#zurich-patch-13__ol_hfd_45w_skc} Observe that there is a message containing 'com.​glide.​rest.​domain.​Service​Exception:​ Invalid configuration.'. |
| Analytics Data API PRB2008673 | A single score reported on a Time field with an aggregation as a sum is calculated correctly in the Core/Responsive UI experience but incorrectly in the Platform Analytics Next Experience UI | When a field is created as a dictionary type as 'Integer' and has an attribute 'format=glide_duration', then the aggregation of this field on a native report or a responsive/core dashboard is displaying the duration sum aggregate properly. But when migrated to the platform analytics dashboard, the same field aggregation sum does not render the result correctly. |   |
| Analytics Data API PRB2019716 | Multiple elements from a single filter can't be applied to an 'COUNT DISTINCT' or 'AVERAGE' indicator with 'Show filter as separate series' | When multiple elements are selected and applied from a single filter to a visualization based on an automated indicator, the filter is not applied. The 'Network' tab in the developer console shows, 'Indicator does not support multi-element aggregation'. This should not occur for automated indicators. This issue only occurs if the 'facts' table is a database view. | 1. Create a PAR dashboard. 2. Add a line visualization with the base instance indicator, 'Number of over-due incidents' as the data source. 3. Add a filter with 'Indicators' as the filter source type, and 'Assignment Group' as the indicator breakdown. 4. Under 'Data to filter,' add 'Indicators with Assignment Group breakdown'. 5. Select two elements from the filter and apply it. {#zurich-patch-13__ol_lfd_45w_skc} Observe that the filter is not applied, in the 'Network' tab in the developer console, the following occurs:​\[{'order':​0,​'response':​{'filters':​{'not​Applied​Filters':​\[{'order':​0,​'reason':​'Indicator does not support multi-element aggregation'}\]}. |
| Analytics Export API PRB1971222 | 'Omit if no records' isn't honored for score visualizations | If the record count is zero for the visualization, the email with the exported data visualization PDF should not be generated when the 'Omit if no records' checkbox is checked. | 1. Create a data visualization of the type 'score', 'gauge', or 'dial'. 2. Add a data source and conditions such that the record count is zero. For example, add a condition like 'active is true and active is false' which will make the record count zero. 3. Save the data visualization. 4. Schedule the export of data visualization to a PDF. 5. Enable the Omit if no records checkbox. 6. Select Send now from the 'Scheduled export' page. {#zurich-patch-13__ol_ufd_45w_skc} Expected behavior: The email shouldn't be generated when the record count is zero for the visualization. Actual behavior: The email gets generated even though theOmit if no records checkbox was selected. |
| Analytics Export API PRB2057980 | The visualization creator is not able to select existing highlight value configurations | The visualization creator couldn't select a highlighted value configuration because the visaualization creator role doesn't have read access for the sys_​ux_​highlighted_​value_​config table. | 1. Create a highlight value configuration for an incident table as an admin user. 2. Create a list visualization (viz_creator role). 3. Select the table as 'incident'. 4. Enable the fetch highlighted value. 5. Search for the highlight configuration created above. {#zurich-patch-13__ol_dgd_45w_skc} Observe that no result is returned in highlight value drop-down list, even though the visualization creator should be able to read and use existing highlight value configurations. |
| API Access Policies PRB2065453 | The RESTAPIAccessScopeRepo map overwrite loses required authentication scopes when two sys_api_access_scope records share the same API signature | A 403 'User Not Authorized' error occurs. | 1. Install and activate both ServiceNow Otto for Document Voice and Dynamic Guidance applications. 2. Confirm both sys_api_access_scope records are active for the SNGenerativeAI API path sn_generative_ai/extensions, with all apply-all flags (apply_all_methods, apply_all_resources, apply_all_versions) set to 'true'. 3. Call GET /api/sn_generative_ai/extensions/live-llm-configuration?solutionCapability=smartdocs_voice_qna with the Document Voice token. {#zurich-patch-13__ol_kgd_45w_skc} Observe that if the Dynamic Guidance Authentication Scope record loads last into the RESTAPIAccessScopeRepo's map, the call returns the error, '403 User Not Authorized - Missing required API access scope: Dynamic Guidance Auth Scope'. |
| App Engine Pipelines PRB2068337 | There's a Zboot error: 'fix_cobalt_raven_store_ app_query_acl_customization_\*.xml' | The failing fix files are placed directly under /update/ (unconditional), while every correctly working fix is placed under /if/com.glide. security.query_acl/update/ (conditional on the com.glide. security.query_acl plugin). |   |
| Application Install Engine PRB2033816 | The Backfill Module Key ID in encrypted attachment ZIPs are polluting the syslog | It creates content that looks like a ZIP file (by name/MIME) but isn't a GZIP. It forces the platform to read it as GZIP, which triggers the identical ZipException and syslog error that the Backfill job produces at scale. |   |
| Application Manager PRB1975999 | The user can not update the customized app's base version when no new customized versions are available |   |   |
| Application Manager PRB1979149 | Now Assist for Configuration Management Database (CMDB) 2.5.2 certification/installation fails with conflicting versions | There's an error message: 'Unable to successfully install batch package Suite install for Now Assist for Configuration Management Database (CMDB) 27.11.0:Batch install failed due to conflicting version or'. |   |
| Application Manager PRB2022268 [KB3156065](https://hi.service-now.com/kb_view.do?sysparm_article=KB3156065) | The application manager sys_app_version displays duplicate records for the same application and version, which is causing the app to be 'Installation blocked' | As part of the AI testing, it's been observed that the app installations are blocked. The sys_app_version displays duplicate records for the same application, which is causing the app installations to be blocked, despite the app versions being available as well as the license checks having successfully completed. | Refer to the listed KB article for details. |
| Application Manager PRB2056916 | Skip a license-blocked status for all dependencies in DependencyProcessor | This is a product update. |   |
| Application Manager PRB2057729 [KB3140027](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140027) | Users can't publish custom-scoped applications after upgrading to Zurich or Australia | After upgrading to Zurich or Australia, there's an issue that prevents new application versions from being published for custom scoped apps in ServiceNow Studio. Selecting the Publish button for any custom application results in a publish failure with one of the following errors: 'Vendor information was not found, upload function is disabled for this instance' or 'Did not receive publishing information successfully. Cannot read properties of undefined (reading 'toString')'. | Refer to the listed KB article for details. |
| Application Manager PRB2074238 | Now Assist to Otto rename for Application Manager | This is a product update. |   |
| Appointment Booking PRB2074894 | An appointment isn't working correctly after an upgrade | When the data format is set to dd-MM-yyyy, the appointment slots aren't retrieved correctly. | 1. Navigate to an instance. 2. Set the date format to dd-MM-yyyy. 3. Open any Record Producer in the Field Service Management (FSM) application. There should be a calendar variable. 4. Select the calendar icon to select an appointment. {#zurich-patch-13__ol_tgd_45w_skc} Observe that no available appointment time slots are displayed. |
| Authentication Factors PRB2037251 | Update interactions post-identification and authentication | The 'Interactions' table has only 'Guest' resolved. It should have the user reference resolved post-identification and authentication. |   |
| Authentication PRB2037962 | The MCP Server registration with the Client Credentials grant fails when created via AI Agent Studio | When registering an MCP Server in AI Agent Studio using the Client Credentials grant type (manual registration), the form doesn't get submitted. The same MCP server registration works correctly when the Connection \& Credential alias is created manually outside AI Studio on the same instance. It also works correctly when the flow is exercised via Postman/curl directly against the MCP server's '/token' endpoint. The Authorization Code grant type continues to work end-to-end through AI Studio. | 1. Log in to an instance. 2. Navigate to AI Agent StudioSettings. 3. Select Manage MCP Servers. 4. Select New to add a new MCP server. 5. Enter the MCP URL. 6. Select Manual Registration for Client Registration Type. 7. Select Client Credentials for Grant Type. 8. Select Client Secret Post for Token Authentication Method. 9. For Client ID, enter 'svc_oodp_dataaccess'. 10. For Client Secret, enter a valid secret. 11. For Auth Scopes, enter 'openid'. 12. Enter the token URL. 13. Select Add. {#zurich-patch-13__ol_ahd_45w_skc} Expected behavior: The MCP Server registers successfully, like it does for Authorization Code grants and for manually created Connection \& Credential aliases. Actual behavior: The form doesn't get submitted. TheAdd button is blocked until the authentication URL is provided, which ideally would not be required for the Client Credentials grant type. |
| Authentication PRB2084119 | Ability to issue a correlation token that can be exchanged for access token | This is a product update. |   |
| Authentication PRB2084125 | Workload identity federation support | This is a product update. |   |
| Automated Test Framework (ATF) PRB2053799 | Text and cosmetic changes for ServiceNow Otto |   |   |
| Automated Test Framework (ATF) PRB2054701 [KB3147951](https://hi.service-now.com/kb_view.do?sysparm_article=KB3147951) | A 'Host CPU Load Critical' alert is caused by ATF Scheduler jobs with a large amount of sys_atf_modified_ record_m2m records generated | ATF Tests that cause a large number of modified records (stored in the sys_atf_modified_record and sys_atf_modified_record_m2m tables) cause cause high application server CPU usage as well as high memory usage. When users check to see if a test can run now, they attempt to first acquire exclusive access to all necessary records. If the list of modified records is very large, then users can spend a lot of time trying to determine if the test can run now, and this can cause high CPU usage on the application server and high memory usage in the application node. | Refer to the listed KB article for details. |
| Base Asset Management PRB1950847 | Improve the performance of bulk updates of transfer order lines |   |   |
| Base Asset Management PRB2055589 | Make a serial number mandatory in Identification and Reconciliation Engine (IRE) | The follow list of model categories don't have IRE rules - thus there is no check on unique identifiers: Medical General, Facility General, HVAC, Fuel Tank, Structure, Fuel Tank, Transportation General, Aircraft, Ship, Train, Vehicle, and Retail General. If there is no IRE rule, it should fall back to either a serial number or asset tag as unique identifier for assets. Currently, there's no check on unique identifier. |   |
| Cache PRB1953827 | There's errors in the system/error log since Zurich | The errors and messages in the syslog are coming from the source 'com.​glide.​ui.​Servlet​Error​Listener'.​ |   |
| Canonicalization Data Services (CDS) PRB2053470 | Data uploaded to cds_server_staging table is blocked within instances | This issue occurs in instances where the property 'glide.cmdb.canonical.URL' is set to https:​/​/​\<instance_​name\>​.​service-​now.​com/​ and ends with '/'. Unfortunately, that is the base instance value, and it affects the upload portion of CDS. |   |
| Case and Knowledge Management for HR Service Delivery PRB2017688 | RCAs from Knowledge script includes to HR are requesting entire scope access | The 'Advanced Knowledge Editor' page in HR Agent Workspace is being used, and contains Open Prompt, which is interactable and helps create an articles using Gen AI. For the Open Prompt to work without any issues, new RCAs are required. | 1. Activate the Knowledge Recommendation plugin and Article Optimization plugin. 2. From the Knowledge Management properties, enable the ECE. 3. Create an article from the related list of any HR case. 4. Add a link in the article. {#zurich-patch-13__ol_khd_45w_skc} Observe that there are RCAs from the Knowledge Center to HR Core. |
| Case and Knowledge Management for HR Service Delivery PRB2039604 | The HR L1 Specialist is missing Restricted Caller Access (RCA) records from the installation | After installing the HR L1 Specialist on a zbooted Australia instance, RCA records were created from ZTSD and Now Assist AI Agents scopes to the HR Core scope, which prevent the specialist from completing its tasks. | 1. Create an instance or zboot an existing one. 2. Upgrade the instance to Australia. 3. Install the HR L1 Specialist along with all required dependencies for the HRSD product. 4. Configure the HR L1 Specialist. 5. Assign the specialist to a 'Ready' HR Case. {#zurich-patch-13__ol_qhd_45w_skc} Observe the Restricted Caller Access table to attempting to find the generated RCA records. |
| Case and Knowledge Management for HR Service Delivery PRB2070954 | RCAs are required for predict and transfer use cases | There should be RCAs for the new tool call when the sys_id isn't mentioned in the objective when invoking the 'Predict HR Service and Transfer' case workflow. |   |
| Case and Knowledge Management for HR Service Delivery PRB2071462 | System logs have the error 'Scoped cache operation against catalog nowassist_admin was skipped because of an invalid sysId: no thrown error' | There's the sys_ws_operation 'Get Complete State', owned by package Human Resources: Core (sn_hr_core), operation URI /​api/​sn_​hr_​core/​ hr_​rest_​api/ ​get_​complete_​state.​ configGr.skill_config returns the raw GlideElement (backed internally by com.​glide.​script. ​Field​Glide​Descriptor)​,​ and is never converted with .toString(). That object is then handed straight into sn_​nowassist_​admin.​ Now​Assist​Skill​Config.​ get​Skill​Configuration()​ --- a call across a scope boundary (sn_hr_core → sn_nowassist_admin). |   |
| Case and Knowledge Management for HR Service Delivery PRB2072634 | HR cases no longer Apply fields set from a template when created from the 'Create New Case'/'Case Creation' page | Starting in the Australia release, when users have an HR template that sets the state to 'Ready' or any other state, the case still gets created with the state of 'Draft'. | 1. Navigate to the 'Create New Case' module. 2. Select any user. 3. Select HR Service where the template is set to the state to 'Ready'. 4. Select the Create Case button. {#zurich-patch-13__ol_whd_45w_skc} Expected behavior: The HR case is created in 'Ready' state. Actual behavior: The HR case is created in 'Draft' state. |
| Case Management PRB2057866 | Target tables are missing required tracking fields for multi-case creation | For multi-case creation, the target records do not have the required tracking fields to capture Template Item and Template Execution. As a result, the created Case and Case Task records cannot be fully tracked with associated Template item and execution. To support multi-case creation, the fields Template item and Template Execution need to be added to the sn_customerservice_case and sn_customerservice_task tables. |   |
| Case Management PRB2075237 | Create an implementation to setWorkflow false for a table in the Case Management Core scope | Currently, the multi-case creation takes too much time. To solve the issue, setWorkflow should be set as false. setWorkflow can't be set as false to case management tables from the task plan template scope. Thus, an implementation should be added in the case management scope, which sets setWorkflow false for case and case task tables. |   |
| Change Management PRB1893775 | The sys_db_object query range ACL impacts IPC related records, CIs, and impacted business applications |   | 1. Log in as an itil user. 2. Open any change request. 3. Navigate to the 'Affected CIs' related list. 4. Select Add. 5. In the Add Affected CIs pop-up, locate the Configuration Class field. 6. Select the lookup/search icon next to the field. {#zurich-patch-13__ol_c3d_45w_skc} Observe that no configuration class records are returned even if there's an error saying: 'Part of the query on sys_db_object has been ignored because of insufficient access for 'query_range' operation on sys_db_object.super_class'. |
| Client Scripts PRB1966873 | Observations from the Highlighted Value Background | The two scenarios occur after installing the 'com.sn_customerservice' plugin and configuring the UX Highlighted Value Configuration for the CSM workspace. In this case, the 'Enable Background Color' checkbox is checked, which is responsible for displaying the background color when highlighted values are present on supported fields. The following fields are added as read-only for the Case/Incident form: HTML, Translated HTML, and HTML Script. Highlighted values are also added to the Highlighted values to HTML, Translated HTML and HTML Script fields. In scenario 1, the highlighted value badge changes based on the values present on the drop-down list, and the corresponding color doesn't appear automatically. In scenario 2, the gray background color is not well-respected for the HTML type of fields when the highlighted value color is also enabled. | Scenario 1: 1. Log in to an instance. 2. Navigate to the CSM workspace. 3. Navigate to ListCases. 4. Create a new case. Observe that the Priority field starts seeing already pre-configured highlighted value badges. For example, the green colored background pis associated with the the priority value '4' - Low'. 5. Change the Priority from '4 - Low' to '1 - Critical'. Observe that the highlighted value badge changes accordingly without needing to save the form, and whether the background color changes or not. {#zurich-patch-13__ol_i3d_45w_skc} Expected behavior: The highlighted value background color should change per the highlighted value badge automatically. For example, the critical priority will highlight the background with critical color. Actual behavior: Only the badge changes with priority change. The background color is removed altogether and is not updated based on the badge change. Scenario 2: 1. Log in to an instance. 2. Navigate to CSM workspace. 3. Navigate to ListCases. 4. Create a new case. Observe that the HTML, Translated HTML and HTML Script fields should display highlighted value badge if they are supported, and the background colors of the fields. {#zurich-patch-13__ol_j3d_45w_skc} Expected behavior: The background for all the above fields should be gray as they have been set to read-only. Actual behavior: TheHTML and Translated HTML fields appear with the grey background, however when the user interacts or double click on the field, background always changes from grey to that of corresponding highlighted value background. The HTML Script field constantly displays the highlighted value background in the read-only state. |
| Client Scripts PRB2078551 | The base instance Delete UI action should be supported | The GlideModal logic for the Delete UI action needs to be converted into a widget and use g_modal.showWidget instead. |   |
| Client Scripts PRB2082276 | Analyze Access UI Action needs migration to work in UI26 | When the user selects Analyze Access, it redirects to '/​sn_​access_​analysis_​request.​do.​.​.​' because the Ajax request is broken. It should redirect to '/now/access-manager/...'. | 1. Navigate to '/aiux/ui/incident_list.do'. 2. Select an incident. 3. Select and hold (or right-click) on the form header. 4. Select Analyze Access. {#zurich-patch-13__ol_qld_45w_skc} Expected behavior: It redirects to '/now/access-manager/...'. Actual behavior: It redirects to '/​sn_​access_​analysis_​request.​do.​.​.​' because the Ajax request is broken. |
| Client Scripts PRB2083604 | For g_modal.showFrame, a mechanism is needed to prevent iframe modal autoclose and a way to programmatically close | The EMPTY_BODY auto-close mode closes the iframe modal on any intermediate navigation with non-empty content, not just when reaching the final empty page (blank.do). This breaks multi-step workflows where users navigate through preview or intermediate pages. | 1. Open an iframe modal with autoCloseOn: FrameModalCloseOn.EMPTY_BODY. 2. Navigate the iframe to a page with content (for example, the preview page). {#zurich-patch-13__ol_wld_45w_skc} Observe that the modal closes immediately as 'Cancelled'. The modal should remain open and wait for further navigation. Also, selecting Create Excel Template within the iframe modal does nothing. |
| Client Scripts PRB2084052 | The list v2 scripting environment doesn't have access to form globals and angular globals (NowAPI) | The existing client script APIs (for example, g_modal and g_ui_scripts) were only included in js_include_ui16_form. They need to be extracted into a dedicated js_include and included within the list page. | Access NowAPI on the list action page. Observe that NowAPI is undefined. |
| Client Scripts PRB2084579 | Backend changes to the graphql schema to fetch additional data | This is a product update. |   |
| Client Scripts PRB2084581 | Client side changes to handle runtime behavior | This is a product update. |   |
| Client Scripts PRB2084584 | Port g_list.refreshWithOrderBy | This is a product update. |   |
| Client Scripts PRB2084585 | Port g_list.refreshWithOrderBy | This is a product update. |   |
| Cloud Provisioning and Governance PRB1932710 | 'Operational status' and 'Install status' aren't in sync | In the CPG modules, the inactivation of the business rule 'Sync Ops Status for CMDB CI' has caused the install_status to remain unsynchronized when operational_status is updated. |   |
| CMDB CI Class Manager PRB2072350 | Create additional fields and view for Dynamice IRE comparison enhancements | Currently the list and form view for the cmdb_​ire_​output_​comparison_​item table is too noisy and hides the important details. Additional columns should surface the important information in a meaningful manner that can be digested by the user. |   |
| CMDB Identification and Reconciliation PRB2077883 | DynamicIRE cache build time is incorrectly reported in stats | The total time is tracked as build time, even when a cache miss occurs and the cache is flushed and rebuilt. | 1. Make sure the cache is warm. 2. Request the model from cmdb_ci_hardware. 3. Request something from the cache that doesn't exist, like the model for the cmdb_ci class. Observe that a cache miss occurs. 4. Wait a few minutes, then flush the cache. 5. Request something else from the cache. Observe that the cache is rebuilt after being flushed. {#zurich-patch-13__ol_bmd_45w_skc} Expected behavior: The cache build time is accurately reported. Actual behavior: The total time between steps three and five is tracked as build time. |
| CMDB Identification and Reconciliation PRB2080716 | A fix script is needed to turn on dynamic IRE for no-customizations users | Dynamic IRE should be enabled as long as there are no customizations to cmdb_identifier, cmdb_identifier_entry, or ie_active_config. |   |
| CMDB Identification and Reconciliation PRB2080719 | Class Manager's UI should be updated for a default-on dynamic IRE state | The existing UI flows should be preserved, but there's a new default-on state. Buttons, labels, and text need to align for the default-on state. When there are results and dynamic IRE is on, difference sampling shouldn't show the dashboard or have another action to load the dashboard. |   |
| CMDB Workspace PRB2085730 | When Dynamic Identification and Reconciliation Engine (IRE) is turned on, there should be a banner added to the 'Products Highlight' section on the CMDB Workspace home page |   | 1. Turn on Dynamic IRE. 2. Navigate to the CMDB workspace home page. {#zurich-patch-13__ol_imd_45w_skc} There should be a banner in the 'Product Highlights' section with a View details button that links to the Dynamic IRE home page. |
| Column Level Encryption PRB2006384 | Attachments from the sn_si_incident table are created with a different hash | There appears to be some sort of unique hashing algorithm applied only to the sn_si_incident table. Due to this hashing algorithm, attachments are being duplicated in the remote process sync feature. | 1. Attach an attachment to any table other than \[sn_si_incident\]. 2. Attach an attachment to the \[sn_si_incident\]. {#zurich-patch-13__ol_mmd_45w_skc} Notice that when comparing the two hashes, two unique hashes are generated for the same file. |
| Communities PRB2003810 | Views in Event Content are displaying as '2,147,483,648' | When the event is created through the platform, the events view count is showing high number in the community portal. | 1. Attempt to create an event from the platform (sn_communities_event table). 2. Open the same event from the communities portal. 3. Go back and open the same event again. {#zurich-patch-13__ol_qmd_45w_skc} Notice that the views are showing as 2,147,483,648. |
| Configuration Management Database (CMDB) PRB1949356 [KB2616435](https://hi.service-now.com/kb_view.do?sysparm_article=KB2616435) | The exact count match check results in an incorrect duplicate task creation | After upgrading to Zurich, de-duplication (dedupe) tasks are created incorrectly under certain scenarios. As a result, a large number of records are created in the duplicate_audit_result table, causing significant database growth. Instead of updating existing entries, new records are inserted during each subsequent run. In one scenario, the de-duplication tasks are created when they were previously working. In another scenario, users with many hosts that contain cmdb_serial_number records with the same serial_number and serial_number_type notice that the number of duplicate_audit_result can grow to be tens of millions daily. | Refer to the listed KB article for details. |
| Configuration Management Database (CMDB) PRB2040049 | Life​Cycle​Util.​_​validate​Combination aborts non-English lifecycle stage/status save from the Service Operations Workspace (SOW) standard record page | After upgrading to Zurich, saving a Life Cycle Stage + Stage Status combination from the SOW standard record page fails in non-English sessions (for example, French, German), even for a valid combination. The same save succeeds in an English session, and from the UI16 form and the CMDB Workspace CI record page. For example, on a cmdb_ci_server, when users set a valid stage/status pair in a French session via the SOW standard record page, the save is silently aborted by the 'Validate lifecycle combination' business rule. An undefined guard misses empty GlideElement. | 1. On a Zurich instance, navigate to Service Operations WorkspaceListCMDBServerOpen a server record. 2. Change session language to French (or any language already installed). 3. Try to set Life Cycle Stage and Life Cycle Stage Status fields. 4. Save. {#zurich-patch-13__ol_vmd_45w_skc} Observe the business rule error despite choosing valid fields in non-English language. |
| Configuration Management Database (CMDB) PRB2086797 | Auto-resolve de-duplication tasks using AI | This is a product update. |   |
| Configuration Management Database (CMDB) PRB2086798 | Task creation, batch processing framework, staleness agent ledger-based task orchestration, and lifecycle automation | This is a product update. |   |
| Configuration Management Database (CMDB) PRB2086799 | Retirement definition and staleness configurations | This is a product update. |   |
| Customer Service Core PRB2037285 | There's slowness on every page/action for the account executive persona in a perf instance | When trying to perform any action in a perf environment with the account executive persona, the user observes slowness from one to two minutes. |   |
| Customer Service Management PRB2062954 | Creating knowledge from a case doesn't populate the kb_issue field | The kb_issue field is mapped in the Advanced Field Mapping of the CSM Table Map 'Case KCS Article'. It is expected to populate the first comment from the case. | 1. Set the system property sn_customerservice. enable_knowledge_kcs to 'true'. 2. Open a case that contains one or more comments. 3. Select Create Knowledge. {#zurich-patch-13__ol_cnd_45w_skc} Expected behavior: The kb_issue field of the newly created Knowledge article is populated with the first comment from the case.Actual behavior: The kb_issue field of the newly created Knowledge article is left blank. |
| Database Persistence - Data Access PRB2051225 [KB3141251](https://hi.service-now.com/kb_view.do?sysparm_article=KB3141251) | GlideAggregate and Platform Analytics pivot fails with 'must appear in the GROUP BY clause' when grouping or sorting by a translatable field in a non-English language | The pivot shows 'No data available.'/'Aucune donnee disponible.' instead of the data. The node log shows com.glide.db. GlideSQLException with the PostgreSQL error, 'ERROR: column 'sc_cat_item3.name' must appear in the GROUP BY clause or be used in an aggregate function.'. | Refer to the listed KB article for details. |
| Database Persistence - Data Scale PRB1999432 | The message 'Swarm64CapabilityCheck capability is not supported on Glide' shouldn't be logged and should be removed/stopped | It shouldn't be logged as an error. It should be logged as info, which is normal and valid. It's not an error. It's a note recorded during startup and completely expected when connecting to a non-RaptorDB database. However, if this is Oracle DB, the message is unnecessary. This message should not be logged at all. |   |
| Database Persistence - Graph PRB2051763 | The C2R error occurs for all the Workflow Data Fabric (WDF) queries |   |   |
| Database Persistence - Graph PRB2052676 | Cache flushes are triggered, even when the cache is not used/populated | The number of cache flush messages for the table 'cmdb_rel_ci' is in the 80 million+ range every hour. In a way, it's making 80 million inserts into the sys_cache_flush table. 'cmdb_rel_ci' is paired with 'graph_cmdb_rel_type_cache'. The cache graph_cmdb_rel_type_cache isn't enabled, but the cache pairing is still in a static block and is active. |   |
| Database Persistence PRB1962784 | Property glide.​db.​alter_​large_​table_​threshold can't be set large enough | When creating a table with greater than 2,147,483,647 rows, if glide.​db.​alter_​large_​table_​threshold is set to 4B, it will not upgrade. The following error occurs on the upgrade: '2025-11-08 12:48:19 (829) worker.1 worker.1 txid=730511129301 DictionaryXMLParser \*\*\* WARNING \*\*\* Skipping table: cmdb_rel_ci (too large to alter)'. |   |
| Database Persistence PRB2052093 | There's a three-way deadlock between Preferences, TableDescriptor, and TableRotationExtension, which causes node restarts in production | Preferences.get() holds the Preferences.class monitor across a database query and table descriptor lookup, while the AMB cluster synchronizer thread holds a TableRotationExtension instance monitor across a field normalization engine call. The two lock-acquisition orders are inverted, producing a classic AB-BA deadlock that starves any thread attempting to call Preferences.get() until one of the two owners is killed by the deadlock sweeper. |   |
| Data Management Console PRB1996837 | The Data Management Console does not account for partitions while calculating table size when a table is partitioned | When sys_attachment_doc is partitioned, the Data Management Console for attachments reports only the size of the parent table, not the sum of all partitions. This causes the displayed table size to appear significantly smaller than the actual disk usage. | 1. Open a MariaDB Instance. 2. Migrate it to Raptor with partitionining the sys_attachment_doc table. 3. After the migration check the attachment table on the instance. {#zurich-patch-13__ol_ind_45w_skc} Notice that the report for attachments only reports the size of the parent table, and not the entire sum of all partitions. |
| Data Management Console PRB2070406 | Use the 'Audit' column in sys_dictionary, which already exists, to skip sys_audit peripheral stats computation | Stats gatherer times out after six hours. For certain instances, the time spent on sys_audit stats is around four and a half hours. This can be significantly reduced by skipping tables for which sys_audit is turned off. | Trigger 'Stats gatherer' in any Zurich instance. Observe that sys_audit stats is called for every table. |
| Data Snapshots PRB1973364 | The pa_power_user role cannot enable data snapshots from the 'Indicator' form even though it is possible to from the Indicators Library, which is inconsistent behavior | The 'Enable' option should appear consistently and enforce the rule that it only works when an existing source is available. | 1. Log in as a user with the pa_power_user role. 2. Open the Indicators Library. 3. Select an indicator eligible for data snapshots. 4. Observe that the 'Enable' option is available. 5. Open the same indicator in the Indicator Form. {#zurich-patch-13__ol_nnd_45w_skc} Observe that the 'Enable' option is missing. |
| Dependency Views PRB1882781 | The relationship between nodes always shows up as 'Depends on::Used by' even though the relationship in cmdb_rel_ci is different for a dependency view | The relationship between nodes is not defined as it is in cmdb_rel_ci. | 1. Open the ngbsm_script table. 2. Create a record with the script. 3. Navigate to Dependency ViewsView Map. 4. Search for 'Blackberry'. 5. On the filter panel, select the entry created in step 1 from the 'Dependency Type' drop-down list. {#zurich-patch-13__ol_snd_45w_skc} Notice the loaded map, and that all the relationships show as 'Depends on::Used by' instead of the actual relationship between the nodes as defined in cmdb_rel_ci. |
| Developer Sandboxes PRB2054240 | The scheduler claim mutex (sys_mutex) isn't sandbox-aware and forces DSB nodes to contend for a cluster-wide lock, causing scheduled-job pickup delay |   | 1. On a multi-node instance (50+ nodes), turn on Developer Sandboxes. 2. Create at least 20-30 sandboxes. 3. Multiple isolated sys_triggers should exist in the sandboxes. 4. Pull stats.do?include=otel.scheduler\* on the sandbox's node. Observe that claim_lock_time averages above one second (expected \~13ms), jobs_lateness averaging 300+ seconds, and worker capacity used is very low. 5. Compare against a controller node on the same instance. {#zurich-patch-13__ol_grs_bs2_vkc} Observe that claim_lock_time is still elevated but jobs_lateness stays within a few seconds, because base nodes don't pin an entire platform triggers on one node. |
| DirectSQL PRB2077815 | Implicit joins should never be added for virtual fields | Virtual fields (such as dbfunctions) don't exist on the database and therefore never need implicit joins to a partition. The current code sends all column references through the addNeededJoinsForColumn path and incorectly adds a self join. This can happen when the dbfunction is on a child TPH or TPP table because the ED looks like it's on a different storage table than the base table. |   |
| Document Management Services PRB2033668 | The 'Document Display' component displays different message button tooltips | The Now Assist button also displays the 'Download' tooltip. The Download button displays the 'Zoom in' tooltip. The Zoom In button has no tooltip. |   |
| Document Management Services PRB2039067 | Smart redaction with redaction codes and notes for documents | This is a product update. |   |
| Document Management Services PRB2056919 | SmartDocs enablement in UI16 and ServicePortals | This is a product update. |   |
| Document Viewer PRB2038307 | The smart document skill doesn't invoke the agent and doesn't render anything on Now Assist Panel (NAP) | The 'Ask Now Assist' smart document button doesn't work as expected. When the user selects the button, it opens the NAP, but it just shows the topics and doesn't load the summarization of the document. | 1. Navigate to Contract WorkspaceDefault ListListContract RequestsAll. 2. Open any contract request. 3. Select the Contract Documents tab. 4. Select Preview Document. 5. Select a document to preview, which opens it in a new tab. 6. Select the Ask Now Assist button, which opens the NAP. {#zurich-patch-13__ol_znd_45w_skc} Observe that the NAP loads for some time and then shows topics. Selecting the button again just loads the topics. |
| Document Viewer PRB2056915 | Support in document viewer for the doc to voice agent | This is a product update. |   |
| Dynamic Schema PRB2054198 | Users are unable to use OrderBy dynamic attributes |   | 1. On a Zurich+Oracle instance, attempt to issue a query that's ordered by a numerical dynamic attribute. 2. Verify if it's ordered properly: 1. Ordering should happen (the OrderBy isn't ignored) 2. Ordering should happen numerically, not alphabetically. {#zurich-patch-13__ol_h4d_45w_skc} {#zurich-patch-13__ol_g4d_45w_skc} |
| Edge Encryption PRB1998926 | The Edge command-line installation doesn't work on Java 21 |   | 1. Ensure that Java 21 is running. 2. Download the command-line install artifact. 3. Run the command line install artifact to install Edge proxy. {#zurich-patch-13__ol_u4d_45w_skc} Expected behavior: Edge proxy installs successfully. Actual behavior: An error occurs indicating that Java 17 is required. |
| Edge Encryption PRB2051049 | The edge decryption job doesn't decrypt audit records when an FE encryption configuration is active | During edge-to-cle migration, the user needs to run an edge decryption job while the CLE EFC is active. However, because it does not currently audit CLE fields, the check to see if the column is audited returns false. If the user has edge encrypted audit data, the migration (decryption) job will not migrate the audit data. | 1. Inactivate the edge configuration. 2. Configure the field with an active EFC so that it will be field encrypted. 3. Schedule the edge decryption job, ensuring that historical data will be processed. 4. Run the job. {#zurich-patch-13__ol_z4d_45w_skc} Expected behavior: The execution records (sys_encryption_job_execution) are created for the audit table's new/old value fields. Actual behavior: No execution records are created for audit table fields. |
| Email Notifications PRB1965886 | The NACM Sparkle icon is not available in the email composer for the ERR skill | The Sparkle icon should be available when selecting the email composer body area. | 1. Install the latest email-client app and latest UXC generative AI app. 2. Enable the ERR skill for ITSM. 3. In Service Operations Workspace, open the email composer for any incident record. 4. Select the composer body. {#zurich-patch-13__ol_epd_45w_skc} Observe that NACM sparkle icon is not available for using ERR skill. |
| Email Notifications PRB2083210 | Pass the reply ID and response type in a payload when performing pre-send validation |   | 1. Select Reply in an activity stream in a configurable send-enabled instance. 2. Try to send. {#zurich-patch-13__ol_kpd_45w_skc} Before sending, the validation must catch the reply ID and response type so that further custom logic can be written to the reply ID. |
| Embedded Help PRB2056339 | Replace all occurrences of 'Now Assist' text with 'AI' across the Help Center and embedded help |   | 1. Open Help Center or embedded help. 2. Open a document that was created using AI-generated help. {#zurich-patch-13__ol_urs_bs2_vkc} Observe that 'Now Assist' text is displayed for AI-generated help articles. |
| Embedded Help PRB2057373 | Instance Observers have some http connections that breach Cryptography Standard | Cryptography Standard (POL0020873), section 2.4 Data in Transit Encryption, requires TLS for all connections. SysEng: Core is decommissioning CDN HTTP endpoints to support modern ServiceNow technologies. However, Instance Observers currently depend on HTTP for some connections and can't migrate until this dependency is removed. |   |
| Employee Taxonomy Framework PRB2073966 | Implement extension point for IKBViewAs in glide-taxnomy | This is a product update. |   |
| Encryption PRB1982641 [KB2977274](https://hi.service-now.com/kb_view.do?sysparm_article=KB2977274) | Scan checks are missing null checks, causing the instance scan to fail | After running the 'Insecure GlideRecord Calls', if the getFunctionCallParamters() function brings back an empty object, the instance scan fails. | Refer to the listed KB article for details. |
| Experimentation Platform PRB2088196 | True-up of the Experimentation Framework store app from 1.1.14 to 1.1.20 | This is a product update. |   |
| External Content Connectors Glide PRB2088042 | Scriptable API SearchExternalContentQueryApi doesn't work | The scriptable API that lets a non-maintenance user with the high-security-admin role verify the permissions of a given URL or item ID doesn't work. For such a user, the API is expected to return all metadata for the item except the text field (the actual indexed content), including the security fields ext_groups_read, ext_users_read, ext_content_all_access, and ext_content_none_access along with other fields - but this does not work. | 1. Sign in as a non-maintenance user with the high-security-admin role (for example, ais_high_security_admin). 2. Call the Index Inspector scriptable API for a given URL/item ID. 3. Inspect the returned metadata, including ext_groups_read, ext_users_read, ext_content_all_access, and ext_content_none_access. {#zurich-patch-13__ol_opd_45w_skc} Expected behavior: All metadata except the text field is returned, including the security fields. Actual behavior: It doesn't work. |
| Field Service Task Bundling PRB2079508 | Changing the assignee of the child work order task (WOT) of a bundle task makes the bundle task disappear from Dispatcher Workspace |   | 1. Impersonate as a dispatcher. 2. Create a work order from Customer Service Management workspace. 3. Create two work order tasks in the work order record. 4. Select Ready for dispatch for both WOTs. 5. Open Dispatcher Workspace. 6. Select the two WOTs and select bundle. 7. Drag and drop the bundle task to some assignee. {#zurich-patch-13__ol_upd_45w_skc} Changing the assignee of the child work order task (WOT) of a bundle task makes the bundle task disappear from Dispatcher Workspace. |
| Field Service Task Bundling PRB2080761 | Dynamic bundling creates unassigned bundles | Set assignment_group on bundles created through dynamic bundling. When a task is added to an existing bundle, the bundle's assignment group is now carried into the task update payload, and when a new bundle is created the assignment group of the selected agent (resolved via the new _getGroupIDForAgent helper) is written to both the new bundle and the task update payload. For the territory model, FSMTaskBundleSNC._getTasks now rolls up the assignment group from a subtask when the bundle itself has none, so territory-based bundles are no longer left without an assignment group. |   |
| Flow Engine PRB1937004 | A script step reference input gives a string (sys_id) instead of GRProxyStatic | A compilation should have the action's script input as a reference, but the action's script step input is resolved to a string on recompilation. |   |
| Flow Engine PRB1943894 | Looping over records using 'built in iterator' is significantly slower than the normal GlideRecord iteration | Flow engine should take a similar amount of time to iterate over records and script or Java when no quiescing occurs, but run times are 16.8x - 73.6x slower. |   |
| Flow Engine PRB2059346 | Flow context gets completed, but the event isn't relayed to playbook engine, so the activity context doesn't get completed |   | 1. Create a playbook with one normal activity (say instruction). 2. Add one optional activity (instruction). 3. In runtime, add six instances of the optional activity. 4. Start marking the optional activity complete, from the last in the list to the top. {#zurich-patch-13__ol_ess_bs2_vkc} Observe that the corresponding activity context is in progress, but the flow context gets completed. |
| Flow Engine PRB2062691 | Action Fabric flow complexity is insufficient for pricing estimation exercises | The complexity_bucket attribute contains values grouped into bucket_0_10, bucket_11_50, and likely no other buckets. | 1. Perform MCP requests on an instance with Action Fabric telemetry. 2. View the Action Fabric telemetry via Clickhouse or logged data. {#zurich-patch-13__ol_pss_bs2_vkc} Expected behavior: The exact complexity of the MCP flows are recorded. Actual behavior: The complexity_bucket attribute contains values grouped into bucket_0_10, bucket_11_50, and likely no other buckets. |
| Flow Engine PRB2069407 | Refer to the commons-glide servicetype instead of engine code | Currently, it's passing mcp-server as the service type for mcp, but it should use InboundServiceType to keep consistent. |   |
| Flow Engine PRB2073167 | Add new metric for flow runtime complexity called from non-mcp | The system currently tracks metrics for flow runtime complexity. There is a need to add a new metric specifically for flows called from non-mcp. | 1. Trigger a flow execution via a non-MCP channel (Browser/UI, Integration channel, Mobile, or any execution path that is not MCP). Observe that flow runtime complexity metrics are not being recorded with the granularity/buckets defined for non-MCP execution. 2. Compare against expected bucket definitions: Bucket 1 (1-2) through Bucket 24 (1000+). {#zurich-patch-13__ol_cqd_45w_skc} Expected behavior: For all non-MCP execution paths (Browser/UI, Integration channels, Mobile, and any non-MCP path), flow runtime complexity metrics are recorded using the new, more granular bucket set, without affecting existing metrics. Actual behavior: No dedicated metric/bucket set exists for non-MCP execution paths. |
| Flow Engine PRB2079986 | Add 'custom/non-custom' for the non-mcp flow metric |   |   |
| Flows (Family Channel) PRB2019712 | The 'See Related Flows' action in 'subflow' displays flows with no current reference to a subflow when stale sys_hub_sub_flow_instance records exist from old snapshots | The 'See Related Flows' action in 'subflow' displays that the subflow is referenced by other flows even though it is not. | 1. Open an exiting subflow that is referenced by another subflow/flow(parent). 2. Create a copy of this subflow. 3. Activate it. 4. Edit the parent flow by adding a step calling the copied subflow. 5. Save/activate the flow. 6. Edit the parent flow again, and remove the step that calls the copied subflow. 7. Save the flow. 8. Open the copied subflow and from the 'Actions'. 9. Choose See related flows. {#zurich-patch-13__ol_jqd_45w_skc} Notice that the flow is still shown referencing the parent flow. |
| Flows PRB2086973 | The base instance version of Flow Designer uses the wrong property check for flow recommendations | The issue occurs in Zurich. | 1. Open a Zurich base instance with Flow Designer. 2. Turn on flow recommendations. 3. Navigate to a flow. 4. Enter edit mode. {#zurich-patch-13__ol_rqd_45w_skc} Notice that the recommendations don't show up. |
| GlideAggregate API PRB2090884 | For non-admin callers, a regression results in the Aggregate/Stats API field validation conflating 'field doesn't exist' with 'field exists but read-ACL denies it' | When a non-admin caller queries the Aggregate/Stats API (/api/now/stats/{table}) using sysparm_min_fields, sysparm_max_fields, sysparm_avg_fields, or sysparm_sum_fields, the API incorrectly rejects fields the caller is not allowed to read as if those fields did not exist. Any non-admin identity that has a field-level ACL restriction on one of the fields it requests receives a hard failure instead of the expected ACL behavior. This is a regression related to PRB2081870, which addressed reflected XSS issues. | 1. Pick any table ('T') with a field ('F') that has a field-level read ACL restricting a non-admin role. 2. As the non-admin identity, get /api/now/table/T?sysparm_fields=F,sys_id\&sysparm_limit=1 and confirm F is absent or blanked in the response. 3. As the same non-admin identity, call: GET /api/now/stats/T?sysparm_max_fields=F. {#zurich-patch-13__ol_vqd_45w_skc} Expected behavior: Either a normal aggregate result with F omitted/blank, or a proper ACL-style denial. Actual behavior: HTTP 400, 'Invalid sysparm_max_fields parameter' - reported identically to what a user would see for a field name that doesn't exist on T at all. |
| Global Ranking PRB2035527 | Users aren't able to delete a scrum task from cross-scope |   | 1. Navigate to Collaborative Work Management (CWM) Workspace. 2. Open any board. 3. Turn on the 'Story \& Scrum' task. 4. Add story \& scrum tasks records to the board. 5. Try to delete the scrum task. Observe that the shadow task is deleted but the actual scrum task isn't deleted. 6. Refresh the board. Observe that the deleted scrum task reappears. {#zurich-patch-13__ol_drd_45w_skc} |
| GraphQL API PRB1971802 | GraphQL has unhandled exceptions for unsupported tables, causing issues for introspection queries | When GlideRecord attempts to init an MIFVTable on an instance where no profile is defined, or the profile type is not supported, an exception is thrown and ends up breaking introspective GraphQL queries. When the tables are collected for an introspection query, it can catch exceptions thrown for an individual table, log the exception, and avoid breaking the entire query. |   |
| Hermes (Family) PRB1960695 | Don't run an external port test if hermes sys_service doesn't exist |   |   |
| Horizon Component Library PRB2075454 | Voice evaluation's Otto 'mic' icon is missing on the homepage in the latest skill kit |   | 1. On an instance running the Otto skill kit, navigate to the 'Agentic Evaluations' homepage. 2. Select the Select what you want to evaluatemodal. {#zurich-patch-13__ol_ord_45w_skc} Observe that the chat agent or workflow icon renders correctly. The voice agent or assistant (mic) icon doesn't render. |
| Horizon iFrame Component PRB2074065 | Users get an error when trying to access the iFrame related configurations | Users get the following error: 'Uncaught TypeError: Cannot read properties of null (reading 'parent') at Object.\<anonymous\> (now-iframe.js:48:16) iframeWindow. parent. addEventListener ('message', function (e) { const {data, origin} = e;'. |   |
| Horizontal Portal Capabilities for Customer Service PRB2075799 | Create definitions for cases created by external users in Portals and Engagement Messenger |   |   |
| Horizontal Portal Capabilities for Customer Service PRB2076022 | 'Customer history' keeps loading on a front-line case page |   | 1. Create a user with the frontline agent role, CSM manager role, and workspace user role. 2. Navigate to CRM workspace. 3. Create a case. 4. Navigate to 'Customer history' on the contextual side panel. {#zurich-patch-13__ol_trd_45w_skc} Expected behavior: 'Customer history' should load. Actual behavior: The 'Customer history' tab keeps loading. |
| HR Service Delivery PRB1998455 | Choices of multi-row variable sets (MRVS) aren't translated in the rich description of an HR case created from a record producer | Stored values appear in English. |   |
| HR Service Delivery PRB2057715 | ZTSD dare RCAs |   |   |
| HR Service Delivery PRB2059123 | RCAs in the 'Requested' state for HR case assistant and HR Case Creation agent |   | 1. Open an instance. 2. Ensure that there's no RCA for source as 'Tool: Add comment to HR case'. 3. Call the Unified Orchestrator. 4. Ask the voice agent to look up an HR case. Notice that the agent asks for soft pin. After providing soft pin, the agent confirms that user is authenticated. 5. Provide the number for HR case opened. {#zurich-patch-13__ol_zrd_45w_skc} Notice that when asked to add comments to case, there is an RCA, and another RCA is generated in the 'Requested' state the when user asks for case creation. |
| HR Service Delivery PRB2063926 | Semantic index changes for HR Service and HR Case for predicting the HR Service |   |   |
| HTTP Client PRB2031497 [KB3137790](https://hi.service-now.com/kb_view.do?sysparm_article=KB3137790) | A rest step sees Norwegian characters in the XML response body from an external API with incorrect encoding | The Norwegian characters are displayed as '�'. | Refer to the listed KB article for details. |
| Identification and Reconciliation API PRB2004173 | A certification audit produces incorrect failed results for first and last records when a template has reference-based related list conditions | This only impacts audits with reference-based related list conditions (non-REL: join_column in cert_related_list_cond). Attribute conditions, CI/User/Group relationship conditions, and REL:-based related list conditions are unaffected as they use different code paths. |   |
| IDR - Scheduled Replication PRB1937502 | The scheduled replication 'Percent Complete' doesn't take updated records into account (%) | The percentage from the scheduled replication 'Percent Complete' is inaccurate. For example, it says '66.56%' for 'Percent Complete' despite the status being 'Completed'. | 1. Perform a scheduled replication test with inserts and updates. 2. Update a third of the records inserted. {#zurich-patch-13__ol_gsd_45w_skc} Expected behavior: Scheduled seeding replication requests show the percentage 100% when complete. Actual behavior: Only the actual number of records sent over seems to be reflected in the percentage. |
| Inbound API Integration Usage Framework PRB1988771 [KB3082116](https://hi.service-now.com/kb_view.do?sysparm_article=KB3082116) | IPAccessListFilter handling for malformed IP addresses | Inbound REST API calls coming through proxy servers (x-forwarded-for header with multiple IP's) or malformed IP address can sometimes fail in Zurich and Australia instances. | Refer to the listed KB article for details. |
| Inbound API Integration Usage Framework PRB2055912 | originatedFromFlow is always false in Integration​Usage​Transaction​Monitor,​ as flow-origin detection is broken for action fabric record-action metering | The originatedFromFlow dimension on action fabric record-action telemetry is never set to true. Integration​Usage​Transaction​Monitor decides flow origination once, at transaction start, by checking whether the transaction's usage-tracker context contains a UsageSource.FLOW event. That event doesn't exist yet at transaction start, is removed again before transaction completion, and for asynchronous/scheduled flows the monitor doesn't run at all (background transactions are not a handled type). As a result, record actions performed by flows are not attributed as flow-originated, degrading the accuracy of record-action metering. |   |
| Install Base Management Store PRB2059577 | Install base items and sold products should support RAC fallback mechanism | The functions _skipFetchEntities and getQRfallbackRoles should be overridden in CSMRelationshipServiceSNC in CSMRelationshipService _InstallBaseRelatedParty to allow this fallback mechanism. |   |
| Integration Hub PRB2086800 | True-up for Workflow Data Fabric credits | This is a product update. |   |
| Key Management Framework (KMF) for Platform Encryption PRB2058369 [KB3140571](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140571) | Midserver is unable to fetch credentials after upgrading to Zurich or Australia | In certain versions, there's a Unified Secrets Gateway (USG) service for credential management. During the upgrade to those versions, a system trigger script is designed to automatically execute and populate the sys_​secret_​identity_​group_​member table with the MID Server identity group mappings required for USG authentication. However, this trigger fails to complete successfully, leaving the table incompletely populated. As a result, the MID Server can't authenticate with USG and fails to retrieve credentials. | Refer to the listed KB article for details. |
| Knowledge Center PRB2089021 | Article Optimization's 'Auto-Fix' feature fails across multiple instances (update errors, revert broken, or page unavailable) | The Article Optimization 'Auto Fix' feature in Knowledge Center is broken across most instances. Auto-fix either fails with a critical error during an update, the revert doesn't work, or the Article Optimization page itself isn't available. | 1. Open the instance. 2. Navigate to the 'Article Optimization' list page. 3. Select the check/checkbox for the article to auto-fix. 4. Trigger the Auto-fix action. 5. Check the 'History' tab for the resulting revert-able batch entry. 6. Select the batch from 'History'. 7. Apply Revert. {#zurich-patch-13__ol_ksd_45w_skc} Expected behavior: The article should be checked out and a new article version should be published with the applied auto-fix changes. This should display in the 'History' tab for revert purposes. Selecting the batch from 'History' and applyingRevert should return the article to its previous state, and it should become visible again for auto-fix. Actual behavior: An error displays: 'Update failed. Failed to update articles. Please try again or review the errors under 'History.'' (Alert level: Critical)'. |
| Knowledge Graph (Family) PRB2063201 | Add support for dynamic table lists in the KG Affinity API for affinity data loading |   |   |
| Knowledge Management PRB1997589 [KB2970962](https://hi.service-now.com/kb_view.do?sysparm_article=KB2970962) | A published article displays a grey HTML body when ECE and the 'Minor edit' property are turned on |   | Refer to the listed KB article for details. |
| Knowledge Management PRB2000452 | The Edit button isn't visible in any of the previous versions of the articles in workspaces | After upgrading Zurich, the Edit button doesn't appear when users open an outdated Knowledge article in the kb_view page of any workspace. The article is displayed in read‑only mode and authors, KB owners, or admins cannot switch to the full record view to make changes. This prevents necessary updates to legacy articles. |   |
| Knowledge Management PRB2058947 | Update versions for the base instance Knowledge Management apps to include Australia and Zurich fixes |   |   |
| Knowledge Management PRB2060905 | Updating versions for the base instance Knowledge Management apps to include Australia and Zurich fixes | There are fixes in app-knowledge-center, app-knowledge-gen-ai, app-kb-uib, and sn-enhanced-content-editor. |   |
| Knowledge Management PRB2076447 | The Auto-fix plugin update blocks the Australia Patch 5m upgrade in loadsim release testing | The plugin upgrade thread handling becomes stuck in an error loop triggered by a null pointer. It never exits or advances, leaving the upgrade 'hung'. This happens when the upgrade plugin loader reaches the knowledge center update that adds in the auto-fix and auto-fix enable property. |   |
| Knowledge Management PRB2084586 | True-up Store apps NAKM, KC, KCInWorkspaces and ECE versions | This is a product update. |   |
| Knowledge Management PRB2084781 | For markdown, the knowledge blocks addition shouldn't be allowed on the kb_knowledge.do page |   | 1. Provision an instance with the plugin com.snc.knowledge_blocks installed. 2. Make sure the UI16 and workspace changes and the markdown changes are present. 3. Create a knowledge article kb_knowledge.do page with 'Knowledge' as Knowledge base 4. Check if the Add blocks UI action is visible. {#zurich-patch-13__ol_rsd_45w_skc} Observe that the UI action isn't visible for wiki articles. |
| Knowledge Management PRB2085202 | A page scroll bar isn't seen for long markdown articles, as in the case of HTML | The issue doesn't appear in Workspace. | 1. Log in to an instance. 2. Create a markdown type article. 3. Open the article. 4. Navigate to the related list. 5. Translate the article. This opens kb_create_translations.do. 6. Observe the page scroll. {#zurich-patch-13__ol_xsd_45w_skc} Expected behavior: The content on both side should be scrollable. Actual behavior: The content isn't scrollable. |
| Knowledge Management PRB2086922 | The 'KB Health score config' column is missing from the kb_knowledge_base table |   | 1. Provision an Australia or Zurich instance with the NAKM plugin installed. 2. Check the kb_knowledge_base table. {#zurich-patch-13__ol_dtd_45w_skc} Observe that it doesn't have the 'KB Health score config' column. |
| Knowledge Management PRB2090439 | Due to Generative AI Controller (GAIC) layer issue, multi-KB generation is broken and Mosaic migration should be reverted |   |   |
| Language and Translations PRB1945159 | When adding an affected CI from the related list in Service Operations Workspace and native UI incident forms, the configuration class search doesn't function correctly when using the Finnish language | The Configuration Class search does not work correctly when adding affected CIs from the related list in Service Operations Workspace and native UI Incident forms while using the Finnish language. It works as expected with English words, but not with Finnish words. | 1. Open an instance where the language is Finnish (Suomi) or any language other than English. 2. Navigate to Service Operation Workspace. 3. Open any available incident. 4. In the 'Related Records' tab, locate the 'Affected CI' section. 5. Select the Lisää" (Add) button. 6. In the Konfiguraation luokka (Configuration Class) field, search using '\*päätepiste'. {#zurich-patch-13__ol_htd_45w_skc} Expected behavior: Matching Configuration Classes related to päätepiste should be returned. Actual behavior: No results are returned, even though a Configuration Class related to päätepiste exists in the system. |
| Language and Translations PRB2083978 | Standard translation merge process |   |   |
| Lifecycle Events PRB2013721 | The Resume Case UI action doesn't work as expected for certain users | When a user with the admin role accesses an HR case but is restricted by a security policy, the Resume Case UI action does not restore the activity set to the 'Running' state. Instead, the activity remains in the awaiting_trigger state, preventing the case workflow from continuing. |   |
| List Administration PRB2024845 | The ListHighlighted ValueService cache key is missing highlightedValueConfigId, and causes cache collisions between requests with different configuration IDs | The highlighted values in the Workspace list render intermittently. It works right after cache.do then stop after a few minutes, because ListHighlightedValueService's cache key omits highlightedValueConfigId. There are multiple requests for the table, workspace, and fields but different (or null) configuration IDs collide on the shared static cache. As a result, whichever request populates the cache first determines the result for all subsequent requests until the entry expires. | 1. Create a sys_highlighted_value for table=incident, field=state, with a simple condition where the state is not empty, color=blue, and status=positive. 2. Create sys_ux_highlighted_value_config 'A' with M2M-linked to the highlighted value through sys_ux_m2m_highlighted_value_config. 3. Create sys_ux_highlighted_value_config 'B' with no M2M link to any highlighted value. 4. Navigate to cache.do to flush the caches. 5. Navigate to sys.scripts.do. 6. Run the script. {#zurich-patch-13__ol_ptd_45w_skc} Expected behavior: It should be 'CONFIG_B=0, CONFIG_A=1'. Actual behavior: Notice that it is 'CONFIG_B=0, CONFIG_A=0,' and A reuses B's cached empty result. |
| List Administration PRB2027491 | There's a null pointer exception in List​Layout.​ get​Grouped​Row​Layout​Query from a null integer auto-unbox on List​Layout​Builder.​ get​Record​Count​Limit()​ | Any workspace preset that calls getListLayout / getTinyListLayout with ignoreTotalRecordCount=true and a GROUPBY query, on a table not in the omit-count property, is facing this issue. |   |
| List Administration PRB2084609 | sysparm_filter_only parses a query but doesn't query data | This is a product update. |   |
| List Controller PRB1989084 | In Platform Analytics, a loading indicator appears in the MID-page of the scheduled export list after applying filters | In the Scheduled Export list, when applying any filter, the loading indicator is displayed in the middle of the web page rather than at the top. As a result, users must scroll down to notice that the page is loading, which can cause confusion. |   |
| List Controller PRB1990422 | A relative timestamp (time ago) in a workspace's 'List' view doesn't refresh unless the record itself is updated | In the Service Operations Workspace list view, the relative timestamp displayed under datetime fields, such as 'Updated' and 'Opened') does not refresh when the user selects the Refresh button, unless the underlying record has been updated. This results in a stale relative time value being continuously displayed, even though the actual absolute timestamp shown above it is correct. The issue was validated on a base instance, confirming that no customizations were involved. This behavior causes confusion for agents who rely on relative time indicators when monitoring active incident lists. | 1. Log in to a Zurich base instance with Service Operations Workspace enabled. 2. Navigate to Service Operations WorkspaceIncidentsOpen. 3. Identify any incident with visible Updated or Opened datetime fields. Observe the relative timestamp directly under the datetime (for example, '1m ago). 4. Wait several minutes without modifying the incident. 5. Select the Refresh button on the Workspace list view. Observe that the relative timestamp does not change, and it continues to show the original value (1m ago), even though more time has elapsed. 6. Update the same incident record in the background by adding a comment. 7. Return to the list. 8. Select Refresh again. {#zurich-patch-13__ol_ytd_45w_skc} Observe that the relative timestamp updates to the correct value (2m ago). |
| List Filters PRB2031646 | Mixed language text is displayed in the filter | When the session is in a language other than English, the pop-up invoked from the list filter controls displays text in English. | 1. Open a Zurich instance. 2. Install the I18N: Brazilian Portuguese Translations plugin. 3. Open the System Preferences. 4. Switch the language to Portuguese. 5. Open Service Operations Workspace. 6. Select the List icon. 7. Open any interaction. 8. Select the filter control x filtros. {#zurich-patch-13__ol_j5d_45w_skc} Observe that there is English text content, such as 'Generate filters', when it should be in Portuguese, such as 'gerar filtros'. |
| Live Connect (Server) PRB2038719 | Update all server side 'SQL API' references to 'Live Connect' |   |   |
| Live Connect (Server) PRB2062273 | Allow user accounts to access Live Connect | Only service accounts were allowed to use Live Connect. |   |
| MID Server PRB2040686 | Linux MID Server pre-checks don't check that the service user would be able to run start.sh, before committing to an upgrade that would leave the MID Server Down | Linux MID Servers can end up stopped during the upgrade process if start.sh is prevented from starting the service again with 'Interactive authentication required' or 'Access denied' errors. This would also cause a Restart MID command from the instance, either from the MID Server's form, or when a plugin activation/upgrade triggers a restart, to leave the MID Server down. This problem is for error handling in this situation. That scenario should be checked for on startup, and as part of the pre-upgrade checks before committing to the upgrade. Breadcrumbs should be left before a restart, so that the MID Server can know a failed start happened, maybe read the relevant logs automatically, and clearly give the next steps to the user. |   |
| MID Server PRB2063491 | 'LinkedHashMap$Entry' objects connected to the LRU take a couple MB | These objects are from 'ecc_​queue_​authorization_​policy'.​ | 1. Open a local instance. 2. Connect to the MID Server. 3. Create a heap dump. {#zurich-patch-13__ol_fts_bs2_vkc} Notice that entries of 'LinkedHashMap$Entry' for ecc_queue_authorization_policy have over 3MB for each entry. |
| MID Server PRB2078177 | RDP client fails to fetch FQDN with the error 'Unknown tag 4' | The agent logs FQDN lookup falls back to DNS with an error. The last four bytes are the error code STATUS_NOT_SUPPORTED (0xc00000bb). | 1. Configure the target windows server with the following settings: gpedit.mscComputer ConfigurationAdministrative TemplatesSystemCredentials DelegationEncryption Oracle Remediation - Enabled (Protection level - Forced Updated Client). 2. Run windows discovery with the following MID configuration: MID.powershell_api.wmi.fqdn_method = RDP. {#zurich-patch-13__ol_q5d_45w_skc} Observe that the agent logs FQDN lookup falls back to DNS with the error: 'DEBUG (Worker-​Expedited:​Multi​Probe-​e43cdafc3b6ecf 503886e28 e53e45aa0)​ \[RdpClient:186\] Received NTLM response 30, 0D, A0, 03, 02, 01, 06, A4, 06, 02, 04, C0, 00, 00, BB.' The last four bytes are the error code STATUS_NOT_SUPPORTED (0xc00000bb). |
| Mobile Platform PRB2021795 | The checklist string value ampersand is saved as '\&amp;' |   |   |
| Mobile Platform PRB2033117 | In Now Agent, the work order task questionnaire is truncated if the questionnaire is more than 100 characters |   | 1. Open the Now Agent App. 2. Impersonate a user whose preferred language isn't English and a has work order task (WOT) questionnaire assigned to them. 3. Select the My work option. 4. Select the WOT. 5. Take the questionnaire. 6. Scroll through the queries. {#zurich-patch-13__ol_y5d_45w_skc} Observe that queries above 100 characters are truncated. |
| Mobile Platform PRB2070684 | Check for SN-Client-Id in mobile request headers instead of always assuming that the user is on the lowest ordered native client | Mobile clients add SN-Client-Id to all request headers after the initial user_client response. The backend should use this as the source of truth to know which experience (native client) the user is actively on. | 1. Log in to the Mobile app. 2. Switch from the default experience to experience B. {#zurich-patch-13__ol_evd_45w_skc} The backend should send responses based off of the SN-Client-Id in request headers instead of assuming the user is on the lowest ordered native client they have access to. |
| Mobile Platform PRB2084601 | Add a logo configuration option to sys_sg_applet_launcher | This is a product update. |   |
| Mobile Platform PRB2084603 | EmployeeWorks Mobile updates | This is a product update. |   |
| Mobile Platform PRB2084604 | Auto-routing AIUX links to Mobile apps | This is a product update. |   |
| Multi-Instance Framework - Core PRB2063884 | MIF Hermes doesn't refresh the cluster configuration when the local hermes_cluster_config has no primary or after a datacenter-rule change, causing stale/failed cluster resolution for remote owners | When instance A sends a MIF async message to instance B, it needs B's Hermes cluster details (datacenter + Kafka bootstrap servers). A keeps a saved copy in the hermes_cluster_config table and reads it in Hermes​Producer​Client.​get​Cluster​Info​Set.​ Today that method only calls B's live endpoint (/api/now/hermes_cluster_info, tier-2) when A has no saved rows for B. Two gaps result: 1. Saved rows but no primary --- if A has rows for B where no one is is_primary_for_service=true (scenario like only a single non-primary cluster row), the method does not refresh. And method ensure​Topic​Location​For​Instance(String owningInstance) then finds primaryCluster == null and the send fails with 'No primary cluster found'. 2. Stale rows after a datacenter change --- if a MIMIR rule change moves B's cluster to a new DC, A's saved rows are outdated but still look complete (they have a primary), so tier-1 returns them and A never re-discovers → messages Navigate to the old cluster. | 1. Verify that Instance A has a saved Hermes cluster rows for instance B (service MIF-Hermes) pointing to B's old datacenter, or a single row that isn't marked primary. 2. Send a MIF async message from A to B. {#zurich-patch-13__ol_mts_bs2_vkc} Expected behavior: A resolves B's current cluster details and sends to the correct datacenter. Actual behavior: A uses the old/incomplete saved config and sends to the wrong datacenter, or fails with 'No primary cluster found'. |
| Multimodal Service (Family Channel) PRB2082821 | Result and metadata attachments are written with no owning record | MMS writes its parsed-text and metadata result artifacts to sys_attachment without a table_name or table_sys_id, so those attachments have no owning record. Reference-image attachments are unaffected --- they are correctly parented to sys_mm_reference_image. |   |
| Multimodal Service (Family Channel) PRB2084570 | Enabling the 'Image' file type to be on by default for MMS for AI Search | This is a product update. |   |
| Multimodal Service (Family Channel) PRB2084571 | MMS Glide update | This is a product update. |   |
| Next Experience All Menu PRB2074680 | The Now Assist 'Launch Mode' menu label in Display Preferences is not updated to Otto |   | 1. Navigate to 'Home'. 2. Select the user profile icon. 3. Open 'Preferences'. 4. Navigate to the 'Display' section. {#zurich-patch-13__ol_ivd_45w_skc} Observe the 'Now Assist Launch Mode' menu label. |
| Next Experience Unified Navigation PRB2079464 [KB3154841](https://hi.service-now.com/kb_view.do?sysparm_article=KB3154841) | Duplicate NextWave Client REST API definition causes a 403 error on session_info for external users, disabling lbf-chat-client | Some users are unable to start a chat session in the assistant/chat widget. This is caused by a backend configuration issue and doesn't require any action. | Refer to the listed KB article for details. |
| Next Experience Unified Navigation PRB2079773 | Set token_exchange_allowed to 'true' on an OffGlide AIEX oauth entity record | Notice that token_exchange_allowed is 'false' which needs to be 'true', otherwise oauth will fail for guest users. |   |
| Next Experience Unified Navigation PRB2081424 | Set bff_cookie_exchange_allowed to 'true' on OffGlide AIEX oauth entity records | bff_cookie_exchange_allowed is set as 'false', which need to be 'true', otherwise oauth will fail for the guest user. |   |
| Next Experience Unified Navigation PRB2085243 | Page context updates aren't sending the backend the current URL |   | 1. Open an instance. 2. Open AIEX. 3. Perform any workspace navigation that triggers a page context update to the backend. {#zurich-patch-13__ol_nvd_45w_skc} Expected behavior: The URL is sent in the page context payload. Actual behavior: The URL is not sent in the page context payload. |
| Now Assist in Virtual Agent PRB2056609 | Change the Knowledge Graph (KG) defaults in NAVA and Now Assist Portal | Today, the KG default is User NLQ graph. That should be changed so the defaults are: In Now Assist Virtual Agent for natural language query, change the graph to Enterprise Graph (Small) and select the tag as 'VIRTUAL AGENT DEFAULT TAG'. In Now Assist Panel for natural language query, change the graph to Enterprise Graph (Small) and select the tag as 'NOW ASSIST PANEL DEFAULT TAG'. |   |
| Now Assist Nextwave Experience PRB2059502 | Add sys_props for caching in sys_og_conversational _cache_configuration | If props are enabled on the instance, that should be reflected via cache service instantly. |   |
| Now Assist Nextwave Experience PRB2061245 | SessionController shouldn't try to refresh AuthorizationInfoBundle, as this is done in the Glide handshake process | When a topic execution is initiated, the conversation ID isn't available in certain Glide log entries' context maps, which complicates troubleshooting across different trace IDs instead of a unified conversation ID. The conversation ID should be available in the cache and topic execution context map in the syslog table. |   |
| Now User Experience PRB1960854 | JavaScriptCommentStripper doesn't work properly with the upgraded highchart bundle (12.3.0) | There's a runtime exception: 'org.​openqa.​selenium.​Javascript​Exception:​ Document was unloaded'. | Run IT test​Outage​Association​With​Case​IT .​check​Child​Case​Linked​To​Parent​Outage.​ Observe that it fails on master. |
| OAuth PRB2018183 | The not allowed system property glide.oauth. jwt.token_request .honor_claim_keys is included in an upgrade payload, resulting in a misleading 'skipped' upgrade log entry | During a Zurich upgrade, the system property glide.oauth. jwt.token_request .honor_claim_keys (from com.​snc.​platform.​security.​oauth)​ appears as a skipped entry. This property is not allowed by design and therefore never loaded into sys_properties on user instances. | 1. Navigate to AllUpgrade CenterUpgrade History. 2. Open the record of upgrading in Zurich. 3. Select the Skipped Changes to Review tab. 4. Select the skipped record for sys_properties_ 107762282 f223210 3698319 c003f9b2f.xml. {#zurich-patch-13__ol_rvd_45w_skc} |
| OneExtend PRB2056745 | Guardian preprocess flow resolves getGeoRoutingDetails() multiple times per request in NowLLMIntegration GuardianProvider | NowLLMIntegration GuardianProvider. shouldUseGatewayService() and addLLMGatewayRoutingHeader() each independently call through to GeoRoutingServiceImpl .getGeoRoutingDetails() \> resolveGeoRoutingDetails(). ShouldUseGatewayService() itself is invoked from multiple call sites across a single request's lifecycle (transformRequest, generateTrustBuilderInputs, tryLogTrustBuilderResults, and twice within getUrl()). None of these calls are memoized, so resolveGeoRoutingDetails() re-executes its full resolution logic (potentially including the licensing entitlement API call) on every invocation within the same request, even though the underlying geo-routing state can't change MID-request. | 1. Trigger a Guardian moderation request that routes through NowLLMIntegration GuardianProvider (LLM_GENERIC_SMALL_MODERATIONS model). 2. Trace/log calls into GeoRoutingServiceImpl .resolveGeoRoutingDetails() (or set a breakpoint) during a single request's transformRequest()/getUrl() lifecycle. {#zurich-patch-13__ol_tts_bs2_vkc} Observe that resolveGeoRoutingDetails() executes repeatedly (up to six times found via code trace) instead of once per request. When the 0$ SKU entitlement isn't active, each of these calls re-invokes the expensive isEntitlementActive WithLicensingAPI() licensing call, since resolveGeoRoutingDetails() has no per-request memoization. Only the underlying getGeoRoutings() /getGeoRoutingConfigs() cache calls are cached via ADomainAwareCache. |
| OneExtend PRB2073758 | AutoChat off-glide implementation changes | This is a product update. |   |
| Platform Analytics Component API PRB2060938 | An impersonated user sees the impersonator's bookmarked indicators, and the bookmark filter then returns no results | In an Indicator Scorecard, users can bookmark individual indicators (the star on each row) and then filter the list to 'show bookmarked only'. When an administrator impersonates another user, the scorecard incorrectly shows the admin's bookmarks as if they belonged to the impersonated user. If the bookmark filter is then applied it returns no results at all, and after turning the filter off again all bookmarks disappear from view. Impersonation is the normal way administrators and support staff verify what an end user can see. While this issue is present, that check gives the wrong answer for bookmarks, and the bookmark filter appears completely broken. Scope note: no user's bookmarks are visible to any other real user. The incorrect data is only ever shown to the administrator who is impersonating, and only within that one browser session. Logging out clears it. Verified: a different browser, or a private/incognito window, always shows the correct bookmarks. |   |
| Platform Analytics Component API PRB2085934 | AIDE Explore button is shown on all lists, including 'All Table Discovery' entities | The AIDE Explore button is shown on all entity lists, including entities that shouldn't have it. Only entities marked Active=true and population_source=Table Config should display the Explore button. Entities with population_source = 'All Table Discovery' (or inactive entities) shouldn't show the Explore button. | 1. Navigate to an entity list that is marked as 'All Table Discovery'. 2. Check whether the Explore button is present. {#zurich-patch-13__ol_awd_45w_skc} Expected behavior: Only entities with Active=true and population_source=Table Config show theExplore button. Actual behavior: TheExplore button is shown on 'All Table Discovery' entity lists. |
| Platform Analytics Dashboard API PRB1958926 | Changing the Platform Analytics dashboard owner also changes the 'Created by' username | The Created by field should remain the same even when the Platform Analytics dashboard owner changes. | 1. Navigate to Platform AnalyticsLibraryDashboards. 2. Create a dashboard. 3. Enter 'Edit' mode. 4. View the dashboard details. 5. Change the Owner field value. 6. Save the changes. 7. Exit 'Edit' mode. 8. Refresh the page. 9. View the dashboard details again and observe the Created by field. {#zurich-patch-13__ol_fwd_45w_skc} Expected behavior: TheCreated by field should remain unchanged. Actual behavior: TheCreated by field is the same as the owner. |
| Platform Analytics Dashboard API PRB2035747 [KB3120864](https://hi.service-now.com/kb_view.do?sysparm_article=KB3120864) | The Create New and Duplicate buttons in the Platform Analytics (PA) dashboard context menu are visible to users who don't have the pa_admin or pa_power_user role | The user requests the ability to hide the Create New and 'Duplicate' options from the PA dashboard context menu (⋮) for regular users without removing broader role access. | Refer to the listed KB article for details. |
| Platform Analytics Dashboard API PRB2037900 | A new dashboard widget is created for a sub-domain | In a user's instance, when the list-simple dashboard widgets migrated to list widget, the corresponding dashboard widgets were duplicated and new records were created in the user domain. This isn't the expected behavior, since nothing like this happens for par_visualization record. The list-simple to analytics list migration is a background flow that executes as a system user, so when trying to do a dashboard widget update via a background script, this reproduced the same issue. This indicates that the root cause is updating a dashboard widget record while in another domain. |   |
| Platform Analytics Dashboard API PRB2053337 [KB3152732](https://hi.service-now.com/kb_view.do?sysparm_article=KB3152732) | There's an increased response time of Core UI dashboards in Australia | The response times of Pa_Dashboard transactions degraded by 2000ms compared. This comes from an increase in SQL time. | Refer to the listed KB article for details. |
| Platform Analytics Dashboard API PRB2058867 [KB3152710](https://hi.service-now.com/kb_view.do?sysparm_article=KB3152710) | Reduce the call cost on calling isPaPremium for every dashboard get call | On instances with large dashboard counts (thousands of dashboards), this multiplies an expensive entitlement check across the full dataset, causing high memory usage, semaphore exhaustion, node failover, and an out of memory error. | Refer to the listed KB article for details. |
| Platform Analytics Dashboard API PRB2059204 | Non-admin users can't read a localized tab name on PAR dashboard in a scoped application | A non-admin or dashboard_admin user can't change the localized tab name on the scoped application's dashboard. | 1. Create a dashboard in the application scope. 2. Add tabs. 3. Share it with a non-admin user as an editor. 4. Impersonate to the user. 5. Change language except for English. 6. Change tab names. 7. Save the dashboard. 8. Reload. {#zurich-patch-13__ol_mwd_45w_skc} Expected behavior: The tab names have been changed. Actual behavior: The tab names were not changed. |
| Platform Analytics Dashboard API PRB2072270 | Widgets, Permissions, and Canvas are created in the incorrect scope when a shared non-admin user edits a dashboard originally created in an application scope and leads to deletion |   | 1. Open an instance from the latest Zurich patch as an admin. 2. Change the application scope to 'Knowledge Overview'. 3. Duplicate the dashboard 'Knowledge Management Overview'. 4. Validate that records created in all dashboard tables have the application scope set to 'Knowledge Overview'. 5. Share the duplicated dashboard to the knowledge_admin role with edit access. 6. Switch back to the global scope. 7. Create a user knowledge.admin with role knowledge_admin. 8. Impersonate as user knowledge.admin. 9. Open the duplicated dashboard in Edit mode. 10. Add a single score widget to any of the existing tabs at the bottom of the tab. 11. Save the dashboard. {#zurich-patch-13__ol_swd_45w_skc} Expected behavior: The new par_dashboard_widget entry should have the application scope as 'Knowledge Overview'. Actual behavior: The new par_dashboard_widget entry has the application scope as 'Global'. |
| Platform Analytics Filters PRB2031506 | The 'Follow' filter toggle option is missing in a cascading filter |   |   |
| Platform Analytics Migration API PRB1988855 | Static content block in core UI after migration has HTML tags in the Next Experience rich text visualization |   | 1. Create a Core UI dashboard. 2. Add a static content block. 3. Add some contents within them, such as an embedded URL. 4. Select the Migrate to Next Experience button to migrate the dashboard to Next Experience. {#zurich-patch-13__ol_dxd_45w_skc} Notice that in the migrated Next Experience dashboard, the rich text has HTML tags in them. |
| Platform Analytics Migration API PRB2022823 | Allow users to configure the redirection of Core UI Performance Analytics widgets to the Analytics Hub instead of to 'KPI details' | Users that activated Next Experience after migrating or upgrading to Australia will be redirected to 'KPI details' when selecting a Performance Analytics widget, even if they keep using Core UI dashboards. This issue occurs because the unified_analytics property forces the re-direction to 'KPI details'. |   |
| Platform Analytics Migration API PRB2037846 | The Migration Center summary count doesn't match the list count for fully migrated dashboards | The Get Migration Summary Scripted API needs to be updated so that it calculates the total number of migrated dashboards in the same way as the Migrated List. | Scenario 1: 1. Create a few Core UI dashboards. 2. Migrate them. 3. Navigate to the PAR Dashboards table. 4. Delete one or more migrated dashboards. {#zurich-patch-13__ol_c5s_bs2_vkc} Observe that the Migrated List count and the Summary count don't match. Scenario 2: 1. Create a Core UI dashboard containing a Dynamic Content widget. 2. Migrate the dashboards. 3. Navigate to the par_coreui_migration _bridge_dashboard table. 4. Remove the record(s) associated with the dashboard that contains the Dynamic Content widget. {#zurich-patch-13__ol_d5s_bs2_vkc} Observe that the Migrated List count and the Summary count don't match. |
| Platform Analytics Migration API PRB2064612 | Dashboard owner migration creates new pa_dashboard records when triggered from a child domain |   | 1. Install the domain plugin with demo data. 2. Create a core UI dashboard in TOP/MSP domain. 3. Add a report in the global domain. 4. Switch to the child domain TOP/MSP/MSP Technicians. 5. Migrate it from the dashboard banner. 6. Switch to the global domain. 7. Open pa_dashbaords.list and expand domains. {#zurich-patch-13__ol_ixd_45w_skc} Observe that there are two core UI dashboards. |
| Platform Runtime PRB1996636 | An orbit dist-upgrade preserves the previous version of conf/tomcat-host.xml on node upgrades for self-hosted instances | The host configuration file conf/tomcat-host.xml on a ServiceNow application node isn't updated during node upgrades on self-hosted instances, as the Orbit dist-upgrade function is preserving this file from the original pre-upgrade version. This happens in the same manner glide.properties, glide.db.properties, and the contents of conf/overrides.d/ are preserved, by copying them from the existing node before the upgraded node files are copied to the original location. This is a potential issue, as the tomcat-host.xml config file is occasionally modified from time to time to fix or prevent certain issues. As the file is preserved during an upgrade on a self-hosted instance, that leaves self-hosted users running with outdated versions of tomcat-host.xml and thus vulnerable to issues. |   |
| Playbooks (Family Channel) PRB2056633 | A playbook activity start delay doesn't work if its less than 11 seconds | The 12 second start delay seems to be the minimum honored threshold. | 1. Create a simple playbook with 1 stage and 2 instruction acts. 2. Configure activity 2 to have a start with delay for 11 seconds. 3. Test the playbook. 4. Notice that the activity is set in progress after activity 1 completed and there is no 11 second delay. 5. Configure activity 2 with a 12 second start with delay. 6. Test the playbook. {#zurich-patch-13__ol_pxd_45w_skc} Observe that after activity 1 is complete, the delay is honored, and activity 2 doesn't start until after 12 seconds. |
| Playbooks (Family Channel) PRB2062029 | Changes to the permission sets are not working as expected | The users should have the pd_author role. | 1. Create a playbook that uses 'incident' as the parent table. 2. Add two stages. Each stage should include at least on activity. 3. Activate it. 4. Open the 'Process properties' side panel. 5. Select the Runtime permissions tab. 6. Add a permission set of type users. 7. Dot-walk to the Assigned to value of the parent record 8. Activate the playbook. 9. Test the playbook using the incident that involves the users set up with the permissions for it. 10. View it in 'Preview'. 11. Impersonate the caller of the incident. 12. Return to the playbook preview. 13. Refresh it. {#zurich-patch-13__ol_wxd_45w_skc} Expected behavior: The user should see nothing. Actual behavior: The user can see the playbook execution. |
| Playbooks (Family Channel) PRB2086543 | When resolving overrides for AI-experiences, the first matching overrides containing aixWidget should be returned | PlaybookActivityOverrideRepo .initializeByPlaybook ExperienceId() only populates PlaybookActivityOverride .aixWidget from the override record's aix_widget.id field. If the override record itself doesn't have an AIX widget configured, but the activity's linked activity UI record does (activity_ui.aix_widget.id), then the widget is never picked up. The override ends up with an empty/null AIX widget, so the AIX experience isn't rendered even though a widget is configured at the activity UI level. | 1. Create an activity UI. 2. Populate the AIX widget field. 3. Create an activity override using the above activity UI. 4. Add conditions so that the above override is selected at runtime. {#zurich-patch-13__ol_gyd_45w_skc} Observe that the AIX widget field isn't picked from the activity UI in override at runtime. It's returned directly from the default activity UI. |
| Predictive Intelligence PRB2061744 | Previous records of 'ml_model_artifact' are still present in the sys_attachment table for the Data Analysis capability |   |   |
| Process Mining PRB2035128 | Meter-based guardrails and controls | This is a product update. |   |
| Process Mining Workspace PRB2037266 | Process Mining Project Definition is stuck with 'Record Not Found' |   |   |
| Process Mining Workspace PRB2068401 | A Root Cause Analysis (RCA) fails on a child entity for all MDM projects |   | 1. Create any pair of MDM projects for the incident and problem entities, or the incident and SLA task entities. 2. Select any eligible activity in the child entity. 3. Run 'Key contributors RCA' from the 'Investigate' section. {#zurich-patch-13__ol_lyd_45w_skc} Observe that the RCA scheduled task fails for the selection. Note for the same entity without MDM setup, the RCA task is working correctly. |
| Process Mining Workspace PRB2069087 | Update the Usage Metric Definition Id and guardrail changes for Meter Based |   |   |
| Project Management PRB1941521 | Task type breakdowns have incorrect rolled-up actuals when the 'Budget allocation attribute' property is set to 'cost_type' | The Program Actual Cost is not matching with the underlying Projects Actual Cost. There are duplicate task type breakdowns created for a program. | 1. Set the 'Budget allocation attribute' property to 'cost_type'. 2. Create a project. 3. Create a cost plan 'CP-1' with 'Hardware Capex' for the project. 4. Create a cost plan 'CP-2' with 'Software Capex' for the project. 5. Create a expense line for CP-1 with 100 USD. 6. Check the task type breakdowns (TTB) for the project. Notice that there should be one 1 TTB with the 'Hardware Capex' cost type with 100 as the actuals. 7. Create a expense line for CP-2 with 200 USD. 8. Check the Task type breakdowns (TTB) for the project. 9. Notice that there should be one 2 TTBS for 1 TTB with Hardware Capex with 100 as the actuals, and 1 TTB with the 'Software Capex' cost type with 300 as the actuals. {#zurich-patch-13__ol_ryd_45w_skc} Expected behavior: The TTB with the 'Software Capex' cost type has 200 as the actuals. Actual behavior: The TTB with the 'Software Capex' cost type has 300 as the actuals. |
| Project Management PRB1993708 | When moving a story from one project to another, the actual effort doubles on the story | When assigning a story with actual hours more than 24 hours, suppose 40 hours, the story takes it as 1 day and 16 hours. However the project only adds the hours and not the days, therefore the project actual hours become just 16 hours. | 1. Navigate to an existing project with a story, or create one. 2. Locate another project, or create one. 3. Take one of the stories with logged 'Actual Hours' and move it to a different project. 4. Navigate to the Stories \[rm_story\] list view. 5. Delete the existing Project field and change it from here. 6. Choose a project. {#zurich-patch-13__ol_czd_45w_skc} Observe the 'Actual effort' has doubled on the story. |
| Project Management PRB2036275 | ProjectTemplate.java calls extension point outside null guard, so applyTemplate() silently returns zero tasks within flow execution context | When PTGlobalAPI().applyTemplate() is called within a flow action (for example, 'Implement SPM Oversight'), the Customer Project record is created but zero project tasks are generated. The same applyTemplate() call succeeds from Background Scripts on the same project record. The ProjectTemplate scripted extension point (sys_​script_​include.​ 1e6e73619 f001200598 a5bb0657fcfc2,​ line 24) performs a GlideRecord.get() call where the table name resolves to null within the flow transaction context. This causes applyTemplate() to silently return zero tasks. The PPM engine then attempts to recalculate the project, but the planned_task record doesn't exist yet, producing the following error: 'com.​snc.​planned_​task.​core.​ Planned​Task​API:​ PPM Unable to Recalculate Task : \[sys_id\] Cannot invoke 'com.​snc.​planned_​task.​core. ​Planned​Task.​get​Start​Date()​' because 'task' is null'. | 1. Configure CSM Order Management project oversight with decision tables, field mappings, and project/task templates (template tasks table = customer_project_task). 2. Submit a customer order via REST API that triggers a flow containing the 'Implement SPM Oversight' flow action. Observe that the flow action calls Order​Line​Prj​Util​OOB. ​create​Project​For​Order​Line()​,​ which calls PTGlobal​API()​. ​apply​Template(project​Sys​Id,​ templateId, actualStartDate) at line 58 of OrderLinePrjUtilOOB.js. The Customer Project is created but zero Customer Project tasks are generated. The Short Description remains unchanged. 3. Check the logs for the error 'com.snc.planned_task. core.PlannedTaskAPI: PPM Unable to Recalculate Task : \[sys_id\] Cannot invoke 'com.snc.planned_task.core. PlannedTask.getStartDate()' because 'task' is null'. 4. Run the identical applyTemplate() call from Background Scripts on the same project record. Observe that tasks are created successfully. {#zurich-patch-13__ol_kzd_45w_skc} Expected behavior: ApplyTemplate() creates Customer Project tasks from the template within the flow action. Actual behavior: Zero tasks are created. The ProjectTemplate extension point encounters a null table name because the project record isn't fully committed in the flow transaction. |
| Project Management PRB2050675 | Allow the change of constraint date at the parent task level | Enure that the child task start date honors both the parent task and its constraint dates. |   |
| Project Management PRB2065386 | 'Show story' related list on non-agile phases |   |   |
| Project Management PRB2066164 | Certain users do not see all the drop-down list values within a grid cell in the 'RIDAC' tab | This issue occurs only in the grid view. | 1. Open the Project Workspace. 2. Navigate to RIDAC. 3. Open a project. 4. Expand 'Risk'. {#zurich-patch-13__ol_b12_45w_skc} Observe the drop-down list for the Impact field. |
| Project Management PRB2071094 | Display a message if the parent change fails due to schedule conflicts |   |   |
| ReleaseOps - Family PRB2030613 | The Promote Update Set UI action is visible even when sn_​releaseops.​deployment_​controller property isn't set | The Promote Update Set UI action should be hidden when the sn_​releaseops.​deployment_​controller property isn't set. Currently it remains visible, which can confuse users who haven't configured ReleaseOps. | 1. Install ReleaseOps but don't set it up. 2. On a complete local update, set the Promote update set button to display. {#zurich-patch-13__ol_g12_45w_skc} Expected behavior:The button doesn't display if the property is not set/empty. Actual behavior: When the button is selected, an error message displays: 'Error MessageDeployment controller URL is not specified. Make sure that sn_​releaseops.​deployment_​controller is configured in system property'. |
| ReleaseOps - Family PRB2067737 | ReleaseOps MIF handler bypasses the Instance Scan queue | InstanceScanHandler.java invokes the InstanceScanWorker directly. AScanWorker worker = InstanceScanWorker. generateFromSuites AndUpdateSets (scanSuiteIds, updateSetIds), bypassing the instance scan queue management. It should call the CICDInstance​Scan​Execution​Service as an entry point, to take advantage of queuing and possible future changes. In Zurich, the user can only execute one scan at a time. In Australia and onward, multiple scans are allowed using the current code but there are no checks on max number of scans that can be executed and the existing code could potentially overwhelm the instance with too many scans. | 1. Start a full instance scan. 2. From the ReleaseOps controller, start moving a DR that needs to do an instance scan. {#zurich-patch-13__ol_k12_45w_skc} Expected behavior: The Data Replication waits but then complete successfully. Actual behavior: The Data Replication fails the instance scan with an error: 'Failed to get scan result: Multiple scans cannot be run at the same time'. |
| Remote Process Synchronization (Family Release) PRB1950825 [KB3148345](https://hi.service-now.com/kb_view.do?sysparm_article=KB3148345) | Remote Process Synchronization (RPS) sends more records to the target than that published into the transport queue | Remote Process Synchronization (RPS) is sending more records to the target than those published into the transport queue, resulting in discrepancies between outbound HTTP logs and transport queue data. The issue arises from a performance optimization feature that saves last positions for outbound jobs. When multiple capture definitions (ih_sync_capture_definition) exceed the number of buckets, cursor backtracking occurs, leading to reprocessing of records and discrepancies in record counts. This can cause intermittent or unavailable connections between consumer applications with general usage of RPS. The issues manifest as slow response times, frequent disconnections, and periods where the connection appears down despite the RPS connection showing as Active. However, remote task records remain in the 'New' status and do not progress, creating a risk of transaction impact. | Refer to the listed KB article for details. |
| Remote Process Synchronization (Family Release) PRB2052613 | Extremely slow processing of the RPS queue on Impact | With the number of connections increasing, slow processing occurs exponentially. | 1. Log in to Impact. 2. Check the transaction time. 3. Query the sn_transport_queue table to get the volume of the 'ready' transaction. 4. On a subprod instance, onboard the instance via the impact onboarding process. 5. Run the data migration. 6. Verify the time it takes to migrate the data. {#zurich-patch-13__ol_p12_45w_skc} Notice that with one or two connections, the transaction seems fast. But as the number of connections increase, performance issues happen exponentially. |
| Remote Process Synchronization (Family Release) PRB2055484 | ProcessSyncReplicationTable's queryShard includes null labels | Both labeled and unlabeled entries are returned. | 1. Write an unlabeled entry into a cdc_queue_ih shard table. 2. Write a second entry with a valid label. 3. Trigger an RPS outbound poll for that valid label. {#zurich-patch-13__ol_v12_45w_skc} Expected behavior: Only rows matching the requested label(s) should be returned, unlabeled entries should never match. Actual behavior: Query returns both the labeled entry and the unlabeled entry. |
| Remote Process Synchronization (Family Release) PRB2080234 | Concurrent Remote Process Synchronization (RPS) can create too many sysevent records | When the main 'IB/OB' job runs, check to see the current queue size in sysevent. If it's greater than 2x the number of active remote systems, then log a 'WARN' message without creating any sysevent records. | 1. Enable concurrent RPS and ensure each the job takes time to run. 2. Set the 'OB' job to run every 5 seconds. {#zurich-patch-13__ol_eb2_45w_skc} Observe that the sysevent queue creates records faster than they get processed. |
| Remote Process Synchronization (Family Release) PRB2080238 | An outbound Remote Process Synchronization (RPS) job in Concurrent RPS is inefficient when it tries to filter the 'Capture Definition' map | This appears to be due to some inefficient coding in Outbound​Queue​Dao.​ get​Remote​System​ Capture​Defs​Map.​ It gets all CDs before trying to filter them with computations and comparisons. This would be more efficient if capture​Definitions.​ get​All​Capture​Definitions()​ took an argument that would let users filter on a remote system before looping. | 1. Set up Concurrent RPS. 2. Set up 1500 remote systems. {#zurich-patch-13__ol_jb2_45w_skc} See how long it takes to process a single job for a remote system without any records to process. |
| Reporting PRB2056087 | Data labels are truncated when saving a report as a PNG |   | 1. In Core UI Reporting, create a report. * Table: Incident * Type: Bar Chart * Group By: Short Description * Aggregation: Count {#zurich-patch-13__ul_nb2_45w_skc} 2. Save/Run the report. 3. Observe that because Short Description can have long strings, the X axis labels are truncated. 4. Change system property glide.chart.truncate. x_axis_labels = false. 5. Run the report again. 6. Observe that Short Description is no longer truncated. 7. Export the chart to PNG using the context menu option Export to PNG. {#zurich-patch-13__ol_mb2_45w_skc} Expected behavior: The exported PNG looks like the chart, with the labels displayed. Actual behavior: The exported PNG has labels truncated. |
| Reporting PRB2067688 | Reports shared with a user with the snc_internal role aren't loading |   |   |
| Request Management PRB2075931 | Cart item hints do not get copied when ordering from a draft item |   | 1. Create a draft cart item. 2. Add the hint to update the request parent to some incident. 3. Checkout the cart item. {#zurich-patch-13__ol_fc2_45w_skc} Notice that the cart item hint doesn't gets populated to the request. |
| Roles PRB2023810 | Instances without explicit roles throw an error when invoking agents with a 'Nobody' role mask | The following error appears in the logs: 'Role 'snc_external' not found. Cannot be automatically created: no thrown error'. | 1. Open an instance that doesn't have the explicit roles plugin. 2. Trigger an AI Agent that has a role mask on the Nobody field. {#zurich-patch-13__ol_kc2_45w_skc} Observe the error in the logs: 'Role 'snc_external' not found. Cannot be automatically created: no thrown error'. |
| Schedule Optimization (Glide Family Channel) PRB2057489 | SO conflict resolution is unassigning locked tasks | A conflict resolution fix was implemented to unassign tasks from the solution when the assignee has a conflict. However, it unassigns tasks even if they were locked after solution processing began. There should be a filter to skip the unassignment if the task has transitioned to a locked state. |   |
| Search Suggestions PRB2051556 | The scheduled job deletes search suggestion and business rules, and should leave ones with the global namespace alone | The business rules created should not get deleted by the scheduled job. | 1. Create a business rule on some table. 2. Set the business rule to run on the update and delete. 3. Name it starting with 'Disable'. 4. Set the script. 5. Run the scheduled job, 'Remove obsolete search suggestion BRs' under sysauto_script. {#zurich-patch-13__ol_oc2_45w_skc} Observe that the business rule created was deleted, and shows up in the sys_update_xml table. |
| Server-side scripts PRB2056793 [KB3141731](https://hi.service-now.com/kb_view.do?sysparm_article=KB3141731) | ESLatest sibling scopes shouldn't use scoped sandbox scopes | ESLatest sibling scopes are created when 'Ecmascript 2021' mode is turned on for global scripts. When they interact with something that requires sandbox script execution, they end up inadvertently creating an isolated scope for what essentially should be the global sandbox scope. There's a specific code path in KittyScriptEvaluator that attempts to reinitialise GlideElement in a scoped sandbox where it's not available leading to reinitialisation errors seen in the logs and triggering the causal chain that invokes this path. | Refer to the listed KB article for details. |
| Server-side scripts PRB2076586 [KB3151029](https://hi.service-now.com/kb_view.do?sysparm_article=KB3151029) | Plugin scripts aren't registered in some app nodes | On some instances, a subset of nodes can experience the mega menu in Employee Center being broken. The following error appears on the screen when navigating to Employee Center, and users are unable to use the menu: 'ErrorServer JavaScript error 'sn_taxonomy' is not defined.'. | Refer to the listed KB article for details. |
| Service Catalog Builder PRB2028753 | UI Policies in Catalog Builder are not captured within the catalog template's scope selected | The 'Option' UI policy introduced in Zurich isn't obeying to consider the scope of a template for Catalog UI policies. Rather, it's picking up the scope based on an application picker. Before, the option always used the scope of template for UI policies and items belonging to that catalog irrespective of what is selected in application picker. | 1. Log in to an Australia instance. 2. Navigate to Catalog Builder. 3. Select Create a new catalog item. 4. Choose a template that's scoped and has the 'Use template scope for creating record' option checked. 5. Fill in the details. 6. When at the 'Questions' section, choose 'Dynamic behaviors' and provide the action and its condition. 7. Submit the catalog. 8. Navigate to 'Maintain items'. 9. Look for the catalog just created. {#zurich-patch-13__ol_uc2_45w_skc} Observe the Catalog UI policies and its actions are created under the global scope instead of the template. |
| Service Catalog Builder PRB2033462 | When creating a catalog item via Catalog Builder, UI policies configured in a previous step aren't visible on the 'Review and Submit' step | It appears that the GraphQL query is not being triggered for the catalog_ui_policy table. | 1. Open Catalog Builder. 2. Create a catalog item. 3. Configure a UI Policy, Client Script, and any other required details. 4. Navigate to the Review and Submit step. {#zurich-patch-13__ol_dd2_45w_skc} Notice that the UI Policy is not displayed, even though one has been configured. |
| Service Catalog Builder PRB2033565 | A UI policy action created from Catalog Builder can't be seen in the platform |   | 1. Log in to Catalog Builder. 2. Create a question on a catalog item. 3. Create a UI policy and associate an action from the 'UI Policy' tab. 4. Open the item in 'Edit in Advanced View' to get the item in the platform. 5. Open the UI policy from the related list. 6. Open the UI policy action. {#zurich-patch-13__ol_id2_45w_skc} Notice that the variable name is empty, and the valid options are not seen on the right side. |
| Service Catalog Builder PRB2063629 | The UI Policy action field message fields re-appear after variable selection in Catalog Builder |   | 1. Open the catalog item in the CB wizard. 2. Navigate to UI PolicyAdd behaviorActionsAdd action. 3. Select the Plain Label/Rich Text Label/Container Start variable. 4. Wait 3 seconds for onChange. {#zurich-patch-13__ol_pd2_45w_skc} Expected behavior: The field message should not be displayed in the UI policy. Actual behavior: The fields re-appear after the policy refresh. |
| Service Catalog PRB1972924 | The Generate sequence UI action gives a missing start rule error on Playbook 28.2.1 | This issue was observed in Playbook 28.2.1, but not in 28.0.8. | 1. Open any order guide. 2. Generate the sequence. 3. Open the playbook created. {#zurich-patch-13__ol_vd2_45w_skc} Observe the missing start rule errors. |
| Service Catalog PRB2033096 | Catalog redirection throws a 404 error page when accessed from the chat responses |   |   |
| Service Catalog PRB2040266 | g_form.clearValue should clear the value of the Lookup Select Box, even when there are no reference qualifiers | When loading the XML files, this creates Lookup Select Boxes. One file creates an item option named 'user_group' under the 'AWS account request' catalog item, which is a is a Lookup Select Box that references the sys_user_group table and its reference qualifier is 'javascript: 'manager=' + current.variables.user'. Another file creates an item option named User under the 'AWS account request' catalog item, which is a Lookup Select Box that references the sys_user table. The next file is a catalog script for the 'AWS account request' catalog item, which logs the value of the user_group field when there is a change to the user field. | 1. Load the XML files. Notice that these XML files create a item options named 'user_group' and User under the 'AWS account request' catalog item, and that Lookup Select Boxes are created. 2. Navigate to the catalog item. 3. Change the User field to any value. {#zurich-patch-13__ol_zd2_45w_skc} Expected behavior: TheUser Group field should be cleared, and the alert should show an empty value. Actual behavior: TheUser Group field is cleared in the UI, but the alert shows the previous value. |
| Service Catalog PRB2070973 | Add Now Assist AI-usage tracking fields and options to the catalog_builder_analytics table | Extend the catalog_builder_analytics table to support tracking of Now Assist AI usage during catalog building. |   |
| Service Catalog PRB2073331 | Family changes for AIX STP | This is a product update. |   |
| Service Catalog PRB2073333 | Family changes for the AIX catalog item form | This is a product update. |   |
| Service Catalog PRB2084606 | Family changes to support widgets introduced to the Service Catalog LUX Widgets Store app | This is a product update. |   |
| Service Catalog PRB2089751 [KB3159281](https://hi.service-now.com/kb_view.do?sysparm_article=KB3159281) | Catalog client scripts and UI policies are blocked on requested item (RITM)/sc_task forms for users who can read the record | The resolver throws 'User doesn't have access to the item' and returns no catalog client scripts / UI policies, so none execute on the RITM/sc_task form, even though the user can fully read the record. Users expect catalog client scripts and UI policies load and execute for any user who has read access to the RITM / sc_task record. The catalog item User-Criteria entitlement (canView) should only gate the catalog ordering context (sc_cat_item / sc_cart_item), not fulfillment records. | Refer to the listed KB article for details. |
| Service Catalog Variables PRB2072938 | The 'Lists and Platform Analytics' visualization shows encrypted responses for record producer variables | The variables in the incident list view should show decrypted values. The issue occurs because the form and the list view retrieve the variable's value in two different ways. | 1. Create an encrypted field configuration on the question_answer table and Value field. 2. Define a module access policy based on the crypto module of type 'Role'. 3. Set the target role as snc_internal and the result as track. 4. Create a record producer on the incident with one variable. 5. Create an incident via the record producer. 6. Add the record producer variable to the incident list view. 7. Load incident.list. {#zurich-patch-13__ol_f22_45w_skc} Expected behavior: The variables in the list view show decrypted values. Actual behavior: The variables in the list view show encrypted values. |
| Service Mapping PRB2052536 | In Service Map, additional related list tabs (Changes-current/past, Incident, Problem) are permanently stuck on 'Loading...' |   | 1. Open any Operational Service in the 'Event Management' view. 2. Add indicators. 3. Select on the added tabs for the indicator. {#zurich-patch-13__ol_o22_45w_skc} Notice that it's permanently stuck on 'Loading...'. |
| ServiceNow SDK (Glide) PRB1831844 | Users are unable to convert a sys_app-based application due to a company key | The user is unable to convert an app from an instance with the error, 'Not allowed to download application x_taniu_tan_core. Check that you either have User with elevated privileges access or have added your company key (for example, sn for ServiceNow) to the sn_appauthor. all_company_keys system property.'. | 1. Load an open source app from a third party using Studio. 2. Verify that it can be seen. 3. Edit the sys_app based scope in the instance. 4. Open SDK. 5. Attempt to convert it. {#zurich-patch-13__ol_s22_45w_skc} Observe the error message. |
| ServiceNow SDK (Glide) PRB2041355 | The sys_gen_ai_feature_mapping and sys_gen_ai_strategy_mapping records are silently dropped during Now Assist skill installation via Studio and BuildAgent | All records including feature mappings and strategy mappings should be installed successfully. | 1. Log in as an admin user. 2. Open Servicenow Studio and Build Agent. 3. Provide a prompt to create a Now Assist skill for any use case. 4. Provide the necessary answers to the Build Agent. Notice that the Build Agent will build and install the skill. 5. Open thesys_gen_ai_feature_mappin and sys_gen_ai_strategy_mappin tables. {#zurich-patch-13__ol_x22_45w_skc} Observe whether any records are created or not. |
| ServiceNow SDK (Glide) PRB2060181 | ListElementLoader reinserts records if the child elements has the action attribute as 'INSERT_OR_UPDATE' |   | 1. Create an application on the instance with the table and list metadata. 2. Remove the list metadata. 3. Export the app. 4. Reinstall the application. {#zurich-patch-13__ol_ef2_45w_skc} Expected behavior: The app should be installed and the list metadata should still remain deleted. Actual behavior: The list gets re-inserted again. |
| ServiceNow Studio (Family Channel) PRB2063560 | True up the Glider Store app |   |   |
| Service Portal Core Widgets PRB1953795 [KB3153830](https://hi.service-now.com/kb_view.do?sysparm_article=KB3153830) | The Subscribe to update button doesn't work for non- admin users after a Zurich upgrade |   | Refer to the listed KB article for details. |
| Sidebar (Family Release) PRB2058602 | Typing indicator no longer works |   | 1. Open two browsers. 2. Log in as two different users. 3. Create a sidebar chat for the two users. 4. Start typing. {#zurich-patch-13__ol_mvs_bs2_vkc} Observe that there is no typing indicator. |
| Software Asset Core Company PRB2005158 | Improve NDS guided setup and proactively fix core company reference jobs by batching through local implementation |   |   |
| Software Asset Management PRB2018383 [KB2986694](https://hi.service-now.com/kb_view.do?sysparm_article=KB2986694) | A Microsoft per‑core license metric isn't visible after a Zurich or Australia upgrade | The MS per core metric was moved from the apply_once folder to the update folder. The fix script to set the metric group was overwritten, since the update folder file insert ran after. Thus, the MS per core uploaded with no metric group. | Refer to the listed KB article for details. |
| Software Asset Management PRB2073947 | Create samp_software_filter and samp_software_custom_filter tables in app-itam-sam for software junk filtering | This is a product update. |   |
| Software Asset Management PRB2080316 | Generate a summary for the 'New Reclamation Candidates' job | This is a product update. |   |
| Software Asset Management Publisher Pack for Oracle PRB2062263 | The Oracle option extension for Windows not working with Oracle Wallet changes for Windows |   | 1. Create applicative credentials for the CI type 'cmdb_ci_db_ora_instance' for the Oracle instance to the ServiceNow instance. 2. Identify if the discovery process is utilizing the applicative credentials stored on the ServiceNow instance or external credential vault. 3. Execute the command on the target server. {#zurich-patch-13__ol_jf2_45w_skc} Observe that the User/Credential combo printed in plain text in the Windows server shell log is utilizing the Oracle SQL\*Plus utility. |
| Software Asset Normalization PRB1703274 | Slow queries identified during OKR 2.3 executions on reconciliation, de-duplication and normalization scenarios | During executions, certain slow queries take a total of at least 1 minute in the case of normalization. | 1. Have a discovery model (DM) (cmdb_sam_sw_discovery_model) with a non-empty Publisher field and a display_name that matches an existing samp_package_map rule created for the publisher-less (Add-Remove / Windows registry) hash. 2. Run NormalizationEngine. normalizeDiscoveryModelRecord() on that DM. {#zurich-patch-13__ol_qf2_45w_skc} Expected behavior: The DM with a non-empty discovered publisher shouldn't match Add-Remove rules. The status should remain 'missed' (no match found). Actual behavior: The engine falls back to the Add-Remove scenario (blanks out the publisher) in _findAMatch() and incorrectly matches a normalization rule intended only for publisher-less registry entries. The DM is incorrectly normalized against the wrong rule, leading to inflated/duplicate license counts for browser-hosted components (PWAs, browser extensions). |
| Software Asset Reconciliation PRB2005145 | Few software installations records have 'Install Requiring action' with the reason as 'Undetermined' for Esxi | During Software Asset Management (SAM) reconciliation, when a vCenter has a device allocation to an entitlement, the system discovers all ESXi hosts under that vCenter by traversing the CMDB relationship chain: vCenter → Datacenter → Cluster → ESXi Host. It then collects all installs from these hosts and licenses them using the allocated rights. When iterating over multiple clusters within a data center, the list of discovered ESXi hosts is overwritten on each cluster iteration instead of being accumulated. This causes only the hosts from the last-processed cluster per datacenter to be retained --- hosts from all earlier clusters are silently dropped and never considered for licensing. |   |
| Software Asset Reconciliation PRB2060697 | Potential savings display incorrectly on the License Metric Result of a product for which a low usage reclamation candidate is created |   |   |
| Software Asset Reconciliation PRB2074587 | Reclamation code changes for app-itam-sam |   |   |
| Software Asset Reconciliation PRB2084351 | Domain separation doesn't work on the summary and entity table |   |   |
| Software Asset Reconciliation PRB2086017 | Create an AI Agent for AI Worker (app-itam-sam) | A new AI Agent should be created for the AI Worker. The implementation should follow the same pattern as the existing AI Agent. The user handover stages must be specific to the AI Worker autonomous flow. |   |
| Software Installation Deduplication PRB2068830 | Each dedup UPDATE should carry at most BATCHSIZE sys_ids, bu it carries the sum of the sys_ids from 100 _markActive calls, with no upper bound | The 'SAM - Deduplicate Install Table' scheduled job issues UPDATE statements against cmdb_sam_sw_install (SET deduplicated='1', active='1', primary_install=NULL). Most executions complete in roughly 200 milliseconds, but intermittently a single execution takes over 40 minutes and causes database impact. The code that produces this statement was written to cap each UPDATE at a fixed batch size, but the cap doesn't take effect. Each UPDATE can therefore carry an unbounded number of sys_ids, which produces the intermittent long-running statements. |   |
| Software Lifecycles PRB2002670 | The 'Software Lifecycle Report' job fails when a child product in 'Software Product Parent-Child Relationships' isn't installed |   |   |
| Source Control Engine PRB2054438 | A re-link of a customized Store app to git via Source Control fails with an error code '1030' | The application should link to the git repository without the error code 1030 occurring. | 1. Provision two instances (DC/TD) with apprepo setup and at least 1 instance with midserver. 2. Create an application in the instance. 3. Publish that application. 4. Now the instance with midserver, install the published application. 5. Make a change in that application. 6. Source control this application to git using a MID server. 7. Delete the sys_repo_config for this application this will un-link the application from git. 8. Attempt to link to the source control again to the same repository using a MID server. {#zurich-patch-13__ol_xf2_45w_skc} Expected behavior: The application smoothly links to the git repository. Actual behavior: The error code 1030 occurs. |
| Stream Connect Core PRB2019118 | Generative AI logs are missing |   |   |
| Subscription Management PRB2072670 | Add sn_entitlement scope in Glide properties to enable sending data from Glide to valk-gateway service | To send the metered usage data from the user and central instance to valk gateway via REST API, the valk gateway URL is accessed, which gets populated in the sys_service table via DISH. To do so, a scope should be added in glide.properties glide.services. rest.allowed_services to allow sys_service to be accessed from sn_entitlement and sn_entitlement_ctr scopes. |   |
| System Archiving PRB2059055 [KB3143594](https://hi.service-now.com/kb_view.do?sysparm_article=KB3143594) | The S3DelegatingClient. isConnectivityException() infinite loop on multi-level exception cause chains and hangs scheduler worker threads | Any S3 operation through S3DelegatingClient whose thrown exception has a cause chain 2+ levels deep permanently hangs the handling scheduler worker thread, effectively removing that worker from the pool and stalling S3 offload jobs over time. | Refer to the listed KB article for details. |
| System Events PRB2080045 | Post-clone event-processing cleanup scripts (201-204) fail to run when a user script ahead of them errors out | The post-clone cleanup scripts Delete Processing Framework Triggers (201), Deduplicate Queues Post Clone (202), Deduplicate Queue Params Post Clone (203), and Re Provision Queues Post Clone (204) are failing to run. This occurs when a cleanup script at a lower order value errors during the clone. Since the clone cleanup runner stops entirely on the first failure, scripts 201-204 never execute. Event queues are left unprovisioned, backing up hundreds of thousands of events until the missing scripts are run manually via emergency change. | 1. Configure a custom clone_cleanup_script record with an order value lower than 204 that will throw an error during execution. 2. Perform an instance clone. {#zurich-patch-13__ol_hg2_45w_skc} Observe that the clone cleanup runner halts on the failing custom script and never executes scripts 201-204 (Delete Processing Framework Triggers, Deduplicate Queues Post Clone, Deduplicate Queue Params Post Clone, Re Provision Queues Post Clone). Also, observe that sysevent_queue_config and sys_processing_framework_job remain unprovisioned for most queues, and events accumulate in the 'Ready' state with no active workers. |
| System Web Services PRB2037370 | Reading of multiple records using the UI/API Call/Processor/Script/Flow fails to track multiple READs in the Record Action metric | Four GlideRecord operation methods are instrumented to call RecordActionRecorder.record() at the point of each operation. This is the entry point for all telemetry, and every record operation on an allowlisted table flows through here. The instrumentation pattern follows Glide​Record​Protected​Data​Recorder,​ which already instruments the same methods: a single static call, no branching, no impact on the existing operation path. query() is added for READ instrumentation so that data access by external agents and the NOW UI can be measured alongside writes. | 1. Navigate to the incident table. 2. View the list of incidents in the ServiceNow UI. Observe that all of the rows are visible in the UI with multiple read metrics. 3. Execute a Query Service Query to validate that multiple metrics have been recorded in the 'sn.glide.action_fabric.record_action' metric. {#zurich-patch-13__ol_vvs_bs2_vkc} Expected behavior: Multiple reads are recorded. Actual behavior: One read is recorded. |
| System Web Services PRB2088200 | True-up Telemetry Data Connector | This is a product update. |   |
| System Web Services PRB2088201 | Platform security changes in action fabric | This is a product update. |   |
| System Web Services PRB2088202 | In action fabric billing, support the linear CRUD multiplier model for metering | This is a product update. |   |
| System Web Services PRB2088205 | Action fabric billing | This is a product update. |   |
| System Web Services PRB2088207 | True-up the Action Fabric Usage Dashboard app |   |   |
| Territory Planning PRB2071772 | There's repeated 'skipping business rule' errors on work order tasks | The error looks similar to the following: 'Condition 'Condition: current.state != 3 \&\& current.state != 4 \&\& current.state != 7 \&\& (current.location.changes() \|\| current.territory.changes() \|\| current.​consider_​ potential_​territories_​for _​schedule_​optimization.​ changes()​)​' in business rule 'Update Potential Territories for Task' on wm_task: WOT0010001 evaluated to null; skipping business rule, when Schedule optimization plugin is not installed and territory planning is installed.'. |   |
| Trace Collector - Family Release PRB2059215 | Azure classic trace collector doesn't consider Credential IDs for AI and ML services | AzureTraceCollector ignores credential IDs supplied as config update parameters. It only considers credential alias names. |   |
| Trace Collector - Family Release PRB2074229 | Trace collector MID code for Google Cloud custom agents | This is a product update. |   |
| Trace Collector - Family Release PRB2081553 | Convert app-domain-util app as a hosted plugin |   |   |
| Trace Collector - Family Release PRB2090151 | Netty 1.2.10 is at end-of-life | As recommended, upgrade Netty to 1.2.17 or newer. |   |
| Transaction Logs PRB2073987 | Enable MCP server user-facing logging via the sys_log table | This is a product update. |   |
| Transaction Management PRB2036507 | Hopped-in users are logged out every 5 minutes because glide.guest.session_timeout = 5 minutes | This happens because hopped-in users follow the glide.guest.session_timeout property. PRB1985070 changed glide.guest.session_timeout to 5 minutes, the inactive.timeout for hopped-in users shows as 300 in /xmlstats.do?include=sessions. Regular users logged into the instance are not affected by the change in PRB1985070. A hopped-in user shouldn't use the same property as guest sessions for timeout. | 1. Navigate to an instance. 2. Change the property 'glide.guest.session_timeout' = 5. 3. Log out and hop in again. 4. Navigate to /xmlstats.do?include=sessions. 5. Look up the hopped-in user name. {#zurich-patch-13__ol_rg2_45w_skc} Notice inactive.timeout is set to the value of the 'glide.guest.session_timeout' property. |
| UI Actions PRB2074979 | GraphQL list UI actions are pulling UI actions that are list V3 compatible | The graphQL endpoint is pulling list UI actions that are list v3 compatible, thus creating duplicate list UI actions in the choice menu. | 1. Enable the 'Lit' list component to fetch UI actions for the 'Incident' table. 2. Open the choice/menu of actions in the top right corner of the list. {#zurich-patch-13__ol_wg2_45w_skc} Note the duplicated list UI actions such as Repair SLAs,Add to Visual Task Board, and so on. |
| UI Actions PRB2084588 | Visibility and executability should be configurable for a UI action | This is a product update. |   |
| UI Actions PRB2084589 | Handle session notifications when a page redirect occurs | This is a product update. |   |
| UI Actions PRB2084591 | UI action condition evaluation should leverage virtual URIs for improved parity | This is a product update. |   |
| UI Actions PRB2084593 | Correct the behavior of server-side UI actions | This is a product update. |   |
| UI Actions PRB2084596 | Support handling of redirect-based processors | This is a product update. |   |
| UI Field Administration PRB2073309 | Convert all UI16 Dev - Controls components to Lit | This is a product update. |   |
| UI Field Administration PRB2073310 | Support the Markdown field type in UI16, Seismic, and LIT | This is a product update. |   |
| UI Field Administration PRB2082758 | Advanced Qualifier Reference is skipped when doing a list edit operation for a reference field | Note that Advanced Qualifier Reference is working fine on a form. | 1. On an incident table, set up advanced reference qualifier for the Assigned to field. 2. On Service Operations Workspace, navigate to the 'Incident' list. 3. Try to list edit the Assigned to field. 4. Select the look up icon. {#zurich-patch-13__ol_bh2_45w_skc} Expected behavior: The Advanced Qualifier Reference should be applied. Actual behavior: The Advanced Qualifier Reference is skipped. |
| UI Form Administration PRB2084578 | Glide changes to support form URL parameters and formatter support in UI26 | This is a product update. |   |
| UI Form Administration PRB2084598 | Glide changes to support the form context menu and system parameters in UI26 | This is a product update. |   |
| Upgrade Center PRB2016580 | After upgrading instances from Zurich to Australia, several records show up on the skipped list belonging to the sn_glider or sn_build_agent with the error 'Unable to compare, unable to find a current record' | After upgrading a Zurich instance to Australia, the upgrade monitor has a list of skipped records. When trying to resolve issues and compare to current, users observe the error: 'Unable to compare, unable to find a current record'. | Refer to the listed KB article for details. |
| Upgrade Center PRB2076321 | Apply defaults on the loading of XML records with apply_defaults=true attribute | This is a product update. |   |
| User Criteria for Service Catalog PRB2087796 | Scripted user criteria might return stale results via AI Search and aren't cached durably for the Moveworks Search API |   |   |
| UX Framework PRB1996624 | Add-on events aren't caught when a page is used as a subpage | There's a subpage 'announcements', where when users select the card in 'Grid' mode, it works. But when the same subpage is embedded in another page, it doesn't work. On investigation, it was found that in the chain of events, the add-on event mapping on the target event 'Announcement ECAM action' doesn't get triggered. |   |
| UX Framework PRB2054946 | Keyboard shortcut remapping for admins and users | This is a product update. |   |
| UX Framework PRB2057267 | The session expiry modal displays inside the workspace iFrame |   | 1. Navigate to the Service Operations Workspace (SOW) list page. 2. Open a tab and do logout.do. 3. Navigate back to the SOW list page and wait for the session expiry modal to show. {#zurich-patch-13__ol_ih2_45w_skc} Expected behavior: Session expiry handling should show the session expiry modal. Actual behavior: The session expiry modal shows up inside the iFrame. |
| UX Framework PRB2060350 | Metric tracking for remapping suggestions is missing in Zurich |   |   |
| UX Framework PRB2084577 | Product lab and action triggers in Survey Center | This is a product update. |   |
| Virtual Agent PRB2005164 | Dynamic Translation in Virtual Agent is translating already translated text in catalog items | Dynamic Translation is translating already translated catalog item text in the Virtual Agent, causing unexpected phrasing for text that users have specifically set for a specific language. | 1. Create a conversational catalog item. 2. Define a translation for one of the questions in another language via the 'Translated Text' table. 3. Open the catalog item via Virtual Agent. {#zurich-patch-13__ol_nh2_45w_skc} Notice that once the question translated is presented, the exact phrasing used in the Translated Text isn't presented. This is due to the Dynamic Translation translating an already translated question. |
| Virtual Agent PRB2025952 | The value of the of the Shorten response field on text nodes in Virtual Agent Designer can't be set globally or per topic | It has to be set manually by opening every single text node and selecting the checkbox. | 1. In a Virtual Agent Designer, open any topic that contains one or more text nodes. 2. Open any text node. {#zurich-patch-13__ol_sh2_45w_skc} Note that the default value for the 'Shorten response' checkbox is false. |
| Virtual Agent PRB2031991 | 'Get details of problem agent' returns additional duplicate closure messages along with the expected closing message | When the user enters a closing utterance, the agent returns multiple closure messages, and the last two messages are duplicated. | 1. Open NAP. 2. Enter an utterance like 'Help me get details of a problem'. Observe that the agent returns a response like 'Could you please provide the problem number you'd like details for?'. 3. Enter an utterance like 'See you later'. {#zurich-patch-13__ol_gws_bs2_vkc} Expected behavior: The agent returns a response like 'Understood. Feel free to return anytime if you need help.' Actual behavior: Additional closure messages show up, and the last two messages are duplicated. For example, the agent might return the following: 'Understood. Feel free to return anytime if you need help. Thanks for chatting! I'll go ahead and close this conversation now. I'm here if you need anything else. It looks like you're finished with this chat, so I'll go ahead and close it. It looks like you're finished with this chat, so I'll go ahead and close it.'. |
| Virtual Agent PRB2035888 | A Guardian-triggered async_search early-return leaves a stale task ID in the context | The second utterance result becomes dropped. | 1. Send a prompt that Guardian flags. Observe that it's displayed correctly. Also, observe that the first request is still active but times out later. 2. Send a second utterance that triggers skill Discovery immediately. 3. Wait for a timeout from the first message to occur to display a 'sorry' message in the conversation. {#zurich-patch-13__ol_qws_bs2_vkc} Expected behavior: The second utterance responds normally. Actual behavior: 'Sorry, there was a problem on my side' appears. The second utterance result is dropped. |
| Virtual Agent PRB2037636 [KB3108272](https://hi.service-now.com/kb_view.do?sysparm_article=KB3108272) | Agent messages containing URLs aren't displaying correctly in the internal transcript |   | Refer to the listed KB article for details. |
| Virtual Agent PRB2052769 | There's a 'sorry' message after a user tries to enter a different topic after a survey message | Users receive a 'sorry' error message when attempting to continue a conversation after the survey prompt appears, such as by asking a new question or creating an incident. The issue occurs because the survey handling logic incorrectly classifies non‑feedback responses, causing the survey to be re‑triggered and the conversation to terminate unexpectedly. This prevents users from completing their intended actions and causes the chat session to end unexpectedly. | Refer to the listed KB article for details. |
| Virtual Agent PRB2056495 | Central cache doesn't return the correct entry if the cache is updated from a different cluster | In the central cache log, the following message appears: 'Negative cache hit --- Glide previously returned null for this key'. |   |
| Virtual Agent PRB2058703 | Generating a KB article throws an error | The following error appears: 'Configured callback URL for the KB generation topic is invalid: https:​/​/​nextwave-​preview-​internal-​c003.​aus100.​service-​now.​com'.​ | 1. Create an instance, following the documentation for setting up NextWave instances. 2. Navigate to now-assist-admin. 3. Make sure the KB Generation skill is active and the display for NAP(OTTO) channel is active. 4. Give the prompt 'Create the KB for INCXXXXXXX' or 'Generate KB article'. {#zurich-patch-13__ol_bxs_bs2_vkc} Observe that there are three potential outcomes. First, the AI output could be: 'I wasn't able to generate the KB article because the configured callback URL for the KB generation topic is invalid'. Second, the AI output could be: 'I'll help you create a knowledge article. Let me first retrieve the incident details to understand what information should be included in the KB'. Then the execution stops. It doesn't collect any information nor create any article. The error code is 200102. Finally, it might not use the KB Generation skill. Instead, it uses knowledge graph or basic reasoning to form a draft article in the NAP window. |
| Virtual Agent PRB2058728 | Chat summary isn't generated on instances with the Spanish translation plugin | After ending a chat between a requester and an agent, the summary doesn't generate. This occurs when one person is using Spanish and the other is using English. | 1. Provision an instance with the Spanish translation plugin installed. 2. Set Spanish as the language for the requester. 3. Set English as the language for the agent. 4. Make sure DT is enabled. 5. As the requester, initiate a chat and connect with the agent. 6. Exchange around 20 messages. 7. As the requester, end the chat. {#zurich-patch-13__ol_jxs_bs2_vkc} Observe that the chat summary doesn't generate. |
| Virtual Agent PRB2059089 | The Otto session isn't aware of the logged-in user for 'assets managed by me' queries | The Otto/AICT chat session isn't aware of the logged-in user by default. When a user asks a question like 'Can you give me the assets managed by me?', the assistant returns the complete/unfiltered list of assets instead of applying a managed_by = current user filter. The filter is only applied when the user explicitly names themselves in the query. The assistant should recognize 'me'/'my' references and automatically apply the logged-in session user's context without requiring explicit clarification. | 1. Log in as an AICT user. 2. Ask Otto: 'Can you give me the assets managed by me?'. Observe that the full/unfiltered asset list is returned instead of being filtered to the current user. 3. Ask explicitly by name, for example: 'assets managed by \<username\>'. {#zurich-patch-13__ol_sxs_bs2_vkc} Observe that the managed_by = current user filter is correctly applied. |
| Virtual Agent PRB2059128 | In Language Detection, the loaded choices remain in the wrong language after switching from English to French via the Conversational catalog | When Language Detection is enabled, it automatically switches the conversation language from English to French after receiving 'Bonjour'. The user observes that the reference variable choices and loaded values appear in the wrong language (English) instead of French. | 1. Configure NextWave-Conversation-Server with Language Detection enabled. 2. Set the Topic Block and Agent Execution priority, with Agent Execution higher priority. 3. Use a conversational catalog item with a 'reference' variable type. 4. Start the chat in the English profile/session language. 5. Send the message 'Bonjour' to trigger Language Detection. 6. Verify that the chat language switches to French. 7. Wait for the French question to load (with reference variable choices). {#zurich-patch-13__ol_wh2_45w_skc} Observe the loaded choices for the reference variable. |
| Virtual Agent PRB2059632 | BuildPolicyConfig should be aligned with sys_​now_​assist_​va_​persona_​detail schema | No policy configs are returned because buildPolicyConfig doesn't target sys_​now_​assist_​va_​persona_​detail and doesn't filter by persona_detail_type = Policy. | 1. Create an active record in sys_now_assist_va_persona_detail: * Deployment = a valid deployment sys_id. * Persona_detail_type = Policy. * Name = Test Policy. * Description = Test policy description. * Prompt_value = Test policy instruction. {#zurich-patch-13__ul_bys_bs2_vkc} 2. For the same deployment, create another active persona-detail record with persona_detail_type = Tone and prompt_value = Friendly. 3. Trigger the assistant-config handshake for that deployment via next wave. 4. Inspect policyConfigs in the response. {#zurich-patch-13__ol_ays_bs2_vkc} Expected behavior: One policy config entry is returned, containing the sys_id, name, description, active, and instruction from the policy persona-detail record. Non-policy persona-detail records are excluded. Actual behavior: No policy configs are returned because buildPolicyConfig doesn't target sys_​now_​assist_​va_​persona_​detail and doesn't filter by persona_detail_type = Policy. |
| Virtual Agent PRB2060897 | The 'promoted-skills' API doesn't return non-discoverable skills |   | 1. Create a skill. 2. Call the 'promoted-skills' API. {#zurich-patch-13__ol_tys_bs2_vkc} Expected behavior: The skill should be returned. Actual behavior: The skill isn't returned. |
| Virtual Agent PRB2061042 | Fixes are needed for guest user support for OffGlide | Additional rest endpoints need a public role. The NextWave token needs to be turned on for bff exchange. |   |
| Virtual Agent PRB2063396 | Parallel tools execution aren't running in record domain |   |   |
| Virtual Agent PRB2063992 | The user is unable to add a portal to the Conversational AI Assistant | When the user attempts to add the ESC portal to domain one, it is successful. However, when the user attempts to set up the assistant to domain two with Service Portal, it fails and the portal is not set. Errors don't occur in the UI, but when it goes to the next step 'Branding', it fails saying the portal is not set. Errors occur in the logs. |   |
| Virtual Agent PRB2064355 | Auto Chat executions are faulted | There is an intermittent failure in fetching the JWT token from CS, which is causing the faulted conversations. |   |
| Virtual Agent PRB2064833 | A domain is set to null after user input |   |   |
| Virtual Agent PRB2066077 | Add the reduce_items_list_polling toggle |   |   |
| Virtual Agent PRB2066110 | When ending the conversation, it moves the interaction to a 'Closed Abandoned' state without starting the conversation after creating it using CREATE_CONVERSATION | The interaction moves to a 'Closed Abandoned' state instead of a 'Closed Complete' state. | 1. Create a conversation using the CREATE_CONVERSATION action. 2. Pass the context variables live_agent only to 'true'. 3. End the conversation using the END_CONVERSATION action without starting the conversation {#zurich-patch-13__ol_f32_45w_skc} Expected behavior: The interaction must move to 'Closed Complete' state. Actual behavior: It is moving to a 'Closed Abandoned' state. |
| Virtual Agent PRB2066290 | Execution plans aren't moving to 'In Progress' | AI Agent auto-linking was previously restricted to the AIA Background channel only. To support the ZTSD use cases, AI Agent auto-linking also needs to work for Auto Chat providers (autochat / autochatnava inbound IDs), which weren't covered by the existing gating. |   |
| Virtual Agent PRB2068417 | When Dynamic Translation (DT) is turned on, it causes incorrect translations with markdown link syntax | Dynamic Translation (DT) breaks markdown links and images in Virtual Agent messages when translating to languages that use non-ASCII punctuation (for example, Chinese, Japanese, Korean). DT converts all ASCII punctuation to localized equivalents during translation. For example, in Chinese, parentheses () become full-width （）. This is correct for plain text, but DT does not distinguish plain text from markdown syntax. |   |
| Virtual Agent PRB2073250 | A conversation from another domain doesn't work if the user default domain doesn't have access to the current session domain | Whenever there is a hybrid queue into play, the worker impersonates the user and updates the session, but doesn't touch the domain. When impersonated normally, the domain will be the default domain for the user. This might no have access to the conversation because its started in a different domain. So whenever we read some data that is not accessible like conversation, the flow fails. | 1. Enable domain seperation. 2. Update any field on a user record. Once updated, the default domain to the user moves to TOP/Default unless specified. 3. Switch the domain to a different domain (some sibling domain or a parent domain). 4. Start the conversation. {#zurich-patch-13__ol_zys_bs2_vkc} Observe the responses would not be received for any query. |
| Virtual Agent PRB2076609 | The 'Timeout conversations' job fails to close conversations on cross domains |   |   |
| Virtual Agent PRB2078678 | The dynamic loading 'Processing new information' progress message is not translated in localized Now Assist Virtual Agent (NAVA) conversations | Even though the values are translated in Spanish when the user opens 'Testing (En pruebas)' in the AI Agent Studio (Estudio de agentes de IA), the message 'Processing new information' remains in English and is not translated to Spanish. | 1. Set up Dynamic Translation. 2. Change the language to Spanish. 3. Navigate to AI Agent Studio (Estudio de agentes de IA)Testing (En pruebas). 4. Observe the following values that are translated: * Choose a test type AI agent or workflow (Elegir un tipo de prueba): Agente de IA o Flujo de trabajo * Name of the AI Agent or agentic workflow (Nombre del agente de IA o flujo de trabajo agéntico): Agente de IA de categorizar incidentes de ITSM * Version: 1 - V1 (activo) * Task: INC0009009 {#zurich-patch-13__ul_l32_45w_skc} 5. Select Continuar para probar la respuesta del chat. 6. Watch the dynamic loading messages. {#zurich-patch-13__ol_k32_45w_skc} Expected behavior: The user sees 'Processing new information' translated in Spanish, 'Procesando nueva información'. Actual behavior: The English text 'Processing new information' displays and is not translated to Spanish. |
| Virtual Agent PRB2078683 | The Topic execution is not working if the Nextwave user is in the TOP/Default scope |   | 1. Enable domain separation. 2. Check the Nextwave service user domain. 3. Make any update on the user if needed so that the domain gets changed to TOP/Default. 4. Start a conversation and run a topic. {#zurich-patch-13__ol_hzs_bs2_vkc} Observe that it fails. |
| Virtual Agent PRB2084118 | setCache is not honoring domain field | setCache is not honoring the domain field when impersonating the actual user. |   |
| Virtual Agent PRB2085859 | The Prompt Library 'Topics' tab is empty because the visible skills API returns '404' for every deployment | When the Prompt Library is enabled on a Now Assist Panel deployment, the 'Topics' tab doesn't load any prompts. The other Prompt Library tabs are unaffected. Users expect that the 'Topics' tab lists the topics configured and marked visible for that deployment. However, the tab displays no content. The API that supplies visible skills for a deployment reports that no skills were found, even when topics and skills are configured and marked visible. Thus, the 'Topics' tab can't be used on any deployment, and there's no configuration change that corrects it. |   |
| Virtual Agent PRB2086482 | Off Glide branding API returns the menu item with the type as null | The API returns the 'Contact Live Agent' item with the type as 'null', even though the actual type is 'chat'. |   |
| Virtual Agent PRB2087473 | Bring the tone/persona sys-prop at the assistant level and append the agent_persona instruction to it | If the config attribute isn't 'agent persona', the system appends the agent persona to the prompt if it exists. If the attribute is 'agent persona', it uses the persona or a static fallback if empty. | 1. Bring the sys-prop 'sn_nowassist_va.assistant_personalization' to the Now Assist deployment config table. 2. Make the setting available at the assistant level. 3. Append the Agent_persona field in the Now Assist deployment config table to tone/persona prompt. {#zurich-patch-13__ol_ej2_45w_skc} Observe that, when the config attribute isn't 'agent persona', the system appends the agent persona to the prompt if it exists. If the attribute is 'agent persona', it uses the persona or a static fallback if empty. |
| Virtual Agent PRB2091490 | Glide to OGCS requests should set X-Instance-URL header with canonical URL |   |   |
| Virtual Agent PRB2092748 | Live agent availability doesn't work once the user selects the Cancel button | It shows that no agents are available, even after the user selects the Cancel button and the live agent availability should resume. | 1. Start a chat as requestor from the /esc portal. 2. Have an agent online from another browser. 3. Connect to a live agent. 4. Select the Cancel button and do not accept the workitem. 5. Try connecting to the agent again. {#zurich-patch-13__ol_ozs_bs2_vkc} Expected behavior: The live agent transfer should stop just for that interaction whenCancel is selected and the live agent availability should start resuming after. Actual behavior: Notice that even when the agent is available, it shows that no agents are available. This happens for all the new conversations. |
| Virtual Agent Web Client PRB2014619 | Selecting an in-line citation link in output text control takes the user to live agent fallback |   | 1. Ensure that there's a result that has only one output (topic), so that it auto starts and has an inline citation link in the output text message. 2. When the topic is auto-starting post-search, select the in-line link {#zurich-patch-13__ol_kj2_45w_skc} When topic auto starts, the link should be turned off, but it isn't. |
| Virtual Agent Web Client PRB2077685 | Conversations are created in the user's default domain instead of the one they are working in | On an instance with domain separation enabled, starting a Now Assist conversation creates it in the user's default domain rather than the domain they are currently working in. A user who switches domains and starts a conversation can have it created against the wrong domain. Work done in that conversation then runs with the visibility of the wrong domain. This affects Now Assist across the Service Portal, the Unified Navigation panel, and the Agent workspace. Instances without domain separation are unaffected. | 1. Open an instance with the domain separation plugin installed for the workstream. 2. Ensure the domain hierarchy has at least a parent and one child domain, and a user with domain picker access. 3. Sign in and confirm the domain picker is available. 4. Switch to a non-default domain. 5. Open Now Assist. 6. Start a new conversation 7. Inspect the domain the conversation record was created in. {#zurich-patch-13__ol_qj2_45w_skc} Expected behavior: The correct domain is selected. Actual behavior: The user's default domain is selected. |
| Virtual Agent Web Client PRB2082757 | After closing the authorization window, a success event is returned even though the user did not authorize |   | 1. Configure MCP/A2A agent. 2. During the conversation, the authentication widget displays. 3. Select Authenticate. 4. Close the window without authenticating. {#zurich-patch-13__ol_yj2_45w_skc} Expected behavior: It sends a failure event. Actual behavior: It sends a success event, due to which it shows as successful. |
| Visual Task Boards PRB2059581 | Users are unable to move a card from one visual task board (VTB) to another after an Australia upgrade | The 'Move' dialog does not display any swimlanes. | 1. Set the system property glide.invalid_query.returns_no_rows to 'true'. 2. Create two Task Boards: * Board A with at least one card * Board B with two or more lanes {#zurich-patch-13__ul_ek2_45w_skc} 3. Open a card on Board A and select Move. 4. In the dialog, select Board B as the target Task Board. 5. Select the Lane field and search. {#zurich-patch-13__ol_dk2_45w_skc} Observe that the drop-down list displays 'No matches found', even though Board B has valid lanes. |
| Window Manager PRB2071474 | Pin/Unpin doesn't work when Now Assist chat is in auto-triggered in fullscreen mode (13' / short-viewport displays) and in the 'Enter' modal |   | Open the chat in full screen mode. In full screen mode, the pin/unpin doesn't work and won't dock the chat. When the 'Enter' modal and pinned, it goes back to full screen mode instead of docking the chat. |
| Work Order Management PRB2084523 | The work order rollup fails because the agent doesn't close the sn_doc_task | FSMMobile​Util.​is​Workordertasks​Closed (com.snc.work_management) passes the work order's GlideRecord object directly into the GlideAggregate parent query instead of its sys_id. This causes the open-task check to always evaluate as 'No open tasks' and lets the Preview button create a doc task prematurely. The doc task is left open and blocks the work order rollup. |   |
| Zero Trust Access PRB2052933 | Users are unable to maintain session roles when accessing the visual task board (VTB) dashboard | This issue occurs when an instance has Zero Trust Access (ZTA) policies configured with IDP Attributes filter condition used in the Adaptive Authentication policy condition, for any user who access the VTB dashboard with the filter, filter​LIKEjavascript\^ORfilter​LIKEDYNAMIC',​ and if there is no channel responder record created for it yet. The flow receives an NPE (NullPointerException), and the roles in the session are not loaded properly. There are no roles for the user causing the user to see the 'Security Restricts Access Prevention' message on screen. | 1. Ensure the instance has ZTA configured with at least one active Adaptive Authentication policy. 2. Log in to the instance as any non-admin user. 3. Navigate to any VTB dashboard that contains a board filter matching. 4. Confirm that no channel responder record exists for this filter combination. 5. Load/open the VTB dashboard. {#zurich-patch-13__ol_rk2_45w_skc} Notice the 'Security Restricts Access Prevention' message occurs. |
[ ]

{#zurich-patch-13__all-other-fixes}

## Fixes included {#zurich-patch-13__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.

* [Zurich Patch 12m W40](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3220899)
* [Zurich Patch 12m W39](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3159455)
* [Zurich Patch 12m W38](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3157848)
* [Zurich Patch 12m W37](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3156077)
* [Zurich Patch 12 W40](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3220898)
* Zurich Patch 12 W39 Hotfix 1
* [Zurich Patch 12 W39](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3159454)
* [Zurich Patch 12 W38](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3157847)
* [Zurich Patch 12 W37](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3156075)
* [Zurich Patch 12 W36](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3154013)
* [Zurich Patch 12 W35](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152171)
* [Zurich Patch 12 W34](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3150679)
* [Zurich Patch 12 W33 Hotfix 1](https://servicenow-prod.fluidtopics.net/ZsBUtlq9w0zbTNl~CaimOQ "The Zurich Patch 12 W33 Hotfix 1 release contains fixes to these problems.")
* [Zurich Patch 12 W33](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3147948)
* [Zurich Patch 12](https://servicenow-prod.fluidtopics.net/nFEzte~_Oj3p5oe_IOj~iw "The Zurich Patch 12 release contains important problem fixes.")
* [Zurich Patch 11 Hotfix 6](https://servicenow-prod.fluidtopics.net/AxtaKdYwppQg3hP~t0QbdQ "The Zurich Patch 11 Hotfix 6 release contains fixes to these problems.")
* [Zurich Patch 11 Hotfix 5](https://servicenow-prod.fluidtopics.net/so_6loCyYKpTyTF4t2mx3w "The Zurich Patch 11 Hotfix 5 release contains fixes to these problems.")
* [Zurich Patch 11 Hotfix 4](https://servicenow-prod.fluidtopics.net/XniS6lUFS4uQ5A4Tm1qJhA "The Zurich Patch 11 Hotfix 4 release contains fixes to these problems.")
* [Zurich Patch 11 Hotfix 3 W35](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152175)
* [Zurich Patch 11 Hotfix 3 W34](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3150682)
* [Zurich Patch 11 Hotfix 3 W33](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3148136)
* [Zurich Patch 11 Hotfix 3](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3146433)
* [Zurich Patch 11](https://servicenow-prod.fluidtopics.net/JQLHTFYdMq84dtlOmcoOXA "The Zurich Patch 11 release contains important problem fixes.")
* [Zurich Patch 10 Hotfix 8](https://servicenow-prod.fluidtopics.net/Szdj5fJAPfaKifF6Pt~dEA "The Zurich Patch 10 Hotfix 8 release contains fixes to these problems.")
* [Zurich Patch 10 Hotfix 7](https://servicenow-prod.fluidtopics.net/xLRqdRXvJvCTSIto_ULPfg "The Zurich Patch 10 Hotfix 7 release contains fixes to these problems.")
* [Zurich Patch 10 Hotfix 5b W38](https://servicenow-prod.fluidtopics.net/EUnSiBizJP6MN4WP29rqGA "The Zurich Patch 10 Hotfix 5b W38 release contains fixes to these problems.")
* [Zurich Patch 10 Hotfix 5 W35](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152176)
* [Zurich Patch 10 Hotfix 5 W34](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3150683)
* [Zurich Patch 10 Hotfix 5 W33](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3147947)
* [Zurich Patch 10 Hotfix 5 W32](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3146427)
* [Zurich Patch 10 Hotfix 4b W40](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3220901)
* [Zurich Patch 10 Hotfix 4b W39](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3159456)
* [Zurich Patch 10 Hotfix 4b W38](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3157849)
* [Zurich Patch 10 Hotfix 4b W37](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3156079)
* [Zurich Patch 10 Hotfix 4b W36](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3154016)
* [Zurich Patch 10 Hotfix 4b](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152184)
* [Zurich Patch 10 Hotfix 4a W38](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3157850)
* [Zurich Patch 10 Hotfix 4a W37](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3156078)
* [Zurich Patch 10 Hotfix 4a W36](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3154017)
* [Zurich Patch 10 Hotfix 4a W35](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3152177)
* [Zurich Patch 10 Hotfix 4a W34](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3150684)
* [Zurich Patch 10 Hotfix 4a W33](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3147946)
* [Zurich Patch 10 Hotfix 4a W32](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3146429)
* [Zurich Patch 10 Hotfix 3b](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3147883)
* [Zurich Patch 10](https://servicenow-prod.fluidtopics.net/OlHc11_MRcY8df829R0AoA "The Zurich Patch 10 release contains important problem fixes.")
* [Zurich Patch 9](https://servicenow-prod.fluidtopics.net/x_b0P655TcDvCV8lE9Ir8g "The Zurich Patch 9 release contains important problem fixes.")
* [Zurich Patch 8](https://servicenow-prod.fluidtopics.net/~gO9GEmW74xbdJlS67m0Mg "The Zurich Patch 8 release contains important problem fixes.")
* [Zurich Patch 7](https://servicenow-prod.fluidtopics.net/ai11xBL9BGVSGxoM1Poc4g "The Zurich Patch 7 release contains important problem fixes.")
* [Zurich Patch 6](https://servicenow-prod.fluidtopics.net/ymHgrjnOj71Zy66DHTe1Xg "The Zurich Patch 6 release contains important problem fixes.")
* [Zurich Patch 5](https://servicenow-prod.fluidtopics.net/EUKjGiGPGAI0Y2J3e0OXkQ "The Zurich Patch 5 release contains important problem fixes.")
* [Zurich Patch 4](https://servicenow-prod.fluidtopics.net/i4YMnCLVW7eu1rHqMLWEww "The Zurich Patch 4 release contains important problem fixes.")
* [Zurich Patch 3](https://servicenow-prod.fluidtopics.net/y_CcMaN67V78l~uT3H1T~Q "The Zurich Patch 3 release contains important problem fixes.")
* [Zurich Patch 2](https://servicenow-prod.fluidtopics.net/3Y_k_JRSgF6zCGckwZBWJQ "The Zurich Patch 2 release contains important problem fixes.")
* [Zurich Patch 1](https://servicenow-prod.fluidtopics.net/ryznRs456gpDAGVQsRzm4g "The Zurich Patch 1 release contains important problem fixes.")
* [Zurich security and notable fixes](https://servicenow-prod.fluidtopics.net/iSdf73GoBI~IFroDd~8D8A "The Zurich release contains important problem fixes.")
* [All other Zurich fixes](https://servicenow-prod.fluidtopics.net/y_JpjqwOyLF0ufqO7vRiug "The Zurich release contains important problem fixes.")
{#zurich-patch-13__ul_ntr_c2p_pjc}

*[\>]: and then


