Hiding the indicator library from Platform Analytics Overview for non-admin or ITIL usersIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } The Indicator library in Platform Analytics Overview is visible to all authenticated users, including ITIL and non-admin users, by default. This article explains how to restrict access to the Indicator library so that only users with the pa_admin role can view it. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Australia+ Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } The visibility of the Indicator library for ITIL users is by design, as the system allows authenticated users to view the library by default. Role restrictions apply to CRUD operations on indicators, not to viewing the library itself. Customization via UI Builder and client script modifications is required to restrict access as per business requirements. Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Verify that the following prerequisites are met before implementing this solution: - Admin role access in the ServiceNow instance - Access to UI Builder - Understanding of ServiceNow roles and user permissions - Access to the Platform Analytics Experience workspace - Basic knowledge of client-side scripts (JavaScript) - A non-production environment to test changes before applying to production The following steps show how to hide the Indicators page from the PAE workspace side panel for all users except those with the pa_admin role. Step 1: Configure Audience Access in UI Builder Go to All > UI Builder > Experiences > Search for "Platform analytics" and open > Locate page with name "Indicator Management" > Click "Default" Click on "Settings" at the center top > "Edit in Original scope" (If banner is apprearing at the page top) > Manage Audience (Under Audience section) > Search for a role like "PAR Next experience admins" and Save the settings. Step 2: Add Role-Based Logic to Client Script Now go back to the experience hompage or Go to All > UI Builder > Experiences > Search for "Platform analytics" and openLocate page with name "Page" > Click "Default" > Edit in Original scope" (If banner is apprearing at the page top)Under "Client scripts" section on left bottom, open "On Page load" and edit the logic to allow only certain roles to access the page. In case of indicators, remove "pages.indicators" from contentTreeItems > childrenIn ROLES constant, add new role mapping like INDICATORS: "pa_admin" const ROLES = {COMMON_ADMIN: ["maint","admin",],FILTER_ADMIN: "analytics_filter_admin",SCHEDULED_EXPORT: ["par_scheduler", "par_scheduler_admin"],UXA: ["chat_analytics_viewer","mobile_analytics_viewer","portal_analytics_viewer","now_experience_analytics_viewer","core_ui_analytics_viewer"],INDICATORS: "pa_admin",};Add a variable to determine if the current user has required role. const hasPaAdminRole = userRoles.includes(ROLES.INDICATORS); Finally under const accessDeniedPages = []; Add a check to show or hide the link. if (hasPaAdminRole) {contentTreeItems[1].children.push(pages["indicators"]);} else {accessDeniedPages.push("indicators");} Final a complete part of code sample for above usecase for Australia (Please note this may change in future and need to be adjusted accordingly)const contentTreeItems = [pages.overview,{"children": [pages.dashboards,pages['data-visualizations'],// pages.indicators],"id": "library","isActionable": false,"label": await helpers.translate("Libraries")}];const userRoles = api.context &&api.context.session &&api.context.session.user &&api.context.session.user.roles || [];const ROLES = {COMMON_ADMIN: ["maint","admin",],FILTER_ADMIN: "analytics_filter_admin",SCHEDULED_EXPORT: ["par_scheduler", "par_scheduler_admin"],UXA: ["chat_analytics_viewer","mobile_analytics_viewer","portal_analytics_viewer","now_experience_analytics_viewer","core_ui_analytics_viewer"],INDICATORS: "pa_admin",}; // Check if user has any common admin rolesconst hasAdminRole = userRoles.some((role) =>ROLES.COMMON_ADMIN.includes(role));// Check for specific role permissionsconst hasUXARole = userRoles.some((role) =>ROLES.UXA.includes(role));const hasFilterRole = userRoles.includes(ROLES.FILTER_ADMIN);const hasScheduledExportRole = userRoles.some((role) =>ROLES.SCHEDULED_EXPORT.includes(role)); const hasPaAdminRole = userRoles.includes(ROLES.INDICATORS); const hasFilterPagePermissions = hasAdminRole || hasFilterRole;const hasScheduledExportPagePermissions = hasAdminRole || hasScheduledExportRole;const hasUXAPagePermissions = hasAdminRole || hasUXARole; const accessDeniedPages = [];if (hasPaAdminRole) {contentTreeItems[1].children.push(pages["indicators"]);} else {accessDeniedPages.push("indicators");} if (hasFilterPagePermissions) {contentTreeItems[1].children.push(pages["filters"]);} else {accessDeniedPages.push("filters");}if (hasScheduledExportPagePermissions) {contentTreeItems[1].children.push(pages["scheduled-exports"]);} else {accessDeniedPages.push("scheduled-exports");}if (hasUXAPagePermissions) {contentTreeItems.push({"children": [{"actions": { "icon": "open-link-right-fill", "label": await helpers.translate("Open link") },"externalUrl": "now/uxa","icon": "appsee-outline","id": "external","isExternal": "1","label": await helpers.translate("Usage insights")}],"id": "additional","label": await helpers.translate("Additional Links")});}