Unable to complete the final Activation in the Migration process to Platform AnalyticsIssue <!-- /*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: ; } } In attempting to complete the final step in the Migration from the Legacy dashboard system to Platform Analytics, the final Activation is not working. Symptoms<!-- /*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 administrator on the instance is selecting the Activate button to finalize the migration to Platform Analytics, however, after appearing to process for several moments, the screen reverts to the Activate screen and this Activation did not actually complete. In checking the Dashboards, it is seen that they have not actually yet been migrated. Reviewing the localhost log, the following "Warning" message will also be found corresponding with the attempt to run the Activate: com.glide.script.RhinoEcmaError: "SNC" is not defined.<refname> : Line(1) column(0)==> 1: function activateNextExperience(isRollback) { var rollback = isRollback; var activating = !rollback; var res = { nextExperienceActivated: activating, }; var unifiedAnalyticsProp = "com.glide.par.unified_analytics.enabled"; var rollbackAllowedProp = "glide.par.coreui.migration.bulk_rollback_enabled"; var unifiedEnabled = gs.getProperty(unifiedAnalyticsProp, "false"); var rollbackAllowed = gs.getProperty(rollbackAllowedProp, "false"); if ((unifiedEnabled === "true" && activating) || (unifiedEnabled === "false" && !activating)) { res.skipped = true; return res; } if (rollback && rollbackAllowed !== "true") { return { skipped: true, nextExperienceActivated: true, message: "Please don't rollback. You weren't meant to find this. Contact support first.", }; } var COMPONENT_BRIDGE = "par_coreui_migration_bridge_component"; var DASHBOARD_BRIDGE = "par_coreui_migration_bridge_dashboard"; var SCHEDULED_JOB_BRIDGE = "par_coreui_migration_bridge_sysauto"; var bridgingTables = [COMPONENT_BRIDGE, DASHBOARD_BRIDGE, SCHEDULED_JOB_BRIDGE]; var tablesInfo = {}; var isDomainSeparated = new SNC.PADomainUtils().isDomainSeparated(); tablesInfo[DASHBOARD_BRIDGE] = { core: function() { return { table: "pa_dashboards", bridgeField: "pa_dashboard", hasActive: true, }; }, next: function() { return { table: "par_dashboard", bridgeField: "par_dashboard", hasActive: true, }; } }; tablesInfo[COMPONENT_BRIDGE] = { core: function(record) { switch (record.getValue("type")) { case "report": return { table: "sys_report", bridgeField: "report", hasActive: true, }; case "widget": return { table: "pa_widgets", bridgeField: "widget", hasActive: false, }; case "filter": return { table: "sys_ui_hp_publisher", bridgeField: "filter", hasActive: false }; default: throw new Error("Unexpected component type - " + record.getValue("type")); } }, next: function(record) { return { table: "par_component", bridgeField: "component", hasActive: true, }; }, }; tablesInfo[SCHEDULED_JOB_BRIDGE] = { core: function() { return { table: "sysauto_report", bridgeField: "sysauto_report", hasActive: true, }; }, next: function() { return { table: "sysauto_par", bridgeField: "sysauto_par", hasActive: true, }; }, }; var direction; if (activating) direction = ["core", "next"]; else direction = ["next", "core"]; var tableRecordsToBeUpdated = {}; function addTableInfo(tableName, activeValue) { if (!tableRecordsToBeUpdated[tableName]) { tableRecordsToBeUpdated[tableName] = {}; tableRecordsToBeUpdated[tableName].active = activeValue; tableRecordsToBeUpdated[tableName].sysids = []; } } function updateComponentRelatedRecords(tableRecordsToBeUpdated) { for (var table in tableRecordsToBeUpdated) { gs.info("running updateComponentRelatedRecords for table:" + table + " record count is:" + tableRecordsToBeUpdated[table].sysids.length); if (tableRecordsToBeUpdated[table].sysids.length > 0) { var dbQuery = new GlideDBQuery(table); dbQuery.addQuery("sys_id", "IN", tableRecordsToBeUpdated[table].sysids); if (isDomainSeparated) dbQuery.setSuppressSeparation(true); var dbu = new GlideDBUpdate(table); dbu.setQuery(dbQuery); dbu.setValue("active", tableRecordsToBeUpdated[table].active); dbu.setMultiple(true); dbu.execute(); delete tableRecordsToBeUpdated[table]; } } } for (var i = 0; i < bridgingTables.length; i++) { var bridgingTable = bridgingTables[i]; var gr = new GlideRecord(bridgingTable); if (activating) { gr.addEncodedQuery("active="); } else { gr.addEncodedQuery("active=next"); } /** ^ active points at the "source of truth" for if the artifact has been MANUALLY set to COREUI or NEXT. */ /** If the bridging table says null, rollback/activation can transfer the active flag. */ /** If the active flag has been manually set to next/core, then the automated rollback/activation will skip over it. */ if (isDomainSeparated) gr.queryNoDomain(); else gr.query(); var tableInfo = tablesInfo[bridgingTable]; var counter = 0; while (gr.next()) { counter++; var FROM_TABLE_INFO = tableInfo[direction[0]](gr); var TO_TABLE_INFO = tableInfo[direction[1]](gr); if(!FROM_TABLE_INFO || !TO_TABLE_INFO) { gs.error("Failed to get correct to or from table for " + bridgingTable + ", skipping records to preserve data. From: " + FROM_TABLE_INFO + " To: " + TO_TABLE_INFO); continue; } var active = true; var sysid = ""; if (FROM_TABLE_INFO.hasActive) { sysid = gr.getValue(FROM_TABLE_INFO.bridgeField); if (sysid != null) { addTableInfo(FROM_TABLE_INFO.table, false); tableRecordsToBeUpdated[FROM_TABLE_INFO.table].sysids.push(sysid); } } if (active && TO_TABLE_INFO.hasActive) { sysid = gr.getValue(TO_TABLE_INFO.bridgeField); if (sysid != null) { addTableInfo(TO_TABLE_INFO.table, true); tableRecordsToBeUpdated[TO_TABLE_INFO.table].sysids.push(sysid); } } /** Do it in batches to avoid excessive memory usage */ if (counter == 500) { updateComponentRelatedRecords(tableRecordsToBeUpdated); counter = 0; } } gs.info("updating " + bridgingTable + " table active field"); /** bulk update the bridging table */ var activeDirection = direction[1] === "core" ? "" : direction[1]; var dbQuery = new GlideDBQuery(bridgingTable); var dbu = new GlideDBUpdate(bridgingTable); if (activating) { dbQuery.addQuery("active", "=", "NULL"); } else { dbQuery.addQuery("active", "=", "next"); } if (isDomainSeparated) dbQuery.setSuppressSeparation(true); dbu.setQuery(dbQuery); dbu.setValue("active", activeDirection); dbu.setMultiple(true); dbu.execute(); updateComponentRelatedRecords(tableRecordsToBeUpdated); } gs.setProperty(unifiedAnalyticsProp, activating); }activateNextExperience(undefined);var migrationService = new SNC.MigrationServiceScriptable();migrationService.unblockNewAnalyticsContent();Stack trace:at <refname>:1 (activateNextExperience)at <refname>:1 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: ; } } Any versions of the ServiceNow Platform that might be running a non-current version of the Platform Analytics Migration related plugins. 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 issue appears to be related to an incompatibility in certain objects related to the Platform Analytics Migration scripts and other core objects as found within the base instance itself. 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: ; } } To correct this issue, an admin on the instance will want to perform an Update on the following Application on the instance: Application Name: sn-app-par-coreui-migration-center Application ID: sn_par_mig_center Suggested Version: 2.0.16 (or higher) Updating this Application should also update the following additional related applications. However, if these additional Applications are not automatically updated as part of the Migration Center Update, please Update these to the newest available versions as well: Application Name: PAR CoreUI Migration Scripts Application ID: sn_par_cor_mig_spt Minimum Recommended Application Version: 2.0.13 Application Name: sn-app-coreui-migration-legacy-widget Application ID: sn_par_legacy_wdgt Minimum Recommended Application Version: 2.0.16 After ensuring each of these applications has been updated to the newest available version of the plugin for your instance version, attempt to perform the Activation again, which should then successfully complete, advancing to the "Take me to the Dashboard Library" screen.