{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":42942,"path":"release-notes/australia-patch-5.md","title":"Australia Patch 5","bundle":null,"doc_type":null,"release":"australia","body":"\n# Australia Patch 5\n\nThe Australia Patch 5 release contains important problem fixes.\n\n-   **Australia Patch 5 was released on August 7, 2026.**\n    -   Build date: 08-03-2026\\_1111\n    -   Build tag: glide-australia-02-11-2026\\_\\_patch5-07-20-2026\n\n**Important:** For more information about how to upgrade an instance, see [ServiceNow upgrades](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/upgrade.md).\n\nFor more information about the release cycle, see the [ServiceNow Release Cycle](https://support.servicenow.com/kb_view.do?sysparm_article=KB0547244).\n\n**Note:** This ServiceNow AI Platform® major family release is now available in ServiceNow's Regulated Market environments. For more information about services available in isolated environments, see [KB0743854](https://support.servicenow.com/kb_view.do?sysparm_article=KB0743854).\n\nFor a downloadable, sortable version of the fixed problems in this release, click [here](https://downloads.docs.servicenow.com/enus/australia/rn/patches/PRBs-A05.00.xlsx).\n\nAustralia Patch 5 includes 539 problem fixes in various categories. The chart below shows the top 10 problem categories included in this patch.\n\n\\[Omitted image \"prb-chart-ap5.png\"\\] Alt text: Fixed issues grouped by problem categories bar chart\n\n## Security-related fixes\n\nAustralia Patch 5 includes fixes for security-related problems that affected certain ServiceNow® applications and the ServiceNow AI Platform®. We recommend that customers upgrade to this release for the most secure and up-to-date features. For more details on security problems fixed in Australia Patch 5, refer to [KB3138411](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3138411).\n\n## Changes in Australia Patch 5\n\n-   **[Adoption Services release notes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/adoption-services-rn.md)**\n-   **[Configure](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-user-interface/configure.md)**\n\n    When sn\\_dyn\\_guidance\\_user role is assigned, it also includes the genai\\_admin role.\n\n    **Note:** The genai\\_admin role does not grant administrative privileges.\n\n-   **[Integration Hub release notes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/integration-hub-rn.md)**\n-   **[Integration Hub Usage Dashboard](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/integrate-applications/integrationhub-usage-dashboard.md)**\n\n    The Integration Hub Usage Dashboard provides reports of usage by protocol. For more information about the service accounts contributing to each protocol, see [Monitor inbound API integration usage](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/api-reference/web-services/inbound-api-integration-usage-dashboard.md).\n\n-   **[Kafka SSL credentials fields](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/it-operations-management/hla-data-input-kafka-credentials.md)**\n\n    Updates to OAUTHBEARER, Token endpoint URL, Client ID, Client Secret, Scope, and OAUTH extensions.\n\n-   **[Monitor inbound API integration usage](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/api-reference/web-services/inbound-api-integration-usage-dashboard.md)**\n\n    Monitor inbound integration usage requests, data egress, and domain-level usage through the Inbound API Integration Usage dashboard.\n\n-   **[Predictive Intelligence release notes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/predictive-intelligence-rn.md)**\n\n    The sys property ML Trainer - Glide communication KAA \\(glide.platform\\_ml.kaa\\_auth\\_enabled\\) implements KAA validation when mTLS is enabled.\n\n-   **[Properties for Identification and Reconciliation](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/servicenow-platform/properties-id-reconciliation.md)**\n\n    glide.identification\\_engine.batch\\_update\\_last\\_discovered.use\\_execute\\_lazy\n\n    Sets IRE mode for processing batch updates of the discovery timestamp fields **first\\_discovered** and **last\\_discovered**.\n\n    For optimized performance, when IRE processes CI records, it updates discovery timestamp fields in batches. This property controls when these batch updates are executed.\n\n    -   **true**\n\n        IRE defers database updates and uses batched operations, which improves performance.\n\n        Usage:\n\n        -   For standard production operations\n        -   When performance is critical\n        -   When no race conditions are observed\n    -   **false**\n\n        IRE processes updates synchronously without delay, ensuring immediate database consistency.\n\n        Usage:\n\n        -   When race conditions between discovery and CI deletion exist\n        -   A deletion strategy is aggressively removing recently discovered CIs\n        -   If immediate timestamp consistency is required\n    General details:\n\n    -   Type: true \\| false\n    -   Default: true\n    -   Learn more: \n    -   Location: [Add to System Properties \\[sys\\_properties\\]](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/t_AddAPropertyUsingSysPropsList.md) table.\n-   **[Properties for Identification and Reconciliation](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/servicenow-platform/properties-id-reconciliation.md)**\n\n    glide.identification\\_engine.batch\\_update\\_last\\_discovered.use\\_execute\\_lazy\n\n    Sets IRE mode for processing batch updates of the discovery timestamp fields **first\\_discovered** and **last\\_discovered**.\n\n    For optimized performance, when IRE processes CI records, it updates discovery timestamp fields in batches. This property controls when these batch updates are executed.\n\n    -   **true**\n\n        IRE defers database updates and uses batched operations, which improves performance.\n\n        Usage:\n\n        -   For standard production operations\n        -   When performance is critical\n        -   When no race conditions are observed\n    -   **false**\n\n        IRE processes updates synchronously without delay, ensuring immediate database consistency.\n\n        Usage:\n\n        -   When race conditions between discovery and CI deletion exist\n        -   A deletion strategy is aggressively removing recently discovered CIs\n        -   If immediate timestamp consistency is required\n    General details:\n\n    -   Type: true \\| false\n    -   Default: true\n    -   Learn more: \n    -   Location: [Add to System Properties \\[sys\\_properties\\]](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-administration/t_AddAPropertyUsingSysPropsList.md) table.\n-   **ServiceNow AI Platform core feature release notes**\n-   **[ServiceNow Vault roles](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-security/vault-roles.md)**\n\n    Learn and set up the roles necessary to use ServiceNow Vault.\n\n-   **[Using Dynamic Guidance](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/platform-user-interface/using-dynamic-guidance.md)**\n\n    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.\n\n-   **[View Inbound API Integration Usage dashboard](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/api-reference/web-services/view-inbound-api-integration-usage-dashboard.md)**\n\n    View integration request counts, data egress volume, and domain-level usage.\n\n\n## Notable fixes\n\nThe following problems and their fixes are ordered by potential impact to customers, starting with the most significant fixes.\n\n<table id=\"notable-fixes\" class=\"custom-rows\"><thead><tr><th class=\"filter\">\n\nProblem\n\n</th><th>\n\nShort description\n\n</th><th>\n\nDescription\n\n</th><th>\n\nSteps to reproduce\n\n</th></tr></thead><tbody><tr><td>\n\nDatabase Persistence - WDF\n\n PRB2024733\n\n [KB3137449](https://hi.service-now.com/kb_view.do?sysparm_article=KB3137449)\n\n</td><td>\n\nReports containing reference-type catalog item variables \\(lookup\\) fail to render data after upgrading to the Australia release\n\n</td><td>\n\nAfter upgrading to the Australia release, reports that contain reference-type catalog item variable columns fail to render data correctly. The affected reference-type variables don't resolve their lookup values, and their presence in the report additionally causes all other columns — including native table fields such as **Number**, **Created**, and **Closed** — to render as empty across all rows.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nKey Management Framework \\(KMF\\) for Platform Encryption\n\n PRB2058369\n\n [KB3140571](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140571)\n\n</td><td>\n\nMID Server is unable to fetch credentials after upgrading to Zurich or Australia\n\n</td><td>\n\nIn 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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nMulti-Instance Framework\n\n PRB2040054\n\n [KB3119447](https://hi.service-now.com/kb_view.do?sysparm_article=KB3119447)\n\n</td><td>\n\nThere's a flood of 'Unable to find vtable operation for operation id \\{\\}' messages that's generating millions of records in an instance for every Flow Designer execution\n\n</td><td>\n\nIn a cloned instance, the root cause of the flood of errors messages 'Unable to find vtable operation for operation id \\{\\}' in the syslog is sn\\_mif\\_vtable\\_ operation\\_context.vtable \\_operation is empty.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nNow User Experience\n\n PRB2038702\n\n [KB3134148](https://hi.service-now.com/kb_view.do?sysparm_article=KB3134148)\n\n</td><td>\n\nA scoped public UI page isn't accessible without a login unless 'Name' is used vs a scoped endpoint in a sys\\_public record\n\n</td><td>\n\nIt should be accessible without a login, so a user can complete the authentication from Outlook.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nSystem Events\n\n PRB1969068\n\n</td><td>\n\nThe 'Events process 0' job yields to memory pressure, causing event processing delays\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTable Rotation\n\n PRB1959672\n\n [KB3071677](https://hi.service-now.com/kb_view.do?sysparm_article=KB3071677)\n\n</td><td>\n\nShard tables aren't created on an initial plugin install\n\n</td><td>\n\nWhen a plugin is manually installed, shard tables aren't created automatically.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nUX Framework\n\n PRB2027095\n\n [KB3102030](https://hi.service-now.com/kb_view.do?sysparm_article=KB3102030)\n\n</td><td>\n\nThe 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\n\n</td><td>\n\nWhen 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 Glide​Ux​Component​ Def​Provider.​ get​Asset​Names ​By​Component​Sys​Ids\\(\\)​ 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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr></tbody>\n</table>## All other fixes\n\n<table id=\"AllOtherFixes\" class=\"custom-rows\"><thead><tr><th class=\"filter\">\n\nProblem\n\n</th><th>\n\nShort description\n\n</th><th>\n\nDescription\n\n</th><th>\n\nSteps to reproduce\n\n</th></tr></thead><tbody><tr><td>\n\nActivity Stream\n\n PRB2027954\n\n</td><td>\n\nAn activity filter's field's slushbucket initially has every field selected when the glide.​ui.​\\{table\\}​\\_​activity.​fields property doesn't exist\n\n</td><td>\n\nFor non-task tables with an empty 'glide.​ui.​&lt;table&gt;​\\_​activity.​fields' property, 'Filter​Field​Repo.​get​Table​Property​Filters\\(' returned a hardcoded 'DEFAULT\\_FIELDS' constant. This default set was designed for task tables and didn't reflect the actual fields on the table, causing incorrect or missing fields in the activity stream.\n\n</td><td>\n\n1.  Verify that the record is a non-task table record.\n2.  Verify that the glide.​ui.​\\{table\\}​\\_​activity.​field isn't set.\n3.  On an instance, in UI16, create a interaction record.\n4.  Select the **Filter Activity** button, all of the fields should be selected.\n5.  Select the **Configure fields** to bring up that the slushbucket now aligns with the fields in the 'Filter Activity'.\n\n</td></tr><tr><td>\n\nActivity Stream\n\n PRB2040417\n\n</td><td>\n\nThe **Copy** button on the VTB view can't access copyJournalContent or GlideUIDefault\n\n</td><td>\n\nThe content doesn't get copied to the clipboard API and doesn't show the 'Copied to clipboard' notification.\n\n</td><td>\n\n1.  On any instance, navigate to **All** &gt; **Visual Task Boards**.\n2.  Create a freeform board.\n3.  Add a card on the newly-created board.\n4.  Open the card and add a work note or comment.\n5.  Select the **Copy journal content** button.\n\n Expected behavior: The content is copied to the clipboard API and shows a 'Copied to clipboard' toast.\n\n Actual behavior: The content doesn't get copied to the clipboard API and doesn't show the 'Copied to clipboard' notification.\n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2021594\n\n</td><td>\n\nAn agent chat box isn't enabled when work is offer re-routed post blind queue transfer\n\n</td><td>\n\nIn most recent Australia release, ServiceNow 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2031080\n\n</td><td>\n\nSetting 'Disable agent inactivity check for API' to true makes the presence states disappear from the presence state picker in workspace's inbox\n\n</td><td>\n\nThe presence state picker should display all available states, even when 'Disable agent inactivity check for API' is set to true.\n\n</td><td>\n\n1.  Log in to an instance.\n2.  Navigate to the awa\\_presence\\_state table.\n3.  Select **Update Personalized List** using the gear icon.\n4.  Add the 'Disable agent inactivity check for API' column to the list view.\n5.  Set the value of 'Disable agent inactivity check for API' to true for the 'Available' presence state.\n6.  Navigate to Service Operations Workspace \\(SOW\\).\n7.  Select the inbox icon.\n\nThe 'Available' option isn't displayed.\n\n8.  Set the value of 'Disable agent inactivity check for API' back to false for the 'Available' presence state.\n\n See that the 'Available' option is displayed in the SOW presence state picker.\n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2033499\n\n</td><td>\n\nImprove the presence state picker in workspace's inbox based on the new flag 'show\\_in\\_workspace' instead of 'Disable agent inactivity check for API'\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2051353\n\n</td><td>\n\nAgent presence indicator should be shown in the 'Transfer to Agent' list for third party\n\n</td><td>\n\nWhen searchTargetList is set, a list of agents is shown, but there's no presence indicator.\n\n</td><td>\n\n1.  Create and offer a third party messaging interaction to a CSM Agent.\n2.  Select the **Transfer to Agent** quick action.\n\n Expected behavior: It shows a list of agents along with presence indicator when searchTargetList is set.\n\n Actual behavior: It shows a list of agents with no presence indicator when searchTargetList is set.\n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2052028\n\n</td><td>\n\nIntegration users can't read sys\\_cs\\_conversation\\_member for creating wrap up segment\n\n</td><td>\n\nThe 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'.\n\n</td><td>\n\n1.  Create a third party messaging interaction.\n2.  Offer to a CSM Agent.\n3.  Call REST API to create a wrap up segment for that interaction and agent.\n\n Expected behavior: The wrap up segment is created and the API returns success.\n\n 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'.\n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2055561\n\n</td><td>\n\nRename Now Assist, Moveworks and AI experience to ServiceNow Otto\n\n</td><td>\n\nThe **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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2055562\n\n</td><td>\n\nRename of Now Assist, Moveworks and AI experience to ServiceNow Otto\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2058031\n\n</td><td>\n\nAdd a missing flag on 'Requires ACL authorization'\n\n</td><td>\n\nA 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgent Chat\n\n PRB2063949\n\n</td><td>\n\nSome messages are hidden on the agent's side when hideControl is true and contains searchText\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAgile Development\n\n PRB2026219\n\n</td><td>\n\nThe **Group capacity** field is read only in sprint records\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to an instance.\n2.  Navigate to the table 'rm\\_sprint.list'.\n3.  Open any sprint record.\n\n Note that **Group capacity** \\(points\\) is read-only.\n\n</td></tr><tr><td>\n\nAI Agents \\(Glide Family\\)\n\n PRB2034699\n\n</td><td>\n\nGenAIMetadata M2MDaoImpl createAIAGenAI MetadataM2M doesn't assert that the genAILogId parameter is not NULL\n\n</td><td>\n\nThis causes a full table scan of the sys\\_gen\\_ai\\_ log\\_metadata table. This code is invoked by the AsyncMessageProcessor.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Agents \\(Glide Family\\)\n\n PRB2037758\n\n</td><td>\n\nAI Agents randomly throw a tool execution error: 'Failed to execute async FDIH tool'\n\n</td><td>\n\nAt 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'.\n\n</td><td>\n\n1.  Log in to an instance.\n2.  Invoke the Quote AI agent.\n3.  Input a multi-paragraph, conversational prompt.\n\n 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'.\n\n</td></tr><tr><td>\n\nAI Agents \\(Glide Family\\)\n\n PRB2051367\n\n</td><td>\n\nTTL isn't honored in sys\\_​og\\_​conversational \\_​cache\\_​configuration in the absence of any other invalidation rule\n\n</td><td>\n\nThe persona section doesn't show the new memories immediately, but they're visible after 24 hours.\n\n</td><td>\n\n1.  Set up LTM extraction on Glide \\(enable sys\\_prop use\\_new\\_ltm\\).\n2.  Set up DARE with memory enabled \\(in pipeline.yaml, set enable\\_user\\_persona\\).\n3.  Create a conversation with some details that are a candidate for LTM extraction \\(for example, 'I like cycling'\\).\n4.  Verify that memories are extracted \\(the ltm job runs every hour\\).\n5.  After new memories have been extracted, check the persona section.\n\n Observe that it doesn't show the new memories. However, they will be visible after 24 hours.\n\n</td></tr><tr><td>\n\nAI Agents \\(Glide Family\\)\n\n PRB2059351\n\n</td><td>\n\nRecord scope should override the user session scope\n\n</td><td>\n\nFor 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Agents \\(Glide Family\\)\n\n PRB2059390\n\n</td><td>\n\nRole masking isn't unset when running a workflow\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Experience Framework - Glide\n\n PRB2034740\n\n</td><td>\n\naiux\\_service/ chat\\_check\\_access should work with the default experience name to query the deployment document ID\n\n</td><td>\n\nThere should be a way to query by experience name so that there is no need to force pass a sys\\_id each time.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Experience Framework - Glide\n\n PRB2036766\n\n</td><td>\n\nExperience cache population only emits the default theme\n\n</td><td>\n\nMulti-theme \\(user-criteria\\) themes are missing from the edge cache, so targeted users get the wrong theme.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Experience Framework - Glide\n\n PRB2061584\n\n</td><td>\n\nTrue-up the AI UX Builder Store app\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Gateway - Security\n\n PRB2052119\n\n</td><td>\n\nAs part of the name change, update error strings in MCPOAuthConstants.java that reference 'Now Assist' to 'ServiceNow Otto'\n\n</td><td>\n\nThe changes will be made in Zurich and Australia. Also, an additional change is needed for the description in glide/glide-ai-security-scan.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB1859571\n\n</td><td>\n\nA search retrieval agent returns an incorrect catalog item URL\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB2052168\n\n</td><td>\n\nNo\\_answer Genius Result is streamed intermittently\n\n</td><td>\n\nA Genius Result rarely shows, but it should not show at all.\n\n</td><td>\n\n1.  Navigate to /sp.\n2.  Search for something that gives a no\\_answer result, like 'baseball world series'.\n\n Observe that a Genius Result rarely shows. It should not show at all.\n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB2054276\n\n</td><td>\n\nThe fix script shouldn't backfill non-default sources\n\n</td><td>\n\nWhen the user upgrades to an instance with additional sources in the multi-content feature, the additional sources are marked as 'Included'.\n\n</td><td>\n\nUpgrade an instance without additional sources in the multi-content feature to a version with the feature.\n\n Observe that the additional sources are marked as 'Included'.\n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB2054932\n\n</td><td>\n\nIn Moveworks API V2, support linking ServiceNow Security Center \\(SSC\\) to a search profile\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB2054938\n\n</td><td>\n\nFor the Moveworks API V2, return chunks when passing an additional flag\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search \\(Glide\\)\n\n PRB2058047\n\n</td><td>\n\nIndexing with multiple semantic indexing configurations with the same name on different models isn't working\n\n</td><td>\n\nWhen 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 are not visible in get​Semantic​Index​Field​Mapping\\(\\)​.​ 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 get​Semantic​Index​Field​Mapping\\(\\)​.​\n\n</td><td>\n\n1.  Create two active ais\\_​semantic\\_ ​index\\_​configuration records on the same datasource with the same semantic\\_field\\_name but different embedding\\_models values.\n2.  Add valid component fields via ais\\_semantic\\_ component\\_field for each record and set a valid semantic\\_​ snippetization\\_​configuration.​\n3.  Flush the datasource object cache \\(Ais​Configuration​ Cache​Manager.​ flush​Datasource​ Object​Cache\\(\\)​\\)​.​\n4.  Call Ais​Configuration.​ get\\(\\)​.​get​Semantic​ Index​Field​Mapping\\('kb\\_​knowledge',​'kb\\_​knowledge'\\)​.​\n\n Observe that only one SemanticFieldConfiguration is returned for semantic\\_search and the other is silently dropped.\n\n</td></tr><tr><td>\n\nAI Search\n\n PRB1875924\n\n [KB3137872](https://hi.service-now.com/kb_view.do?sysparm_article=KB3137872)\n\n</td><td>\n\nAI 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\n\n</td><td>\n\n \n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nAI Search\n\n PRB1902419\n\n</td><td>\n\nThe conversation ID isn't logged to the sys\\_search\\_event table\n\n</td><td>\n\n \n\n</td><td>\n\n1.  On an AI Search-enabled instance, start a new chat with Virtual Agent \\(VA\\).\n2.  Enter 'what is spam'.\n3.  Flush queued signals.\n4.  Open the sys\\_search\\_event table, and if necessary, add the **Conversation ID** field to the list/form.\n\n Expected behavior: Since it was from VA, there should be a conversation.\n\n Actual behavior: The conversation ID is empty.\n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2004411\n\n</td><td>\n\nRefactor the synthesized Genius Result presence filter from Data Broker into the Java layer\n\n</td><td>\n\nCurrently, 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.\n\n</td><td>\n\n1.  Review the Data Broker transform at sys\\_ux\\_data\\_ broker\\_transform\\_ 0c735fb4530422104 accddeeff7b12dd.xml\\#L44.\n2.  Observe that the conditional filter that gates execution of the synthesized Genius Result on its presence.\n3.  Note that this filter only applies to clients using this specific Data Broker transform; it isn't enforced at the Java/API layer.\n\n 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.\n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2014714\n\n</td><td>\n\nIgnore Genius Result's limit for citations in sync mode\n\n</td><td>\n\n \n\n</td><td>\n\n1.  On an AI Search enabled instance with synthesized response configured for portal, navigate to a portal and complete a query that yields a synthesized response.\n2.  Set the system property 'glide.​ais.​query.​ disable\\_​async\\_​mode' to true.\n3.  Do same search in portal.\n\nThe user should still get a synthesized response.\n\n4.  Open the search application \\(presumably NAVA\\) and set the Genius Result limit to 1.\n5.  Do the same search in portal.\n\n Expected behavior: Users still get a synthesized response.\n\n Actual behavior: No Genius Result renders because of no citations.\n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2038703\n\n</td><td>\n\nInstance creation failure for com.​glide.​search.​ graphql.​query.​ Suggestions from service portal's typeahead AIS Suggestions API\n\n</td><td>\n\nWhen 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'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2054213\n\n</td><td>\n\nURLs with special characters like $ break streaming for non-Virtual Agent clients\n\n</td><td>\n\nStreaming starts successfully, but it stops partway through and the full answer is never rendered.\n\n</td><td>\n\n1.  Open an AIS-enabled instance.\n2.  Make sure 'Synthesized Response' is enabled in portal.\n3.  Navigate to the portal with Now Assist enabled.\n4.  Search for 'How can I reset my password?'.\n\n Expected behavior: The full answer streams successfully.\n\n Actual behavior: Streaming starts successfully, but it stops partway through and the full answer is never rendered.\n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2054952\n\n</td><td>\n\nRename Now Assist to Otto within AI Search components\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2056856\n\n</td><td>\n\nReplace the sparkle icon animation with the Otto animation for synthesized Genius Results \\(GR\\)\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open an instance with multi-content GR configured.\n2.  Navigate to portal/global search.\n3.  Search for a query that returns a synthesized GR.\n4.  Check the loader in the GR component when the loading state is showing.\n\n Expected behavior: The loader state shows the Otto animation.\n\n Actual behavior: The loader state shows the sparkle icon animation.\n\n</td></tr><tr><td>\n\nAI Search UX\n\n PRB2057349\n\n</td><td>\n\nRename Now Assist to Otto for typeahead suggestions\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAlumni Center\n\n PRB2054850\n\n</td><td>\n\nAdd a null check when using getRefRecord\\(\\)\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAnalytics Data API\n\n PRB1973007\n\n</td><td>\n\nThe Platform Analytics 'pivot table' unit type doesn't persist\n\n</td><td>\n\nWhen creating a pivot table using two tables as the data sources, the 2nd and 3rd columns swap their values.\n\n</td><td>\n\n1.  Create a pivot table visualization within a dashboard.\n2.  Add in two tables as data sources.\n3.  Create four columns on the pivot table, with the first two column being a count of each respective table and the last two columns a sum of all the values with other columns.\n4.  Save the visualization.\n5.  Exit editing mode.\n6.  Refresh the dashboard.\n\n When the order of the columns is the count of table 1, count of table 2, sum of table 1's column, sum of table 2's column, and when users refresh the dashboard, the 2nd and 3rd columns values swap, with the values from column 3 appearing in column 2 and vice versa.\n\n</td></tr><tr><td>\n\nAnalytics Data API\n\n PRB2039649\n\n</td><td>\n\nThe Platform Analytics dashboard ignores the data source filter\n\n</td><td>\n\nThe '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.\n\n</td><td>\n\n1.  Open an instance.\n2.  Create an indicator scorecard visualization.\n3.  Select **Number of Incidents** as the data source.\n4.  Apply a source condition using the 'Is one of' operator.\n5.  Select the required priority values.\n\n Expected behavior: Only the selected priority is reflected.\n\n Actual behavior: All priorities are reflected in the indicator scorecard visualization.\n\n</td></tr><tr><td>\n\nAnalytics Data API\n\n PRB2050449\n\n</td><td>\n\nNext Experience Widgets load with an 'Unable to generate chart' error\n\n</td><td>\n\nThe error reads: 'Error Unable to generate chart. Cannot invoke 'com.glide. glideobject. GlideDateTime.after \\(com.​glide.​ glideobject. ​Glide​Date​Time\\)​' because 'scoresModifiedAt' is null.'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAnalytics Data API\n\n PRB2053974\n\n</td><td>\n\nBubble chart bubbles render horizontally in Platform Analytics Workspace \\(PAW\\) instead of distributed across both X and Y axes\n\n</td><td>\n\nAfter upgrading to Australia, bubble charts in PAW now render bubbles horizontally \\(all on Y = -1\\) instead of being distributed diagonally across both X and Y axes as expected. The same configuration in the Classic Reporting module \\(sys\\_report.LIST\\) correctly displays bubbles distributed across both axes. The bubbles are rendering and not stacking, but the axis distribution logic differs between PAW and Classic Reporting. In Classic Reporting, bubbles are positioned diagonally across both X and Y axes. Each rating value \\(Dissatisfied, N/A, Satisfied, Very Satisfied\\) appears at a distinct \\(X, Y\\) coordinate pair. In PAW, all bubbles are rendered on the same horizontal line \\(Y = -1\\), with X-axis variation only. There's no Y-axis differentiation.\n\n</td><td>\n\n1.  Navigate to **Platform Analytics** &gt; **Library** &gt; **Data Visualizations**.\n2.  Select **Create data visualization**.\n3.  Choose **Bubble** as the data visualization type.\n4.  Add the asmt\\_metric\\_result table as the data source.\n5.  Add a custom condition: Metric is 'How likely is it that you would recommend this service to others?'.\n6.  Select **Run** and then add this source.\n7.  In the 'Dimensions' section, set the **Group by** to 'Metric definition' and apply.\n8.  Select **Run**.\n\n Expected behavior: Bubbles should be distributed across both X and Y axes, matching the Classic Reporting output. Each unique combination of Row \\(Actual Value\\) and Column \\(Actual Value\\) should result in a distinct \\(X, Y\\) coordinate pair on the visualization.\n\n Actual behavior: All bubbles are aligned horizontally at Y = -1, with X-axis values varying. The chart is unreadable and does not match the intended visualization.\n\n</td></tr><tr><td>\n\nAnalytics Export API\n\n PRB2021342\n\n</td><td>\n\nThe email layout in an Platform Analytics scheduled export doesn't match the received email format\n\n</td><td>\n\nPlatform Analytics scheduled reports aren't honoring the email body configured when the field **omit\\_if\\_no\\_records** is true.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nApplication Install Engine\n\n PRB2056922\n\n</td><td>\n\nInstall engine reads the dependencies from package.json with a fall back to the previous way when not available\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nApplication Manager\n\n PRB2022268\n\n</td><td>\n\nThe application manager sys\\_app\\_version displays duplicate records for the same application and version, which is causing the app to be 'Installation blocked'\n\n</td><td>\n\nAs 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.\n\n</td><td>\n\n1.  Navigate to an instance.\n2.  Navigate to App Manager.\n3.  Open any app \\(for example, sn\\_ai\\_itsm\\_cont\\) which is licensed and validated on CI \\(usageanalytics\\) prod, but has yet showed 'Not Licensed'.\n4.  Select **Install**.\n5.  It just fails with 'Installation blocked' on that app itself.\n6.  Open sys\\_app\\_version table.\n7.  Check the app/scope id.\n\n Expected behavior: It should have only one record for that app and a specific app version.\n\n Actual behavior: It has multiple records for the same app and app version.\n\n</td></tr><tr><td>\n\nApplication Manager\n\n PRB2057729\n\n [KB3140027](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140027)\n\n</td><td>\n\nUsers can't publish custom-scoped applications after upgrading to Zurich or Australia\n\n</td><td>\n\n \n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nAsset Management Common\n\n PRB2024372\n\n</td><td>\n\nRelated lists aren't rendered in Hardware Asset Workspace despite existing in an configuration\n\n</td><td>\n\nCertain related lists such as 'Hardware', 'Software licenses', 'Bundles', and 'Other' assets aren't displayed in Hardware Asset Workspace even though they are present in the Workspace configuration. Analysis confirmed that the related lists exist in the latest configuration \\(physical\\_asset\\_workspace view\\) and are conditionally loaded. The issue results in only a subset of related lists being visible in Hardware Asset Workspace while others remain hidden.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAsset Management\n\n PRB2025075\n\n [KB3052414](https://hi.service-now.com/kb_view.do?sysparm_article=KB3052414)\n\n</td><td>\n\nA catalog task isn't created in Hardware Asset's refresh flow\n\n</td><td>\n\nThere's similar issues with the other flows as well, like transfer order, transfer order line, and contract approval.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nAsynchronous Message Bus \\(AMB\\)\n\n PRB2040279\n\n</td><td>\n\nAdd bearer token authentication support to Asynchronous Message Bus \\(AMB\\) client library\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAuthentication Factors\n\n PRB2037251\n\n</td><td>\n\nUpdate interactions post-identification and authentication\n\n</td><td>\n\nThe 'Interactions' table has only 'Guest' resolved. It should have the user reference resolved post-identification and authentication.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAuthentication Factors\n\n PRB2066684\n\n</td><td>\n\nMatch KB identification phone numbers are ignoring special characters\n\n</td><td>\n\nQuestions with the category 'phone number' aren't matched against formatted stored phone numbers during voice agent identification flow.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAutomated Test Framework \\(ATF\\)\n\n PRB2012913\n\n</td><td>\n\nTests fail with an error: 'Timed out waiting for intent feedback &lt;Intermittent, slow loading forms, SAP&gt;'\n\n</td><td>\n\nWhen Automated Test Framework \\(ATF\\) sends an intent to the UXF framework, the intent is received by UXF but is silently terminated/consumed without any feedback being returned to the caller. There's no success response, failure response, error message, or 'action not available' status sent back. Because of this, ATF can't determine whether the request failed due to unsupported actions, missing configuration, processing errors, or temporary issues. This prevents ATF from performing retries, fallback handling, or proper error recovery.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nAutomated Test Framework \\(ATF\\)\n\n PRB2017949\n\n</td><td>\n\nThere's stuck execution trackers due to Automated Test Framework \\(ATF\\)'s new feature metadata tracing\n\n</td><td>\n\nFor 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.\n\n</td><td>\n\n1.  Ensure that metadata tracing is on.\n2.  Run a test on a table with a long name \\(such as 'sys\\_og\\_conversational \\_cache\\_configuration', more than 40 characters\\).\n\n 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.\n\n</td></tr><tr><td>\n\nBusiness Calendar Filter Options\n\n PRB1977276\n\n</td><td>\n\nFilter values included with the 'Fiscal Calendar' \\(com.snc.fiscal\\_calendar\\) plugin aren't translated\n\n</td><td>\n\nFilter values included with the 'Fiscal Calendar' \\(com.snc.fiscal\\_calendar\\) plugin aren't translated when users change their language preferences. If a user switches to French \\(Canada\\), the filter value 'Next 3 fiscal months' should be translated as 'es 3 prochains mois fiscaux'. However, if a user switches to French \\(Canada\\), the filter value 'Next 3 fiscal months' is actually translated as '3 Fiscal Months suivant'. There are multiple other filter values included with the plugin that are affected.\n\n</td><td>\n\n1.  Provision an instance with a language other than English and the 'Fiscal Calendar' \\(com.snc.fiscal\\_calendar\\) plugin installed.\n2.  In English, open any list that can use 'Fiscal Calendar' list filters for a date range.\n3.  Set the language to anything other than English.\n4.  Refresh the page.\n\n Notice that the filter value still displays some of the text in English.\n\n</td></tr><tr><td>\n\nCanonicalization Data Services \\(CDS\\)\n\n PRB2053470\n\n</td><td>\n\nData uploaded to cds\\_server\\_staging table is blocked within instances\n\n</td><td>\n\nThis issue occurs in instances where the property 'glide.cmdb.canonical.URL' is set to https:​/​/​&lt;instance\\_​name&gt;​.​service-​now.​com/​ and ends with '/'. Unfortunately, that is the base instance value, and it affects the upload portion of CDS.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCase and Knowledge Management for HR Service Delivery\n\n PRB2023216\n\n</td><td>\n\nShip the required RCAs per the analysis result\n\n</td><td>\n\nAlso, analyze those RCAs for which the analysis result said not to ship. Trigger automation and verify the result if there are any failures.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCase and Knowledge Management for HR Service Delivery\n\n PRB2023219\n\n</td><td>\n\nShip the required RCAs as per the analysis result\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCase and Knowledge Management for HR Service Delivery\n\n PRB2025681\n\n</td><td>\n\nDue to 'getRefRecord', a RCA is generated in the Oracle HCM job execution that should be marked as 'Allowed'\n\n</td><td>\n\nDue to the use of 'getRefRecord' in the script include, a RCA record is generated with the source scope as: 'HR Service Delivery integration with Oracle HCM'. the target scope as 'Human Resources: Core', the target as: 'Table: HR Profile', and the operation as 'Read' after running the Oracle HCM job. This RCA should be marked as 'Allowed' and pushed to the repo.\n\n</td><td>\n\n1.  Provision an instance with Oracle HCM related plugins installed.\n2.  Navigate to the Oracle HCM Cloud Integration Source record.\n3.  Ensure that on the Integration Service record, **Workers** is active.\n4.  Select the **Run Job** button.\n\n After some time, the RCA record is generated when 'Job Transform Map' starts running. This RCA is created by the source 'Script Include: OracleHCMJob TransformHelperSNC' where 'getRefRecord' is used.\n\n</td></tr><tr><td>\n\nCase and Knowledge Management for HR Service Delivery\n\n PRB2028299\n\n [KB3061412](https://hi.service-now.com/kb_view.do?sysparm_article=KB3061412)\n\n</td><td>\n\nIn Platform Analytics, an ACL isn't letting an admin user modify or create data visualizations in dashboards or data visualizations\n\n</td><td>\n\nWhen editing any visualization in a dashboard with the sn\\_hr\\_er\\_case table as a data source, the visualization can't access its data source. As a result, metrics are turned off and can't be edited, preventing updates or modifications to the visualization. There is error: 'You don't have access to the data source used in this visualization'.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nCase and Knowledge Management for HR Service Delivery\n\n PRB2055197\n\n</td><td>\n\nIn Alumni Center, update RCAs in HR Core for the getRefRecord\\(\\) for Australia\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nChange Management\n\n PRB2035555\n\n</td><td>\n\nThe 'All' filter on the 'Create Change' page doesn't display all standard change templates when a template has no category or catalog\n\n</td><td>\n\nWhen the 'All' filter is selected for standard change templates on the 'Create Change' page, not all templates are displayed. This is because one template has no category. The null category errors the 'can category be read by user' check.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nChange Management\n\n PRB2035924\n\n [KB3093597](https://hi.service-now.com/kb_view.do?sysparm_article=KB3093597)\n\n</td><td>\n\nStandard changes created from a problem aren't linked to the parent task\n\n</td><td>\n\nThe issue is reproducible if users untick the 'Two step' checkbox under **Change** &gt; **Administration** &gt; **Standard Change Properties** and then perform **cache.do** &gt; **Clear Cache**. 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nChange Management\n\n PRB2052987\n\n</td><td>\n\nNewChangeRedirectProcessor only checks the system-wide glide.ui.polaris.experience property and ignores per-user glide.ui.polaris.use preference when deciding Next Experience redirect for Create Change\n\n</td><td>\n\nThe file app-itsm/glide-service-mgt/ src/main/plugins/ com.snc.change\\_request/ update/sys\\_processor\\_ 0af16f2d53631010 34d1ddeeff7b12b6.xml \\(NewChangeRedirectProcessor, path new\\_change\\_redirect\\), line 76: var polarisEnabled = 'gs.​get​Property\\('glide.​ui.​polaris.​experience',​ false\\) === 'true';' — only reads instance-wide sys\\_property, ignores per-user preference glide.ui.polaris.use \\(sys\\_user\\_preference table\\), the documented mechanism for per-user Next Experience toggle. The user opted out at a user level, but still was redirected into Next Experience's create-change flow when the system property is on. polarisEnabled check should account for both glide.ui.polaris.experience \\(system\\) and glide.ui.polaris.use \\(user preference\\) — not the system property alone.\n\n</td><td>\n\n1.  Turn on the system property glide.ui.polaris.experience = true and com.​snc.​change\\_​ request.​next\\_​ create\\_​page = true.\n2.  Set the sys\\_user\\_ preference glide.ui.polaris.use = false for a specific test user \\(system unchecked, User = test user\\).\n3.  Log in as that user.\n4.  Trigger **Create New Change** \\(module or UI action\\) so the request hits the new\\_change\\_redirect processor.\n5.  Observe the redirect.\n\n Expected behavior: The redirect respects the user-level opt-out and goes to sn\\_chg\\_model \\_ui\\_landing.do \\(UI16\\).\n\n Actual behavior: The redirect goes to now/​change-​management/​create-​change/​ \\(Next Experience\\), ignoring the user preference.\n\n</td></tr><tr><td>\n\nChange Management\n\n PRB2053039\n\n</td><td>\n\nIn the 'Change risk assessment' answer generator skill flow, replace the Now Assist terminology with Otto rebranding\n\n</td><td>\n\nThe suggestion message should contain 'Check answers generated by AI for accuracy'.\n\n</td><td>\n\n1.  Navigate to **SOW** &gt; **Change Request**.\n2.  Select **Assess Risk** in the 'Overview' tab.\n3.  Select **Generate Answers**.\n4.  Wait until risk assessment completes answer generation.\n5.  Open risk assessment.\n\n Observe that the suggestion message doesn't contain 'Check answers generated by AI for accuracy'.\n\n</td></tr><tr><td>\n\nCMDB Identification and Reconciliation\n\n PRB2021886\n\n</td><td>\n\nNull dbquery results must be preserved as null instead of wrapped\n\n</td><td>\n\n \n\n</td><td>\n\nRun a payload for a non-existing table that has a sys\\_id in the payload.\n\n Where encryption wrappers are constructed, dbq.execute\\(\\) would normally return null when querying this non-existent table. Now, code is wrapping the null.\n\n</td></tr><tr><td>\n\nColumn Level Encryption\n\n PRB2005360\n\n</td><td>\n\nOn an encrypted **HTML** field, getElement\\(fieldName\\) returns a GlideElement with a value of 'null' instead of an empty string \\(''\\), causing the condition ge == null to evaluate as true\n\n</td><td>\n\nThe field value conversion logic checks for encryption before validating whether the value exists. When encryption is enabled on an empty field, the system attempts to process a null value through the encryption path, which returns the literal string 'null' instead of handling it as an empty value.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCondition Builder\n\n PRB2054935\n\n</td><td>\n\nCreate a sys property to determine the Glide version for condition builder\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB1994587\n\n</td><td>\n\nA race condition between IRE LazyWriter and Deletion Strategy causes the configuration item \\(CI\\) state to flip incorrectly\n\n</td><td>\n\nA 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2017559\n\n</td><td>\n\nThe health configuration cache is ineffective due to a shared cache eviction\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Create health configuration rules and observe the cache entry through cache\\_inspect.do.\n2.  Create a pressure on the system to cause cache eviction.\n\n 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.\n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2020295\n\n</td><td>\n\nINSERT\\_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\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2021367\n\n</td><td>\n\nImplement totals calculation for the group view when applying a class filter qualifier configuration\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2026628\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass due to directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2030304\n\n</td><td>\n\nOrphanProcessor skips CIs and reprocesses records after batch timeouts due to unordered HashMap iteration\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n1.  Set up a class with a large enough population of orphan CIs such that processing exceeds five minutes.\n2.  Trigger the CMDB Health orphan batch job.\n3.  Allow the job to run until the five minute batch timeout fires MID-loop.\n4.  Observe the checkpoint value stored in MetricProcessorStatus for that class — it's an arbitrary sys\\_id, not the lexicographically highest one processed.\n5.  On the next scheduled run, observe that orphan CIs with sys\\_ids smaller than the stored checkpoint are not evaluated and not reported as failures.\n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2037178\n\n</td><td>\n\nA relationship editor \\(child\\) entry incorrectly displays a '\\*' suggested marker when only the parent direction is configured in cmdb\\_rel\\_type\\_suggest\n\n</td><td>\n\nAfter upgrading from Yokohama to Australia, the CI relationship editor's 'Suggested relationship types' list displays both the parent and child directions of a configured suggested relationship with the '\\*' suggested marker, even when only one direction was configured in the cmdb\\_rel\\_type\\_suggest table. For example, a cmdb\\_rel\\_type\\_suggest record is created with base\\_class = Windows Server, dependent\\_class = Business Service, and direction Connects to \\(parent\\). When the relationship editor is opened for a Windows Server CI, the list shows two entries instead of one: \\* Connects to::Connected by \\(Parent\\) and \\* Connects to::Connected by \\(Child\\). Both entries appear with the leading \\*, suggesting both directions are configured. Only the \\(parent\\) direction was actually configured. Users selecting from the suggested list can't distinguish which direction was the configured one. Because the list is sorted alphabetically and the \\(Child\\) entry sorts before \\(Parent\\), the misleading default selection can result in CI relationships being created in the inverse direction of the customer's intent — silently introducing incorrect CMDB data. The \\* suggested marker should only appear on the direction that is actually configured in cmdb\\_rel\\_type\\_suggest. The \\(Child\\) entry for a parent-only suggested relationship should either not appear in the suggested-marker group, or appear without the \\* prefix.\n\n</td><td>\n\n1.  Navigate to the 'Suggested Relationships' module.\n2.  Insert a record using an unused relationship.\n3.  Open the relationship editor from the relationships formatter on a Windows server CI.\n\n Expected behavior: Only the added suggested relationship from one direction is expected.\n\n Actual behavior: Observe two relationship choices for the relationship.\n\n</td></tr><tr><td>\n\nConfiguration Management Database \\(CMDB\\)\n\n PRB2052583\n\n</td><td>\n\nReferences to 'Now Assist' for the duplicate CI remediator should be renamed to Otto\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConnections and Credentials\n\n PRB2034770\n\n</td><td>\n\nA scoped app is unable to update the http\\_connection record\n\n</td><td>\n\nScoped applications need to update http\\_connection records that they themselves created and own. Because the table-level ACL blocks all cross-scope writes, there's currently no supported path for a scoped app to modify its own connection records. The http\\_connection table is a platform \\(global\\) table whose cross-scope access policy grants only read access to all application scopes. In the earlier ServiceNow-managed scoped app flow, Claroty CTD via Service Graph Connector relied on the existing platform-owned Connection and Credential creation path to create http\\_connection and related credential records. The available scriptable sn\\_cc.ConnectionBuilder APIs cover create scenarios such as createConnectionAlias and createConnectionAndCredential, so the absence of a scoped update path didn't surface when the use case was limited to creation.\n\n</td><td>\n\n1.  Navigate to Service Graph Connector for Claroty CTD.\n2.  Create a connection with the provided connection\\_url.\n\n Expected behavior: It should be able to update the connection record for the child sys\\_alias's http\\_connection record.\n\n Actual behavior: Updating on http\\_connection isn't allowed from any scoped app due to tables's cross-scope access policy.\n\n</td></tr><tr><td>\n\nContent Experiences\n\n PRB2036902\n\n</td><td>\n\nA change in HRApprovalAccessUtilsSNC causes schedule content approvals to fail without a new RCA\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Provision an instance with HR Core installed.\n2.  Create a schedule with approvers such that one rejection rejects the whole schedule.\n3.  Approve any number of the requests, saving at least one \\(0:X-1\\).\n4.  Reject one.\n\n Expected behavior: The schedule is rejected as normal.\n\n Actual behavior: An RCA error occurs.\n\n</td></tr><tr><td>\n\nContent Experiences\n\n PRB2054955\n\n</td><td>\n\nRCA for app-ex-ai-agents in Content Publishing for the getRefRecord directive\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nContract Management\n\n PRB2040201\n\n [KB3140742](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140742)\n\n</td><td>\n\nAssets covered on a contract aren't added through an Multiple Record Associator \\(MRA\\) pop-up\n\n</td><td>\n\nIn 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nContracts Core\n\n PRB2036700\n\n</td><td>\n\nAdd the needed RCA as part of the getRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nConversational Appointment Booking\n\n PRB2054247\n\n</td><td>\n\nTrue-up Conversation Appointment Booking for GetRefRecord directive changes\n\n</td><td>\n\nAfter making the required changes as part of the directive, all the three flows \\(schedule an appointment, reschedule an appointment and cancel an appointment\\) should work when the caller scope access is restricted.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCustomer Operations for Customer Service Management\n\n PRB2035611\n\n</td><td>\n\nFix GetRefRecord scoping bypass\n\n</td><td>\n\nOn CSManagementUtils, guard the getRefRecord\\(\\) result before calling getLabel\\(\\) to prevent an error when a reference field has no associated record. Also, on CSQueryBRUtil, add a null check on entityGR before calling isValid\\(\\) to prevent an error during dot-walked field validation.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCustomer Service Case Action Status\n\n PRB2011771\n\n</td><td>\n\nKeep the 'Major Case' related list consistent in app-csm-action-status and app-major-issue-management\n\n</td><td>\n\nIf users reinstall or upgrade app-csm-action-status again after Major Case is installed, the related list on Major Case is different. The newly added-in app-major-issue-management is gone.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nCustomer Service Management\n\n PRB2002976\n\n [KB3141009](https://hi.service-now.com/kb_view.do?sysparm_article=KB3141009)\n\n</td><td>\n\nAn advanced qualifier reference that uses 'current' isn't functioning as expected in CSM Workspace\n\n</td><td>\n\nAdvanced 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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nDatabase Persistence - Data Access\n\n PRB2013282\n\n</td><td>\n\nColumns are created with a 'u\\_' prefix\n\n</td><td>\n\nAfter Table​Schema​Manager .​alter\\(\\)​.​execute\\(\\)​ adds a column, TableDescriptor returns the new column but the column name is different from what was supplied. The new column was created with a 'u\\_' prefix in the column name. This behavior is different from table creation, where columns are created with exactly the same name supplied for column\\_name.\n\n</td><td>\n\n1.  Alter a table using the 'Table Management' API.\n2.  Add a column.\n\n Expected behavior: Create a column exactly as specified.\n\n Actual behavior: It adds a 'u\\_' prefix to the column.\n\n</td></tr><tr><td>\n\nDatabase Persistence - Data Dictionaries\n\n PRB2050936\n\n</td><td>\n\nLet the 'Table Management' Java API create a table/column in a scope without a scope prefix\n\n</td><td>\n\nMetricBase must create tables in the DEX scope without applying the scope prefix, as it applies the mb\\_ prefix to metricbase table. The API should be changed and require a scope object by default.\n\n</td><td>\n\nUse the TableManagement Java API to create a table in any custom scope.\n\n Observe that a scope prefix is added to the table.\n\n</td></tr><tr><td>\n\nDatabase Persistence - Data Scale\n\n PRB1942731\n\n</td><td>\n\nIf sequences exist to reduce redundant queries, SequenceAtomicCounter.get could cache\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2026586\n\n</td><td>\n\ntoLower\\(\\) and toUpper\\(\\) functions aren't supported in WHERE and RETURN\n\n</td><td>\n\nAfter creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferrable 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2026589\n\n</td><td>\n\nCOUNT\\(DISTINCT x\\) can't be represented with GraphQueryBuilder API\n\n</td><td>\n\nAfter creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferrable 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2026590\n\n</td><td>\n\nORDER BY isn't stored in Encoded QueryModel\n\n</td><td>\n\nAfter creating a query with GraphQueryBuilder, users of GraphQueryBuilder API should be able to get the encoded query representation as a transferrable 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2040734\n\n</td><td>\n\nSys\\_class\\_name doesn't come as property from getForTables\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2051205\n\n</td><td>\n\nInline node properties in the cypher are dropped in the encoded query when using with useCypher\\(\\)\n\n</td><td>\n\nIf there are inline properties in the cypher passed to useCypher, the returned encoded query doesn't contain that query.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2052676\n\n</td><td>\n\nCache flushes are triggered, even when the cache is not used/populated\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - Graph\n\n PRB2053774\n\n</td><td>\n\nSupport initializing GraphQueryBuilder with a cypher query string via the JavaScript API\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence\n\n PRB2029202\n\n [KB3092221](https://hi.service-now.com/kb_view.do?sysparm_article=KB3092221)\n\n</td><td>\n\nRaptorDB has an auto-increment column reset with a '0' value\n\n</td><td>\n\n \n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nDatabase Persistence - WDF\n\n PRB1931544\n\n</td><td>\n\nUsers should be warned/blocked from setting up a reference field that is ineligible\n\n</td><td>\n\nAs of Australia, it currently enforces the reference key assignment only in the WDF Hub mapping page and not on sys\\_dictionary or sys\\_db\\_object. When creating/editing the remote table through the hub, there's a method called 'com.glide.datafabric. schemamapping. Remote​Table​Def\\#validate​Reference'.​ This method verifies that the reference table and the reference key are valid. If the reference table table doesn't exist/cannot be accessed, or if the reference key's data type is not in the list of allowed types, it blocks the table from being created/updated and throws an error message to the user in the UI. Following this approach, it can add the null value check in this method and throw the appropriate error message to the user.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - WDF\n\n PRB2038399\n\n</td><td>\n\nThere's a pagination issue\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open the 'List' view of a data interface.\n2.  Order by one column.\n3.  Navigate to the next page.\n4.  Check the data.\n\nThe same page is displayed.\n\n\n See that the limit isn't applied to the query.\n\n</td></tr><tr><td>\n\nDatabase Persistence - WDF\n\n PRB2040034\n\n</td><td>\n\nIn Australia, all database columns that start with a number have 'yy\\_' added to the start of the name, causing a syntax error\n\n</td><td>\n\nWhen querying a table in the Australia release and the DB column starts with a number, it adds a 'yy\\_' to the SQL query, breaking the collection of data and making a list view show nothing. Error: 'Syntax Error or Access Rule Violation detected by database \\(ERROR: column x\\_​snc\\_​potatofarm \\_​0\\_​farmers0.​yy \\_​1stname does not exist. Hint: Perhaps you meant to reference the column 'x\\_​snc\\_​potatofarm \\_​0\\_​farmers0.​1stname'.​ Position: 259\\)'.\n\n</td><td>\n\n1.  Create a scoped app.\n2.  Create a table.\n3.  Create some data on that table.\n4.  Add a column that name starts with a number.\n5.  Navigate back to the list view.\n\n See that its blank, but the count displays that there's records.\n\n</td></tr><tr><td>\n\nDatabase Persistence - WDF\n\n PRB2050923\n\n</td><td>\n\nProvide unified server-side API's fetch primary key details for Data Fabric and standard ServiceNow tables\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDatabase Persistence - WDF\n\n PRB2052538\n\n</td><td>\n\nData interface tables are unable to fetch data with remote table as the implementation\n\n</td><td>\n\nCurrent remote table support requires that the vtable is provider backed.\n\n</td><td>\n\n1.  Open a remote table.\n2.  Create a data interface table with the fields matching with the remote table.\n3.  Navigate to 'Interface M2M'.\n4.  Configure the m2m mappings.\n5.  Navigate to the &lt;new\\_table&gt;\\_list.do.\n\n Expected behavior: The table displays the data.\n\n Actual behavior: No data is displayed.\n\n</td></tr><tr><td>\n\nData Fabric Table Glide Services\n\n PRB2018015\n\n</td><td>\n\nThe Zero Copy Connector \\(ZCC\\) Hub UI becomes unresponsive/times out if a large number of schemas and tables are retrieved\n\n</td><td>\n\nWhen large amounts of schemas and tables \\(~20k\\) are retrieved in an API call, the function 'refreshSchemasAndTables\\(\\)' takes a long time to execute compared to the underlying persistence API 'GlideDataFabric EngineService. getInstance\\(\\). getAllTablesForCatalo'. This is on the magnitude of 2.25 seconds vs 40 seconds.\n\n</td><td>\n\n1.  Navigate to ZCC Hub on an instance.\n2.  Create a connection with large number of schemas and tables \\(~20k schemas and tables\\).\n\n Expected behavior: The 'Data Assets' page loads schemas and table and is responsive.\n\n Actual behavior: The 'Data Assets' page times out during loading.\n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2031050\n\n</td><td>\n\nThe 'Run Once Data Privacy' job takes days to complete after segment creation on large tables \\(300M+ records\\)\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Provision an instance with the Data Privacy plugin installed on a large clone.\n2.  Set up a privacy configuration on a table with a large number of records \\(300M+\\).\n3.  Configure a 'Run Once' dp\\_job and trigger it.\n\n Expected behavior: The job should complete within a few hours after segment creation \\(dp\\_work\\_item\\).\n\n Actual behavior: The job takes days to complete.\n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2031271\n\n</td><td>\n\nRollback of a scheduled anonymization job doesn't refresh the activity stream UI for **Journal** fields \\(work\\_notes, comments\\)\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n1.  Open an instance with Data Privacy enabled.\n2.  Configure a scheduled anonymization job targeting **Journal** fields \\(**work\\_notes**, **comments**\\) on the Incident table.\n3.  Run the anonymization job.\n4.  Confirm the fields are masked in both the database and the UI.\n5.  Execute a rollback of the anonymization job.\n6.  Verify in sys\\_journal\\_field that the original values have been restored.\n7.  Navigate to the affected Incident record in both UI16 and Service Operations Workspace.\n\n Observe that the activity stream still displays the anonymized values even though the database was reverted.\n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2032551\n\n [KB3140437](https://hi.service-now.com/kb_view.do?sysparm_article=KB3140437)\n\n</td><td>\n\nLLM prompt creation takes ~800 ms, though it used to be 200-300 ms\n\n</td><td>\n\nThe root cause was determined as the introduction of 'Sensitive Data Trail system processors', which had a large default timeout \\(20 seconds\\). The processors were scanning all 32 data patterns on an prompt of ~130K characters, taking an additional ~400 ms in latency.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2039058\n\n</td><td>\n\nReal time anonymization \\(RTA\\) for child tables separate from parent tables\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2039332\n\n</td><td>\n\nIncrease the maximum size limit of the incoming request to Data Privacy APIs from 1M to 10M\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nData Privacy \\(Classic\\)\n\n PRB2040595\n\n</td><td>\n\nPost-clone anonymization of child workers is incorrectly cancelled due to parent job type mismatch\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nData Product Backend Services\n\n PRB2027724\n\n</td><td>\n\nUsers are unable to edit reference type details on DTT when editing a data interface\n\n</td><td>\n\nThere's no error, but it doesn't work.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nData Snapshots\n\n PRB1995292\n\n</td><td>\n\nA data snapshot indicator timeseries API returns empty data instead of the expected single-span score when the request startTime and endTime are the same date\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Configure a data snapshot indicator \\(pa\\_datasnapshot\\_indicator\\) with a boolean condition.\n2.  Send a POST request to /api/now/analytics/data with a timeseries data configuration where:\n    1.  The startTime and endTime are set to the same date/time\n    2.  A business calendar is used\n    3.  The date falls within a valid span for that calendar period\n3.  Observe the API response data array.\n\n Expected behavior: The API returns the single-span score for the calendar period that covers the requested date.\n\n Actual behavior: The API returns an empty data array — the single span covering the requested date is silently truncated/ignored.\n\n</td></tr><tr><td>\n\nDate Picker\n\n PRB2029576\n\n [KB3061444](https://hi.service-now.com/kb_view.do?sysparm_article=KB3061444)\n\n</td><td>\n\nThere's a regression on GlideDateTime.setDisplayValue\n\n</td><td>\n\nAny 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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056900\n\n</td><td>\n\nGlide changes for machine learning integration needed for Distinguished Encoding Rules \\(DER\\) mining\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056902\n\n</td><td>\n\nInstrument 'Ask For' approval action Instance Observer \\(IO\\) during flow execution for context graph tracing\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056905\n\n</td><td>\n\nRate-limited flow trace eligibility evaluation\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056908\n\n</td><td>\n\nScaffolding for the decision-graph module\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056910\n\n</td><td>\n\nCache decision weightage for a low-latency runtime lookup\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDecision Graph for Context Engine \\(Family\\)\n\n PRB2056912\n\n</td><td>\n\nAdding or deleting a feature dictionary should make mined patterns inactive\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDeclarative Actions\n\n PRB2055766\n\n</td><td>\n\nThe related list UI actions to update rows are failing on m2m if the field being updated is read-only\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Navigate to **Hardware Asset Workspace** &gt; **Inventory** &gt; **Disposal order**.\n2.  Create a disposal order.\n3.  Navigate to the related list.\n4.  Add an asset to the disposal order.\n5.  Open **Verify task** from the related list.\n6.  Select the row.\n7.  Select **Verify**.\n\n Observe that the action fails to update.\n\n</td></tr><tr><td>\n\nDeveloper App Shell\n\n PRB2052364\n\n</td><td>\n\nFix GetRefRecord scoping bypass\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDeveloper Sandboxes\n\n PRB2054240\n\n</td><td>\n\nThe 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\n\n</td><td>\n\n \n\n</td><td>\n\n1.  On a multi-node instance \\(50+ nodes\\), turn on Developer Sandboxes.\n2.  Create at least 20-30 sandboxes.\n3.  Multiple isolated sys\\_triggers should exist in the sandboxes.\n4.  Pull stats.​do?​include=​otel.​scheduler\\* on the sandbox's node.\n\nObserve that claim\\_lock\\_time averages above one second \\(expected ~13ms\\), jobs\\_lateness averaging 300+ seconds, and worker capacity used is very low.\n\n5.  Compare against a controller node on the same instance.\n\nClaim\\_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.\n\n\n</td></tr><tr><td>\n\nDevOps Change Velocity\n\n PRB2052626\n\n</td><td>\n\nGetRefRecord scoping bypass for the 6.2.1 release\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDiscovery\n\n PRB2015204\n\n</td><td>\n\nUpdate the IP address to retired when the network interface card's \\(NIC\\) is updated to 'Retired'\n\n</td><td>\n\nIn the IP-Based Discovery plugin, the business rule \\(BR\\) 'Discovery - Set IP Address to Absent' only sets the IP address to absent. When the NIC is retired, it doesn't set the IP address to 'Retired', leaving orphaned or outdated IP addresses. The BR should handle the retired scenario as well.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDiscovery\n\n PRB2023232\n\n</td><td>\n\nSome Sybase processes running on Linux don't meet the classifier conditions to trigger the sybase pattern, resulting in an incomplete Discovery\n\n</td><td>\n\nThe Sybase Process classifier has these conditions: Command contains 'dataserver', parameters contains 'sqlsrvr', and parameters matches regex '-\\[Dd\\]\\\\s+'. The regex breaks down as follows: -\\[Dd\\]\\\\s+ matches a literal hyphen, \\[Dd\\] matches either uppercase D or lowercase d, and \\\\s+ matches one or more whitespace characters \\(space, tab, etc.\\). It matches a hyphen, followed by D or d, followed by at least one space. If a process running returns a parameters string starting with \\['parameters':​'-​d/​data/​master.​dat\\]​ this doesn't meet the condition for this regex and the pattern doesn't trigger, despite the process being a valid Sybase process.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDiscovery\n\n PRB2029641\n\n</td><td>\n\nUpdate Store app true-up for ITOM Licensing Store app 3.13.0\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDiscovery\n\n PRB2059465\n\n</td><td>\n\nDiscovery patterns fail to launch for sub-accounts/datacenters when glide.​discovery.​ retire\\_​stale\\_​accounts is turned on\n\n</td><td>\n\nIn Cloud Discovery, schedules configured to discover all sub-accounts under a master account, with enabling glide.​discovery.​retire\\_​stale\\_​accounts and glide.​discovery.​cdu.​ auto\\_​refresh\\_​sub\\_​accounts \\_​and\\_​ldcs , Discovery patterns fail to launch for sub-accounts/datacenters \\(only the service account discovery launches\\).\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDocument Management\n\n PRB2056202\n\n</td><td>\n\nReplace 'Now Assist' and 'Sparkle' with 'ServiceNow Otto' in screenshots, images, and icon assets\n\n</td><td>\n\nAll 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDocument Management Services\n\n PRB2039067\n\n</td><td>\n\nSmart redaction with redaction codes and notes for documents\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDocument Management Services\n\n PRB2056919\n\n</td><td>\n\nSmartDocs enablement in UI16 and ServicePortals\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDocument Viewer\n\n PRB2056915\n\n</td><td>\n\nSupport in document viewer for the doc to voice agent\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDynamic Schema\n\n PRB2037531\n\n</td><td>\n\nThere's failing DynamicSchema aggregate ITs\n\n</td><td>\n\nIn Australia, in the db-dynamic-schema-test package, the following ITs are failing: DynamicSchemaAggregatesIT and DynSchQueryAggregates\\*IT. The expression added to the GROUP BY isn't listed in the SELECT clause.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nEmail Notifications\n\n PRB1948259\n\n</td><td>\n\nSelectAll and **Delete** buttons aren't working in Email Viewer\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Log in as an admin user.\n2.  Navigate to CSM Workspace and open a case record.\n3.  From mini composer, send an email with some documents attached.\n4.  Update the email status to 'sent' from send-ready in the sys\\_email.list table.\n5.  Open the email from the 'Emails' tab in the case record.\n\nThe email opens in the Email Viewer view\n\n\n Expected behavior:**SelectAll** should select all the attachments. The **Delete** button should delete the selected attachments.\n\n Actual behavior:**SelectAll** isn't selecting all the attachments. The **Delete** button isn't functioning properly.\n\n</td></tr><tr><td>\n\nEmail Notifications\n\n PRB2001946\n\n</td><td>\n\nThe **RemoveAll** button shouldn't be present in the email viewer\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Log in as an admin user.\n2.  Navigate to Customer Service Management workspace.\n3.  Open a case record.\n4.  From the mini composer, send a email with some documents attached.\n5.  Update the email status to 'sent' from send-ready in the sys\\_email.list table.\n6.  Open the email from the 'Emails' tab in the case record.\n7.  Select **Select All**.\n8.  Select the **3 dots** and verify.\n\n Expected behavior: The **RemoveAll** button shouldn't be present in the email viewer.\n\n Actual behavior: The **RemoveAll** button is visible in the email viewer.\n\n</td></tr><tr><td>\n\nEmail Notifications\n\n PRB2019162\n\n</td><td>\n\nIntroduce batch support for subscriptions in NotificationRecipientBuilder\n\n</td><td>\n\nNotification events are taking a longer time to process \\(5-7 seconds\\).\n\n</td><td>\n\n1.  Log in to an instance.\n2.  Create a subscribable notification record.\n3.  Create 1800+ subscriptions.\n4.  Trigger a notification.\n\n Expected behavior: The notification should be sent to all recipients without much delays.\n\n Actual behavior: The notification is generated but its processing consumed a significant amount of time.\n\n</td></tr><tr><td>\n\nEmail Notifications\n\n PRB2036855\n\n</td><td>\n\nAgent workspace case emails display multiple 'To' names if the email recipient has multiple contact records\n\n</td><td>\n\nIf 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.\n\n</td><td>\n\n1.  Navigate to customer\\_contact table.\n2.  Create multiple contact records with the same name and email address, but a different user ID.\n3.  Navigate to CSM workspace.\n4.  Create a case.\n5.  Add one of the contacts created as the case contact.\n6.  Send an email to that contact.\n7.  Open the sent email.\n\n Expected behavior: Only one contact is displayed in the**To** field.\n\n Actual behavior: The**To** field lists all the contacts with the same name and email address.\n\n</td></tr><tr><td>\n\nEmail Notifications\n\n PRB2050616\n\n</td><td>\n\nEmail client APIs shouldn't be public\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nEmbedded Help\n\n PRB2056339\n\n</td><td>\n\nReplace all occurrences of 'Now Assist' text with 'AI' across the Help Center and embedded help\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open Help Center or embedded help.\n2.  Open a document that was created using AI-generated help.\n\n Observe that 'Now Assist' text is displayed for AI-generated help articles.\n\n</td></tr><tr><td>\n\nEmployee Profile\n\n PRB2011497\n\n</td><td>\n\nThere's a dot-walking RCA error when moving from the 'Learning' scope to the 'Employee profile' scope\n\n</td><td>\n\nAn attempt to dot-walk to table sn\\_employee\\_profile present in the 'Employee profile' scope from the 'Learning' scope was blocked. The reference field employee belongs to the sn\\_lep\\_challenge table. The operation type was: GET\\_REF\\_RECORD.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nEmployee Profile\n\n PRB2021875\n\n</td><td>\n\ngetRefRecord\\(\\) changes for Opportunity Marketplace \\(OPM\\) and TD Core in Employee Profile\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nEvent Management\n\n PRB2034593\n\n</td><td>\n\nAn event field mapping rule from the type 'Map field' using regex causes an error in event processing\n\n</td><td>\n\nWhen having an event field mapping rule from type 'Map field' using regex and a matching event is processed, if the **Additional info** field contains the source field JSON as the value, the event finishes in an error state.\n\n</td><td>\n\n1.  Create some event field mapping rule from the type 'Map field' using regex.\n2.  Create an event with **Additional info** containing nested JSON, where one of the keys matches the regex and its value is a JSON object.\n\n Expected behavior: Event processing should complete successfully without errors and an alert should created.\n\n Actual behavior: Event processing fails, and the event is moved to the error state.\n\n</td></tr><tr><td>\n\nEvent Management\n\n PRB2052731\n\n</td><td>\n\nRemove the step in mixed grouping that allows alerts to join existing groups before the grouping definitions are run in order\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Create two grouping definitions, Definition A and Definition B, with Definition A placed ahead of Definition B in the rule order.\n2.  Send alerts A1 and A2 that fit Definition B.\n3.  Wait for the grouping job to run.\n4.  Create Group B.\n5.  Send alerts A3 and A4 that fit both Definition A and Definition B.\n6.  Wait for the grouping job to run.\n7.  Check which group A3 and A4 end up in.\n\n Expected behavior: A3 and A4 form a new group created under Definition A, because Definition A comes first in the rule order.\n\n Actual behavior: A3 and A4 are added to the existing Group B.\n\n</td></tr><tr><td>\n\nEvent Management\n\n PRB2053524\n\n</td><td>\n\nAzure monitor for 'Issue' integration, and UI enhancements in Express List and alert record\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nField Service Task Bundling\n\n PRB2064856\n\n</td><td>\n\nDynamic bundling creates unassigned bundles\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Verify that Dynamic Scheduling, Task Bundling, and Task Grouping plugins are active.\n2.  Enable the sys\\_property 'com.snc.dynamic. scheduling.bundle\\_ before\\_scheduling'.\n3.  Set the Task Grouping rules \\(Same Location\\) and policy.\n4.  Create two work order tasks \\(WOT\\) in the draft.\n5.  Once the WOTs are moved to the 'Qualified \\(Pending Dispatch\\)' state, the tasks should be bundled using Dynamic Bundling and Dynamic Schedule the tasks automatically.\n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB1943894\n\n</td><td>\n\nLooping over records using 'built in iterator' is significantly slower than the normal GlideRecord iteration\n\n</td><td>\n\nFlow engine should take a similar amount of time to iterate over records and script or Java when no quiescing occurs, but run times are 16.8x - 73.6x slower.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2001686\n\n</td><td>\n\nThere's multiple queries to fetch a flow plan record\n\n</td><td>\n\nWhen the plan isn't cached, it takes two queries. When run again with the plan already cached, it takes only one query.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2001694\n\n</td><td>\n\nReduce multiple sys\\_flow\\_context select queries\n\n</td><td>\n\nIn GlideRecord, before updating, it queries to get the DB state of the record to populate the 'previous' object for business rules. This can be avoided if 'fPopulatePrevious FromMemory' is set to true. It can be set by calling Glide​Record:​:​ set​Populate​Previous​ From​Memory.​\n\n</td><td>\n\n1.  Create any simple flow.\n2.  Execute it in background scripts.\n\n Observe that there is 'select query' before every update.\n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2029887\n\n</td><td>\n\nFlow engine is ~200x slower than the equivalent script on 1000 elements, as eager Val.displayValue dominates input wrapping for large collections\n\n</td><td>\n\nA flow that takes a large ComplexObjectCollection as input executes ~200x slower than the equivalent Rhino background script doing the same work. For a 1000-element ForEach input, per-invocation wall-clock is ~143 ms \\(vs ~0.7 ms for the equivalent script\\). The slowdown scales with the input collection size; small inputs are affected less, but flows that pass large lists as input are heavily impacted even on the user-default execution path \\(reporting off, trace off\\). There's no functional break as the flow produces correct output, but the per-invocation cost is dominated by work that the engine never reads on the default path.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2034134\n\n</td><td>\n\n'Require' statements throw a JavaScript exception error in Australia's Flow Designer\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2038121\n\n</td><td>\n\nRestore the Flow Engine FlowObjectDef cache\n\n</td><td>\n\nThis removes redundant sys\\_hub\\_action \\_type\\_definition read per quick-action execution.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2054195\n\n</td><td>\n\nThe 'ForEach' iteration on GlideRecord does eager canRead checks on all the records\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Create a subflow.\n2.  Add a **lookuprecords** action on the sys\\_user table with active = true and a max count of 10.\n3.  Add ForEach flow logic with the input as lookuprecords output.\n4.  Add a log inside ForEach.\n\n In GRProxy, before starting the loop it internally loops over all the records in GlideRecord and collects sys\\_ids and skipped counts by doing a canRead check.\n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2054201\n\n</td><td>\n\nIntroduce a cache in FlowRecompileChecker\n\n</td><td>\n\nThe eviction policy is too broad for execution settings in ProcessPlanCache. Any change to any execution setting evicts all plans but should only effect one. Instead, it should evict a process plan directly when its execution settings change.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlow Engine\n\n PRB2062691\n\n</td><td>\n\nAction Fabric flow complexity is insufficient for pricing estimation exercises\n\n</td><td>\n\nThe complexity\\_bucket attribute contains values grouped into bucket\\_0\\_10, bucket\\_11\\_50, and likely no other buckets.\n\n</td><td>\n\n1.  Perform MCP requests on an instance with Action Fabric telemetry.\n2.  View the Action Fabric telemetry via Clickhouse or logged data.\n\n Expected behavior: The exact complexity of the MCP flows are recorded.\n\n Actual behavior: The complexity\\_bucket attribute contains values grouped into bucket\\_0\\_10, bucket\\_11\\_50, and likely no other buckets.\n\n</td></tr><tr><td>\n\nFlows \\(Family Channel\\)\n\n PRB2054449\n\n</td><td>\n\nRefactor all occurrences of 'Now Assist' in Flow Designer, Action Designer, and Flow Diagram to 'ServiceNow Otto'\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nFlows \\(Family Channel\\)\n\n PRB2056022\n\n</td><td>\n\nOtto directive renaming for the call skill step plugin\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nGlobal Ranking\n\n PRB2035527\n\n</td><td>\n\nUsers aren't able to delete a scrum task from cross-scope\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to Collaborative Work Management \\(CWM\\) Workspace.\n2.  Open any board.\n3.  Turn on the 'Story &amp; Scrum' task.\n4.  Add story &amp; scrum tasks records to the board.\n5.  Try to delete the scrum task.\n\nObserve that the shadow task is deleted but the actual scrum task isn't deleted.\n\n6.  Refresh the board.\n\nObserve that the deleted scrum task reappears.\n\n\n</td></tr><tr><td>\n\nHermes \\(Family\\)\n\n PRB2026691\n\n</td><td>\n\nTCP connection establishment and SSL handshake occur every minute\n\n</td><td>\n\nTCP 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHermes \\(Family\\)\n\n PRB2026695\n\n</td><td>\n\nIdentify and eliminate duplicate health checks where two Hermes services point to the same Hermes cluster\n\n</td><td>\n\nNormally, 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 2 services.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHiring Experiences\n\n PRB2031986\n\n</td><td>\n\nThe 'Last Month' option under 'My job requests' in the hiring portal displays data of requisitions created in the current month\n\n</td><td>\n\nFor the 'Last Month' filter in the hiring portal, the UI displays the current month record because it's using &gt;= beginningOfLastMonth\\(\\), which pulls in June \\(this month\\) records too. The platform's native filter uses sys\\_created\\_onONLast month, which is properly bounded to just the previous month.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHiring Experiences\n\n PRB2057166\n\n</td><td>\n\nGetRefRecord scoping bypass fix\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHorizon Component Library\n\n PRB2052114\n\n</td><td>\n\nReplace the 'Sparkle' icon with the Otto Lottie animation in AI and loader experiences\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHorizon Component Library\n\n PRB2052172\n\n</td><td>\n\nSuppress console statements so browser tools aren't flooded\n\n</td><td>\n\n \n\n</td><td>\n\nView the 'Theme behavior' console output.\n\n The console output should only be logged when env = development.\n\n</td></tr><tr><td>\n\nHorizon Empty State Component\n\n PRB2050333\n\n</td><td>\n\nUpdate ai-general illustration\n\n</td><td>\n\nThe sparkle illustration should use the new Otto logo instead.\n\n</td><td>\n\n1.  Open an instance.\n2.  Create a experience in UI Builder.\n3.  Add an empty state component to the stage.\n4.  In the config panel, locate the illustration property.\n5.  Select **AI general** from the drop-down list.\n\n Expected behavior: The empty state shows the Otto logo.\n\n Actual behavior: The empty state shows sparkles.\n\n</td></tr><tr><td>\n\nHorizon Icon Component\n\n PRB2032851\n\n</td><td>\n\nAdd the Otto icon to the library\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to an instance.\n2.  Create a experience in UI Builder.\n3.  Add a now-button-iconic component to the stage.\n4.  In the configuration panel, locate the drop-down list for the icon property .\n5.  Search for 'sn-sparkmoji-logo'.\n\n Expected behavior: See the new Otto logo.\n\n Actual behavior: The icon is missing.\n\n</td></tr><tr><td>\n\nHorizon Icon Component\n\n PRB2050318\n\n</td><td>\n\nUpdate all 'Sparkle' icons\n\n</td><td>\n\nIcons with the Otto logo should be shown instead.\n\n</td><td>\n\n1.  Open an instance.\n2.  Create an experience in UI Builder.\n3.  Add a now-button-iconic component to the stage\n4.  In the config panel, locate the icon property.\n5.  Search for an icon.\n\n Expected behavior: Icons with the Otto logo are shown.\n\n Actual behavior: Icons with sparkles are shown.\n\n</td></tr><tr><td>\n\nHR e-signature\n\n PRB2035247\n\n</td><td>\n\nRCA for Content Experience\n\n</td><td>\n\nSpecifically, eesign for getRefRecord directive.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHR Service Delivery\n\n PRB2014389\n\n</td><td>\n\nRCAs are generated for 'Populate Manager Reportee Count Using Eligible Users' and 'Employee​Hub​Org​ Chart​Reportee​Util​SNC'\n\n</td><td>\n\nDuring 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHR Service Delivery\n\n PRB2021314\n\n</td><td>\n\nThe **Cancel** UI action in an HR case checks for 'mandatory' after the case is canceled\n\n</td><td>\n\nThe **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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHR Service Delivery\n\n PRB2035482\n\n</td><td>\n\ngetRefRecord updates to Australia\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHR Service Delivery\n\n PRB2052205\n\n</td><td>\n\nIn Australia and Zurich, RCAs generated in HR Core and HR Employee Relations must be added back to track/HR\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nHR Service Delivery\n\n PRB2052632\n\n</td><td>\n\nThe **header\\_config\\_\\*** fields are missing from the sn\\_hr\\_core\\_service table in Zurich and Australia\n\n</td><td>\n\n**header\\_config\\_\\*** fields missing from sn\\_hr\\_core\\_service table in Zurich and Australia.\n\n</td><td>\n\nOpen a Zurich or Australia instance with the sn\\_hr\\_core and EC Core plugins installed.\n\n Observe that the **header\\_config\\_\\*** fields are missing from the sn\\_hr\\_core\\_service table.\n\n</td></tr><tr><td>\n\nIdentification and Reconciliation API\n\n PRB2028002\n\n</td><td>\n\nFix three dynamic IRE UI messaging and wording issues and the system properties in the update folder\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nIdentification and Reconciliation API\n\n PRB2034883\n\n</td><td>\n\nUsers can add or edit identification rules for hardware's child classes while dynamic IRE is enabled\n\n</td><td>\n\nIf dynamic IRE is enabled, users shouldn't be able to see or edit identification rules on the hardware hierarchy.\n\n</td><td>\n\n1.  Enable dynamic IRE.\n2.  Navigate to hardware or any of the child classes.\n\n Observe that static rules are displayed and editable, even though dynamic IRE is enabled.\n\n</td></tr><tr><td>\n\nIdentity\n\n PRB1964703\n\n</td><td>\n\nA federated ID isn't generated for all the users in the instance\n\n</td><td>\n\nThere's also instances where a federated ID isn't generated for some users even when they have a unique user\\_name and email.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInbound API Integration Usage Framework\n\n PRB1988771\n\n [KB3082116](https://hi.service-now.com/kb_view.do?sysparm_article=KB3082116)\n\n</td><td>\n\nIPAccessListFilter handling for malformed IP addresses\n\n</td><td>\n\nInbound REST API calls coming through proxy servers \\(x-forwarded-for header with multiple IP's\\) or malformed IP address can sometimes fail in Zurich and Australia instances.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nInbound API Integration Usage Framework\n\n PRB2034837\n\n</td><td>\n\nRecord data egress usage for integration requests\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInbound API Integration Usage Framework\n\n PRB2034838\n\n</td><td>\n\nDomain separation support for Inbound API Integration Framework\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInnovation Management\n\n PRB2055588\n\n</td><td>\n\nGetRefRecord scoping bypass for app-ppm\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInnovation Management\n\n PRB2055611\n\n</td><td>\n\nGetRefRecord scoping bypass for app-common\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInstall Base Management Store\n\n PRB2059577\n\n</td><td>\n\nInstall base items and sold products should support RAC fallback mechanism\n\n</td><td>\n\nThe functions \\_skipFetchEntities and getQRfallbackRoles should be overridden in CSMRelationshipServiceSNC in CSMRelationshipService \\_InstallBaseRelatedParty to allow this fallback mechanism.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInstance Clone \\(Family\\)\n\n PRB2032595\n\n</td><td>\n\nDeactivate the 'Target Instance Validate' business rule \\(BR\\) on an instance table to support OAuth-based authentication of clone targets from the Clone Admin Console\n\n</td><td>\n\n \n\n</td><td>\n\nOn any Australia instance, add a target instance through the Clone Admin Console.\n\n The instance is inserted into the table post-successful authentication, but there's an unnecessary BR that runs the authentication again to validate it. This BR was used in the legacy version of the clone and isn't required with the Store app.\n\n</td></tr><tr><td>\n\nInstance Clone \\(Family\\)\n\n PRB2051479\n\n</td><td>\n\nClone cleanup script fixes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInstance Clone \\(Family\\)\n\n PRB2051483\n\n</td><td>\n\nIn Clone Admin Console, declare v.2.2.4 to ensure that OAuth is used\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nInstance Data Replication \\(IDR\\)\n\n PRB1940978\n\n</td><td>\n\nThere's many IDR-DCTComparisonJobs on an instance\n\n</td><td>\n\nThis 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\\).\n\n</td><td>\n\n1.  On an instance running a version lower than Australia and configured with multiple nodes, open the sys\\_trigger table.\n2.  See if there's multiple IDRDCTComparisonJob records present.\n\n</td></tr><tr><td>\n\nIntegrated Email Client\n\n PRB2051938\n\n</td><td>\n\nA Now Assist reference in Email Client must be changed to Otto\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nIntegration Hub\n\n PRB2056938\n\n</td><td>\n\nRename the 'Now Assist for Spoke Generation API Support' Glide plugin\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nIntegration Hub Spokes\n\n PRB2053392\n\n</td><td>\n\nUsers can recover box webhook HMAC signing keys via timing oracle on JavaScript == comparison and forge events to trigger arbitrary subflows\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nJVM at Scale\n\n PRB2032235\n\n [KB3078521](https://hi.service-now.com/kb_view.do?sysparm_article=KB3078521)\n\n</td><td>\n\nMemory watcher isn't logging active transactions in the Australia release\n\n</td><td>\n\n \n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nKnowledge Graph \\(Family\\)\n\n PRB2016914\n\n</td><td>\n\nUpdate 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\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Graph \\(Family\\)\n\n PRB2052948\n\n</td><td>\n\nImplement batch insert logic for affinity jobs to improve insert latency\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2022138\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass update\n\n</td><td>\n\nIt must ship an RCA for HR tables for the knowledge scope sn\\_km\\_gen\\_ai.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2031464\n\n</td><td>\n\nThe Knowledge Base Article \\(KBA\\) is text not visible in the workspace\n\n</td><td>\n\nThis issue occurs with custom templates that contain fields of mixed data types like HTML, string, date.\n\n</td><td>\n\n1.  Create such a template with mixed data types.\n2.  Create an article fill, and fill non-**HTML** field as well.\n3.  Insert a block in one of the fields.\n4.  Save this article.\n5.  Attempt to searching this article on 'SOW/CSM/KC'.\n6.  Select the article\n\n Notice that it will open the kb\\_view page of the article, and renders the article content as empty.\n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2033473\n\n [KB3144003](https://hi.service-now.com/kb_view.do?sysparm_article=KB3144003)\n\n</td><td>\n\nAn article title isn't displayed in the Knowledge Article print view \\(sysparm\\_media=print\\) from Service Portal on the Australia release\n\n</td><td>\n\nAn article title isn't displayed in the Knowledge Article print view \\(sysparm\\_media=print\\) from Service Portal on the Australia release due to a JavaScript error in KBViewArticle.jsdbx, while it works as expected in Zurich.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2054012\n\n</td><td>\n\nRename app-common 'Now Assist' to Otto\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2054937\n\n</td><td>\n\nTrue up Store apps NAKM, KC, KCInWorkspaces and ECE\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2058947\n\n</td><td>\n\nUpdate versions for the base instance Knowledge Management apps to include Australia and Zurich fixes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nKnowledge Management\n\n PRB2060905\n\n</td><td>\n\nUpdating versions for the base instance Knowledge Management apps to include Australia and Zurich fixes\n\n</td><td>\n\nThere are fixes in app-knowledge-center, app-knowledge-gen-ai, app-kb-uib, and sn-enhanced-content-editor.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nLegal Digital Forensics\n\n PRB2036701\n\n</td><td>\n\nAdd the needed RCA as part of the getRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nLegal Hold Notification\n\n PRB2055600\n\n</td><td>\n\nAdd the needed RCA as part of the getRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nLegal Matter Management\n\n PRB2036702\n\n</td><td>\n\nAdd the needed RCA as part of the getRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nLegal Request Management\n\n PRB2036703\n\n</td><td>\n\nAdd the needed RCA as part of the getRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nList Administration\n\n PRB2009991\n\n</td><td>\n\n'Workflow'-type fields are displaying as 'Pending - has not started' for all values\n\n</td><td>\n\nThis requires a single-line change that adds a defensive .clone\\(\\) call to deep-copy the choice list before WorkflowIcons.process\\(\\) mutates it. This prevents the shared cache from being poisoned by in-place label overwrites.\n\n</td><td>\n\n1.  Navigate to the table schema for the 'Incident' table.\n2.  Create a custom field named 'Test column' with the field type set to 'Workflow'.\n3.  Configure 2-3 choice options for the newly created custom field.\n4.  Select 2-3 incident records and set values for the 'Test column' field using any of the available options.\n5.  Open UI Builder.\n6.  Create an experience and page by using the 'List Page' template.\n7.  Once the page is created, navigate to it on the instance.\n8.  From the sidebar navigation, navigate to **Incidents** &gt; **All**.\n9.  Select the Personalize fields button on the list page.\n10. Add the Test column custom field to the visible columns.\n\nObserve that the workflow stages for the custom workflow type field appear empty.\n\n11. Open any incident record that has a value set for this field \\(can be opened in classic view as well\\).\n12. If the field is not visible, add it to the 'Form' view.\n\nObserve that the field displays 'Pending - has not started'. Note that even when the field value is changed via background script, it continues to display 'Pending - has not started'.\n\n\n Expected behavior: The display value should be as per available choices.\n\n Actual behavior: It displays 'Pending - has not started' even after changing value. 'Pending - has not started' is not even available as a choice option for a field.\n\n</td></tr><tr><td>\n\nList Administration\n\n PRB2030898\n\n</td><td>\n\nThe 'Selected stage' icon isn't applied when WorkflowIcons has already assigned a default icon\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open the latest Australia instance.\n2.  Open an articles list in Knowledge Center.\n\n See that workflow states are displaying as 'No workflow stages available'.\n\n</td></tr><tr><td>\n\nList Administration\n\n PRB2044745\n\n</td><td>\n\nNow-record-list-connected sends encodedRecord as \\{\\} instead of ''\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  In a workspace \\(for example, CSM/incident\\), open an incident record.\n2.  From the right sidebar, select **Create Template**.\n3.  Select **+** to add a field.\n4.  Add a reference field that uses an advanced/dynamic reference qualifier referencing the 'current' object.\n5.  Open the picker \\('Search for Record'\\).\n6.  Inspect the getReferenceListLayout / now​Record​List​Connected​Reference GraphQL call.\n\n Expected behavior: EncodedRecord is '', so the advanced/dynamic qualifier is correctly skipped when no 'current' is available. This matches the UI16 template behavior.\n\n 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.\n\n</td></tr><tr><td>\n\nList Administration\n\n PRB2053781\n\n</td><td>\n\nThe new AI list badge in UI16 breaks list cell content wrapping\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nList AI Indicators\n\n PRB2051786\n\n</td><td>\n\nThe horizontal scroll for AI-tagged items in the groupedBy list is broken\n\n</td><td>\n\nWhen the user scroll to the right, the field isn't visible.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nList AI Indicators\n\n PRB2055051\n\n</td><td>\n\nUpdate the Otto indicators in seismic workspace lists\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nList AI Indicators\n\n PRB2055052\n\n</td><td>\n\nUpdate the Otto indicators in UI16 lists\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nManager Hub\n\n PRB2054008\n\n</td><td>\n\nIn Manager Hub, add a null check when using getRefRecord\\(\\)\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nMentoring\n\n PRB2056277\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass for mentoring\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nMID Server\n\n PRB2063491\n\n</td><td>\n\n'LinkedHashMap$Entry' objects connected to the LRU take a couple MB\n\n</td><td>\n\nThese objects are from 'ecc\\_​queue\\_​authorization\\_​policy'.​\n\n</td><td>\n\n1.  Open a local instance.\n2.  Connect to the MID Server.\n3.  Create a heap dump.\n\n Notice that entries of 'LinkedHashMap$Entry' for ecc\\_queue\\_authorization\\_policy have over 3MB for each entry.\n\n</td></tr><tr><td>\n\nMobile Experience for Field Service Management\n\n PRB2053984\n\n</td><td>\n\nBackport getRef changes to Field Service Management \\(FSM\\) Mobile\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nMobile Platform\n\n PRB2033559\n\n</td><td>\n\nAdd a null check for using getRefRecord\\(\\) in the script include\n\n</td><td>\n\nEnforce cross scope access restrictions when using Glide​Element​Reference.​ js​Function\\_​get​Ref​Record\\(\\)​.​\n\n</td><td>\n\n1.  Create two scoped apps: App A and App B.\n2.  In App B, create Table B with caller restriction turned on.\n3.  In App A, create Table A with a reference field pointing to Table B.\n4.  Don't grant RCA access from App A to Table B.\n5.  Insert a record in Table A referencing a record in Table B.\n6.  From the App A script, call current.​ref\\_​to\\_​b.​get​Ref​Record\\(\\)​.​\n\n Expected behavior: Access is denied, null is returned, and a violation is logged.\n\n Actual behavior: The call returns a valid record instead of null.\n\n</td></tr><tr><td>\n\nMobile Platform\n\n PRB2039101\n\n</td><td>\n\nA device pin on mobile devices can't be turned off for Government Community Cloud \\(GCC\\) users\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Log in to a mobile device for a GCC instance.\n2.  Note that the device pin is turned on.\n\n See that changing the device encryption enabled property doesn't turn off the pin.\n\n</td></tr><tr><td>\n\nMobile Studio\n\n PRB2034896\n\n [KB3085639](https://hi.service-now.com/kb_view.do?sysparm_article=KB3085639)\n\n</td><td>\n\nsn\\_maib app fails to auto-upgrade when installed\n\n</td><td>\n\nThis is due to an incorrect app\\_id declaration in the oob-app properties file.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nMulti-Instance Framework - Core\n\n PRB2063884\n\n</td><td>\n\nMIF 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\n\n</td><td>\n\nWhen instance A sends a MIF async message to instance B, it needs B's Hermes cluster details \\(datacenter + Kafka bootstrap servers\\). A keeps a saved copy in the hermes\\_cluster\\_config table and reads it in Hermes​Producer​Client.​get​Cluster​Info​Set.​ Today that method only calls B's live endpoint \\(/api/now/hermes \\_cluster\\_info, tier-2\\) when A has no saved rows for B. Two gaps result: 1. Saved rows but no primary — if A has rows for B where no one is is\\_primary\\_for\\_service=true \\(scenario like only a single non-primary cluster row\\), the method does not refresh. And method ensure​Topic​Location​For​Instance\\(String owningInstance\\) then finds primaryCluster == null and the send fails with 'No primary cluster found'. 2. Stale rows after a datacenter change — if a MIMIR rule change moves B's cluster to a new DC, A's saved rows are outdated but still look complete \\(they have a primary\\), so tier-1 returns them and A never re-discovers → messages Navigate to the old cluster.\n\n</td><td>\n\n1.  Verify that Instance A has a saved Hermes cluster rows for instance B \\(service MIF-Hermes\\) pointing to B's old datacenter, or a single row that isn't marked primary.\n2.  Send a MIF async message from A to B.\n\n Expected behavior: A resolves B's current cluster details and sends to the correct datacenter.\n\n Actual behavior: A uses the old/incomplete saved config and sends to the wrong datacenter, or fails with 'No primary cluster found'.\n\n</td></tr><tr><td>\n\nMultimodal Service \\(Family Channel\\)\n\n PRB2051440\n\n</td><td>\n\nOn-demand MMS submission fails\n\n</td><td>\n\nThe issue occurs on instances where the multimodal service URL is configured via sys\\_service\\_endpoint instead of the system property.\n\n</td><td>\n\n1.  Open an instance with the MMS plugin active.\n2.  Leave glide.​platform\\_​mm\\_​service.​service\\_​url empty.\n3.  Configure the Multimodal service endpoint via an active sys\\_service\\_endpoint record.\n4.  Confirm that the batch/scheduled MMS job reaches the service.\n\nObserve that it resolves the URL from sys\\_service\\_endpoint.\n\n5.  Call new MultimodalServiceUtil\\(\\) .​submit​On​Demand\\(attachment​Sys​Id,​ query\\).\n\n Observe that the on-demand MMS submission fails.\n\n</td></tr><tr><td>\n\nNext Experience Unified Navigation\n\n PRB2019091\n\n</td><td>\n\nIf beyond the 5MB limit, a localStorage limit blocks headerMenuItems from being cached\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open an instance with thousands of apps and tens of thousands of modules, enough to make the menu payload be over 5MB.\n2.  Clear the caches and refresh the page.\n\n Notice that the menu request is made on each load because the object isn't cached due to being too large.\n\n</td></tr><tr><td>\n\nNext Experience Unified Navigation\n\n PRB2053821\n\n</td><td>\n\nUpdate to Otto branding in Next Experience\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nNow Assist in Virtual Agent\n\n PRB2056609\n\n</td><td>\n\nChange the Knowledge Graph \\(KG\\) defaults in NAVA and Now Assist Portal\n\n</td><td>\n\nToday, 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 natuaral language query, change the graph to Enterprise Graph \\(Small\\) and select the tag as 'NOW ASSIST PANEL DEFAULT TAG'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nNow Assist Nextwave Experience\n\n PRB2059502\n\n</td><td>\n\nAdd sys\\_props for caching in sys\\_og\\_conversational \\_cache\\_configuration\n\n</td><td>\n\nIf props are enabled on the instance, that should be reflected via cache service instantly.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nNow Assist Nextwave Experience\n\n PRB2061245\n\n</td><td>\n\nSessionController shouldn't try to refresh AuthorizationInfoBundle, as this is done in the Glide handshake process\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOAuth\n\n PRB2018183\n\n</td><td>\n\nThe unallowed system property glide.oauth. jwt.token\\_request .honor\\_claim\\_keys is included in an upgrade payload, resulting in a misleading 'skipped' upgrade log entry\n\n</td><td>\n\nDuring a Zurich upgrade, the system property glide.oauth. jwt.token\\_request .honor\\_claim\\_keys \\(from com.​snc.​platform.​security.​oauth\\)​ appears as a skipped entry. This property is not allowed by design and therefore never loaded into sys\\_properties on user instances.\n\n</td><td>\n\n1.  Navigate to **All** &gt; **Upgrade Center** &gt; **Upgrade History**.\n2.  Open the record of upgrading in Zurich.\n3.  Select the **Skipped Changes to Review** tab.\n4.  Select the skipped record for sys\\_properties\\_ 107762282f223210 3698319c003f9b2f.xml.\n\n</td></tr><tr><td>\n\nOAuth\n\n PRB2052671\n\n</td><td>\n\nSupport to create an OAuth entity record within the caller scope\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOn-Call Scheduling\n\n PRB1975559\n\n</td><td>\n\nOn-call contact information isn't visible for some users for some attempts\n\n</td><td>\n\nThis issue only occurs when logged in as a user.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOn-Call Scheduling\n\n PRB2034496\n\n</td><td>\n\nIn a SMS action in a the subflow 'On-Call', the 'Check Assignment Response' doesn't use Notify\n\n</td><td>\n\nThe 'On‑Call: Check Assignment Response' flow uses the legacy SMS send action instead of the Notify‑based SMS action.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOn-Call Scheduling\n\n PRB2039960\n\n</td><td>\n\nThe NotifyUtils check for notification devices should return empty when the ACL check is successful\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOneExtend\n\n PRB2041342\n\n</td><td>\n\nAI Summary card stays in perpetual loading state\n\n</td><td>\n\nThis issue occurs for some Business Application records using the Record Summarization capability. There are no LLM calls and no errors.\n\n</td><td>\n\n1.  Navigate to APM Workspace.\n2.  Open a Business Application record.\n\nObserve that the AI Summary card stays in perpetual loading.\n\n3.  Check sys\\_generative\\_ai\\_log.\n\nObserve that there's no LLM call logged for this request.\n\n4.  Check syslog.\n\nObserve that there's no errors; the full pipeline completes with cache HIT.\n\n5.  To compare with a working BA record, navigate to service-​now.​com/​now/​apm/​application-​rationalization.​\n6.  Select the **Now Asisst** icon on business apps.\n\n Observe that the summary is generated. It generates LLM calls and renders correctly.\n\n</td></tr><tr><td>\n\nOneExtend\n\n PRB2056745\n\n</td><td>\n\nGuardian preprocess flow resolves getGeoRoutingDetails\\(\\) multiple times per request in NowLLMIntegration GuardianProvider\n\n</td><td>\n\nNowLLMIntegration GuardianProvider. shouldUseGatewayService\\(\\) and addLLMGatewayRoutingHeader\\(\\) each independently call through to GeoRoutingServiceImpl .getGeoRoutingDetails\\(\\) &gt; 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.\n\n</td><td>\n\n1.  Trigger a Guardian moderation request that routes through NowLLMIntegration GuardianProvider \\(LLM\\_GENERIC\\_ SMALL\\_MODERATIONS model\\).\n2.  Trace/log calls into GeoRoutingServiceImpl .resolveGeoRoutingDetails\\(\\) \\(or set a breakpoint\\) during a single request's transformRequest\\(\\)/getUrl\\(\\) lifecycle.\n\n 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.\n\n</td></tr><tr><td>\n\nOneExtend\n\n PRB2056991\n\n</td><td>\n\nLog reasoning tokens for 3P providers and Now LLM\n\n</td><td>\n\nA new field, reasoning\\_token\\_count, naming is aligned to existing token fields. The field is added to the GenAI log table. The field is populated for reasoning-capable models across all supported providers. For non-reasoning models, or when a provider returns no reasoning count, the field defaults to zero \\(documented\\) rather than null-ambiguous. A single, documented convention is applied to stored token values: store the provider's raw output\\_tokens and reasoning\\_tokens separately such that reasoning\\_tokens ≤ output\\_tokens, allowing it to derive answer-only tokens as output − reasoning. Existing consumers of the log are unaffected, and total-token reconciliation still holds.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nOneExtend\n\n PRB2057127\n\n</td><td>\n\nMultiple GenAI logs are created in skill chaining execution\n\n</td><td>\n\nOneExtend Execute and ExecuteSecure are missing the offGlideChainingEnabled flag.\n\n</td><td>\n\nExecute a skill chaining.\n\n Observe that the Generative AI logs are created two times.\n\n</td></tr><tr><td>\n\nOneExtend\n\n PRB2059503\n\n [KB3142021](https://hi.service-now.com/kb_view.do?sysparm_article=KB3142021)\n\n</td><td>\n\nSummarization records aren't displaying a proper response\n\n</td><td>\n\nIncident, Change, 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,​'status​Code':​429,​'message':​'Too many concurrent data insert operations in progress - additional rebuild request being ignored',​'timestamp':​'2026-​07-​17​T07:​00:​17.​752637494​Z',​'results':​\\{\\}​\\}​\\]​'.​\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nOperational Technology Visibility\n\n PRB2031853\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass for Operational Technology \\(OT\\) core and OT Service Management\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB1802682\n\n</td><td>\n\nThe score for average duration of a DB view is incorrect when compared with the list view for both data snapshots and classic Platform Analytics \\(PA\\)\n\n</td><td>\n\nA Glide record sets a default value of '0' for null values. Classic PA uses the Glide record.\n\n</td><td>\n\n1.  Turn on data snapshots for the indicator in incident SLA DB view.\n2.  Ensure to remove any scripted breakdowns.\n3.  Add 'AVG of Business Duration' with units as 'Time'.\n4.  Run data collection for both data snapshots and classic PA.\n5.  Compare scores.\n\n See that classic PA shows 11 hours 28 minutes, data snapshots shows 8 hours 35 minutes, and list view shows 20 hours 40 minutes.\n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB1949829\n\n</td><td>\n\nBreakdown elements aren't displaying consistently on the 'workbench' widget\n\n</td><td>\n\nOn the 'workbench' widget, all the elements are displaying for a breakdown when the **Timeseries** field has a value and the value of the property 'com.snc.pa. scorecard.breakdown. chart.max\\_rows' hasn't been changed.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB2032037\n\n</td><td>\n\nThe Platform Analytics dashboard filters ignore Element Security Lists and display 'Nothing is available'\n\n</td><td>\n\nIf 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB2035061\n\n</td><td>\n\nCore UI widgets render blank data for fiscal and business calendar indicators\n\n</td><td>\n\nHighcharts has been upgraded from version 10.3.3 to 12.3.0. As part of this upgrade, some legacy Highcharts utility methods used by the Core UI dashboards \\(legacy pa\\_dashbaord\\) and widgets have been deprecated or replaced in the newer version. Any usage of older Highcharts APIs or utility methods should be reviewed and updated to use the latest supported alternatives available in Highcharts 12.3.0.\n\n</td><td>\n\n1.  On any instance in \\(or after\\) Australia's build, create any indicator source with:\n\n**Standard calendar** &gt; **fiscal quarter or fiscal year**\n\n2.  Create the indicators with these sources and run data collection jobs to populate scores.\n3.  Navigate to KPI Details/Analytics Hub with these indicators and make sure that the charts are visible.\n4.  Create core UI widgets and link the with the newly created indicators.\n5.  Create a core UI Dashboard and add the widgets.\n\n Expected behavior: The same data as shown in the Analytics Hub is to be rendered.\n\n Actual behavior: All the business calendar or fiscal calendar indicator widgets render blank data.\n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB2050693\n\n</td><td>\n\ninjectWidgetContent re-executes already-loaded scripts via document.body.appendChild, causing a widget regression\n\n</td><td>\n\ninjectWidgetContent in canvasUtils.js strips all &lt;script src&gt; tags from the widget HTML and re-injects them via document.body.appendChild. For scripts already loaded at page render time via Jelly &lt;g:requires&gt;, this causes re-execution, which corrupts initialized state and breaks widget functionality.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPerformance Analytics\n\n PRB2054497\n\n</td><td>\n\nData snapshot indicator charts fail to render\n\n</td><td>\n\nIt can't encode an object during JSON serialization.\n\n</td><td>\n\nOn an Australia instance, open any dashboard with a data snapshot indicator chart.\n\n Observe that the chart fails to render. Check the server logs for: ''Cannot encode object' / JsonMappingException through reference chain: LinkedList\\[0\\] -&gt; Data​Snapshots ​Data​Service$1\\['response'\\]​'.​\n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB1961798\n\n</td><td>\n\nRecords aren't deleted from report stats or the 'Visualization metadata' table\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB2021236\n\n</td><td>\n\nIn an instance migrated to Australia, reports display Name = None for non-global domains\n\n</td><td>\n\nWhen a instance with core UI reports is migrated to Australia, any reports that aren't in the global domain don't have the name set.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB2031447\n\n</td><td>\n\nA data visualization type is duplicated post-Australia upgrade\n\n</td><td>\n\nWhen in the **Platform Analytics** &gt; **Library** &gt; **Data Visualization** &gt; **Landing** page under the 'Count' section, and putting a filter with the condition type as 'single score', there are duplicate values in the total.\n\n</td><td>\n\n1.  **All** &gt; **Platform Analytics** &gt; **Data visualization**.\n2.  Try adding a filter on the **Type** fiel.\n3.  While adding a filter condition, observe it has more than one single score.\n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB2037528\n\n</td><td>\n\nIn Australia, data visualizations created by non-admin users aren't visible by that user on the 'Overview' page under **Quick Access** &gt; **Created by me**\n\n</td><td>\n\n \n\n</td><td>\n\n1.  On an Australia instance, impersonate a non-admin user.\n2.  Navigate to **Platform Analytics** &gt; **Data Visualizations** &gt; **Library**.\n3.  Select **Create data visualization** to create a data visualization \\(any type, any data source\\).\n4.  Navigate to **Platform Analytics** &gt; **Data Visualizations** &gt; **Library** &gt; **Overview**.\n5.  Under 'Quick Access', select **Created by Me**.\n\nObserve that the data visualization doesn't appear.\n\n6.  Repeat the same as an admin user.\n\nNote that the visualization does appear.\n\n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB2039912\n\n</td><td>\n\n'vertical\\_bar' is displayed in the value format on the data visualization library page\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Turn on the v\\_table property to see Core UI reports in the data visualization library.\n2.  Search for 'Top 15 most helpful articles'.\n3.  Check the type of the report.\n\n Expected behavior: The type should be 'Vertical bar'.\n\n Actual behavior: The type is 'vertical\\_bar'.\n\n</td></tr><tr><td>\n\nPlatform Analytics Component API\n\n PRB2040129\n\n</td><td>\n\nOptimize the reparenting script\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Upgrade a Zurich instance to Australia.\n2.  Navigate to the dashboard/data visualization library page.\n\n Expected behavior: Dashboards/data visualization are there in the library page list.\n\n Actual behavior: Dashboards/data visualization aren't shown in the library page list.\n\n</td></tr><tr><td>\n\nPlatform Analytics Dashboard API\n\n PRB2037426\n\n</td><td>\n\nscoreType is forced to 'latest' for non-aggregate indicators due to an undefined aggregateIndicator check\n\n</td><td>\n\nWhen 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'.\n\n</td><td>\n\n1.  Add a single-score \\(or any visualization that uses the shared date-range policy\\) widget to a dashboard.\n2.  Configure it with a classic PA indicator data source \\(sourceType: 'indicator'\\) that isn't an aggregate indicator \\(for example, 'Number of new requested items'\\).\n3.  Enable 'Apply date range' \\(applyDateRange: true\\).\n4.  Set scoreType to 'sum' \\(or any value other than 'latest'\\).\n5.  Open the widget configuration again.\n\n Expected behavior: The scoreType remains 'sum' and all score type options are available in the drop-down list.\n\n Actual behavior: The scoreType is forced to 'latest' and the drop-down list is inactive.\n\n</td></tr><tr><td>\n\nPlatform Analytics Dashboard API\n\n PRB2038900\n\n</td><td>\n\nPlatform 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\\)\n\n</td><td>\n\nFilters​Service.​remove​Invalid​Filter \\(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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Dashboard API\n\n PRB2039418\n\n</td><td>\n\nList migration logic should be added for the highlighted values config\n\n</td><td>\n\nWhen the user upgrades, the corresponding properties should be migrated to the new list visualization.\n\n</td><td>\n\n1.  On a Yokohama instance, create a list-simple visualization.\n2.  Enable fetchHighlightedValues.\n3.  Add some highlightedvalueconfigid to the list-simple visualization.\n4.  Upgrade to Zurich, Australia, or Brazil.\n\n Observe that the corresponding properties are migrated to the new list visualization.\n\n</td></tr><tr><td>\n\nPlatform Analytics Dashboard API\n\n PRB2050123\n\n [KB3131331](https://hi.service-now.com/kb_view.do?sysparm_article=KB3131331)\n\n</td><td>\n\nGlideClearDashboardCache is undefined in Australia, causing four business rules \\(BR\\) to fail on every Platform Analytics \\(PA\\) dashboard save and widget loss and save failures\n\n</td><td>\n\nThe Java class GlideClearDashboardCache \\(com.snc.par. dashboards.glide.script. ClearDashboardCache, annotated @GlideScriptable\\) isn't registered in the Rhino scripting scope. The class is present in the com.snc.par.dashboards OSGi bundle JAR, but isn't accessible as a Rhino scriptable — typeof GlideClearDashboardCache returns undefined. Four business rules in com.snc.par.dashboards call this class with no try/catch on every INSERT, UPDATE, and DELETE against par\\_dashboard, par\\_dashboard\\_canvas, par\\_dashboard\\_widget, and par\\_dashboard\\_permission. When a user saves a PA dashboard, these BRs throw RhinoEcmaError: 'GlideClearDashboardCache' isn't defined \\(logged as WARNING in the node log, firing 14+ times per transaction\\). Two failure modes: \\(1\\) dashboard save fails with 'Your dashboard could not be saved', or \\(2\\) save succeeds but in-memory cache not flushed — stale canvas layouts cause widgets to disappear from tabs on subsequent loads.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Dashboard API\n\n PRB2050660\n\n</td><td>\n\nPar\\_dashboard\\_tab records are created unintentionally when a non-admin user accesses an inactive dashboard\n\n</td><td>\n\nWhen 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.\n\n</td><td>\n\n1.  Impersonate a user.\n2.  Navigate to **Platform Analytics** &gt; **Library** &gt; **Dashboards**.\n3.  Create a dashboard without any dashboard tabs.\n4.  Open the dashboard record using a URL like 'https:​/​/​&lt;instance-​id&gt;​.​service-​now.​com/​par\\_​dashboard.​do?​sys\\_​id=​&lt;sys\\_​id&gt;​'.​\n5.  Clear the **Active** option.\n6.  Update the record.\n7.  As the same user as step 1, access the dashboard via a URL like 'https:​/​/​&lt;instance-​id&gt;​.​service-​now.​com/​now/​platform-​analytics-​workspace/​dashboards/​sys-​id/​&lt;sys\\_​id&gt;​'.​\n8.  Check par\\_dashboard\\_tab.\n\n Expected behavior: The par\\_dashboard\\_tab doesn't have a record for the test dashboard.\n\n Actual behavior: Once the user accesses the inactive dashboard, one or two new par\\_dashboard\\_tab records are created unintentionally.\n\n</td></tr><tr><td>\n\nPlatform Analytics Filters\n\n PRB1993721\n\n</td><td>\n\nA dashboard's Year to Date \\(YTD\\) filter fails to apply on a list unless it's reset\n\n</td><td>\n\nA 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Filters\n\n PRB2021606\n\n</td><td>\n\nAn interactive filter can be cleared via a double click even when the 'Allow User to Clear Filter' option is turned off\n\n</td><td>\n\nUsers 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.\n\n</td><td>\n\n1.  Create a dashboard.\n2.  Add a visualization with an interactive filter.\n3.  Configure the interactive filter to turn off the option 'Allow user to clear filter'.\n4.  Apply/select a filter value on the dashboard.\n\nObserve that there's no 'Clear filter' option.\n\n5.  Double-click the selected filter value.\n\nObserve that the filter is cleared even though the clear option is turned off.\n\n6.  Configure another interactive/dependent filter.\n\nObserve that the dependent filter still displays the option to clear the filter.\n\n\n 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.\n\n Actual behavior: Filters can still be cleared through double-click interaction and dependent filters display clear filter options despite the setting being turned off.\n\n</td></tr><tr><td>\n\nPlatform Analytics Filters\n\n PRB2031107\n\n</td><td>\n\nThe 'Allow user to clear filter' option isn't auto-checked in the filter designer\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Configure one single select, one multi select, and one date filter type separately from filter designer.\n2.  Add a source if needed, based on the filter type.\n3.  Save the filter.\n4.  Open each filter.\n5.  Check the 'Advanced' option.\n\n Expected behavior: The 'Allow user to clear filter' option should be auto-checked.\n\n Actual behavior: The 'Allow user to clear filter' option isn't auto-checked.\n\n</td></tr><tr><td>\n\nPlatform Analytics Filters\n\n PRB2031506\n\n</td><td>\n\nThe 'Follow' filter toggle option is missing in a cascading filter\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Create a Next Experience dashboard.\n2.  Add two filters, one on sys\\_user\\_group and another on sys\\_user.\n3.  In the configuration panel of the filter on sys\\_user, check the 'Follow other' filter section.\n\n Expected behavior: The filter on sys\\_user has the option to follow the sys\\_user\\_group filter.\n\n Actual behavior: No available option is displayed.\n\n</td></tr><tr><td>\n\nPlatform Analytics Migration API\n\n PRB2034116\n\n</td><td>\n\nUpgrading from Yokohama to Zurich causes all pa\\_widgets to be migrated after upgrade\n\n</td><td>\n\nThe pa\\_widgets table doesn't have an active field.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlatform Analytics Migration API\n\n PRB2037846\n\n</td><td>\n\nThe Migration Center summary count doesn't match the list count for fully migrated dashboards\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\nScenario 1:\n\n 1.  Create a few Core UI dashboards.\n2.  Migrate them.\n3.  Navigate to the PAR Dashboards table.\n4.  Delete one or more migrated dashboards.\n\n Observe that the Migrated List count and the Summary count don't match.\n\n Scenario 2:\n\n 1.  Create a Core UI dashboard containing a Dynamic Content widget.\n2.  Migrate the dashboards.\n3.  Navigate to the par\\_coreui\\_migration \\_bridge\\_dashboard table.\n4.  Remove the record\\(s\\) associated with the dashboard that contains the Dynamic Content widget.\n\n Observe that the Migrated List count and the Summary count don't match.\n\n</td></tr><tr><td>\n\nPlatform Analytics Migration API\n\n PRB2057808\n\n</td><td>\n\nRemove unified User with elevated privileges only\n\n</td><td>\n\nRemoving the write for User with elevated privileges only for the com.glide.par.unified \\_analytics.enabled property.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlaybooks \\(Family Channel\\)\n\n PRB2025987\n\n</td><td>\n\nA user can't view a playbook without record create access\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlaybooks \\(Family Channel\\)\n\n PRB2034002\n\n</td><td>\n\nThere's canLaunchPlaybook and launchPlaybook inconsistency for run strategy\n\n</td><td>\n\ncan​Launch​Playbook\\(enforce​Run​Strategy=​true\\)​ returns true but the subsequent launchPlaybook call throws PlaybookInvalidInputException: 'The playbook specified can't be launched because of its run strategy for the same playbook and parent record'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPlaybooks \\(Family Channel\\)\n\n PRB2052473\n\n</td><td>\n\nThe getPlaybookContextParentRecord API should be exposed as scriptable\n\n</td><td>\n\nThe Playbook MCP tool code doesn't use the existing API get​Playbook​Contexts​ By​Parent​Record 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.\n\n</td><td>\n\n1.  Add any compatible playbook as MCP tool.\n2.  Try to launch playbook through the Claude client.\n\n Observe that it launches playbook, but it uses custom logic to validate access and permission.\n\n</td></tr><tr><td>\n\nPlaybooks \\(Family Channel\\)\n\n PRB2052669\n\n</td><td>\n\n'Completed By'/'Completed On' for activity contexts\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPortfolio Planning with PPM, Agile 2.0, and SAFe\n\n PRB2055648\n\n</td><td>\n\nGetRefRecord scoping bypass for app-apw-internal-int\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nPPM Standard\n\n PRB2037975\n\n</td><td>\n\nRelax RIDAC table business rules\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nProcess Mining\n\n PRB2022864\n\n</td><td>\n\nUsers are unable to edit access for Now Assist creator's 'Work Notes Analysis' skill\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to a Zurich instance.\n2.  Impersonate any admin user.\n3.  Navigate to Now Assist Admin.\n4.  Open **Creator** &gt; **Skill** &gt; **Work Notes Analysis**.\n5.  Try to add an extra role beside the given role.\n\n Expected behavior: The user should have edit permission to edit.\n\n Actual behavior: The user is unable to edit permissions.\n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2007466\n\n</td><td>\n\nWhen feedback given by user is changed and navigates to another UI, on a revisit, the **Feedback** button switches from the previous state to new\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Generate highlights for any of the findings on a mined project.\n2.  Submit feedback via the icon.\n3.  Navigate to any other page or open any other finding.\n4.  Navigate back to the same highlights and make a thumbs down.\n\n Expected behavior: Feedback shouldn't be switched back and forth. The new state should be preserved even if the user navigates to other screens.\n\n Actual behavior: When the user comes back to the finding where feedback is given, the feedback is switched from the previous state to the new state.\n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2024798\n\n</td><td>\n\nSummary top banner metrics isn't displaying until the project is reopened or the page is refreshed\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2029472\n\n</td><td>\n\nThe **Intent and activity analysis** button is enabled on findings without process configuration\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Don't configure intent and activity analysis on process configuration.\n2.  Navigate to the 'Summary and insights' page of the mined project.\n3.  Open the findings in the 'Opportunity details' page.\n4.  Select the **Investigate** tab.\n\n Observe that intent and activity analysis is turned on. It should be turn off without the proper configuration.\n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2030093\n\n</td><td>\n\nRe-triggering 'Generate highlights' after an error displays no loading indicator or feedback that a process is running\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to an improvement opportunity with a high number of records \\(~30k\\).\n2.  Attempt to generate highlights.\n\nObserve that an error is displayed.\n\n3.  After the error, select **Generate highlights** again.\n\n Expected behavior: The UI should go into 'progress' mode, before displaying the result/error.\n\n Actual behavior: No loading indicator, spinner, or any visual feedback is displayed to the user to indicate that a process is running.\n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2030109\n\n</td><td>\n\nAn errored scheduled task leaves the component stuck at 'Loading contents...' indefinitely\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Navigate to an improvement opportunity with a high number of records \\(~30k\\).\n2.  Attempt to generate highlights.\n\n Observe that the scheduled task errors out, and that the highlights component remains stuck displaying 'Loading contents..' indefinitely and never surfaces the error state to the user. The loading message should be replaced with an error message.\n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2050830\n\n</td><td>\n\nWipe out promin\\_metered \\_usage\\_data across non-prod and rely on the Glide non-prod/prod property, not on the Open/Closed property\n\n</td><td>\n\nWhen users clone production to a sub-prod instance, the sub-prod promin\\_metered \\_usage\\_data table is wiped and replaced with prod's data, so sub-prod reflects a copy of prod rather than real usage. When users clone prod to several sub-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 sub-prods a customer maintains, independent of actual mining behavior.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nProcess Mining Workspace\n\n PRB2052878\n\n</td><td>\n\nOtto directive for process mining\n\n</td><td>\n\nThe Otto rebrand should be completed for work notes analysis, intent and activity analysis, process highlights, generate process config with AI, and playbook mining.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nProject Management\n\n PRB2006929\n\n</td><td>\n\nDeleting a project task with MS Project creates an orphaned resource request\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Log in to any instance.\n2.  Open the new Project Workspace.\n3.  Select the **New** button to create a project.\n4.  Select the menu button **\\(...\\)** &gt; **Import from MS project**.\n5.  Upload a MS Project schedule.\n6.  Create a resource request for Project Tasking.\n7.  Navigate to the resource module as the resource manager and approve the task.\n8.  As the project manager, delete the task in the MS Project schedule.\n9.  Return to the project record.\n10. Re-upload the updated MS Project.\n\n Expected behavior: The reupload of the schedule isn't permitted because of the related record or if it does allow the reupload, it should cascade the delete to the related records.\n\n Actual behavior: The resource manager can still see the resource request, but the task name is blank.\n\n</td></tr><tr><td>\n\nProject Management\n\n PRB2023802\n\n</td><td>\n\nThe PowerPoint export service loses the connection\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nReleaseOps - Family\n\n PRB1951541\n\n</td><td>\n\nupdate\\_set\\_admin needs access to 'Promote Update Set'\n\n</td><td>\n\nThe UI action condition currently requires the admin role, but should allow for both 'admin' and 'update\\_set\\_admin'.\n\n</td><td>\n\nAs a user with role update\\_set\\_admin \\(and not admin\\), complete an update set.\n\n Expected behavior: The**Promote Update Set** UI action is available.\n\n Actual behavior: It isn't available.\n\n</td></tr><tr><td>\n\nReporting\n\n PRB2040639\n\n</td><td>\n\nRequire authentication on a scripted rest API reporting\\_alias\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nReporting\n\n PRB2058918\n\n</td><td>\n\nLogging when there's an RVACL exception doesn't work for visualizations and only for Core reports\n\n</td><td>\n\nGlide.rest.debug = true can't be set on instances, so it needs a dedicated sys property to allow RVACL exception logging for the failed path. Only Core UI reports are tracked in the code and not visualizations.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nRequest Management\n\n PRB2050782\n\n</td><td>\n\nAn approval summary displays the incorrect attachment\n\n</td><td>\n\nIn Service Operations Workspace \\(SOW\\), attachment records displayed on approval records are inconsistent with the actual request item. When multiple request items contain attachments with the same file name, SOW resolves and displays the attachment from a different record \\(incorrect sys\\_id\\). The attachment file name appears correct, but the underlying file content belongs to a different request item. This behavior isn't reproducible in Classic UI, where attachments are always correctly associated with the respective record. The issue doesn't occur when the attachment file names are unique.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nScheduled Jobs\n\n PRB2015240\n\n</td><td>\n\nCreate a guard rail to protect the scheduler against misconfigured nodes to avoid impact to critical jobs\n\n</td><td>\n\nMisconfigured nodes can severely impact the job scheduler, causing business critical jobs to not get executed.\n\n</td><td>\n\n1.  On a two \\(or more\\) node cluster, configure one of the nodes to have schedulers=any and participation=standby.\n2.  Create 1000 pinned jobs with priority=100 and pin to that node.\n3.  Wait a few minutes.\n\n Observe that both this node's and other nodes' pinned jobs with priority&gt;=100 no longer execute.\n\n</td></tr><tr><td>\n\nSchedule Optimization\n\n PRB2022407\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass for the 1.0.1 release\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSecurity Data Filters\n\n PRB1967733\n\n</td><td>\n\nA security data filter \\(SDF\\) is applied redundantly via dotwalk paths, causing missing records in 'OR' queries\n\n</td><td>\n\nThis has two distinct symptoms caused by the same underlying duplication. One, when querying a parent table with 'OR' conditions dotwalking into multiple child tables simultaneously, the parent SDF was applied three times — once directly and once per dotwalk CE path — producing conflicting conditions that returned zero records instead of the expected results. Two, when querying a table with a field-based SDF, records where that field was empty/null were incorrectly excluded. This was caused by the same SDF being applied redundantly via a dotwalk CE, which caused the combined filter condition to exclude null matches.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nServer-side scripts\n\n PRB2051345\n\n [KB3128196](https://hi.service-now.com/kb_view.do?sysparm_article=KB3128196)\n\n</td><td>\n\nAutomatically created KittyScript exemptions are incorrect when using 'new GlideRecord'\n\n</td><td>\n\nWhen 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 execption for \\_all\\_ tables.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nService Catalog Builder\n\n PRB2030878\n\n</td><td>\n\n'Mode' defaults incorrectly when not specified in the catalog item configuration, blocking item submission from Builder\n\n</td><td>\n\nThe root cause is a missing default value for the 'mode' property in the catalog-item component configuration \\(now-ui.json\\).\n\n</td><td>\n\n1.  Navigate to UI Builder.\n2.  Create an experience and a page.\n3.  Add the catalog item component to the page and provide the sys\\_id.\n4.  Preview the page and submit the item.\n\n Expected behavior: The item should get submitted.\n\n Actual behavior: The item isn't submitted.\n\n</td></tr><tr><td>\n\nService Catalog Portal Widgets\n\n PRB2054951\n\n</td><td>\n\nServiceNow Otto rebranding for catalog item slot-fill\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nService Catalog\n\n PRB2054931\n\n</td><td>\n\nServiceNow Otto rebranding for catalog item generation with Text2Catalog family support\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nService Level Management\n\n PRB2001036\n\n [KB3137219](https://hi.service-now.com/kb_view.do?sysparm_article=KB3137219)\n\n</td><td>\n\nIn SLACalculatorNG, an unbounded schedule/DurationCalculator cache causes memory growth during bulk SLA recalculation\n\n</td><td>\n\nDuring bulk SLA recalculation, SLACalculatorNG accumulates one GlideSchedule and one DurationCalculator instance per unique schedule+timezone combination into unbounded object maps \\(this.schedules and this.durationCalculators\\). These maps are never evicted and grow proportionally to the number of distinct schedule/timezone 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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nService Mapping\n\n PRB1971609\n\n</td><td>\n\nService Mapping Discovery runs an instance out of memory during the rediscovery process in case there are 100K discovered services in Operational Status\n\n</td><td>\n\nThe code queries for all cmdb\\_ci\\_service\\_discovered records with operational\\_status=1 without any limit. If a user has enough cmdb\\_ci\\_service\\_discovered records with operational\\_status=1, then the instance can immediately be run out of memory while building an array of the results. 0 means no limit: get​All​Discovered​Business​Services\\(conditions,​ null, 0\\).\n\n</td><td>\n\n1.  Create 100K discovered services in Operational Status.\n2.  Run 'All Application' Discovery.\n\n</td></tr><tr><td>\n\nService Mapping\n\n PRB2036299\n\n</td><td>\n\nAfter 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\n\n</td><td>\n\nThe user can run a customised 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.\n\n</td><td>\n\n1.  Upgrade to the Australia release.\n2.  Run discovery on the service map with Tomcat CI.\n\n Observe that the 'Get Process' operation returns the full process list from the host instead of the targeted parent process.\n\n</td></tr><tr><td>\n\nServiceNow SDK \\(Glide\\)\n\n PRB2013533\n\n</td><td>\n\nThere's an unhelpful error when installing an app with an invalid scope prefix\n\n</td><td>\n\nError: '\\[now-sdk\\] ERROR: Exception occurred while installing application/nUnable to install application as application was null. Error: Exception occurred while installing application/nUnable to install application as application was null'.\n\n</td><td>\n\nCreate an app with now-sdk init without a valid auth saved.\n\n The resulting app has an x\\_ prefix and gives an error when trying to install on an instance.\n\n</td></tr><tr><td>\n\nServiceNow SDK \\(Glide\\)\n\n PRB2033218\n\n</td><td>\n\nFluent App metadata deletions aren't propagated when installing from the app repo\n\n</td><td>\n\nThe issue occurs because of missing sysmetadatadelete records.\n\n</td><td>\n\n1.  Delete metadata from Fluent App.\n2.  Build and deploy to the instance.\n3.  Publish to the app repo from the instance.\n4.  Install it on a different instance that doesn't contain the delete from app-repo.\n\n Expected behavior: The delete is applied and the metadata is removed.\n\n Actual behavior: The metadata not removed.\n\n</td></tr><tr><td>\n\nServiceNow Studio \\(Family Channel\\)\n\n PRB2063560\n\n</td><td>\n\nTrue up the Glider Store app\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nService Portal\n\n PRB2056735\n\n</td><td>\n\nUpdate the accessibility voice-input toggle label in Service Portal for the Otto rename\n\n</td><td>\n\nAs 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'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nService Portal\n\n PRB2056737\n\n</td><td>\n\nPortal-core widget UI and theming for new Otto onboarding modal in the Service Portal\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nService Portal\n\n PRB2056743\n\n</td><td>\n\nEligibility and admin control for new Otto onboarding modal\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSidebar \\(Family Release\\)\n\n PRB2058602\n\n</td><td>\n\nTyping indicator no longer works\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open two browsers.\n2.  Log in as two different users.\n3.  Create a sidebar chat for the two users.\n4.  Start typing.\n\n Observe that there is no typing indicator.\n\n</td></tr><tr><td>\n\nSmart Assessments for Field Service\n\n PRB2054418\n\n</td><td>\n\nBackport getRef changes to app-smart-assessment-mobile\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSmart Assessments Mobile\n\n PRB2054417\n\n</td><td>\n\nBackport getRef changes to app-smart-assessment-mobile\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSoftware Asset Reconciliation\n\n PRB2000893\n\n</td><td>\n\nRecon updates are dropped by a database, causing license metric results \\(LMR\\) and product results to not update\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSoftware Lifecycles\n\n PRB2004396\n\n</td><td>\n\nA calculated lifecycle should consider other phase start dates before creation\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSoftware Lifecycles\n\n PRB2010294\n\n</td><td>\n\nMatching a common platform enumeration \\(CPE\\) to DMs should ignore CPEs that are version less\n\n</td><td>\n\nsn\\_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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSoftware Lifecycles\n\n PRB2012476\n\n</td><td>\n\nMatching a common platform enumeration \\(CPE\\) to DMs should ignore CPEs edition and software edition\n\n</td><td>\n\nThere 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSource-to-Pay Operations \\(Glide\\)\n\n PRB2057105\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass directive changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nStandard Ticket Page\n\n PRB2054934\n\n</td><td>\n\nServiceNow Otto rebranding for Now Assist in 'Standard Ticket' page family\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nStream Connect Core\n\n PRB2019118\n\n</td><td>\n\nGenerative AI logs are missing\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nStream Connect Core\n\n PRB2036772\n\n</td><td>\n\nStream Connect fails to authenticate with Kafka brokers requiring OAUTHBEARER as the SASL mechanism, blocking connectivity\n\n</td><td>\n\nWhen a broker is configured to require OAUTHBEARER, the Kafka client initiates a SASL handshake and signals the OAUTHBEARER mechanism. Without a registered token callback handler, the client cannot respond with a valid bearer token, causing the handshake to fail. The connection is dropped and no meaningful error is surfaced to the administrator beyond a generic authentication failure.\n\n</td><td>\n\n1.  Configure an external Kafka broker with the SASL mechanism set to OAUTHBEARER and a valid OAuth 2.0 token endpoint.\n2.  In Stream Connect, navigate to the credential configuration for Message Replication and attempt to select OAUTHBEARER as the SASL mechanism.\n\n Observe that OAUTHBEARER isn't available as a selectable mechanism in the credential configuration UI.\n\n</td></tr><tr><td>\n\nSystem Import Sets\n\n PRB2033737\n\n [KB3070753](https://hi.service-now.com/kb_view.do?sysparm_article=KB3070753)\n\n</td><td>\n\nrole mis\\_server can't read database credentials for a JDBC data source when it uses an alias\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nSystem Import Sets\n\n PRB2038233\n\n</td><td>\n\nJDBC connections are left dangling and unclosed\n\n</td><td>\n\nEvery time the user issues a change credential signal to MID during a JDBC import, the number of open connections grows.\n\n</td><td>\n\n1.  Set up a MID server with a long running JDBC import that can be run through it.\n2.  Start an import.\n3.  While it's running, issue a change credentials signal to MID using the 'Refresh Credentials' related link on the MID server record.\n4.  Repeat.\n5.  Check the database for open connections from MID.\n\n Observe that the number of open connections grows each time.\n\n</td></tr><tr><td>\n\nSystem Web Services\n\n PRB2029605\n\n</td><td>\n\nThere's hourly reoccuring 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'\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTable Builder\n\n PRB2052385\n\n</td><td>\n\nBackport GetRefRecord scoping bypass changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTags\n\n PRB2039548\n\n</td><td>\n\nIn Australia, tags aren't saved for 'active = false' records for non-admin users\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTalent Feedback\n\n PRB2056254\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass for talent feedback\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTask Plan Templates\n\n PRB1978400\n\n</td><td>\n\nAuto-populating the value of a task plan **Feature** field in a task plan template document isn't dymanic\n\n</td><td>\n\nThe domain separations script needs an additional check for the global domain.\n\n</td><td>\n\n1.  Navigate to the sn\\_task\\_plan\\_ template\\_document table.\n2.  Select the **New** button.\n\nThe task plan **Feature** field is auto-populated.\n\n3.  Navigate to the sn\\_task\\_ plan\\_feature table and delete the document feature.\n4.  Create a record with the sn\\_task\\_plan\\_ template\\_document feature table with the name 'Document'.\n5.  Navigate to the sn\\_task\\_plan\\_ template\\_document table.\n6.  Select the **New** button.\n\nThe task plan **Feature** field isn't auto-populated now.\n\n\n</td></tr><tr><td>\n\nTerritory Planning\n\n PRB2039182\n\n</td><td>\n\nUpdating potential territories for a task doesn't work as expected\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Create a work order task.\n2.  Change the location to see the eligible territories as per the new changed location.\n\n Expected behavior: The Business Rule that updates the potential territories should consider the**consider\\_potential\\_territories \\_for\\_schedule\\_optimization** boolean field.\n\n 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.\n\n</td></tr><tr><td>\n\nThird-party Software\n\n PRB2032449\n\n</td><td>\n\nThe Kitty script changes should be reverted\n\n</td><td>\n\nThe changes to the Kitty script are no longer required. Everything works fine; the dashboard loads and there's no exception in the syslog table.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTime-Limited User Roles\n\n PRB1972197\n\n</td><td>\n\nWhen a user is logged in, updating an existing record with a new end time in the 'Time limited user roles' tablec causes never ending information messages on all pages\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Open a Zurich instance.\n2.  In a separate browser or incognito window, log in with a user that has an 'itil' role.\n3.  In another window, log in with a user who has an 'admin' role.\n4.  With the admin user, navigate to **All** &gt; **User administration** &gt; **Time-limited roles**.\n5.  Create a record that grants an 'admin' role to the user.\n6.  With the user that had only an 'itil' role but received the 'Time limited admin' role, open an incident list and then a record.\n\n Expected behavior: Users see an information message once.\n\n Actual behavior: Users see a message about roles that are granted or removed, but closing them isn't helping.\n\n</td></tr><tr><td>\n\nTrace Collector - Family Release\n\n PRB2056896\n\n</td><td>\n\nTrace collector MID code\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nTrace Collector - Family Release\n\n PRB2059215\n\n</td><td>\n\nAzure classic trace collector doesn't consider Credential IDs for AI and ML services\n\n</td><td>\n\nAzureTraceCollector ignores credential IDs supplied as config update parameters. It only considers credential alias names.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUI Actions\n\n PRB2051051\n\n</td><td>\n\nThe field error message isn't shown when the error comes from the backend via business rule abortAction\n\n</td><td>\n\nThe error message isn't shown for the **short\\_description** field in Australia. However, it's visible in Faster or PAXE Integration.\n\n</td><td>\n\n1.  Create an Insert/Update business rule with abortAction \\(for example, current.​short\\_​description.​set​Error\\('Error!'\\)​;​ current.​set​Abort​Action\\(true\\)​;​\\)​.​\n2.  Create a incident.\n3.  Fill in the mandatory fields.\n4.  Attempt to save it.\n\n Observe that the error message isn't shown for the **short\\_description** field.\n\n</td></tr><tr><td>\n\nUI Field Administration\n\n PRB2054948\n\n</td><td>\n\nServiceNow Otto rebranding for AI indicators, AI indicator pop-overs, and Task intelligence predicition\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUI Field Administration\n\n PRB2054949\n\n</td><td>\n\nIndexName GraphQL component and choice fallback\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUI Field Administration\n\n PRB2054953\n\n</td><td>\n\nInject '\\*' options into composite\\_name table and field picker choice lists\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUI Form Administration\n\n PRB2019275\n\n</td><td>\n\nThere's layout and scrollbar flickering when entering info, internal and external, in HTML **Journal** fields\n\n</td><td>\n\nThere'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.\n\n</td><td>\n\n1.  Change the glide.ui. journal.use\\_html system property to true.\n2.  Open any incident in any workspace.\n3.  Type multiple lines in internal info or copy/paste some text until the scroll bar appears.\n4.  Remove enough lines so that it's one new line away from displaying the scroll bar.\n5.  Type some words randomly to add enough words to create a line.\n\n Observe the flickering issue.\n\n</td></tr><tr><td>\n\nUI Form Administration\n\n PRB2033143\n\n [KB3139369](https://hi.service-now.com/kb_view.do?sysparm_article=KB3139369)\n\n</td><td>\n\nThe 'Preview this record' icon isn't working in the Safari browser\n\n</td><td>\n\nSelects on the button components and controls isn'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.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nUI Form Administration\n\n PRB2054945\n\n</td><td>\n\nOtto brand change in form notification messages\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUI Form Administration\n\n PRB2056498\n\n</td><td>\n\nThe parentRecordSysId is missing from ORM Workspace payload template, so the getFilterQuery API breaks\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Provision an instance with the plugin com.sn\\_app\\_orm\\_wksp installed.\n2.  Activate the plugin.\n3.  Trigger any UI action that uses the payload definition for event mappings.\n\n Observe that the call to /api/now/ related\\_list\\_item\\_filter/ getFilterQuery returns \\{'error': 'Invalid inputs'\\}.\n\n</td></tr><tr><td>\n\nUpgrade Center\n\n PRB1950446\n\n</td><td>\n\nThe 'Flow Designer' module directs to 'Page Not Found' after an instance upgrade on some nodes\n\n</td><td>\n\nThe **Process Automation** &gt; **Flow Designer** 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.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUpgrade Center\n\n PRB2056920\n\n</td><td>\n\nBulk app updates feature Glide changes\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUX Framework\n\n PRB2004013\n\n</td><td>\n\nFilters aren't appearing in the dashboard\n\n</td><td>\n\nFilters aren't appearing in dashboard in an initial dashboard load.\n\n</td><td>\n\n1.  In cache.do, select **Clear Cache** and **Clear All Browser Caches**.\n2.  Open a dashboard presenting multiple filters.\n\n Observe that the filters aren't loading.\n\n</td></tr><tr><td>\n\nUX Framework\n\n PRB2035397\n\n</td><td>\n\nAfter typing in an input field on record page load, the focus shifts intermittently\n\n</td><td>\n\nAfter a few words, the focus shifts to the 'Tags' section and it continues to write in that section.\n\n</td><td>\n\n1.  Navigate to CSM/FSM workspace.\n2.  Open the list module.\n3.  Navigate to 'All Cases'.\n4.  Open any case form with tags displayed on it.\n5.  Start typing in an input field \\(for example, **Compose comments**\\).\n\n Expected behavior: The user continues to type and the focus remains in the typing area.\n\n Actual behavior: After a few words, the focus shifts to the 'Tags' section and it continues to write in that section.\n\n</td></tr><tr><td>\n\nUX Framework\n\n PRB2039881\n\n</td><td>\n\nGLOBAL\\_NAVIGATION\\_REQUESTED isn't routing to a feature after selecting a hard refresh of the page\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nUX Framework\n\n PRB2054946\n\n</td><td>\n\nKeyboard shortcut remapping for admins and users\n\n</td><td>\n\nThis is a product update.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent for Customer Service \\(Store\\)\n\n PRB1998239\n\n</td><td>\n\nAn outdated file in the Virtual Agent store plugin causes integration tests to fail\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1895195\n\n</td><td>\n\nWhen the user enters an invalid/partial utterance, an error appears and the conversation is closed\n\n</td><td>\n\nDynamic capability executor can trigger multiple capabilities with different payloads. However, dynamic capability executor fails when duplicate capability IDs are passed.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1914417\n\n</td><td>\n\nStopping agentic conversation shows an undefined message\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Start any agentic flow from Dispatcher Workspace, Now Assist Panel, NASS, or Playground.\n2.  Select the **Stop** button once it's displayed.\n\n Observe the undefined message is displayed.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1952103\n\n</td><td>\n\nRemove showNoSkillsConfigured options passed when requesting the skill picker control in Now Assist Portal \\(NAP\\)\n\n</td><td>\n\nPreviously, a message was displayed to the end user if no applicable skills were configured for the logged-in user in NAP. Now that NAP also supports QnA, users will still be able to search knowledge articles, so this message is no longer required.\n\n</td><td>\n\n1.  Make sure no skills are configured for the current user.\n2.  Launch NAP.\n\n Observe a message reading: 'Looks like no skills are configured' and the conversation ends.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1960129\n\n</td><td>\n\nA conversation abruptly ends after a cold start conversation with a pre-chat survey enabled\n\n</td><td>\n\nThe conversation ends after the survey is complete.\n\n</td><td>\n\n1.  Enable pre-chat survey.\n2.  Navigate to Teams.\n3.  Type 'what is spam'.\n4.  Complete the pre-chat survey.\n\n Expected behavior: The user should get a response related to the query from step 3.\n\n Actual behavior: The conversation ends after the survey is complete.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1962876\n\n</td><td>\n\nAn interaction record form doesn't always pop up when receiving an inbound call\n\n</td><td>\n\nAn interaction record form doesn't always pop up when receiving an inbound call from multiple sources in short time.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB1980327\n\n</td><td>\n\nA chat dynamic greeting isn't localized correctly\n\n</td><td>\n\nBecause the message doesn't go down the correct API path to resolve to sys\\_ui\\_message, and it can't honor the dynamic greeting.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2009200\n\n</td><td>\n\nFor the 'Resume' flow, work notes are added as the guest user\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Trigger the ZTSD flow with a query that has a valid KB resolution available.\n2.  Impersonate as the subject person.\n3.  Ask a query that can be answered by an existing KB article.\n\nThe 'Resume' flow is triggered.\n\n4.  Open the corresponding case and check the 'Work Notes' section.\n\n Expected behavior: Work notes should be added under the impersonated HR L1 worker.\n\n Actual behavior: Work notes are added under the guest user.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2026682\n\n</td><td>\n\nConversation history of language detection confirmation disrupts a user response\n\n</td><td>\n\nAccording to Search QnA, the prompt isn't structured to support the intermediate language selection turn. That should be removed from the conversation history.\\`.\n\n</td><td>\n\n1.  Configure language detection.\n2.  Start a conversation in any standard chat.\n3.  Type an utterance in a different language.\n4.  The user is presented with 'You are typing in xyz language, do you want to switch' - select **Yes**.\n\n Expected behavior: The language should switch and the synthesized response should be displayed.\n\n Actual behavior: The langue switches but the response is 'How can I help you with your laptop'.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2031232\n\n</td><td>\n\nThe 'Litjs' widget isn't displaying on the Now Assist panel\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2031583\n\n</td><td>\n\nNon-topic skills are dropped from the skill picker when all applicable topic skills have a visible design category\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Configure a VA/NowAssist conversation with:\n    -   At least one non-TOPIC skill that is applicable and visible \\(optionally, mark it as promoted in the context profile\\).\n    -   At least one TOPIC-type skill that is applicable and visible.\n2.  Ensure every applicable topic skill has at least one visible design category \\(sys\\_cb\\_topic\\_category with visible = true\\).\n3.  Trigger the skill picker \\(for example, via SystemScriptObject.jsFunction \\_sendSkillPickerControl → VASkill​Service.​send​Skill​Picker\\)​.​\n\n 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'.\n\n 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.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2031991\n\n</td><td>\n\n'Get details of problem agent' returns additional duplicate closure messages along with the expected closing message\n\n</td><td>\n\nWhen the user enters a closing utterance, the agent returns multiple closure messages, and the last two messages are duplicated.\n\n</td><td>\n\n1.  Open Now Assist Portal.\n2.  Enter an utterance like 'Help me get details of a problem'.\n\nObserve that the agent returns a response like 'Could you please provide the problem number you'd like details for?'.\n\n3.  Enter an utterance like 'See you later'.\n\n Expected behavior: The agent returns a response like 'Understood. Feel free to return anytime if you need help.'\n\n 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 will 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 will go ahead and close it. It looks like you're finished with this chat, so I will go ahead and close it.'.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2034975\n\n</td><td>\n\nInteractions are throwing an error of 'technical issues' intermittently\n\n</td><td>\n\nA few interactions intermittently throw 'I'm having technical issues and won't be able to continue this conversation'.\n\n</td><td>\n\n1.  Ensure the following is installed:\n    -   Now Assist in Virtual Agent Plugin: 15.0.8\n    -   Now Assist in Virtual Agent Configurations: 8.0.8\n    -   Generative AI Controller: 12.1.2\n2.  Open a Zurich instance.\n3.  In Now Assist Virtual Agent \\(NAVA\\), initiate a conversation.\n4.  Impersonate an agent who is made available to take interactions.\n5.  Initiate a live agent configuration.\n\n Observe the message, 'I'm having technical issues and won't be able to continue this conversation' occurs intermittently.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2035888\n\n</td><td>\n\nA Guardian-triggered async\\_search early-return leaves a stale task ID in the context\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Send a prompt that Guardian flags and see that it's displayed correctly.\n2.  See that the first request is still active but times out later.\n3.  Send a second utterance that triggers skill Discovery immediately.\n4.  Wait for a timeout from the first message to occur to display a 'sorry' message in the conversation.\n\n Expected behavior: The second utterance responds normally.\n\n Actual behavior: 'Sorry, there was a problem on my side' appears. The second utterance result is dropped.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2037636\n\n [KB3108272](https://hi.service-now.com/kb_view.do?sysparm_article=KB3108272)\n\n</td><td>\n\nAgent messages containing URLs aren't displaying correctly in the internal transcript\n\n</td><td>\n\n \n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2054519\n\n</td><td>\n\nRename five assistant names from 'Now Assist' to 'Otto'\n\n</td><td>\n\nThe old assistant names should be renamed as following: 'Now Assist in Virtual Agent' &gt; 'ServiceNow Otto for Virtual Agent', 'Now Assist Panel – Platform' &gt; 'ServiceNow Otto panel – Platform', 'Now Assist Panel – Developer' &gt; 'ServiceNow Otto panel – Developer', 'Now Assist Voice Deployment' &gt; 'ServiceNow Otto voice', 'Now Assist in Virtual Agent - N' &gt; 'New chat assistant - 1', and 'Now Assist Voice Development - N' &gt; 'New voice assistant - N'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2055706\n\n</td><td>\n\nSnc\\_internal role is missing on sys\\_cs\\_conversation write ACL when the 'Explicit Roles' plugin is also active\n\n</td><td>\n\nSince 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.\n\n</td><td>\n\n1.  Provision a Zurich instance with the 'Explicit Roles' plugin \\(com.glide.explicit\\_roles\\) and the Conversation Server plugin \\(com.glide.cs\\) installed.\n2.  Navigate to an ACL on sys\\_cs\\_conversation table with write operation on record.\n\n Observe that that only the snc\\_external role is added. The snc\\_internal role is never associated to this ACL.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2056495\n\n</td><td>\n\nCentral cache doesn't return the correct entry if the cache is updated from a different cluster\n\n</td><td>\n\nIn the central cache log, the following message apepars: 'Negative cache hit — Glide previously returned null for this key'.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2057596\n\n</td><td>\n\nRename 'Now Assist Virtual Agent' to Otto for topics in Glide\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2058728\n\n</td><td>\n\nChat summary isn't generated on instances with the Spanish translation plugin\n\n</td><td>\n\nAfter 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.\n\n</td><td>\n\n1.  Provision an instance with the Spanish translation plugin installed.\n2.  Set Spanish as the language for the requester.\n3.  Set English as the language for the agent.\n4.  Make sure DT is enabled.\n5.  As the requester, initiate a chat and connect with the agent.\n6.  Exchange around 20 messages.\n7.  As the requester, end the chat.\n\n Observe that the chat summary doesn't generate.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2059089\n\n</td><td>\n\nThe Otto session isn't aware of the logged-in user for 'assets managed by me' queries\n\n</td><td>\n\nThe 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.\n\n</td><td>\n\n1.  Log in as an AICT user.\n2.  Ask Otto: 'Can you give me the assets managed by me?'.\n\nObserve that the full/unfiltered asset list is returned instead of being filtered to the current user.\n\n3.  Ask explicitly by name, for example: 'assets managed by &lt;username&gt;'.\n\n Observe that the managed\\_by = current user filter is correctly applied.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2059632\n\n</td><td>\n\nBuildPolicyConfig should be aligned with sys\\_​now\\_​assist \\_​va\\_​persona\\_​detail schema\n\n</td><td>\n\nNo policy configs are returned because buildPolicyConfig doesn't target sys\\_​now\\_​assist\\_​ va\\_​persona\\_​detail and doesn't filter by persona\\_detail\\_type = Policy.\n\n</td><td>\n\n1.  Create an active record in sys\\_​now\\_​assist\\_​va\\_​persona\\_​detail:​\n    -   Deployment = a valid deployment sys\\_id.\n    -   Persona\\_detail\\_type = Policy.\n    -   Name = Test Policy.\n    -   Description = Test policy description.\n    -   Prompt\\_value = Test policy instruction.\n2.  For the same deployment, create another active persona-detail record with persona\\_detail\\_type = Tone and prompt\\_value = Friendly.\n3.  Trigger the assistant-config handshake for that deployment via next wave.\n4.  Inspect policyConfigs in the response.\n\n 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.\n\n 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.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2060897\n\n</td><td>\n\nThe 'promoted-skills' API doesn't return non-discoverable skills\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Create a skill.\n2.  Call the 'promoted-skills' API.\n\n Expected behavior: The skill should be returned.\n\n Actual behavior: The skill isn't returned.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2061042\n\n</td><td>\n\nFixes are needed for guest user support for OffGlide\n\n</td><td>\n\nAdditional rest endpoints need a public role. The NextWave token needs to be turned on for bff exchange.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2061520\n\n</td><td>\n\nCalling the 'Bg channel' API with the same session ID isn't resuming the conversation\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Create a incident and assign it to the ZTSD worker.\n2.  Once solution is proposed, reply with new comments.\n\n Expected behavior: The conversation, which is waiting for input, should resume back.\n\n Actual behavior: Creating a conversation and execution plan with the workflow as 'Default VA Workflow'.\n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2063396\n\n</td><td>\n\nParallel tools execution aren't running in record domain\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2064355\n\n</td><td>\n\nAuto Chat executions are faulted\n\n</td><td>\n\nThere is an intermittent failure in fetching the JWT token from CS, which is causing the faulted conversations.\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2064833\n\n</td><td>\n\nA domain is set to null after user input\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent\n\n PRB2066077\n\n</td><td>\n\nAdd the reduce\\_items\\_list\\_polling toggle\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nVirtual Agent Web Client\n\n PRB1933088\n\n</td><td>\n\nProcessing loader is displayed even after getting a response\n\n</td><td>\n\n \n\n</td><td>\n\n1.  Select **Now Assist Portal**.\n2.  Enter 'Summarize a record/conversation'.\n3.  Select the discovered skill.\n\n Observe that the loader is still displayed, even after getting the record number question.\n\n</td></tr><tr><td>\n\nVulnerability Response Integration with Microsoft Defender for IoT \\(Azure\\)\n\n PRB2031861\n\n</td><td>\n\ngetRefRecord\\(\\) scoping bypass for AzureVR\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nWindow Manager\n\n PRB2041392\n\n [KB3142333](https://hi.service-now.com/kb_view.do?sysparm_article=KB3142333)\n\n</td><td>\n\nThere's a UI bug when opening the Now Assist panel\n\n</td><td>\n\nWhen a user has a menu pinned \\(whether it's the All menu, Favorites, History, etc.\\) and they open the Now Assist panel, the pinned menu turns into a blank white pane. The menu that was pinned also then reappear in the list of other unpinned menus, although the name of the pinned menu still also appears next to the ServiceNow logo with a blank pane beneath it. The blank menu can generally be recovered by opening it from the list of unpinned menus \\(where it has reappeared\\) and re-pinning it , refreshing the page, or resizing the window. However, there is some inconsistency in whether refreshing or resizing the window always fixes it. If users refresh with the blank menu pinned and the Now Assist panel still open, the Now Assist panel then becomes blank and can only be dismissed/recovered by pinning something else, like sidebar discussions, to the right of the screen to get rid of it. This behavior happens most consistently when a user with a pinned menu logs in and opens the Now Assist panel for the first time after their start screen loads. However, it does also happen MID-session sporadically if users unpin/re-pin different menus and open/close the Now Assist panel frequently.\n\n</td><td>\n\nRefer to the listed KB article for details.\n\n</td></tr><tr><td>\n\nWindow Manager\n\n PRB2052078\n\n</td><td>\n\nResize doesn't work at run time, only on creation time\n\n</td><td>\n\nThe talk modal needs to be a fixed size. The user dragging it smaller breaks the layout, so the grip should be disabled at runtime.\n\n</td><td>\n\nTry \\{canResize: false\\}.\n\n Expected behavior: The gripper disappears.\n\n Actual behavior: There's no change.\n\n</td></tr><tr><td>\n\nWindow Manager\n\n PRB2052105\n\n</td><td>\n\nSetWindowProperties ignores empty headingLabel and it can't clear a window's title at runtime\n\n</td><td>\n\nThe previous title stays. '' and null are silent no-ops.\n\n</td><td>\n\n1.  Open a window with a heading \\(for example, the canvas window with any headingLabel\\).\n2.  Call setWindowProperties\\(windowId, \\{ headingLabel: '' \\}\\).\n\n Expected behavior: The heading clears, resulting in a blank title.\n\n Actual behavior: The previous title stays. '' and null are silent no-ops.\n\n</td></tr><tr><td>\n\nWork Order Management\n\n PRB2034992\n\n</td><td>\n\nBackport changes for getRefRecord\\(\\) changes\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nWork Order Management\n\n PRB2053534\n\n</td><td>\n\nThe 'Location update when PSO is populated' business rule isn't needed anymore\n\n</td><td>\n\nThe business rule sets and syncs the **Location** field on the work order from the provider organization, and the same location is applied to the work order task. This seems confusing, since the provider org and location don't necessarily have to be the same. The provider org refers to who is responsible for the work, while the location refers to where the work happens.\n\n</td><td>\n\n1.  Create a work order.\n2.  Update the provider organization.\n\n Expected behavior: The location remains unchanged.\n\n Actual behavior: The location changes to the provider organization location.\n\n</td></tr></tbody>\n</table>## Fixes included\n\nUnless 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.\n\n-   [Australia Patch 4 Hotfix 2](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3143885)\n-   [Australia Patch 4 Hotfix 1](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3140560)\n-   [Australia Patch 4](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/australia-patch-4.md)\n-   [Australia Patch 3 Hotfix 3](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3143614)\n-   [Australia Patch 3](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/australia-patch-3.md)\n-   [Australia Patch 2 Hotfix 5a](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3142075)\n-   [Australia Patch 2 Hotfix 4b](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3143888)\n-   [Australia Patch 2 Hotfix 3b](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB3138484)\n-   [Australia Patch 2](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/australia-patch-2.md)\n-   [Australia Patch 1](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/australia-patch-1.md)\n-   [Australia security and notable fixes](https://www.servicenow.com/docs/r/release-notes/australia-security-notables.html)\n-   [All other Australia fixes](https://www.servicenow.com/docs/r/release-notes/australia-all-other-fixes.html)\n\n**Parent Topic:**[Available patches and hotfixes](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/release-notes/available-versions.md)\n\n"}}