Zurich Patch 12
The Zurich Patch 12 release contains important problem fixes.
- Zurich Patch 12 was released on August 07, 2026.
-
- Build date: 07-31-2026_1556
- Build tag: glide-zurich-07-01-2025__patch12-07-16-2026
For more information about the release cycle, see the ServiceNow Release Cycle.
For a downloadable, sortable version of the fixed problems in this release, click here.
Overview
Zurich Patch 12 includes 396 problem fixes in various categories. The chart below shows the top 10 problem categories included in this patch.
Changes in Zurich Patch 12
- Configure
- Configure Dynamic Guidance to be available in the Help Center and Now Assist panel. When sn_dyn_guidance_user role is assigned, it also includes the genai_admin role.Note:The genai_admin role does not grant administrative privileges.
- Using Dynamic Guidance
- Learn how to invoke Dynamic Guidance and use it effectively to enhance your experience. Starting with Dynamic Guidance version 28.4.3, the genai_admin role is automatically included when the sn_dyn_guidance_user role is assigned. The genai_admin role does not grant administrative privileges.
Notable fixes
The following problems and their fixes are ordered by potential impact to customers, starting with the most significant fixes.
| Problem | Short description | Description | Steps to reproduce |
|---|---|---|---|
|
AI Search for Service Portal PRB2038055 |
The Now Assist Self Service widget breaks the full page experience search in portal | After upgrading to Zurich, when the user searches from the Employee Center portal, the full page experience fails and no results are displayed. Instead, the widget throws a server-side JavaScript error: '$sp is not defined'. |
Refer to the listed KB article for details. |
|
Key Management Framework (KMF) for Platform Encryption PRB2058369 |
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. |
|
Now User Experience PRB2038702 |
A scoped public UI page isn't accessible without a login unless 'Name' is used vs a scoped endpoint in a sys_public record | It should be accessible without a log in, so a user can complete the authentication from Outlook. |
Refer to the listed KB article for details. |
|
System Events PRB1969068 |
The 'Events process 0' job yields to memory pressure, causing event processing delays | When node memory pressure is high (live set ≥ ~91%), the JobYieldCheck mechanism triggers a yield on events process 0 despite it being a priority 25 (high priority) job. High-priority jobs should not be subject to automatic yield throttling, as this directly delays critical event processing and can result in P1 incidents. The memory pressure itself may be transient or difficult to diagnose quickly — heap dumps often show no obvious culprit, and identifying the root cause of elevated memory usage takes time. During that window, events process 0 is repeatedly yielded, stalling event processing pipelines that users depend on for time-sensitive operations. JobYieldCheck WARNING Job=events process 0 yields due to memory pressure logged on affected nodes. Node memory is sustained at 91–93% of max, with live set at ~91.44% (~1.28GB). Glide.memory.watcher logs no active transaction warnings alongside persistent memory pressure status = true. There's only a single job visible in the queue during the yield window, yet throttling still triggers. However, users expect priority 25 jobs (events process 0) should not be yielded under memory pressure conditions. Yield throttling should be restricted to lower-priority workloads. | |
|
Table Rotation PRB1959672 |
Shard tables aren't created on an initial plugin install | When a plugin is manually installed, shard tables aren't created automatically. |
Refer to the listed KB article for details. |
|
UX Framework PRB2027095 |
The latest component asset isn't selected when multiple asset associations exist in sys_ux_lib_ component_m2m_asset, which impacts AI summary cards on UI Builder workspaces | When the AI summary card component was upgraded, its asset name changed from now-ai-summary-card/index to uxc-generative-ai/index. The upgrade doesn't clean up the old asset association, so the sys_ux_lib_ component_m2m_asset table ends up with two associations for the same component (old and new asset). The component-to-asset selection query in GlideUxComponentDefProvider .getAssetNamesByComponentSysIds() had no ordering and relied on default DB ordering. When duplicate associations exist, this could return the stale now-ai-summary-card/index asset, which is incompatible with the latest Platform AI Agents and Skills app. As a result the AI summary card fails to load on UI Builder workspaces. Classic UI uses a different rendering path, so it is unaffected. |
Refer to the listed KB article for details. |
All other fixes
| Problem | Short description | Description | Steps to reproduce |
|---|---|---|---|
|
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. |
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 PRB2040417 |
The Copy button on the VTB view can't access copyJournalContent or GlideUIDefault | The content doesn't get copied to the clipboard API and doesn't show the 'Copied to clipboard' notification. |
Expected behavior: The content is copied to the clipboard API and shows a 'Copied to clipboard' toast. Actual behavior: The content doesn't get copied to the clipboard API and doesn't show the 'Copied to clipboard' notification. |
|
Agent Chat PRB2021594 |
An agent chat box isn't enabled when work is offer re-routed post blind queue transfer | In most recent Australia release, the CSM Workspace agent isn't able to type messages in the chat input box after they are re-routed an interaction that was rejected by a previous agent. The chat box should be enabled after re-routing acceptance. | |
|
Agent Chat PRB2034807 |
UXF changes for inbox DOM | Assist UXF with the changes being implemented to remove inbox from the DOM when navigating away from workspace. |
Observe that the inbox component remains in the DOM instead of being removed on navigation. |
|
Agent Chat PRB2051353 |
Agent presence indicator should be shown in the 'Transfer to Agent' list for third party | When searchTargetList is set, a list of agents is shown, but there's no presence indicator. |
Expected behavior: It shows a list of agents along with presence indicator when searchTargetList is set. Actual behavior: It shows a list of agents with no presence indicator when searchTargetList is set. |
|
Agent Chat PRB2052028 |
Integration users can't read sys_cs_conversation_member for creating wrap-up segment | The wrap-up segment creation fails with a 400 status and the error message: 'Failed to create wrap-up segment. Segment not found in implementations for extension point: interactionSegment'. |
Expected behavior: The wrap-up segment is created and the API returns success. Actual behavior: The wrap-up segment creation fails with a 400 status and the error message: 'Failed to create wrap-up segment. Segment not found in implementations for extension point: interactionSegment'. |
|
Agent Chat PRB2055561 |
Rename Now Assist, Moveworks and AI experience to ServiceNow Otto | The Sparkle button for CRR should be replaced with the new Otto button. CRR button's tooltip 'Write with Now Assist' should be replaced with 'Write with AI'. Finally, the Sparkle icon and its label in the recommendation modal should be replaced with the Otto icon. | |
|
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 | ||
|
AI Agents (Glide Family) PRB2034699 |
GenAIMetadataM2MDaoImpl createAIAGenAIMetadataM2M doesn't assert that the genAILogId parameter is not NULL | This causes a full table scan of the sys_gen_ai_log_metadata table. This code is invoked by the AsyncMessageProcessor. | |
|
AI Agents (Glide Family) PRB2037758 |
AI Agents randomly throw a tool execution error: 'Failed to execute async FDIH tool' | At any random tool call, the AI Agent throws: 'Sorry, there was a problem on my side trying to complete this request. Try asking again later'. In logs, it shows 'FDIH async tool call exception'. |
Observe that, at any random tool call, it throws: 'Sorry, there was a problem on my side trying to complete this request. Try asking again later'. In logs, it shows 'FDIH async tool call exception'. |
|
AI Agents (Glide Family) PRB2051367 |
TTL isn't honored in sys_og_conversational _cache_configuration in the absence of any other invalidation rule | The persona section doesn't show the new memories immediately, but they're visible after 24 hours. |
Observe that it doesn't show the new memories. However, they will be visible after 24 hours. |
|
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 Experience Framework - Glide PRB2061584 |
True-up the AI UX Builder Store app | ||
|
AI Gateway - Security PRB2052119 |
As part of the name change, update error strings in MCPOAuthConstants.java that reference 'Now Assist' to 'ServiceNow Otto' | The changes will be made in Zurich and Australia. Also, an additional change is needed for the description in glide/glide-ai-security-scan. | |
|
AI Search (Glide) PRB2052168 |
No_answer Genius Result is streamed intermittently | A Genius Result rarely shows, but it should not show at all. |
Observe that a Genius Result rarely shows. It should not show at all. |
|
AI Search (Glide) PRB2054276 |
The fix script shouldn't backfill non-default sources | When the user upgrades to an instance with additional sources in the multi-content feature, the additional sources are marked as 'Included'. |
Upgrade an instance without additional sources in the multi-content feature to a version with the feature. Observe that the additional sources are marked as 'Included'. |
|
AI Search (Glide) PRB2054932 |
In Moveworks API V2, support linking ServiceNow Security Center (SSC) to a search profile | This is a product update. | |
|
AI Search (Glide) PRB2054938 |
For the Moveworks API V2, return chunks when passing an additional flag | This is a product update. | |
|
AI Search (Glide) PRB2058047 |
Indexing with multiple semantic indexing configurations with the same name on different models isn't working | When multiple semantic index configurations are created on the same datasource with the same semantic field name but different embedding models, only the first configuration is loaded into the active semantic index field cache. Subsequent configurations are silently ignored, so ingestion and search only use one embedding model for that field. Only one embedding model is used for indexing and search when multiple semantic index configurations share the same semantic field name. Additional configurations with the same semantic field name aren't visible in getSemanticIndexFieldMapping(). No error or warning is logged when the duplicate-name configurations are skipped. Thus, multi-embedding model support for a single semantic field is broken. Configurations are silently lost during cache population. This affects ingestion, search, and any callers that rely on getSemanticIndexFieldMapping(). |
Observe that only one SemanticFieldConfiguration is returned for semantic_search and the other is silently dropped. |
|
AI Search PRB1875924 |
AI search ingestion sticks when the 'Size in Bytes' column has an empty value in sys_attachment for an attachment that has a size more than 25MB |
Refer to the listed KB article for details. |
|
|
AI Search PRB1902419 |
The conversation ID isn't logged to the sys_search_event table |
Expected behavior: Since it was from VA, there should be a conversation. Actual behavior: The conversation ID is empty. |
|
|
AI Search UX PRB2004411 |
Refactor the synthesized Genius Result presence filter from Data Broker into the Java layer | Currently, the logic to conditionally execute the synthesized Genius Result — specifically, the filter that checks whether a Genius Result is present before execution — lives in the Data Broker transform layer (UX layer). This means the filter isn't automatically applied across all clients and must be manually maintained per-client in the Data Broker. This logic must be moved into the Java layer so that it is applied universally and automatically for all users, reducing duplication and the risk of inconsistent behavior across different consumers of the Search API. |
Notice that this filter only applies to clients using this specific Data Broker transform; it isn't enforced at the Java/API layer. A user that bypasses or doesn't use this Data Broker transform doesn't have the filter applied, resulting in potentially inconsistent or unintended behavior around synthesized Genius Result execution. |
|
AI Search UX PRB2014714 |
Ignore Genius Result's limit for citations in sync mode |
Expected behavior: Users still get a synthesized response. Actual behavior: No Genius Result renders because of no citations. |
|
|
AI Search UX PRB2038703 |
Instance creation failure for com.glide.search. graphql.query.Suggestions from service portal's typeahead AIS Suggestions API | When something is searched for in the portal's typeahead, no suggestions appear and AIS Suggestions API calls in the network tab return 'Instance creation failure for: com.glide.search. graphql.query.Suggestions', and 'DataFetchException'. | |
|
AI Search UX PRB2054213 |
URLs with special characters like $ break streaming for non-VA clients | Streaming starts successfully, but it stops partway through and the full answer is never rendered. |
Expected behavior: The full answer streams successfully. Actual behavior: Streaming starts successfully, but it stops partway through and the full answer is never rendered. |
|
AI Search UX PRB2054952 |
Rename Now Assist to Otto within AI Search components | This is a product update. | |
|
AI Search UX PRB2056856 |
Replace the Sparkle icon animation with the Otto animation for synthesized genius results (GR) |
Expected behavior: The loader state shows the Otto animation. Actual behavior: The loader state shows the Sparkle icon animation. |
|
|
AI Search UX PRB2057349 |
Rename Now Assist to Otto for typeahead suggestions | This is a product update. | |
|
Analytics Data API PRB2039649 |
The Platform Analytics dashboard ignores the data source filter | The 'Is one of' operator doesn't function as expected on the source. The issue is reproducible in Australia with the Data Visualization plugin version 29.1.0 and in Zurich with version 28.5.0. However, the functionality works as expected in Yokohama with version 28.0.29 and in Zurich with version 28.4.5. |
Expected behavior: Only the selected priority is reflected. Actual behavior: All priorities are reflected in the indicator scorecard visualization. |
|
Analytics Export API PRB2021342 |
The email layout in an Platform Analytics scheduled export doesn't match the received email format | Platform Analytics scheduled reports aren't honoring the email body configured when the field omit_if_no_records is true. | |
|
Application Install Engine PRB2056922 |
Install engine reads the dependencies from package.json with a fall back to the previous way when not available | This is a product update. | |
|
Application Manager PRB2022268 |
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. |
Expected behavior: It should have only one record for that app and a specific app version. Actual behavior: It has multiple records for the same app and app version. |
|
Application Manager PRB2057729 |
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 Rationalization PRB1977007 |
Generate Assessment takes too long to load because of excessive sys_user_group records | The issue occurs when there are a lot of records in the sys_user_group table. The sn_apm.Assessment AjaxProcessor script include calls the getInitData method, which contains some code that queries all sys_user_group records. There is no limit, so instances with many sys_user_group records may encounter the following issues: first, excessive memory usage by the userGroupRecords object, causing node performance issues and even a node restart. Second, excessive payload returned by the function to the application node and eventually to the client browser, causing slowness. | |
|
Asset Management Common PRB1982019 |
Service locations on stockroom aren't added through the MRA pop-up | The success message is shown, but records aren't added under the related list. |
Expected behavior: Locations are added under Service Locations. Actual behavior: Locations aren't added under Service Locations. |
|
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 PRB2037225 |
Third-party access token authentication fails | This is a product update. | |
|
Automated Test Framework (ATF) PRB1942035 |
sn_cicd API for test run doesn't start the test in cloud runner when run_in_cloud is set to true | The test remains in the waiting state until a scheduled client runner is opened. It fails after waiting for ten minutes due to timeout. No record is found in sn_atf_tg_sn_boq for the test run submitted. |
Expected behavior: The test run should be queued in sn_atf_tg_sn_boq. The test should run in cloud and complete. Actual behavior: The test result shows 'Waiting'. The test remains in the waiting state until a scheduled client runner is opened. It fails after waiting for ten minutes due to timeout. It's also not queued in Browser Orchestration Queue. No record is found in sn_atf_tg_sn_boq for the test run submitted. |
|
Automated Test Framework (ATF) PRB2017949 |
There's stuck execution trackers due to Automated Test Framework (ATF)'s new feature metadata tracing | For invalid metadata table names in sys_traced_metadata records, the generateMissingPayloadHashes throws an error and causes the final payload hash calculation execution trackers to be stuck. |
Observe that the sys_traced_metadata records truncate the long table name (sys_traced_metadata records save table names up to 40 characters whereas metadata table names can be up to 80 characters in length). Observe at the end of the test, there's stuck sys_execution_trackers while generating payload hashes for the sys_traced_metadata records because the truncated metadata table name is invalid. It thus throws an error. |
|
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. | |
|
Change Management PRB2035924 |
Standard changes created from a problem aren't linked to the parent task | The issue is reproducible if users clear the 'Two step' checkbox under and then perform . A standard change created from a task (incident/problem) aren't linked to a parent task. If users check conflicts before saving a child change from a project requested item, it won't attach the change to the parent item. | |
|
Change Management PRB2053039 |
In the 'Change risk assessment' answer generator skill flow, replace the Now Assist terminology with Otto rebranding | The suggestion message should contain 'Check answers generated by AI for accuracy'. |
Observe that the suggestion message doesn't contain 'Check answers generated by AI for accuracy'. |
|
Client Scripts PRB1956934 |
g_form.getActionName returns 'none' when adding a file in a File Attachment field |
Observe that g_form.getActionName returns 'none'. |
|
|
Condition Builder PRB2054935 |
Create a sys property to determine the Glide version for condition builder | This is a product update. | |
|
Configuration Management Database (CMDB) PRB1994587 |
A race condition between IRE LazyWriter and Deletion Strategy causes the configuration item (CI) state to flip incorrectly | A CI's state is flipping from installed to stale during Discovery (delete strategy execution). A race condition occurred between IRE's asynchronous batch update of the last_discovered field using 'db.executeLazy()' and the execution of the Deletion Strategy. The LazyWriter delay caused the Deletion Strategy to process stale 'last_discovered' values, marking valid CIs as retired despite their presence in the payload. | |
|
Configuration Management Database (CMDB) PRB2017559 |
The health configuration cache is ineffective due to a shared cache eviction | The getHealthConfiguration() method in HealthConfigManager.java is not getting effective cache hits. The current implementation caches per (metricSysId + className + domainId) key, creating a few hundred cache entries. Since this is a shared cache, entries get evicted before they can be reused, resulting in repeated DB queries for records that never change during processing. |
Observe in the code path that the cache is rebuilt every time there is an eviction. The caching path is controlled via sys_property and only applies to the non-domain path. |
|
Configuration Management Database (CMDB) PRB2020295 |
INSERT_NOT_ALLOWED_FOR_SOURCE incorrectly classified as a partial error causes the cmdb_ire_partial_payloads table to bloat and an out of memory (OOM) error | When an IRE data source rule blocks inserts for a class and data source, affected records are incorrectly saved as partial payloads. Since the block is permanent, these partial payloads can never complete — each retry creates a new entry, causing the cmdb_ire_partial_payloads table to grow unboundedly. If the partial payload contains a large number of related or lookup items, this can also lead to OOM on app nodes. | |
|
Configuration Management Database (CMDB) PRB2021367 |
Implement totals calculation for the group view when applying a class filter qualifier configuration | ||
|
Configuration Management Database (CMDB) PRB2030304 |
OrphanProcessor skips CIs and reprocesses records after batch timeouts due to unordered HashMap iteration | When the CMDB Health orphan metric job times out MID-run on large datasets, it saves an incorrect resume position and silently skips CIs on the next run. As a result, orphan CIs appear healthy in the dashboard even though they are actual orphans, leading to inaccurate health scores. |
Observe the checkpoint value stored in MetricProcessorStatus for that class — it's an arbitrary sys_id, not the lexicographically highest one processed. On the next scheduled run, observe that orphan CIs with sys_ids smaller than the stored checkpoint aren't evaluated and not reported as failures. |
|
Configuration Management Database (CMDB) PRB2052583 |
References to 'Now Assist' for the duplicate CI remediator should be renamed to Otto | ||
|
Configuration Management Database (CMDB) PRB2055214 |
AI should be used to suggest options for de-duplication task/template remediation | This is a product enhancement. | |
|
Configuration Management Database (CMDB) PRB2055216 |
Related items handling for de-duplication process should be improved | This is a product enhancement. | |
|
Contract Management PRB2040201 |
Assets covered on a contract aren't added through an Multiple Record Associator (MRA) pop-up | In the 'add action' over MRA pop-up, there's a slight change by the platform. It is now performing a GlideRecordSecure insert instead of GlideRecord. It is validating for create and write ACLs on clm_m2m_contract_asset.asset and clm_m2m_contract _asset.contract fields. There's ACLs where it allows the respective operations only if they are blank. This is clearing out the Contract and Asset field values during creation. So, records which are created don't have these fields and aren't displaying in the related list. | |
|
Customer Service Management PRB2002976 |
An advanced qualifier reference that uses 'current' isn't functioning as expected in CSM Workspace | Advanced reference qualifiers that rely on the 'current' object fail when templates are applied in Workspace. However, the same functionality works as expected in 'Classic UI (UI16)'. During template application in Workspace, the platform passes corrupted or incomplete serialized data to 'GlideRecordEncoder.decode()'. As a result, the current GlideRecord is returned without field values. |
Refer to the listed KB article for details. |
|
Database Persistence - Data Management PRB1884666 |
TableCleaner. deleteAttachments() has an infinite loop and is unable to delete encrypted records |
|
|
|
Database Persistence - Data Scale PRB1942731 |
If sequences exist to reduce redundant queries, SequenceAtomicCounter.get could cache | ||
|
Database Persistence - Graph PRB2026586 |
toLower() and toUpper() functions aren't supported in WHERE and RETURN | After creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferable serialization of the query. Cypher's toLower() and toUpper() functions aren't supported anywhere in the builder — neither in WHERE predicates nor in RETURN projections. | |
|
Database Persistence - Graph PRB2026589 |
COUNT(DISTINCT x) can't be represented with GraphQueryBuilder API | After creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferable serialization of the query. Aggregate('COUNT', x) only ever emits COUNT(x). There's no way to express COUNT(DISTINCT x), which is the only correct answer when multiple paths can reach the same node. | |
|
Database Persistence - Graph PRB2026590 |
ORDER BY isn't stored in Encoded QueryModel | After creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferable serialization of the query. RETURN alias — the AS clause is dropped when using buildEncodedQuery(), so any consumer of the encoded query has no way to know what column name the user asked for. ORDER BY / LIMIT / SKIP — these have no representation in QueryModel at all, so they're dropped whole on round-trip. | |
|
Database Persistence - Graph PRB2040734 |
Sys_class_name doesn't come as property from getForTables | ||
|
Database Persistence - Graph PRB2051205 |
Inline node properties in the cypher are dropped in the encoded query when using with useCypher() | If there are inline properties in the cypher passed to useCypher, the returned encoded query doesn't contain that query. | |
|
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 - Graph PRB2053774 |
Support initializing GraphQueryBuilder with a cypher query string via the JavaScript API | This is a product update. | |
|
Database Views PRB1881428 |
A MariaDB database view using INSTR could result in a syntax error when the function is rewritten and executed on RaptorDB | This happens because of a related > 0 or != 0 comparison. When executed on MariaDB, INSTR() returns an integer and the comparison is to an integer. However, on RaptorDB, the rewrite results in a function which returns a boolean. Due to RaptorDB's strong typing semantics, a boolean can't be compared to an integer, resulting in the syntax error. |
Refer to the listed KB article for details. |
|
Data Privacy (Classic) PRB2031271 |
Rollback of a scheduled anonymization job doesn't refresh the activity stream UI for Journal fields (work_notes, comments) | When a scheduled Data Privacy anonymization job is rolled back, the Journal field values (work_notes and comments) are correctly restored in the sys_journal_field table. However, the activity stream UI continues to display the anonymized values because sys_activity table (used by Service Operations Workspace) and sys_history_set/sys_history_line (used by UI16 List and Form views) aren't refreshed upon rollback. The Description field doesn't exhibit this issue. This is inconsistent behavior introduced when journal type anonymization support was added. |
Observe that the activity stream still displays the anonymized values even though the database was reverted. |
|
Data Privacy (Classic) PRB2039332 |
Increase the maximum size limit of the incoming request to Data Privacy APIs from 1M to 10M | The Data Privacy API only supports up to 1M character long prompts. However, a simple prompt on Virtual Agent may result in prompts larger than 1M characters, which causes the prompt's response to get stuck. Prompts of extra large size should be processed by the Data Privacy API. | |
|
Data Privacy (Classic) PRB2040595 |
Post-clone anonymization of child workers is incorrectly cancelled due to parent job type mismatch | The post-clone data privacy anonymization job uses a parent-child architecture; one parent job distributes work to multiple child worker jobs that process tables in parallel. The issue is in how the child workers look up their parent job record. In the post-clone flow, the parent job is stored in a different table type than the child workers' lookup code expects. Because the lookup fails with 'data protection job is not valid,' each child worker is cancelled immediately. | |
|
Date Picker PRB2029576 |
There's an issue with GlideDateTime.setDisplayValue | Any script that calls setDisplayValue() with an ISO-format string (yyyy-MM-dd HH:mm:ss) on an instance where glide.sys.date_format is set to anything not in FORMAT_LIST (for example, dd-MM-yyyy, MM/dd/yyyy, etc.) produces incorrect dates in Zurich. |
Refer to the listed KB article for details. |
|
Decision Graph for Context Engine (Family) PRB2056900 |
Glide changes for machine learning integration needed for Distinguished Encoding Rules (DER) mining | This is a product update. | |
|
Decision Graph for Context Engine (Family) PRB2056902 |
Instrument 'Ask For' approval action Instance Observer (IO) during flow execution for context graph tracing | This is a product update. | |
|
Decision Graph for Context Engine (Family) PRB2056905 |
Rate-limited flow trace eligibility evaluation | This is a product update. | |
|
Decision Graph for Context Engine (Family) PRB2056908 |
Scaffolding for the decision-graph module | This is a product update. | |
|
Decision Graph for Context Engine (Family) PRB2056910 |
Cache decision weightage for a low-latency runtime lookup | This is a product update. | |
|
Decision Graph for Context Engine (Family) PRB2056912 |
Adding or deleting a feature dictionary should make mined patterns inactive | This is a product update. | |
|
Declarative Actions PRB2055766 |
The related list UI actions to update rows are failing on m2m if the field being updated is read-only | The UI action calls AssetAutomationAPI. completeAssetDisposalTask. This has current.update, which fails. If the read-only flag is removed from the Stage field in the sn_hamp_m2m_ hw _asset_disposal table, then it works. |
Observe that the action fails to update. |
|
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 |
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. |
|
|
Document Management PRB2056202 |
Replace 'Now Assist' and 'Sparkle' with 'ServiceNow Otto' in screenshots, images, and icon assets | All UI visual elements should be updated across SmartDocs, Doc to Voice, and SmartRedact to reflect the ServiceNow Otto branding changes. This includes both images/screenshots and icon assets. | |
|
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 PRB2056915 |
Support in document viewer for the doc to voice agent | This is a product update. | |
|
Email Notifications PRB2036855 |
Agent workspace case emails display multiple 'To' names if the email recipient has multiple contact records | If a contact has more than one contact record in the system (same email address), the system displays the names of all the contacts when viewing an email sent to that person on a case. |
Expected behavior: Only one contact is displayed in the To field. Actual behavior: The To field lists all the contacts with the same name and email address. |
|
Email Notifications PRB2050616 |
Email client APIs shouldn't be public | ||
|
Embedded Help PRB2056339 |
Replace all occurrences of 'Now Assist' text with 'AI' across the Help Center and embedded help |
Observe that 'Now Assist' text is displayed for AI-generated help articles. |
|
|
Event Management PRB2052731 |
Remove the step in mixed grouping that allows alerts to join existing groups before the grouping definitions are run in order | The mixed grouping engine handles alerts in two steps. First, it checks whether an alert can join a group that already exists—without following the order the definitions are set up in. After, it goes through all the definitions in their proper order, where it's also allowed to create new groups. The first step disregards the configured definitions order; as a result, an alert can end up in a group created by a lower-priority rule instead of a higher-priority definition. The definition order exists specifically to control which definition gets to group an alert first, so skipping it defeats the purpose of the order. In conclusion, the two-step process should be removed. The mixed grouping engine should go through the definitions once, in order. For each definition, it should allow alerts to either join an existing group or create a new one. |
Expected behavior: A3 and A4 form a new group created under Definition A, because Definition A comes first in the rule order. Actual behavior: A3 and A4 are added to the existing Group B. |
|
Event Management PRB2053524 |
Azure monitor for 'Issue' integration, and UI enhancements in Express List and alert record | This is a product update. | |
|
Flow Engine PRB2059346 |
Flow context gets completed, but the event isn't relayed to playbook engine, so the activity context doesn't get completed |
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. |
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. |
|
Flows (Family Channel) PRB2054449 |
Refactor all occurrences of 'Now Assist' in Flow Designer, Action Designer, and Flow Diagram to 'ServiceNow Otto' | ||
|
Flows (Family Channel) PRB2056022 |
Otto directive renaming for the call skill step plugin | The plugin name is being changed from 'Now Assist Skill' to 'AI Skill' (or 'AI Skill Step'). The step name is being changed from 'Call Now Skill Step' to 'Call AI Skill Step'. Also, the plugin and step description should be updated where applicable. | |
|
Hermes (Family) PRB2026691 |
TCP connection establishment and SSL handshake occur every minute | TCP connection establishment and SSL handshake occur every minute even when the health check is skipped under the 150-second threshold. The unnecessary overhead should be remediated. | |
|
Hermes (Family) PRB2026695 |
Identify and eliminate duplicate health checks where two Hermes services point to the same Hermes cluster | Normally, it'd be expected that Glide apps would use different bootstraps. Given the special condition, when the Kafka bootstraps are the same, it should avoid the duplicate connections/healthchecks between the two services. | |
|
Horizon Component Library PRB2052114 |
Replace the Sparkle icon with the Otto Lottie animation in AI and loader experiences | ||
|
Horizon Component Library PRB2052172 |
Suppress console statements so browser tools aren't flooded |
View the 'Theme behavior' console output. The console output should only be logged when env = development. |
|
|
Horizon Empty State Component PRB2050333 |
Update ai-general illustration | The sparkle illustration should use the new Otto logo instead. |
Expected behavior: The empty state shows the Otto logo. Actual behavior: The empty state shows sparkles. |
|
Horizon Icon Component PRB2032851 |
Add the Otto icon to the library |
Expected behavior: The new Otto logo is visible. Actual behavior: The icon is missing. |
|
|
Horizon Icon Component PRB2050318 |
Update all Sparkle icons | Icons with the Otto logo should be shown instead. |
Expected behavior: Icons with the Otto logo are shown. Actual behavior: Icons with sparkles are shown. |
|
HR Service Delivery PRB1958041 |
After a Zurich upgrade, LE tasks aren't getting created | During case creation, the system needs to evaluate audience, which includes the creation of lifecycleEventLogger. Inside lifecycleEventLogger, the flow checks whether there is a valid HR case. Due to the restricted query business rules, the system is blocked from accessing the target records and stops when the error is thrown. This causes the 'Evaluate Audience' result to be false and the flow skips that activity creation. | |
|
HR Service Delivery PRB2014389 |
RCAs are generated for 'Populate Manager Reportee Count Using Eligible Users' and 'EmployeeHubOrgChart ReporteeUtilSNC' | During nightly test case execution, two RCAs are generated for the new scripts: - sys_script_include _a302f8807873 f250f877079523d275e1 and - sysauto_script_ 33a5e72453f7 b210f2ebff c230e5e69d. It is causing test failures. | |
|
HR Service Delivery PRB2021314 |
The Cancel UI action in an HR case checks for 'mandatory' after the case is canceled | The Cancel UI action is invoking hr_CaseAjax.cancelAction(). In this function, state and work notes are updated from the server script. Inside the callback function, there's g_form.save(), which checks the mandatory and saves the form. If the data is already saved from the server script, the system shouldn't check the mandatory. | |
|
HR Service Delivery PRB2052205 |
In Australia and Zurich, RCAs generated in HR Core and HR Employee Relations need to be added back to track/HR | ||
|
HR Service Delivery PRB2052632 |
The header_config_* fields are missing from the sn_hr_core_service table in Zurich and Australia |
Open a Zurich or Australia instance with the sn_hr_core and EC Core plugins installed. Observe that the header_config_* fields are missing from the sn_hr_core_service table. |
|
|
Identification and Reconciliation API PRB2028002 |
Fix three dynamic IRE UI messaging and wording issues and the system properties in the update folder | ||
|
Identification and Reconciliation API PRB2034883 |
Users can add or edit identification rules for hardware's child classes while dynamic IRE is enabled | If dynamic IRE is enabled, users shouldn't be able to see or edit identification rules on the hardware hierarchy. |
Observe that static rules are displayed and editable, even though dynamic IRE is enabled. |
|
Identity PRB1964703 |
A federated ID isn't generated for all the users in the instance | There's also instances where a federated ID isn't generated for some users even when they have a unique user_name and email. | |
|
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. | |
|
Instance Data Replication (IDR) PRB1940978 |
There's many IDR-DCTComparisonJobs on an instance | This is likely only a cosmetic issue and not hurting performance. Instances have at least one IDRDCTComparisonJob per node, which seems excessive. For instances with many nodes, this ends up being the majority of IDR jobs. There's only a few consumer jobs per instance (not per node). |
|
|
Integrated Email Client PRB2051938 |
A Now Assist reference in Email Client must be changed to Otto | This is a product update. | |
|
Integration Hub PRB2056938 |
Rename the 'Now Assist for Spoke Generation API Support' Glide plugin | ||
|
Integration Hub Spokes PRB2053392 |
Users can recover box webhook HMAC signing keys via timing oracle on JavaScript == comparison and forge events to trigger arbitrary subflows | This is a product update. | |
|
Knowledge Graph (Family) PRB2016914 |
Update the structure to keep the Knowledge Graph configuration file in the same folder as the released description version and dynamic configuration for the Install Server URL | ||
|
Knowledge Graph (Family) PRB2052948 |
Implement batch insert logic for affinity jobs to improve insert latency | This is a product update. | |
|
Knowledge Management PRB2054012 |
Rename app-common 'Now Assist' to Otto | ||
|
Knowledge Management PRB2054937 |
True up Store apps NAKM, KC, KCInWorkspaces and ECE | This is a product update. | |
|
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. | |
|
List Administration PRB1963197 |
The Duration field displays '0 seconds' in a Core UI list when the value is null |
Review that records have '0 seconds' even if there's no value in the records (empty). |
|
|
List Administration PRB2044745 |
Now-record-list-connected sends encodedRecord as {} instead of '' | The variables contain 'encodedRecord': {} (empty object). It's treated as a non-empty, non-nil value, so the advanced qual is evaluated against an empty 'current' and wrong/empty results are returned. This is reproducible across base instances, but works correctly in Classic UI16. |
Expected behavior: EncodedRecord is '', so the advanced/dynamic qualifier is correctly skipped when no 'current' is available. This matches the UI16 template behavior. Actual behavior: The variables contain 'encodedRecord': {} (empty object). It's treated as a non-empty, non-nil value, so the advanced qual is evaluated against an empty 'current' and wrong/empty results are returned. |
|
List Administration PRB2053781 |
The new AI list badge in UI16 breaks list cell content wrapping | ||
|
List Administration PRB2054941 |
Additional tags features should be supported | This is a product enhancement. | |
|
List AI Indicators PRB2051786 |
The horizontal scroll for AI-tagged items in the groupedBy list is broken | When the user scrolls to the right, the field isn't visible. | |
|
List AI Indicators PRB2055051 |
Update the Otto indicators in seismic workspace lists | This is a product update. | |
|
List AI Indicators PRB2055052 |
Update the Otto indicators in UI16 lists | This is a product update. | |
|
MID Server PRB2063491 |
'LinkedHashMap$Entry' objects connected to the LRU take a couple MB | These objects are from 'ecc_queue_authorization_policy'. |
Notice that entries of 'LinkedHashMap$Entry' for ecc_queue_authorization_policy have over 3MB for each entry. |
|
Mobile Platform PRB1965358 |
Scripted screen questionnaire dependencies between fields stop working because of irrelevant evaluations using toString() | In the Now Agent app, the mandatory questionnaire doesn't honor dependency settings after an instance upgrade. |
Expected behavior: 'Age of responsible adult' and 'Responsible adult relationship' should be visible when 'Is the subject a child' is set to 'Yes' and 'Parent, guardian and other P/G/O' is set to 'Other'. Actual behavior: The fields show 'Age of responsible adult' and 'Responsible adult relationship' on load. |
|
Multi-Instance Framework - Core PRB2062210 |
Implement Glide family changes to support discovering Hermes across data centers | 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 HermesProducerClient .getClusterInfoSet. 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: First, 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 ensureTopicLocationForInstance(String owningInstance) then finds primaryCluster == null and the send fails with 'No primary cluster found'. Second, 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. |
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) PRB2051440 |
On-demand MMS submission fails | The issue occurs on instances where the multimodal service URL is configured via sys_service_endpoint instead of the system property. |
Observe that the on-demand MMS submission fails. |
|
Next Experience Unified Navigation PRB2053821 |
Update to Otto branding in Next Experience | This is a product update. | |
|
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. JavascriptException: Document was unloaded'. |
Run IT testOutageAssociationWithCaseIT .checkChildCaseLinkedToParentOutage. Observe that it fails on main. |
|
OAuth 2.0 integration PRB2032073 |
Chat-Input is available to requester when conversation ends | ||
|
OAuth PRB2052671 |
Support to create an OAuth entity record within the caller scope | This is a product update. | |
|
On-Call Scheduling PRB1975559 |
On-call contact information isn't visible for some users for some attempts | This issue only occurs when logged in as a user. | |
|
On-Call Scheduling PRB2034496 |
In a SMS action in the subflow 'On-Call', the 'Check Assignment Response' doesn't use Notify | The 'On‑Call: Check Assignment Response' flow uses the legacy SMS send action instead of the Notify‑based SMS action. | |
|
On-Call Scheduling PRB2039960 |
The NotifyUtils check for notification devices should return empty when the ACL check is successful | ||
|
OneExtend PRB2041342 |
AI Summary card stays in perpetual loading state | This issue occurs for some Business Application records using the Record Summarization capability. There are no LLM calls and no errors. |
Observe that the summary is generated. It generates LLM calls and renders correctly. |
|
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. |
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 PRB2057127 |
Multiple GenAI logs are created in skill chaining execution | OneExtend Execute and ExecuteSecure are missing the offGlideChainingEnabled flag. |
Execute a skill chaining. Observe that the Generative AI logs are created two times. |
|
OneExtend PRB2059503 |
Summarization records aren't displaying a proper response | Incident, Change, and Case summarizations are failing with errors when users select the Summarize button: 'Summarization could not be completed because access to the base table Case was unsuccessful'. Error logs: 'Error sending to unified_short_url_active_ 1...Status 500 - [Internal Server Error] [{'success':false,'statusCode':429,'message':'Too many concurrent data insert operations in progress - additional rebuild request being ignored','timestamp':'2026-07-17T07:00:17.752637494Z','results':{}}]'. |
Refer to the listed KB article for details. |
|
Performance Analytics PRB1899019 |
PA scores aren't retrieved immediately after enabling data snapshots | The 'No scores available' message is displayed. It remains the same until mining is complete, which shouldn't happen. |
Observe that the 'No scores available' message is displayed. |
|
Performance Analytics PRB2032037 |
The Platform Analytics dashboard filters ignore Element Security Lists and display 'Nothing is available' | If the user sets up an Element Security List for a breakdown source that's used as a filter in a Platform Analytics dashboard, the filter shows 'Nothing is available'. This happens even though the user has valid access to the dashboard and the underlying data. | |
|
Platform Analytics Dashboard API PRB2037426 |
scoreType is forced to 'latest' for non-aggregate indicators due to an undefined aggregateIndicator check | When a visualization widget uses a classic indicator (sourceType: 'indicator') with applyDateRange enabled, the scoreType property is incorrectly forced to 'latest' even when the metric is not an aggregate indicator. This happens because the aggregateIndicator check in the scripted policy evaluates 'undefined !== ''' as 'true', even though the metric object doesn't have an 'aggregateIndicator' property at all. The user loses the ability to select other score types (sum, average, etc.) for non-aggregate indicators, and any previously configured scoreType value (for example, 'sum') is overwritten to 'latest'. |
Expected behavior: The scoreType remains 'sum' and all score type options are available in the drop-down list. Actual behavior: The scoreType is forced to 'latest' and the drop-down list is inactive. |
|
Platform Analytics Dashboard API PRB2038900 |
Platform Analytics Release (PAR) dashboard's saved filters drop on 'GET' (200, empty filters) when a referenced saved/library filter is unresolvable (deleted or cross-domain) | FiltersService.removeInvalidFilter (inline path) had a guard that returned '' whenever availableFilters.size() didn't match the layout's filter-component count. getAvailableFilters can't resolve a stored_component whose par_component_filter record is deleted or domain-invisible, so a single unresolvable reference caused all of the dashboard's saved filters to be discarded for every user. The PUT path does no validation and saves correctly; only the GET-time validation drops them. On domain-separated (MSP) instances, this is easily hit because dashboards in user sub-domains reference global saved filters. | |
|
Platform Analytics Dashboard API PRB2039418 |
List migration logic should be added for the highlighted values config | When the user upgrades, the corresponding properties should be migrated to the new list visualization. |
Observe that the corresponding properties are migrated to the new list visualization. |
|
Platform Analytics Dashboard API PRB2050660 |
Par_dashboard_tab records are created unintentionally when a non-admin user accesses an inactive dashboard | When a non-admin user accesses an inactive (deactivated) Platform Analytics dashboard through the workspace URL, one or two new par_dashboard_tab records are created unintentionally. |
Expected behavior: The par_dashboard_tab doesn't have a record for the test dashboard. Actual behavior: Once the user accesses the inactive dashboard, one or two new par_dashboard_tab records are created unintentionally. |
|
Platform Analytics Filters PRB1968556 |
Users are unable to filter on the sys_class_name column of the kb_knowledge table in a new Platform Analytics dashboard | The column 'Class' isn't present. |
Expected behavior: The user can choose the column 'Class'. Actual behavior: The column 'Class' isn't present. |
|
Platform Analytics Filters PRB1993721 |
A dashboard's Year to Date (YTD) filter fails to apply on a list unless it's reset | A dashboard's YTD filter doesn't consistently apply the correct date range to list widgets, resulting in incorrect list results until the YTD filter is manually cleared or reset. | |
|
Platform Analytics Filters PRB2018497 |
When using a date/time filter, the 'Today' predefined range incorrectly starts from the current hour instead of all of today | When setting up a date filter in Platform Analytics, if the predefined range of 'Today' is added and 'Allow time selection' is set, it will default to the start time of Current Date + Current time, and the end time of Current Date + 23:59. This means it is not showing the whole day, and instead just starting from the current moment and going into the future (and therefore is unlikely to show any records). |
Notice that the date will update correctly, but the start time will update to the current time. |
|
Platform Analytics Filters PRB2021606 |
An interactive filter can be cleared via a double-click even when the 'Allow User to Clear Filter' option is turned off | Users are able to clear the applied interactive filter by double-clicking the selected filter value even when the 'Allow user to clear filter' option is turned off in the filter configuration and clear filter option isn't appearing. Additionally, when multiple interactive filters are configured with filter interactions/dependencies, the dependent filters still display the option to clear the filter. This behavior creates inconsistency with the expected functionality of the 'Allow user to clear filter' setting, as users are still able to clear filters through alternate interactions. |
Expected behavior: When the 'Allow user to clear filter' option is turned off, users shouldn't be able to clear filters through any UI interaction, including double-click actions or dependent filter interactions. Actual behavior: Filters can still be cleared through double-click interaction and dependent filters display clear filter options despite the setting being turned off. |
|
Platform Analytics Migration API PRB2034116 |
Upgrading from Yokohama to Zurich causes all pa_widgets to be migrated after upgrade | The pa_widgets table doesn't have an active field. | |
|
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:
Observe that the Migrated List count and the Summary count don't match. Scenario 2:
Observe that the Migrated List count and the Summary count don't match. |
|
Playbooks (Family Channel) PRB2025987 |
A user can't view a playbook without record create access | ||
|
Playbooks (Family Channel) PRB2052473 |
The getPlaybookContextParentRecord API should be exposed as scriptable | The Playbook MCP tool code doesn't use the existing API getPlaybookContextsByParentRecord to launch and continue playbook execution. This API internally handles all validation and permission access, which results in duplicate logic. The current java API should be exposed as a scriptable API to use at Playbook MCP tool. |
Observe that it launches playbook, but it uses custom logic to validate access and permission. |
|
Playbooks (Family Channel) PRB2052670 |
'Completed By' and 'Completed On' for Activity Contexts | This is a product enhancement. | |
|
PPM Standard PRB2037975 |
Relax RIDAC table business rules | This is a product update. | |
|
Process Mining PRB1957306 |
Scheduled tasks are shown in the 'Pending' state after the execution tracker is deleted | The scheduled task shows up on workbench with the 'Pending' state and no actions can be taken on it. |
Observe that the scheduled task shows up on workbench with the 'Pending' state. No actions can be taken on it. |
|
Process Mining PRB2022864 |
Users are unable to edit access for Now Assist creator's 'Work Notes Analysis' skill |
Expected behavior: The user should have edit permission to edit. Actual behavior: The user is unable to edit permissions. |
|
|
Process Mining PRB2035128 |
Meter-based guardrails and controls | This is a product enhancement. | |
|
Process Mining Workspace PRB2022151 |
The record count for child tables shows the total records and ignores any applied filter | Since this is expensive to calculate, the recommendation is to hide that counter for child tables altogether. |
Expected behavior: Only the records in scope are shown. Actual behavior: The total number of records in the table are shown. |
|
Process Mining Workspace PRB2023836 |
The Process Mining usage table (promin_metered_usage_data) must be preserved across clones | The Process Mining usage table (promin_metered_usage_data) is overwritten during instance clone operations, causing mined record counts to be duplicated and incorrectly reported when users mine on non-production after cloning from production. Process Mining licensing counts unique mined records per instance (not across instances). |
Expected behavior: After any clone operation, the Process Mining usage table on the target (cloned) instance is reset to its original (empty/baseline) state, so usage counting starts fresh/continues per instance. The configuration that enforces this should be mandatory on every clone and read-only / protected. Actual behavior: The cloned non-prod instance inherits production's usage history, but subsequent mining activity overwrites or duplicates entries. This breaks per-instance usage reporting and creates a double-charging risk. |
|
Process Mining Workspace PRB2024798 |
Summary top banner metrics isn't displaying until the project is reopened or the page is refreshed | ||
|
Process Mining Workspace PRB2034613 |
Users can't edit access for the Now Assist creator 'Work Notes Analysis' skill |
Expected behavior: The user has permission to edit the field. Also, the workbench should respect the permission set at skill level. Actual behavior: The user is unable to edit permissions. |
|
|
Process Mining Workspace PRB2038768 |
Scheduled tasks are shown in the 'Queued' state after the execution tracker is deleted | Scheduled tasks show up on workbench with the 'Queued' state, and no actions can be taken on them. |
Observe that the scheduled task shows up on workbench with the 'Queued' state and no actions can be taken on it. |
|
Process Mining Workspace PRB2050830 |
Wipe out promin_metered_usage_data across non-prod and rely on the Glide non-prod/prod property, not on the Open/Closed property | When users clone production to a non-prod instance, the non-prod promin_metered_usage_data table is wiped and replaced with prod's data, so non-prod reflects a copy of prod rather than real usage. When users clone prod to several non-prods at once, each carries prod's usage table. Subscription Management's flat aggregation then counts the same prod records once per instance, so reported usage scales linearly with the number of non-prods a user maintains, independent of actual mining behavior. | |
|
Process Mining Workspace PRB2052878 |
Otto directive for process mining | The Otto rebrand should be completed for work notes analysis, intent and activity analysis, process highlights, generate process config with AI, and playbook mining. | |
|
Process Mining Workspace PRB2055568 |
In Zurich, a false 'access denied' error appears when saving table/filter changes on an existing project | Process Mining table-access validation incorrectly denies save actions for users who have genuine read access to the table via a conditional ACL. The system throws: 'You do not have access to {table} table'. This happens because it checks permissions against an empty test record instead of real data. The error is a false negative in the platform's own pre-save validation, not an actual permissions gap. Users with access via an unconditional ACL don't receive the error. |
Expected behavior: The save succeeds. Actual behavior: The message 'You do not have access to incident table' appears, despite step 8 confirming real access. |
|
Project Management PRB2006929 |
Deleting a project task with MS Project creates an orphaned resource request |
Expected behavior: The re-upload of the schedule isn't permitted because of the related record. If it does allow the re-upload, it should cascade the delete to the related records. Actual behavior: The resource manager can still see the resource request, but the task name is blank. |
|
|
Project Management PRB2023802 |
The PowerPoint export service loses the connection | The export functionality is broken. When using the export feature, it displays 'Unable to complete request'. There are no log entries available for this error message. In order to exclude issues with the built-up service, there are regular pings every 15 minutes from the instance to the backend service, but those pings stop at the end of the day. After manually updating the entry in sys_service_endpoint, the pings start and exporting to PowerPoint is available. | |
|
Reporting PRB2040639 |
Require authentication on a scripted rest API reporting_alias | ||
|
Roles PRB2052882 |
Inherited roles aren't added back when patcher is on and the state of 'User has role' is changed from pending_approval to active | When the user updates the state of the 'User has role' record to active, no records are created for inherited roles. |
Expected behavior: 'User has role' records are created for inherited roles with the state as active. Current behavior: No 'User has role' records are created for inherited roles. |
|
Scheduled Jobs PRB2015240 |
Create a guard rail to protect the scheduler against misconfigured nodes to avoid impact to critical jobs | Misconfigured nodes can severely impact the job scheduler, causing business critical jobs to not get executed. |
Observe that both this node's and other nodes' pinned jobs with priority>=100 no longer execute. |
|
Schedule Optimization (Glide Family Channel) PRB2034899 |
Intraday optimization is stuck in 'In progress' | Intraday optimization jobs may become permanently stuck in the 'In Progress' status due to a timing issue in how solution metadata is processed internally, which can result in job status updates being lost. |
Observe that some of the records remain stuck in in_progress status indefinitely, even after all the solutions are processed or the records show no processed task counts, total task counts, and/or progress bar. During normal intraday runs with concurrent solution processing, the race condition between SolutionMetadataProcessor and SolutionProcessorSNC can cause lost updates on ml_solution.solution_metadata, also resulting in stuck in_progress records. |
|
Schedule Optimization (Glide Family Channel) PRB2035210 |
When work schedules aren't created in WFO, GraphQL fails a few times |
Observe that GraphQL fails a few times. |
|
|
Schedule Optimization (Glide Family Channel) PRB2041460 |
In Zurich, an intraday job takes around 12 minutes to be submitted to ML Scheduler |
Observe that it takes around 12 minutes to be submitted to ML Scheduler. |
|
|
Schedule Optimization (Glide Family Channel) PRB2051159 |
Intraday optimization is stuck in 'In progress' | The race condition is in solution processing. Glide mutex API needs to be added in global scope. |
Observe that some of the records remain stuck in the in_progress status indefinitely, even after all the solutions are processed or the records show no processed task counts, total task counts, and/or the progress bar. During normal intraday runs with concurrent solution processing, the race condition between SolutionMetadataProcessor and SolutionProcessorSNC can cause lost updates on ml_solution.solution_metadata, also resulting in stuck in_progress records. |
|
Schedule Optimization (Glide Family Channel) PRB2056649 |
There's a double booking issue in conflict resolution |
Observe that a few work order tasks are double booked. |
|
|
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. | |
|
Server-side scripts PRB2051345 |
Automatically created KittyScript exemptions are incorrect when using 'new GlideRecord' | When GuardedScript/KittyScript checks scripts in the exemption table, it does by checking a _normalized_ version of the script, where all literals are removed to ensure that it deduplicates similar scripts where the only difference is (say) a 'sys_id'. This normalization does _not_ apply to the constructor of 'GlideRecord' where it doesn't want a blanket exception for _all_ tables. |
Refer to the listed KB article for details. |
|
Service Catalog Portal Widgets PRB2054951 |
ServiceNow Otto rebranding for catalog item slot-fill | This is a product update. | |
|
Service Catalog PRB2054931 |
ServiceNow Otto rebranding for catalog item generation with Text2Catalog family support | This is a product update. | |
|
Service Level Management PRB2001036 |
In SLACalculatorNG, an unbounded schedule/DurationCalculator cache causes memory growth during bulk SLA recalculation | During bulk SLA recalculation, SLACalculatorNG accumulates one GlideSchedule and one DurationCalculator instance per unique schedule+time zone combination into unbounded object maps (this.schedules and this.durationCalculators). These maps are never evicted and grow proportionally to the number of distinct schedule/time zone pairs encountered across all task_sla records in the query. In instances with many SLA definitions backed by different schedules, this results in unbounded heap growth for the lifetime of the bulk calculation, degrading instance performance and potentially causing out-of-memory conditions under load. |
Refer to the listed KB article for details. |
|
Service Mapping PRB2036299 |
After upgrading to Australia, parent.process.pid fails to resolve, which causes the 'Get Process' operation to return the full process list instead of the targeted parent process | The user can run a customized Tomcat WAR pattern for Service Mapping discovery. Following the Australia upgrade, step two of the 'Identification' section stops working during Service Mapping discovery. The step uses a 'Get Process' operation with process_id = get_attr {'parent.process.pid'} to locate the parent Windchill Java process. This expression fails to resolve, causing the step to run with no PID filter and return the entire process list on the host instead of the targeted parent process. |
Observe that the 'Get Process' operation returns the full process list from the host instead of the targeted parent process. |
|
ServiceNow SDK (Glide) PRB2013533 |
There's an unhelpful error when installing an app with an invalid scope prefix | Error: '[now-sdk] ERROR: Exception occurred while installing application/Unable to install application as application was null. Error: Exception occurred while installing application/nUnable to install application as application was null'. |
Create an app with now-sdk init without a valid auth saved. The resulting app has an x_ prefix and gives an error when trying to install on an instance. |
|
ServiceNow SDK (Glide) PRB2033218 |
Fluent App metadata deletions aren't propagated when installing from the app repo | The issue occurs because of missing sysmetadatadelete records. |
Expected behavior: The delete is applied and the metadata is removed. Actual behavior: The metadata is not removed. |
|
ServiceNow Studio (Family Channel) PRB2063560 |
True up the Glider Store app | ||
|
Service Portal PRB2056735 |
Update the accessibility voice-input toggle label in Service Portal for the Otto rename | As part of the 'Now Assist to Otto' rename, the accessibility toggle label must be updated in Service Portal. It's currently 'Enable voice input for Now Assist in Virtual Agent'. The new value will be similar to 'Enable voice input for ServiceNow Otto'. | |
|
Service Portal PRB2056737 |
Portal-core widget UI and theming for new Otto onboarding modal in the Service Portal | The modal introduces users to the ServiceNow Otto experience on first login. Because Lit-based workspace components can't be embedded in angular portals, a dedicated Service Portal implementation is required. The widget lives in the platform layer and is shared across all portals. No per-portal or user uptake is required. | |
|
Service Portal PRB2056743 |
Eligibility and admin control for new Otto onboarding modal | ||
|
Sidebar (Family Release) PRB2058602 |
Typing indicator no longer works |
Observe that there is no typing indicator. |
|
|
Software Asset Reconciliation PRB2000893 |
Recon updates are dropped by a database, causing license metric results (LMR) and product results to not update | ||
|
Software Lifecycles PRB2004396 |
A calculated lifecycle should consider other phase start dates before creation | ||
|
Software Lifecycles PRB2010294 |
Matching a common platform enumeration (CPE) to DMs should ignore CPEs that are version less | sn_itam_samp. MatchVulnerableSoftware ToDiscoveryModels should ignore CPEs that are a version less. Vulnerabilities are reported against versions of a product, but due to National Vulnerability Database (NVD) data or corrupted NVD data, CPEs may be a version less. | |
|
Software Lifecycles PRB2012476 |
Matching a common platform enumeration (CPE) to DMs should ignore CPEs edition and software edition | There are two Edition fields on CPE, 'Edition' and 'Software Edition'. It queries against both, but 'Edition' is a legacy and deprecated field from the old 2.2 standard. 'Software Edition' was introduced in 2.3. | |
|
Standard Ticket Page PRB2054934 |
ServiceNow Otto rebranding for Now Assist in 'Standard Ticket' page family | This is a product update. | |
|
Stream Connect Core PRB2019118 |
Generative AI logs are missing | ||
|
System Events PRB2003217 |
Fix behavior of event processing tables during the clone operation and clean up invalid records/jobs during the clean up script | During cloning on Zurich instances, events processing framework tables' configuration aren't preserved, causing errors in transaction logs due to orphan records for events jobs. An orphan record occurs when a sys_trigger record exists for an event processing job, but the corresponding entry in the sys_processing_framework_job table is missing. This causes the ProcessingFrameworkJob to fail when attempting to retrieve the scheduled job context. Log example: 'ProcessingFrameworkJob SEVERE ProcessingFramework > Failed to get the schedule job context'. | |
|
System Events PRB2007066 |
Check to correct Legacy and Delegated Flow Engine jobs that are created during Upgrade | This is a product update. | |
|
System Import Sets PRB2038233 |
JDBC connections are left dangling and unclosed | Every time the user issues a change credential signal to MID during a JDBC import, the number of open connections grows. |
Observe that the number of open connections grows each time. |
|
System Web Services PRB2029605 |
There's hourly recurring OAuth authentication failures on an outbound REST from ST ServiceNow to CG ServiceNow: 'User is not authenticated. OAuth token has expired or has not been retrieved' | The reported issue affects the outbound integration between ServiceNow and the external ServiceNow instance through the iPaaS layer using OAuth 2.0 Client Credentials authentication. The integration fails specifically during the final one-minute window before the OAuth access token expiration. During normal token validity, the integration works successfully. Starting one minute before token expiration, outbound calls from ServiceNow fail. Failures occur in: REST Message, REST API Step, Flow Designer executions, and custom scripts. Once the token fully expires, ServiceNow successfully retrieves a new token and the integration resumes functioning normally. | |
|
Territory Planning PRB2039182 |
Updating potential territories for a task doesn't work as expected | The Business Rule that updates the potential territories is currently triggered only when the location changes. It doesn't consider the consider_potential_territories _for_schedule_optimization boolean field. |
Expected behavior: The Business Rule that updates the potential territories should consider the consider_potential_territories _for_schedule_optimization boolean field. Actual behavior: The Business Rule that updates the potential territories is currently triggered only when the location changes and doesn't consider the consider_potential_territories _for_schedule_optimization boolean field. |
|
Time-Limited User Roles PRB1972197 |
When a user is logged in, updating an existing record with a new end time in the 'Time limited user roles' table causes never ending information messages on all pages |
Expected behavior: Users see an information message once. Actual behavior: Users see a message about roles that are granted or removed, but closing them isn't helping. |
|
|
Trace Collector - Family Release PRB2056896 |
Trace collector MID code | This is a product update. | |
|
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. | |
|
UI Actions PRB2051051 |
The field error message isn't shown when the error comes from the backend via business rule abortAction | The error message isn't shown for the short_description field in Australia. However, it's visible in Faster or PAXE Integration. |
Observe that the error message isn't shown for the short_description field. |
|
UI Field Administration PRB2054948 |
ServiceNow Otto rebranding for AI indicators, AI indicator pop-overs, and Task intelligence prediction | This is a product update. | |
|
UI Field Administration PRB2054949 |
IndexName GraphQL component and choice fallback | This is a product update. | |
|
UI Field Administration PRB2054953 |
Inject '*' options into composite_name table and field picker choice lists | This is a product update. | |
|
UI Form Administration PRB2019275 |
There's layout and scrollbar flickering when entering info, internal and external, in HTML Journal fields | There's layout and scrollbar flickering when entering info, internal and external, in HTML Journal fields, caused by automatic browser window resizing. The issue occurs randomly and is not related to a specific case or text size. |
Observe the flickering issue. |
|
UI Form Administration PRB2033143 |
The 'Preview this record' icon isn't working in the Safari browser | Selects on the button components and controls aren't working in Safari for UI16. This issue is only reproducible in the Safari browser. Non-Safari browsers aren't impacted and they don't face this issue. |
Refer to the listed KB article for details. |
|
UI Form Administration PRB2054945 |
Otto brand change in form notification messages | This is a product update. | |
|
UI Form Administration PRB2056498 |
The parentRecordSysId is missing from ORM Workspace payload template, so the getFilterQuery API breaks | The getFilterQuery REST API (/api/now/ related_list_item_filter/ getFilterQuery) is being updated to require four mandatory parameters: tableName, parentFieldName, parentRecordSysId, and referencedFieldName. The Configurable Workspace for Order Management (sn_app_orm_wksp) payload definition doesn't include parentRecordSysId in its payload template. Once the change occurs, any UI action using the payload receives a 400 error from the API. |
Observe that the call to /api/now/ related_list_item_filter/ getFilterQuery returns {'error': 'Invalid inputs'}. |
|
Upgrade Center PRB1950446 |
The 'Flow Designer' module directs to 'Page Not Found' after an instance upgrade on some nodes | The module redirects to 'Page Not Found' on some nodes after an instance upgrade. The main issue is that nodes tried to download app packages from Store, but Store responded with a 400 error because the platform version for the instance isn't updated on the Store end yet, and the request is considered incompatible. However, during an upgrade, it shouldn't request app packages from Store. | |
|
UX Framework PRB2026005 |
UXF should let the inbox know when the workspace is not the active experience | Currently, when the agent navigates from workspace to home, the inbox is still present in the DOM. Because of this, agents are still assigned work items even when they aren't in the workspace. | |
|
UX Framework PRB2035397 |
After typing in an input field on record page load, the focus shifts intermittently | After a few words, the focus shifts to the 'Tags' section and it continues to write in that section. |
Expected behavior: The user continues to type and the focus remains in the typing area. Actual behavior: After a few words, the focus shifts to the 'Tags' section and it continues to write in that section. |
|
UX Framework PRB2054946 |
Keyboard shortcut remapping for admins and users | This is a product update. | |
|
Virtual Agent PRB1980327 |
A chat dynamic greeting isn't localized correctly | The message doesn't go down the correct API path to resolve to sys_ui_message, so it can't honor the dynamic greeting. | |
|
Virtual Agent PRB2009200 |
For the 'Resume' flow, work notes are added as the guest user |
Expected behavior: Work notes should be added under the impersonated HR L1 worker. Actual behavior: Work notes are added under the guest user. |
|
|
Virtual Agent PRB2026682 |
Conversation history of language detection confirmation disrupts a user response | According to Search QnA, the prompt isn't structured to support the intermediate language selection turn. That should be removed from the conversation history. |
Expected behavior: The language should switch and the synthesized response should be displayed. Actual behavior: The language switches but the response is 'How can I help you with your laptop'. |
|
Virtual Agent PRB2031232 |
The 'Litjs' widget isn't displaying on the Now Assist panel | ||
|
Virtual Agent PRB2031583 |
Non-topic skills are dropped from the skill picker when all applicable topic skills have a visible design category | The picker shows the topic skills grouped under their design categories, but the non-topic skills are absent. No 'Others' category is created and the non-topic skills aren't rendered. |
Expected behavior: Non-topic skills appear in the picker regardless of whether the applicable topic skills all carry visible design categories. For example, they could appear under 'Others'. Actual behavior: Non-topic skills are omitted whenever there is more than one applicable topic skill and all applicable topic skills have a visible design category. |
|
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. |
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 |
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 |
Agent messages containing URLs aren't displaying correctly in the internal transcript |
Refer to the listed KB article for details. |
|
|
Virtual Agent PRB2054519 |
Rename five assistant names from 'Now Assist' to 'Otto' | The old assistant names should be renamed as following: 'Now Assist in Virtual Agent' > 'ServiceNow Otto for Virtual Agent', 'Now Assist Panel – Platform' > 'ServiceNow Otto panel – Platform', 'Now Assist Panel – Developer' > 'ServiceNow Otto panel – Developer', 'Now Assist Voice Deployment' > 'ServiceNow Otto voice', 'Now Assist in Virtual Agent - N' > 'New chat assistant - 1', and 'Now Assist Voice Development - N' > 'New voice assistant - N'. | |
|
Virtual Agent PRB2055706 |
Snc_internal role is missing on sys_cs_conversation write ACL when the 'Explicit Roles' plugin is also active | Since the snc_internal role is never associated to the ACL, any users with snc_internal role can't upload files from NextWave conversation experience. The /api/now/upload/attachment API checks for write access on the actual record itself before allowing file upload, so the upload API is failing. |
Observe that only the snc_external role is added. The snc_internal role is never associated to this ACL. |
|
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 PRB2057596 |
Rename 'Now Assist Virtual Agent' to Otto for topics in Glide | ||
|
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'. |
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. |
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. |
Observe that the managed_by = current user filter is correctly applied. |
|
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. |
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 |
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 PRB2061520 |
Calling the 'Bg channel' API with the same session ID isn't resuming the conversation |
Expected behavior: The conversation, which is waiting for input, should resume back. Actual behavior: Creating a conversation and execution plan with the workflow as 'Default VA Workflow'. |
|
|
Virtual Agent PRB2063396 |
Parallel tools execution aren't running in record domain | ||
|
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 | ||
|
Window Manager PRB2052078 |
Resize doesn't work at run time, only on creation time | The talk modal needs to be a fixed size. The user dragging it smaller breaks the layout, so the grip should be disabled at runtime. |
Try {canResize: false}. Expected behavior: The gripper disappears. Actual behavior: There's no change. |
|
Window Manager PRB2052105 |
SetWindowProperties ignores empty headingLabel and it can't clear a window's title at runtime | The previous title stays. '' and null are silent no-ops. |
Expected behavior: The heading clears, resulting in a blank title. Actual behavior: The previous title stays. '' and null are silent no-ops. |
|
Work Order Management PRB2035667 |
Intraday optimization is stuck in 'In progress' | During normal intraday runs with concurrent solution processing, the race condition between SolutionMetadataProcessor and SolutionProcessorSNC can cause lost updates on ml_solution.solution_metadata. This results in stuck in_progress records. |
Observe that some of the records remain stuck in the in_progress status indefinitely, even after all the solutions are processed or the records show no processed task counts, total task counts, and/or progress bar. |
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 11 Hotfix 2
- Zurich Patch 11 Hotfix 1
- Zurich Patch 11
- Zurich Patch 10 Hotfix 5
- Zurich Patch 10 Hotfix 4a
- Zurich Patch 10 Hotfix 4
- Zurich Patch 10 Hotfix 3a
- Zurich Patch 10 Hotfix 3
- Zurich Patch 10
- Zurich Patch 9 Hotfix 6
- Zurich Patch 9 Hotfix 5
- Zurich Patch 9
- Zurich Patch 8 Hotfix 5
- Zurich Patch 8
- Zurich Patch 7b Hotfix 3
- Zurich Patch 7
- Zurich Patch 6
- Zurich Patch 5
- Zurich Patch 4
- Zurich Patch 3
- Zurich Patch 2
- Zurich Patch 1
- Zurich security and notable fixes
- All other Zurich fixes