Pre-Install/Upgrade Role Inheritance Update for Strategic Planning, Financials Core, and Now Assist for SPMDescriptionProblem Statement When an instance has a large number of users assigned to a particular role, and a new child role is added under that role — or an existing child role is removed from it — in sys_user_role_contains, the platform updates the inherited roles for every user holding that role. This update happens as part of the upgrade itself, and the more users assigned to the role, the longer this step takes — directly extending the overall upgrade time.This KB provides update set that apply the required sys_user_role_contains changes before the upgrade via a scheduled job. The job can be run before the upgrade, so the inheritance changes are already in place by the time the upgrade begins. This resolves the issue and keeps the upgrade duration within normal bounds. Note: This issue can occur during both family (Glide) upgrades and scoped app installation/upgrade. Refer to the Workaround section for resolution steps.Steps to Reproduce On an instance with a large number of users assigned to one of the affected roles: For Strategic Planning: e.g. `sn_apw_advanced.eap_read_only` For Financials Core: e.g. `demand_manager`For Now Assist for SPM: e.g. sn_align_core.ap_read_only Upgrade the affected app to one of the listed versions: sn_apw_advanced: 4.8.1, 4.10.1 / 4.10.3, 4.11.0 / 4.13.0, or 4.14.0sn_invst_pln: 5.2.1 or abovesn_spm_gen_ai: 7.1.0 or above Observe the time taken to complete the upgrade. The upgrade takes significantly longer than expected, with a large portion of the time spent updating `sys_user_role_contains` inheritance for the users assigned to the affected role.WorkaroundStep 1 — Disable User Property Seeding (UPS) Run the following in Scripts - Background (scope must be Global): gs.setProperty('glide.analytics.user_props.feature.enabled', 'false'); gs.info('UPS disabled'); Confirm UPS disabled appears in the system log before proceeding. Step 2 — Import and Commit the Update Set Download the update set: sys_remote_update_set_2d470d322bd5cb10c73af5c26e91bfd1.xmlImport and commit the update set on your instance. Step 3 — Update the Target Version Open the script include SPWRoleInheritanceManager and fill the field corresponding to the top-level application you are upgrading. The script automatically resolves dependent app versions and determines which role inheritance changes to apply. Fill only one field — leave the others empty (''). TARGET_NASPM_VERSION — if upgrading Now Assist for SPM (sn_spm_gen_ai)TARGET_SPW_VERSION — if upgrading Strategic Planning (sn_apw_advanced)TARGET_APW_VERSION — if upgrading Portfolio Planning (sn_align_ws)TARGET_PW_VERSION — if upgrading Project Workspace (sn_pw) If all fields are left empty, no changes will be processed. For Family (Glide) Upgrades - For the Family upgrade, apps are automatically trued up to the corresponding version for that release. Use the trued-up app version as the target version here. Zurich — No action required. All trued-up app versions are below impacted thresholds. Australia — Enter the version of the highest-level app installed on your instance: NA-SPM installed → TARGET_NASPM_VERSION = '8.0.0'SPW installed (without NA-SPM) → TARGET_SPW_VERSION = '4.10.3'Portfolio Planning only → TARGET_APW_VERSION = '8.11.3'Project Workspace only → TARGET_PW_VERSION = '7.0.0' Step 4 — Run the Scheduled Job Navigate to System Definition → Scheduled Jobs, open SPW Role Inheritance Manager, and click Execute Now (make sure to execute in Global Scope). Depending on the number of users holding the affected roles, the job may take time to complete. Step 5 — Confirm Completion Check the system log (syslog.list) for: SPW_Role_Inheritance: Starting role inheritance processingSPW_Role_Inheritance: Completed role inheritance processing Step 6 — Verify the Changes Open sys_user_role_contains.list and filter by the affected role (e.g., sn_apw_advanced.eap_read_only, demand_manager, or sn_align_core.ap_read_only). Confirm the expected entries are added or removed. Users assigned the parent roles will automatically reflect the child role changes via ServiceNow's role hierarchy. Step 7 — Proceed with the App Upgrade/Install Install or upgrade the target application to the desired version. Step 8 — Re-enable UPS and Trigger Re-seed After the install completes, run the following in Scripts - Background (scope Global): gs.setProperty('glide.analytics.user_props.feature.enabled', 'true'); gs.info('UPS re-enabled'); sn_app_analytics.SNAnalyticsUserProperties.reseedUserProperties('active=true'); gs.info('Re-seed triggered'); Confirm UPS re-enabled and Re-seed triggered appear in the system log. What Update Set Contains A scheduled job that updates the sys_user_role_contains table with the role inheritance entries appropriate for that versionA script include containing the logic invoked by the scheduled job Role Inheritance Changes by Version Strategic Planning 4.8.1 Adds: sn_align_core.ap_read_only → contains sn_dpr_model.product_feature_readsn_align_core.ap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_feature_readsn_apw_advanced.eap_read_only → contains sn_agile_read Removes: sn_apw_advanced.eap_read_only → scrum_user Strategic Planning 4.10.x (4.10.1 / 4.10.3) Adds: sn_align_core.ap_read_only → contains sn_dpr_model.product_feature_readsn_align_core.ap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_feature_readsn_apw_advanced.eap_read_only → contains sn_agile_readsn_apw_advanced.spw_goal_user_read → contains sn_align_core.ap_read_only Removes: sn_apw_advanced.eap_read_only → scrum_user Strategic Planning 4.11.x / 4.13.x (4.11.0 / 4.13.0) Adds: sn_align_core.ap_read_only → contains sn_dpr_model.product_feature_readsn_align_core.ap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_feature_readsn_apw_advanced.eap_read_only → contains sn_agile_readsn_apw_advanced.spw_goal_user_read → contains sn_align_core.ap_read_onlysn_apw_advanced.spw_goal_user → contains sn_gf.strategy_planner Removes: sn_apw_advanced.eap_read_only → scrum_user Strategic Planning 4.14.0+ Adds: sn_align_core.ap_read_only → contains sn_dpr_model.product_feature_readsn_align_core.ap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_enhancement_readsn_apw_advanced.eap_read_only → contains sn_dpr_model.product_feature_readsn_apw_advanced.spw_goal_user_read → contains sn_align_core.ap_read_onlysn_apw_advanced.spw_goal_user → contains sn_gf.strategy_planner Removes: sn_apw_advanced.eap_read_only → scrum_usersn_apw_advanced.eap_read_only → sn_agile_read Financials Core 5.2.1+ (Strategic Planning 4.8.1+ / Portfolio Planning 8.9.0+ / Project Workspace 6.3.0+) Adds: demand_manager → contains sn_invst_pln.std_user Now Assist for SPM 7.1.0+ Prerequisite: These entries only take effect if the sn_nowassist_admin.user role is present on the instance (i.e., the Now Assist plugin is installed and licensed). The script automatically skips these entries if the role is absent. Adds: sn_align_core.ap_read_only → contains sn_nowassist_admin.usersn_align_core.pf_read → contains sn_nowassist_admin.usersn_apw_advanced.eap_read_only → contains sn_nowassist_admin.user Related Problem: PRB2018313