{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":17625,"path":"governance-risk-compliance/installed-with-bcm.md","title":"Components installed with Business Continuity Management","bundle":null,"doc_type":null,"release":"australia","body":"\n# Components installed with Business Continuity Management\n\nSeveral types of components are installed with activation of the Business Continuity Management application.\n\n## Roles installed\n\n<table id=\"table_u1t_gb1_wdb\"><thead><tr><th>\n\nRole title \\[name\\]\n\n</th><th>\n\nDescription\n\n</th><th>\n\nContains roles\n\n</th><th>\n\nAvailable with scope\n\n</th></tr></thead><tbody><tr><td>\n\nBCM administrator\\(sn\\_bcm.admin\\)\n\n</td><td>\n\nCreate, read, write, and delete access to all tables including the core data.\n\n Has create, read, and write access to the phase records.\n\n **Note:** Starting with Release 9.x.x, BCM administrator \\(sn\\_bcm.admin\\) role is now used for ACLs, replacing the System Administrator role.\n\n</td><td>\n\n-   sn\\_bcp.plan\\_admin\n-   sn\\_grc\\_workspace.admin\n-   sn\\_crisis\\_ebn.admin\n-   sn\\_grc\\_workspace.task\\_admin\n-   sn\\_data\\_registry.admin\n-   sn\\_grc\\_doc\\_design.admin\n-   sn\\_bcm.core\\_manager\n-   sn\\_irm\\_shared\\_cmn.word\\_template\\_creator\n-   dependency\\_views\n-   sn\\_smart\\_asmt.template\\_manager: Provides access to create a Smart Assessment template.\n-   sn\\_bia.bia\\_admin\n-   sn\\_bcm.program\\_manager\n-   sn\\_grc\\_appr.admin\n\n**Note:**\n\nThe BCM admin contains the Approver Configurator admin role, but it doesn’t contain the Approver Configurator developer role.\n\nFor security reasons, the Approver Configurator admin has read access to the **Script** field on the Approval Rule form. If you have the Approver Configurator developer role in the GRC: Approver Configurator application, you’ve create and write access to the **Script** field on the Approval Rule form.\n\nFor more information on the roles in the GRC: Approver Configurator application, see [Roles installed with GRC: Approver Configurator](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/governance-risk-compliance/grc-common-functions/roles-installed-with-approver-configurator.md).\n\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCM Program Manager\\(sn\\_bcm.program\\_manager\\)\n\n</td><td>\n\nCreate, read, write, and delete access to all BCM application tables.\n\n</td><td>\n\n-   sn\\_bia.bia\\_manager\n-   sn\\_bcp.plan\\_manager\n-   sn\\_recovery.event\\_manager\n\n: Has read access to the phase records.\n\n-   sn\\_bcm.core\\_viewer\n-   workspace\\_user\n-   service\\_viewer\n-   sn\\_bcp.plan\\_contributor\n-   sn\\_smart\\_asmt.actor: Contains a Smart Assessment actor role to give update access to Smart Assessment instance.\n-   sn\\_smart\\_asmt.reassign: Contains the Smart assessment reassign role.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCM Planner \\(sn\\_bcm.planner\\)\n\n</td><td>\n\nRead access**Note:** If you have the BCM planner role and you are not the owner of the exercise, you cannot remove the assets from an exercise or remove a plan from the exercise, but you can add the assets or a plan. Additionally, if you are not the plan owner, you can only add the approved plans in an exercise or crisis event.\n\n</td><td>\n\n-   sn\\_smart\\_asmt.actor: Contains a Smart Assessment actor role to give update access to Smart Assessment instance.\n-   canvas\\_user\n-   sn\\_bia.bia\\_planner\n-   sn\\_bcm.core\\_viewer\n-   sn\\_crisis\\_ebn.user\n-   service\\_viewer\n-   sn\\_recovery.event\\_user\n\n: Has read access to the phase records.\n\n-   sn\\_bia.bia\\_viewer\n-   sn\\_smart\\_asmt.reassign: Contains the Smart assessment reassign role.\n-   workspace\\_user\n-   sn\\_bcp.plan\\_contributor\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCM Contributor \\(sn\\_bcm.contributor\\)\n\n</td><td>\n\n-   Read access to all BIAs, exercises, and crisis events tables.\n-   Read access to BCP tables if the contributor is included in the contributor list.\n-   Create and delete existing dependencies when the group is in pending state.\n-   Write access to the RTO, RPO, and dependency category state fields, disruptive duration of RTO and RPO editable fields, and dependency assessment editable fields.\n-   Update RTO, RPO, and dependency assessment state.\n-   Note that the contributor field is not a regular field on the form. You cannot use the asterisk \\(\\*\\) to perform a search on the contributors.\n\n</td><td>\n\n-   sn\\_bia.bia\\_contributor\n-   service\\_viewer\n-   sn\\_smart\\_asmt.reassign: Contains the Smart assessment reassign role.\n-   sn\\_bcm.core\\_viewer\n-   sn\\_smart\\_asmt.actor: Contains a Smart assessment actor role to give update access to Smart assessment instance.\n\n **Note:** To access records where you are added as a contributor, add the BCM Viewer \\(sn\\_bcm.viewer\\) role to the BCM Contributor \\(sn\\_bcm.contributor\\) role.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCM Viewer\\(sn\\_bcm.viewer\\)\n\n</td><td>\n\nView all data of the BCM applications.\n\n Has read access to the phase records.\n\n</td><td>\n\n-   sn\\_fam.user\n-   canvas\\_user\n-   service\\_viewer\n-   sn\\_crisis\\_ebn.viewer\n-   workspace\\_user\n-   sn\\_bcp.plan\\_viewer\n-   sn\\_bia.bia\\_viewer\n-   sn\\_bcm.core\\_viewer\n-   sn\\_recovery.event\\_viewer\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCM core\\_viewer \\(sn\\_bcm.core\\_viewer\\)\n\n</td><td>\n\nBCM core viewer role that can read the Smart assessment template.\n\n</td><td>\n\n-   sn\\_grc\\_workspace.task\\_reader\n-   sn\\_smart\\_asmt.assessment\\_reader: Contains a Smart assessment reader role to give read access to Smart assessment instance.\n-   sn\\_smart\\_asmt.template\\_reader: Contains a Smart assessment template reader role.\n-   sn\\_data\\_registry.reader\n-   sn\\_grc\\_workspace.user\n-   sn\\_grc\\_rel\\_config.reader\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nBCM Recovery Team member \\(sn\\_bcm.recovery\\_team\\_member\\)\n\n</td><td>\n\nView the list of recovery tasks for crisis events and exercises assigned by the BCM Program Manager.\n\n</td><td>\n\n-   sn\\_recovery.event\\_member\n-   sn\\_recovery.event\\_viewer\n-   sn\\_bcp.plan\\_viewer\n-   sn\\_bcm.core\\_viewer\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nBCP Plan Manager \\(sn\\_bcp.plan\\_manager\\)\n\n</td><td>\n\nCreate, read, write, and delete access on all the plans.\n\n</td><td>\n\n-   sn\\_doc.writer\n-   fd\\_read\\_flows\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nBIA Manager \\(sn\\_bcp.plan\\_manager\\)\n\n</td><td>\n\nCreate, read, write, and delete access on all the BIAs.\n\n</td><td>\n\nsn\\_doc.writer\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDoc writer \\(sn\\_doc.writer\\)\n\n</td><td>\n\nRead and write permissions to the document templates.\n\n</td><td>\n\n-   sn\\_doc.reader\n-   doc\\_page\\_number\\_config\\_writer\n-   doc\\_toc\\_config\\_writer\n-   localization\\_editor\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nApproval configuration admin \\(sn\\_grc\\_appr.admin\\)\n\n</td><td>\n\nCreate, read, write, and delete access to all approver configurator setup tables.\n\n</td><td>\n\n**Note:** To approve an approval configuration record in the BCM application, you must have a BCM role. If you add a user with a non-BCM role to the approval process of an approval configuration record, the record may become inaccessible due to being in an inaccessible state.\n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr><tr><td>\n\nApprover \\(sn\\_grc\\_appr.approver\\)\n\n</td><td>\n\nCreate, read, write, and delete access to the Approval table.\n\n</td><td>\n\n \n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr></tbody>\n</table><table id=\"table_zdr_42f_12c\"><thead><tr><th>\n\nName\n\n</th><th>\n\nType\n\n</th><th>\n\nContains roles\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\nsn\\_recovery.event\\_manager\n\n</td><td>\n\nOperator\n\n</td><td>\n\n-   sn\\_doc.writer\n-   fd\\_read\\_flows\n\n</td><td>\n\nAllows read, write, create, and delete access to all the recovery events.\n\n</td></tr><tr><td>\n\nsn\\_recovery.event\\_member\n\n</td><td>\n\nLite Operator\n\n</td><td>\n\nfd\\_read\\_flows\n\n</td><td>\n\nAllows read, write, and create access on recovery events.\n\n</td></tr><tr><td>\n\nsn\\_recovery.event\\_user\n\n</td><td>\n\nOperator\n\n</td><td>\n\nfd\\_read\\_flows\n\n</td><td>\n\nAllows read, write, and create access on recovery events.\n\n</td></tr><tr><td>\n\nsn\\_recovery.event\\_viewer\n\n</td><td>\n\nLite Operator\n\n</td><td>\n\nfd\\_read\\_flows\n\n</td><td>\n\nAllows read access on all recovery events.\n\n</td></tr></tbody>\n</table>## BCM lite operator role\n\nFor information on the BCM lite operator role, see [BCM lite operators](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/governance-risk-compliance/bcm-lite-operators.md).\n\n## Tables installed\n\n<table id=\"table_fbz_45z_vdb\"><thead><tr><th>\n\nTable\n\n</th><th>\n\nDescription\n\n</th><th>\n\nInstalled with scope\n\n</th></tr></thead><tbody><tr><td>\n\nBCM Choice \\[sn\\_bcm\\_choice\\]\n\n</td><td>\n\nFor the BCM admin to configure choice options in BCM applications.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nDocumentation Section\\[sn\\_bcm\\_document\\]\n\n</td><td>\n\nStores sections of a document for a plan.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nElement Definition\\[sn\\_bcm\\_element\\_definition\\]\n\n</td><td>\n\nStores all data for activity definitions.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nElement variable \\[sn\\_bcm\\_element\\_variable\\]\n\n</td><td>\n\nStores custom columns configured for an element definition.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nGrid configuration \\[sn\\_bcm\\_grid\\_configuration\\]\n\n</td><td>\n\nStores configuration for a particular grid. For example, the dependency assessment grid. Grid configuration can have multiple grid column configurations.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nGrid column configuration \\[sn\\_bcm\\_grid\\_column\\_configuration\\]\n\n</td><td>\n\nStores data for columns that should be displayed for a grid configuration.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nImpact analysis question \\[sn\\_bcm\\_impact\\_analysis\\_question\\]\n\n</td><td>\n\nStores impact analysis questions for an impact category.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nImpact Category\\[sn\\_bcm\\_impact\\_category\\]\n\n</td><td>\n\nStores the applicable timeframes and the maximum RTO value of a BIA.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nImpact Rating\\[sn\\_bcm\\_impact\\_rating\\]\n\n</td><td>\n\nStores the impact ratings for an impact category.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nLoss Scenario\\[sn\\_bcm\\_loss\\_scenario\\]\n\n</td><td>\n\nStores the elements impacted in a loss scenario.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nRecovery Tier\\[sn\\_bcm\\_recovery\\_tier\\]\n\n</td><td>\n\nStores recovery timeframes applicable for a recovery tier level.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nRecovery Timeframe\\[sn\\_bcm\\_timeframe\\]\n\n</td><td>\n\nStores the time duration at which a recovery timeframe starts.\n\n</td><td>\n\nBusiness Continuity Management – Core\n\n</td></tr><tr><td>\n\nRecovery Tasks\\[sn\\_bcp\\_recovery\\_task\\]\n\n</td><td>\n\nStores the activity tasks of all business continuity and recovery plans.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nRelated Plan \\[sn\\_bcp\\_plan\\_plan\\]\n\n</td><td>\n\nStores related plans for the primary plan in BCP.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan Documentation\\[sn\\_bcp\\_document\\]\n\n</td><td>\n\nStores the contents of a documentation section that is a part of a plan template.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan\\[sn\\_bcp\\_plan\\]\n\n</td><td>\n\nStores the status of business continuity and recovery plans.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan Assets\\[sn\\_bcp\\_plan\\_asset\\]\n\n</td><td>\n\nStores the RPO, RTO, RTA, and RTO gap of the plan assets of all plans.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nRelated Asset Dependency\\[sn\\_bcp\\_plan\\_asset\\_dependency\\]\n\n</td><td>\n\nStores the assets as configuration items that are dependent on a plan loss scenario.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan Loss Scenario\\[sn\\_bcp\\_plan\\_loss\\_scenario\\]\n\n</td><td>\n\nStores the relationship between a plan and a loss scenario.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan Task\\[sn\\_bcp\\_plan\\_task\\]\n\n</td><td>\n\nStores the configuration items identified for a plan task.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nRecovery Strategy\\[sn\\_bcp\\_recovery\\_strategy\\]\n\n</td><td>\n\nStores the recovery strategy associated with an asset identified in a plan loss scenario.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nRecovery Team\\[sn\\_bcp\\_recovery\\_team\\]\n\n</td><td>\n\nStores the users and groups assigned to the recovery team of a plan.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nPlan Template\\[sn\\_bcp\\_template\\]\n\n</td><td>\n\nStores the document sections, element definitions, and loss scenarios identified for each plan template.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr><tr><td>\n\nDependency report source \\[sn\\_bia\\_dependency\\_report\\_source\\]\n\n</td><td>\n\nStores columns that are tracked in a report. Used while creating an ad-hoc report on the dependency table.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nImpact Analysis\\[sn\\_bia\\_analysis\\]\n\n</td><td>\n\nStores all data related to BIA and the template it uses.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nImpact Category Result\\[sn\\_bia\\_category\\_result\\]\n\n</td><td>\n\nStores the impact category results of all BIAs.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nDependency\\[sn\\_bia\\_dependency\\]\n\n</td><td>\n\nStores the dependency groups and their item details.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nImpact Dependency Group\\[sn\\_bia\\_dependency\\_group\\]\n\n</td><td>\n\nStores element definitions or the dependency groups associated with a BIA.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nResult\\[sn\\_bia\\_result\\]\n\n</td><td>\n\nStores the category result, disruption duration, and the impact rating data.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nBIA Template\\[sn\\_bia\\_template\\]\n\n</td><td>\n\nStores the impact categories and dependency groups that a business process depends on.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nScore timeframe mapping \\[sn\\_bia\\_score\\_timeframe\\_mapping\\]\n\n</td><td>\n\nStores the mapping results of the threshold score and the timeframe.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nActivated Plan\\[sn\\_recovery\\_activated\\_plan\\]\n\n</td><td>\n\nStores the list of recovery plans activated in an exercise or actual event.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nEvent\\[sn\\_recovery\\_event\\]\n\n</td><td>\n\nStores the status and owner details of events.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nEvent Assets \\[sn\\_recovery\\_event\\_asset\\]\n\n</td><td>\n\nStores the asset name and the state whether the asset is recovered or not in an actual or exercise event.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nEvent Task\\[sn\\_recovery\\_event\\_task\\]\n\n</td><td>\n\nStores the status details and assignees of event tasks.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nImpacted Asset to Activated Plan \\[sn\\_recovery\\_impacted\\_asset\\_to\\_activated\\_plan\\]\n\n</td><td>\n\nMaps impacted assets with the activated plans.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nApproval \\[sn\\_recovery\\_approval\\]\n\n</td><td>\n\nStore approval details of the event.\n\n</td><td>\n\nBusiness Continuity Management – Recovery Exercise Management\n\n</td></tr><tr><td>\n\nApproval Configuration \\[sn\\_grc\\_appr\\_approval\\_configuration\\]\n\n</td><td>\n\nStores approval configuration information that applies to any business document like BIA, BCP, events, or any table.\n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr><tr><td>\n\nApproval Level \\[sn\\_grc\\_appr\\_approval\\_level\\]\n\n</td><td>\n\nStores approval level information for an approval configuration of a business document.\n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr><tr><td>\n\nApproval Rule \\[sn\\_grc\\_appr\\_approval\\_rule\\]\n\n</td><td>\n\nStores information of the approval rule applied to the business document.\n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr><tr><td>\n\nApproval \\[sn\\_grc\\_appr\\_approval\\]\n\n</td><td>\n\nStores information of the approvers for each approval level.\n\n</td><td>\n\nBusiness Continuity Management – Approver Configurator\n\n</td></tr><tr><td>\n\nApproval \\[sn\\_bia\\_approval\\]\n\n</td><td>\n\nStores information of the BIA approvers for each approval level.\n\n</td><td>\n\nBusiness Continuity Management – Impact Analysis\n\n</td></tr><tr><td>\n\nApproval \\[sn\\_bcp\\_approval\\]\n\n</td><td>\n\nStores information of the BCP approvers for each approval level.\n\n</td><td>\n\nBusiness Continuity Management – Planning\n\n</td></tr></tbody>\n</table>## Properties installed\n\nFor properties installed with the Business Continuity Management application, see [Properties installed with BCM](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/governance-risk-compliance/properties-bcm.md).\n\n**Parent Topic:**[BCM reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/governance-risk-compliance/bcm-reference.md)\n\n## Script includes in Business Continuity Management\n\nWhen you download the Business Continuity Management application, several script includes are added to your instance.\n\n### Script includes updated for the Australia release\n\n|Script-includes|Description|\n|---------------|-----------|\n|ActivePlanCandidateFilter|Contains the utility functions that are used in the BCP active plan filter.|\n|AssessmentTemplateBIAFieldsUtilBase|Functions used in creating AssessmentTemplateBIAFields record from selected assessment templates.|\n|AssessmentTemplateBIAFieldsUtil|Script include to override BIA creation functions in AssessmentTemplateBIAFieldsUtilBase.|\n|BCPConstants|Contains the utility functions that are used in the BCP constants.|\n|BCPDataVisualizationUtilsBase|Contains the utility functions that are used in the BCP data visualization.|\n|BCPDependencySnapshotUpdateStrategyBase|Contains the API for updating the dependencies in plans.|\n|BCPDocumentationRecordAPIBase|Contains the utility functions that are used in the BCP documentation record API base.|\n|BCPDocumentationRecordAPI|Contains the utility functions that are used in the BCP documentation record APIs.​|\n|BCPRecordUI|Contains the utility functions that are used in the BCP record UI pages.​|\n|BCPRecordUIBase|Contains the utility functions that are used in the BCP record UI base.​|\n|BCPRecordAPI|Contains the utility functions that are used in the BCP record API.|\n|BCPTemplateUtilsBase|Contains the utility functions that are used in the BCP template utilities base.|\n|BIAAjaxProcessor|Helper class to handle Ajax requests from client scripts. Implementing methods:1. To determine visibility of \"Include CIA\" field on BIA Template form.2. To set \"Applies to table\" field with source table name of primary element assessed.|\n|BIARecordAPIBase|An API built to interact with BIA records. The goal of this API is to hide the implementation details about BIA records. It provides a structured API to retrieve and update data for BIA records.|\n|BIAAssessmentUIBase|Utility class to support Business Impact Analysis Assessment UI pages.|\n|BIAUtil|Script to handle insert and updates on BIA table, including validationsSetting depends on table field based on dependency group element definition.|\n|BIASmartAssessmentBase|Utility class to support all Smart Assessment functionality.|\n|BIASmartAssessment|Script include to override Smart Assessment related functions in BIASmartAssessmentBase|\n|BIAConstants|Generic class for BIA constants|\n|BIACopyUtilBase|Utility to copy existing BIA and generate a new BIA in draft state.|\n|BIARecordCreationUtilBase|Functions used in creating BIAs from templates|\n|BIAFilterUtilBase|Script which contains functions to provide reference qualifiers on BIA tables.|\n|BIADependencySnapshotUpdateStrategyBase|Contains the API for updating the dependencies in the BIAs.|\n|DependencySnapshotUpdateStrategyBase|Contains the API for the Update dependencies action and scheduled job​.|\n|EventDependencyUpdateStrategyBase|Contains the API for updating the dependencies in the events.|\n|PlanRestAPIResourceUtil|Contains the utility functions that are used in the BCP Plan Rest API resource utility.|\n|PlanRestAPIResourceUtil|Contains the utility functions that are used in the BCP plan Rest API resource utility.|\n|PopulateBIAForPlanAsset|Contains the utility functions that are used to populate the BIA for the plan and asset.|\n|PlanCopyUtilBase|Contains the utility functions that are used in the BCP plan copy utility base.|\n|PlanUtil|Contains the utility functions that are used in the BCP plan utility.|\n|PlanCommonUtils|Contains the utility functions that are used in the plan common utility.|\n|RecoveryTasksUtil|Contains the utility functions that are used in the BCP recovery tasks utility.|\n\n### Scripts used for Nested events\n\n|Name|Description|\n|----|-----------|\n|EventTaskGanttUIBase|Utility class to support event task hierarchical view.|\n|EventTaskGanttUI|Script include to override event task hierarchical view functions in EventTaskGanttUIBase.|\n|EventSandboxCallableUtilsBase|Utility class containing sandbox callable functions.|\n|EventSandboxCallableUtils|Script include to override event related functions in EventSandboxCallableUtilsBase.|\n|EventRecordProgressTrackerBase|Utility class to support progress tracker functionality for event.|\n|EventRecordProgressTracker|Script include to override progress tracker related functions in EventRecordProgressTrackerBase.|\n|BCMRecoveryConstants|Generic class for recovery constants.|\n|EventRecordAPIBase|An API to interact with event record.|\n|EventTaskUtil|Utility class for event tasks.|\n|ActivatedPlanRecordAPIBase|An API to interact with activated plan record.|\n\n## Import and export integration reference\n\nUse this reference to integrate the shared Microsoft Excel import and export library into your ServiceNow application. It lists the library components, configuration class methods, artifacts that you must create, and example code for export, import, and combined integrations.\n\n### How the shared library works\n\nThe shared library is delivered in the scope \\(repository\\). Consumer applications such as Business Continuity Management provide configuration only and do not modify the shared library.\n\nThe architecture uses an extension point pattern:\n\n-   The shared library defines an extension point.\n-   Your application creates a configuration class that implements this extension point.\n-   The shared library discovers your configuration at runtime by matching the value of `getTable()` against the target table.\n\nOne configuration class drives both export and import. The same field list and dot-walk configuration ensure round-trip consistency: export writes the dot-walked value \\(for example, `user_name`\\) to Microsoft Excel, and import resolves that value back to `sys_id`.\n\n### Shared layer components\n\nYou do not modify these shared layer components. The following table describes each component and its responsibility in the import and export flow.\n\n|Component|Description|\n|---------|-----------|\n|ImportExportConfigReader|Resolves your configuration, builds the export URL, and resolves dot-walk values during import.|\n|ExcelExportAjax|Fetches metadata, drop-down options, and records that are written to the Microsoft Excel file.|\n|excel\\_export\\_modal \\(UI Page\\)|Builds the Microsoft Excel workbook on the client side using the ExcelJS library.|\n|ImportDataUtils|Validates the attachment, queues the asynchronous import, parses the Microsoft Excel file, loads data into the staging table, and triggers the Record Transform Engine \\(RTE\\) transform.|\n|Event Registration and Script Action|Asynchronous event queue \\(`process_import_data`\\) that connects the import queue to the processing logic.|\n|ImportProgressTracker|Tracks import progress and provides per-row updates that drive the inline progress tracker on the parent record.|\n\n### Artifacts to create in your application scope\n\nEverything described in this section is created in your application scope. The following table lists the artifacts that are always required, regardless of whether you implement export, import, or both.\n\n|Artifact|Description|\n|--------|-----------|\n|&lt;Table&gt;ImportExportConfigBase|Script include \\(sys\\_policy: read\\). Contains all configuration method implementations.|\n|&lt;Table&gt;ImportExportConfig|Script include. Thin concrete class that extends the base class and is registered as the extension instance.|\n|Extension Instance|A `sys_extension_instance` record that points to your configuration class.|\n\nThe following table lists the additional artifacts that are required for export.\n\n|Artifact|Description|\n|--------|-----------|\n|Declarative Action \\(client script\\)|Calls `ImportExportConfigReader.getExportUrl()` through GlideAjax and opens the export modal.|\n|System Properties|Recommended. `<scope>.<table>_excel_export_max_rows` and `<scope>.<table>_excel_export_max_dropdown_records`.|\n\nThe following table lists the additional artifacts that are required for import.\n\n|Artifact|Description|\n|--------|-----------|\n|Declarative Action \\(UXF client action or server script\\)|Calls `ImportDataUtils.queueImport()`.|\n|Dictionary field|A `file_attachment` field on the parent table that is used to upload the Microsoft Excel file.|\n|Staging table|Extends `sys_import_set_row`. String columns that match the import fields.|\n|ACLs on the staging table|CRUD and `report_view` access for your admin role.|\n|RTE configuration|ETL Definition, Staging Entity, Target Entity, Entity Mapping, Robust Import Set Transformer, and Field Mappings \\(one per column\\).|\n|RTE Script Operations \\(optional\\)|Required only for reference fields with dot-walk configuration. Resolves display values to sys\\_ids.|\n\n### Configuration class methods\n\nThe configuration base class implements the methods that are described in this section. Implement only the methods that your use case requires.\n\nThe following table describes the shared methods that are required for both export and import.\n\n|Method|Returns|Description|\n|------|-------|-----------|\n|getTable\\(\\)|string|Target table name, for example `sn_recovery_event_task`.|\n|getFields\\(\\)|string\\[\\]|Ordered field list. Drives export columns and import mapping.|\n|getDotWalkFields\\(\\)|Object|Object of the form `{ fieldName: dotWalkField }`, for example `{ assigned_to: 'user_name' }`. Export shows the dot-walk value and import resolves it back to `sys_id`.|\n|getOrderByField\\(\\)|string|Sort field used by export queries. Defaults to `number`.|\n|setSourceRecord\\(gr\\)|void|Optional. Called by the shared layer when a parent record is available. Store the parent record so that `getRefQualOverrides()` can reference it.|\n\nThe following table describes the export-related methods.\n\n|Method|Returns|Description|\n|------|-------|-----------|\n|getProtectedFields\\(\\)|string\\[\\]|Read-only columns in the Microsoft Excel sheet \\(locked cells\\).|\n|getUniqueFields\\(\\)|string\\[\\]|Columns that use duplicate highlighting through conditional formatting.|\n|getHiddenColumns\\(\\)|string\\[\\]|Columns that are exported but hidden from the user.|\n|getNoValidationFields\\(\\)|string\\[\\]|Fields that skip drop-down and reference validation.|\n|getRefQualOverrides\\(\\)|Object|Reference qualifier overrides per field. Can use the stored source record for dynamic filtering.|\n|getInfoSheetsDetails\\(\\)|Object|Extra sheets, in the form `{ sheetName: [{ key: value }] }`.|\n|getMaxRows\\(\\)|string \\| number|Maximum rows to export, read from the system property.|\n|getMaxDropdownRecords\\(\\)|string \\| number|Maximum drop-down options before falling back to a plain text string.|\n|getAllowTemplateDownload\\(\\)|boolean|When `true`, users can download an empty template even when no data rows exist.|\n|getRestrictEditsToExportedRows\\(\\)|boolean|When `true`, only the exported data rows have drop-down lists and validation. Rows beyond the data are locked.|\n\nThe following table describes the import-related methods.\n\n<table id=\"table_import_methods\"><thead><tr><th>\n\nMethod\n\n</th><th>\n\nReturns\n\n</th><th>\n\nDescription\n\n</th></tr></thead><tbody><tr><td>\n\ngetStagingTableName\\(\\)\n\n</td><td>\n\nstring\n\n</td><td>\n\nStaging table name, which extends `sys_import_set_row`.\n\n</td></tr><tr><td>\n\ngetImportFieldMapping\\(\\)\n\n</td><td>\n\nObject\n\n</td><td>\n\nObject of the form `{ fieldKey: stagingColumnName }`. Maps configuration fields to staging table columns.\n\n</td></tr><tr><td>\n\ngetSheetConfig\\(\\)\n\n</td><td>\n\nObject\n\n</td><td>\n\nObject of the form `{ sheetName: string, headerRowsToSkip: number }`. Specifies which sheet to read and how many header rows to skip.\n\n</td></tr><tr><td>\n\ngetImportAttachmentField\\(\\)\n\n</td><td>\n\nstring\n\n</td><td>\n\nName of the `file_attachment` field on the parent record. The shared layer clears this field after the import completes \\(whether it succeeds or fails\\) so that the user can re-import.\n\n</td></tr><tr><td>\n\nonBeforeStagingInsert\\(recordGr\\)\n\n</td><td>\n\nvoid\n\n</td><td>\n\nOptional. Called for each row before it is inserted into the staging table. Use this method to stamp parent context, for example `recordGr.setValue('event', this._sourceRecordSysId)`.\n\n</td></tr><tr><td>\n\nvalidateAttachment\\(sysId\\)\n\n</td><td>\n\nstring\\|null\n\n</td><td>\n\nOptional. Custom validation on the uploaded file. Return an error message string to abort the import. Return null if the file is valid.\n\n</td></tr><tr><td>\n\nvalidateRow \\(Source, Target\\)\n\n</td><td>\n\nVoid\n\n</td><td>\n\nOptional. Called per staging row before transform \\(`ETL on_before_script`\\). To reject a row, set `ignore = true` and `ignore_reason` to a user-facing message. The Record Transform Engine skips rejected rows and logs the reason.\n\n **Note:** ETL stands for Extract, Transform, Load—a data integration process used to collect, process, and store data for analysis and reporting.\n\n</td></tr><tr><td>\n\npostProcessRow \\(Source, Target\\)\n\n</td><td>\n\nVoid\n\n</td><td>\n\nOptional. Called per row after transform \\(`ETL on_after_script`\\). Use for post-transform operations such as updating related records or resolving cross-row dependencies.\n\n</td></tr></tbody>\n</table>### Method usage matrix\n\nThe following table indicates which methods are required, optional, or not needed for each integration mode. A check mark \\(✓\\) indicates that the method is required. A dot \\(·\\) indicates that it is not needed, and a circle \\(○\\) indicates that the method is optional.\n\n|Method|Export only|Import only|Both|\n|------|-----------|-----------|----|\n|getTable\\(\\)|✓|✓|✓|\n|getFields\\(\\)|✓|✓|✓|\n|getDotWalkFields\\(\\)|o|o|o|\n|getOrderByField\\(\\)|✓|·|✓|\n|setSourceRecord\\(gr\\)|o|o|o|\n|getProtectedFields\\(\\)|✓|·|✓|\n|getUniqueFields\\(\\)|✓|·|✓|\n|getHiddenColumns\\(\\)|o|o|o|\n|getNoValidationFields\\(\\)|o|o|o|\n|getRefQualOverrides\\(\\)|o|o|o|\n|getInfoSheetsDetails\\(\\)|o|o|o|\n|getMaxRows\\(\\)|✓|·|✓|\n|getMaxDropdownRecords\\(\\)|✓|·|✓|\n|getAllowTemplateDownload\\(\\)|✓|·|✓|\n|getRestrictEditsToExportedRows\\(\\)|o|·|o|\n|getStagingTableName\\(\\)|·|✓|✓|\n|getImportFieldMapping\\(\\)|·|✓|✓|\n|getSheetConfig\\(\\)|·|✓|✓|\n|getImportAttachmentField\\(\\)|·|✓|✓|\n|onBeforeStagingInsert\\(recordGr\\)|·|o|o|\n|validateAttachment\\(sysId\\)|·|o|o|\n|validateRow \\(Source, Target\\)|o|o|o|\n|postProcessRow \\(Source, Target\\)|o|o|o|\n\n### Export setup\n\nThe following example shows an export-only configuration base class.\n\n```\nconst YourTableImportExportConfigBase = Class.create();\nYourTableImportExportConfigBase.prototype = {\n    initialize: function() {},\n\n    getTable: function() {\n        return 'your_table_name';\n    },\n\n    getFields: function() {\n        return ['number', 'name', 'status', 'assigned_to', 'due_date'];\n    },\n\n    getDotWalkFields: function() {\n        return { assigned_to: 'user_name' };\n    },\n\n    getOrderByField: function() {\n        return 'number';\n    },\n\n    getProtectedFields: function() {\n        return ['number', 'name'];\n    },\n\n    getUniqueFields: function() {\n        return ['number'];\n    },\n\n    getHiddenColumns: function() {\n        return [];\n    },\n\n    getNoValidationFields: function() {\n        return [];\n    },\n\n    getRefQualOverrides: function() {\n        return {};\n    },\n\n    getInfoSheetsDetails: function() {\n        return {\n            'Instructions': [\n                {\n                    column: gs.getMessage('Number*'),\n                    instruction: gs.getMessage('Unique identifier'),\n                    validation: gs.getMessage('Read-only'),\n                    example: gs.getMessage('RA0001001'),\n                },\n            ],\n        };\n    },\n\n    getMaxRows: function() {\n        return parseInt(gs.getProperty('your_scope.your_table_excel_export_max_rows', '10000'), 10);\n    },\n\n    getMaxDropdownRecords: function() {\n        return parseInt(gs.getProperty('your_scope.your_table_excel_export_max_dropdown_records', '10000'), 10);\n    },\n\n    getAllowTemplateDownload: function() {\n        return true;\n    },\n\n    type: 'YourTableImportExportConfigBase'\n};\n```\n\n**Note:** The `sysparm_sourceTable` and `sysparm_sourceId` parameters are optional. Include them only when your configuration uses `setSourceRecord()` for dynamic reference qualifiers, such as filtering drop-down lists by parent record.\n\nCreate two system properties in your application scope. The following table describes the properties.\n\n|Property name|Default|Purpose|\n|-------------|-------|-------|\n|&lt;scope&gt;.&lt;table&gt;\\_excel\\_export\\_max\\_rows|10000|Maximum number of data rows in an export.|\n|&lt;scope&gt;.&lt;table&gt;\\_excel\\_export\\_max\\_dropdown\\_records|10000|Maximum number of drop-down options per field before the column falls back to a plain text string.|\n\n### Import setup\n\nAdd the following methods to your configuration base class, in addition to the shared methods.\n\n```\ngetStagingTableName: function() {\n    return 'your_table_import';\n},\n\ngetImportFieldMapping: function() {\n    return {\n        number: 'number',\n        name: 'name',\n        status: 'status',\n        assigned_to: 'assigned_to',\n    };\n},\n\ngetSheetConfig: function() {\n    return {\n        sheetName: 'Your Sheet Name',\n        headerRowsToSkip: 1,\n    };\n},\n\ngetImportAttachmentField: function() {\n    return 'your_import_file_field';\n},\n\nonBeforeStagingInsert: function(recordGr) {\n    if (this._sourceRecordSysId) {\n        recordGr.setValue('parent_field', this._sourceRecordSysId);\n    }\n},\n```\n\n**Note:** The `sheetName` value must match the tab name in the Microsoft Excel file. When you implement both export and import, this value must match the data sheet tab name that is generated during export.\n\nCreate a staging table that extends `sys_import_set_row` with string columns that match the import fields. The following table describes the columns for a typical staging table.\n\n|Column|Type|Notes|\n|------|----|-----|\n|Number|String \\(50\\)|Coalesce field. Used to match existing records.|\n|Name|String \\(255\\)|—|\n|Status|String \\(40\\)|—|\n|Assigned\\_to|String \\(150\\)|Stored as raw text from Microsoft Excel. The Record Transform Engine resolves the value to `sys_id`.|\n\nAll columns are strings, regardless of the target field type. The RTE transform handles type conversion. Create CRUD and `report_view` ACLs on the staging table for your admin role.\n\nAdd a `file_attachment` dictionary field to the parent table \\(for example, the event table\\). Users upload the Microsoft Excel file to this field before they trigger the import.\n\nCreate the following records in your application scope to configure the Record Transform Engine.\n\n|Record|Purpose|\n|------|-------|\n|ETL Definition|Top-level container for the transform.|\n|Staging Entity|Points to your staging table.|\n|Target Entity|Points to your target table.|\n|Entity Mapping|Maps the staging entity to the target entity. Coalesce on `number` to ensure that the operation is an update, not an insert.|\n|Robust Import Set Transformer|Connects the ETL definition to the staging table.|\n|Field Mappings|One field mapping per staging column to target field.|\n\nIf you have reference fields with dot-walk configuration \\(for example, `assigned_to` mapped to `user_name`\\), create one RTE script operation per field. The following example shows a script operation that resolves dot-walk values during import.\n\n**Important:** The Record Transform Engine runs ES5 only \\(Rhino\\). Use `var`, `function()`, and `.concat()`. Do not use `const`, `let`, arrow functions, or template literals.\n\n### Combined import and export integration\n\nWhen you implement both directions, use a single configuration class with all methods that are described in the export setup and import setup sections. A single configuration class ensures round-trip consistency.\n\n|Direction|What happens|\n|---------|------------|\n|Export|`getDotWalkFields()` returns `{ assigned_to: 'user_name' }`. The Microsoft Excel file shows the user name value, for example, `abel.tuter`.|\n|Import|The RTE script operation calls `resolveDotWalkValues(tableName, fieldName, batch, output)`, which resolves the value back to `sys_id`.|\n\nThe same dot-walk configuration drives both directions. Protected fields, which are locked in Microsoft Excel, prevent users from modifying the coalesce keys that the import relies on for matching. Create all artifacts that are listed for both export and import, but use a single shared configuration class.\n\n### Onboarding checklist\n\nUse the following checklist when you onboard a new consumer application. The checklist is grouped by integration mode.\n\n<table id=\"table_onboarding\"><thead><tr><th>\n\nMode\n\n</th><th>\n\nItems to complete\n\n</th></tr></thead><tbody><tr><td>\n\nExport only\n\n</td><td>\n\n-   Configuration base class with shared and export methods.\n-   Configuration class that extends the base class.\n-   Declarative action client script with GlideAjax that opens the export modal.\n-   System properties for `max_rows` and `max_dropdown_records`.\n\n</td></tr><tr><td>\n\nImport only\n\n</td><td>\n\n-   Configuration base class with shared and import methods.\n-   `getImportAttachmentField()` returns the parent attachment field name.\n-   \\(Optional\\) `onBeforeStagingInsert(recordGr)` stamps parent context on each row.\n-   Configuration class that extends the base class.\n-   Staging table that extends `sys_import_set_row` with string columns.\n-   ACLs on the staging table \\(CRUD and `report_view`\\).\n-   `file_attachment` dictionary field on the parent table.\n-   Declarative action that calls `ImportDataUtils.queueImport()`.\n-   RTE: ETL Definition, Staging Entity, Target Entity, Entity Mapping, and transformer.\n-   RTE: field mappings \\(one per staging column to target field\\).\n-   RTE: script operations for dot-walk reference fields \\(if applicable\\).\n\n</td></tr><tr><td>\n\nCombined\n\n</td><td>\n\n-   All items from the export-only and import-only checklists.\n-   A single configuration class that implements all methods.\n-   Round-trip consistency verified: export dot-walk values, and confirm that import resolves the same values back.\n\n</td></tr><tr><td>\n\nValidateRow and PostProcessRow\n\n</td><td>\n\nOptional per-row validation and post-processing hooks, implemented in the configuration class and integrated into the Extract, Transform, Load \\(ETL\\) pipeline through `on_before_script` and `on_after_script`.\n\n</td></tr></tbody>\n</table>### Troubleshooting\n\nUse the following table to diagnose and resolve common issues that arise during integration.\n\n|Problem|Cause|Fix|\n|-------|-----|---|\n|Extension point not found|Configuration class is not registered, or `getTable()` returns the wrong value.|Verify the extension instance record and the table name.|\n|Export modal is blank|GlideAjax returns `null`.|Verify that `ImportExportConfigReader` has `client_callable=true`.|\n|Import silently does nothing|`queueImport()` returns `false`.|Verify that the attachment exists, that it is an .xlsx file, and that the extension point resolves.|\n|RTE transforms 0 records|Stale import set GlideRecord.|The shared layer re-fetches by `sys_id`. Verify that the staging table has data.|\n|Dot-walk values not resolved|`getDotWalkFields()` is missing or has the wrong field name.|Verify that the configuration matches the `sys_dictionary` reference.|\n|Data policy blocks import|`apply_import_set=true` on the target table.|Set `apply_import_set=false` on the blocking data policies.|\n|ES6 syntax in RTE script operation|Use of `const`, `let`, or arrow functions.|RTE runs ES5 \\(Rhino\\). Use `var`, `function`, and `.concat()`.|\n|Round-trip mismatch on a reference field|Export shows the display name, but import cannot resolve it.|Add the field to `getDotWalkFields()`. The RTE target must use the same dot-walk path.|\n|Progress tracker stuck|Unhandled exception in `processAttachment`.|Check the system logs. The tracker automatically transitions to an error state when an exception is caught.|\n|Import rejects valid rows|Row fails validation logic|Check validateRow.|\n|GlideList values rejected|Dot-walk field format mismatch|Match dot-walk field format.|\n|Protected fields edited after removing sheet protection|Fields are still protected at the import set level|Ignored by import.|\n\n"}}