---
sourceDocument: Australia Governance, Risk, and Compliance
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/governance-risk-compliance

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia Governance, Risk, and Compliance

ft:clusterId :

    - grc

bundleId :

    - grc

workflow :

    - Technology


---

# Components installed with Business Continuity Management

# Components installed with Business Continuity Management {#ariaid-title1}

* Release version: Australia
* 
* Updated March 12, 2026
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 23 minutes to read

Several types of components are installed with activation of the Business Continuity Management application.

## Roles installed {#installed-with-bcm__section_wly_yyh_wdb}

{#installed-with-bcm__table_u1t_gb1_wdb__entry__4}

| Role title \[name\] | Description | Contains roles | Available with scope |
|-|-|-|-|
| BCM administrator (sn_bcm.admin) | Create, read, write, and delete access to all tables including the core data. Has create, read, and write access to the phase records. Note: Starting with Release 9.x.x, BCM administrator (sn_bcm.admin) role is now used for ACLs, replacing the System Administrator role. | * sn_bcp.plan_admin * sn_grc_workspace.admin * sn_crisis_ebn.admin * sn_grc_workspace.task_admin * sn_data_registry.admin * sn_grc_doc_design.admin * sn_bcm.core_manager * sn_irm_shared_cmn.word_template_creator * dependency_views * sn_smart_asmt.template_manager: Provides access to create a Smart Assessment template. * sn_bia.bia_admin * sn_bcm.program_manager * sn_grc_appr.admin Note: The BCM admin contains the Approver Configurator admin role, but it doesn't contain the Approver Configurator developer role. For 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. For more information on the roles in the GRC: Approver Configurator application, see [Roles installed with GRC: Approver Configurator](https://servicenow-prod.fluidtopics.net/ueRCW07y5CW4R~kP60ZU5g "Various roles are installed with the activation of the GRC: Approver Configurator application."). {#installed-with-bcm__ul_rlw_dgt_kmb} | Business Continuity Management -- Core |
| BCM Program Manager (sn_bcm.program_manager) | Create, read, write, and delete access to all BCM application tables. | * sn_bia.bia_manager * sn_bcp.plan_manager * sn_recovery.event_manager: Has read access to the phase records. * sn_bcm.core_viewer * workspace_user * service_viewer * sn_bcp.plan_contributor * sn_smart_asmt.actor: Contains a Smart Assessment actor role to give update access to Smart Assessment instance. * sn_smart_asmt.reassign: Contains the Smart assessment reassign role. {#installed-with-bcm__ul_ntf_pft_kmb} | Business Continuity Management -- Core |
| BCM Planner (sn_bcm.planner) | Read 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. | * sn_smart_asmt.actor: Contains a Smart Assessment actor role to give update access to Smart Assessment instance. * canvas_user * sn_bia.bia_planner * sn_bcm.core_viewer * sn_crisis_ebn.user * service_viewer * sn_recovery.event_user: Has read access to the phase records. * sn_bia.bia_viewer * sn_smart_asmt.reassign: Contains the Smart assessment reassign role. * workspace_user * sn_bcp.plan_contributor {#installed-with-bcm__ul_d3z_p5z_vdb} | Business Continuity Management -- Core |
| BCM Contributor (sn_bcm.contributor) | * Read access to all BIAs, exercises, and crisis events tables. * Read access to BCP tables if the contributor is included in the contributor list. * Create and delete existing dependencies when the group is in pending state. * Write access to the RTO, RPO, and dependency category state fields, disruptive duration of RTO and RPO editable fields, and dependency assessment editable fields. * Update RTO, RPO, and dependency assessment state. * 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. {#installed-with-bcm__ul_idr_2lw_5sb} | * sn_bia.bia_contributor * service_viewer * sn_smart_asmt.reassign: Contains the Smart assessment reassign role. * sn_bcm.core_viewer * sn_smart_asmt.actor: Contains a Smart assessment actor role to give update access to Smart assessment instance. {#installed-with-bcm__ul_x4g_hjw_5sb} 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. | Business Continuity Management -- Core |
| BCM Viewer (sn_bcm.viewer) | View all data of the BCM applications. Has read access to the phase records. | * sn_fam.user * canvas_user * service_viewer * sn_crisis_ebn.viewer * workspace_user * sn_bcp.plan_viewer * sn_bia.bia_viewer * sn_bcm.core_viewer * sn_recovery.event_viewer {#installed-with-bcm__ul_qrm_xft_kmb} | Business Continuity Management -- Core |
| BCM core_viewer (sn_bcm.core_viewer) | BCM core viewer role that can read the Smart assessment template. | * sn_grc_workspace.task_reader * sn_smart_asmt.assessment_reader: Contains a Smart assessment reader role to give read access to Smart assessment instance. * sn_smart_asmt.template_reader: Contains a Smart assessment template reader role. * sn_data_registry.reader * sn_grc_workspace.user * sn_grc_rel_config.reader {#installed-with-bcm__ul_n4k_3bg_12c} |   |
| BCM Recovery Team member (sn_bcm.recovery_team_member) | View the list of recovery tasks for crisis events and exercises assigned by the BCM Program Manager. | * sn_recovery.event_member * sn_recovery.event_viewer * sn_bcp.plan_viewer * sn_bcm.core_viewer {#installed-with-bcm__ul_vlq_cnm_kqb} | Business Continuity Management -- Core |
| BCP Plan Manager (sn_bcp.plan_manager) | Create, read, write, and delete access on all the plans. | * sn_doc.writer * fd_read_flows {#installed-with-bcm__ul_mbp_htk_hgc} |   |
| BIA Manager (sn_bcp.plan_manager) | Create, read, write, and delete access on all the BIAs. | sn_doc.writer |   |
| Doc writer (sn_doc.writer) | Read and write permissions to the document templates. | * sn_doc.reader * doc_page_number_config_writer * doc_toc_config_writer * localization_editor {#installed-with-bcm__ul_r3r_stk_hgc} |   |
| Approval configuration admin (sn_grc_appr.admin) | Create, read, write, and delete access to all approver configurator setup tables. | 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. | Business Continuity Management -- Approver Configurator |
| Approver (sn_grc_appr.approver) | Create, read, write, and delete access to the Approval table. |   | Business Continuity Management -- Approver Configurator |
[ ]

{#installed-with-bcm__table_u1t_gb1_wdb} {#installed-with-bcm__table_zdr_42f_12c__entry__4}

| Name | Type | Contains roles | Description |
|-|-|-|-|
| sn_recovery.event_manager | Operator | * sn_doc.writer * fd_read_flows {#installed-with-bcm__ul_rl4_nrd_cgc} | Allows read, write, create, and delete access to all the recovery events. |
| sn_recovery.event_member | Lite Operator | fd_read_flows | Allows read, write, and create access on recovery events. |
| sn_recovery.event_user | Operator | fd_read_flows | Allows read, write, and create access on recovery events. |
| sn_recovery.event_viewer | Lite Operator | fd_read_flows | Allows read access on all recovery events. |
[Table 1. Crisis management roles]

{#installed-with-bcm__table_zdr_42f_12c}

## BCM lite operator role {#installed-with-bcm__section_p2k_1hq_fyb}

For information on the BCM lite operator role, see [BCM lite operators](https://servicenow-prod.fluidtopics.net/N7TQWbi9EcFd~OfPDysjSg "The Business Continuity Management application provides flexible user licensing terms. The terms are based on whether your operator has read-only access or can complete certain types of tasks.").

## Tables installed {#installed-with-bcm__section_s1x_dzh_wdb}

{#installed-with-bcm__table_fbz_45z_vdb__entry__3}

| Table | Description | Installed with scope |
|-|-|-|
| BCM Choice \[sn_bcm_choice\] | For the BCM admin to configure choice options in BCM applications. | Business Continuity Management -- Core |
| Documentation Section \[sn_bcm_document\] | Stores sections of a document for a plan. | Business Continuity Management -- Core |
| Element Definition \[sn_bcm_element_definition\] | Stores all data for activity definitions. | Business Continuity Management -- Core |
| Element variable \[sn_bcm_element_variable\] | Stores custom columns configured for an element definition. | Business Continuity Management -- Core |
| Grid configuration \[sn_bcm_grid_configuration\] | Stores configuration for a particular grid. For example, the dependency assessment grid. Grid configuration can have multiple grid column configurations. | Business Continuity Management -- Core |
| Grid column configuration \[sn_bcm_grid_column_configuration\] | Stores data for columns that should be displayed for a grid configuration. | Business Continuity Management -- Core |
| Impact analysis question \[sn_bcm_impact_analysis_question\] | Stores impact analysis questions for an impact category. | Business Continuity Management -- Core |
| Impact Category \[sn_bcm_impact_category\] | Stores the applicable timeframes and the maximum RTO value of a BIA. | Business Continuity Management -- Core |
| Impact Rating \[sn_bcm_impact_rating\] | Stores the impact ratings for an impact category. | Business Continuity Management -- Core |
| Loss Scenario \[sn_bcm_loss_scenario\] | Stores the elements impacted in a loss scenario. | Business Continuity Management -- Core |
| Recovery Tier \[sn_bcm_recovery_tier\] | Stores recovery timeframes applicable for a recovery tier level. | Business Continuity Management -- Core |
| Recovery Timeframe \[sn_bcm_timeframe\] | Stores the time duration at which a recovery timeframe starts. | Business Continuity Management -- Core |
| Recovery Tasks \[sn_bcp_recovery_task\] | Stores the activity tasks of all business continuity and recovery plans. | Business Continuity Management -- Planning |
| Related Plan \[sn_bcp_plan_plan\] | Stores related plans for the primary plan in BCP. | Business Continuity Management -- Planning |
| Plan Documentation \[sn_bcp_document\] | Stores the contents of a documentation section that is a part of a plan template. | Business Continuity Management -- Planning |
| Plan \[sn_bcp_plan\] | Stores the status of business continuity and recovery plans. | Business Continuity Management -- Planning |
| Plan Assets \[sn_bcp_plan_asset\] | Stores the RPO, RTO, RTA, and RTO gap of the plan assets of all plans. | Business Continuity Management -- Planning |
| Related Asset Dependency \[sn_bcp_plan_asset_dependency\] | Stores the assets as configuration items that are dependent on a plan loss scenario. | Business Continuity Management -- Planning |
| Plan Loss Scenario \[sn_bcp_plan_loss_scenario\] | Stores the relationship between a plan and a loss scenario. | Business Continuity Management -- Planning |
| Plan Task \[sn_bcp_plan_task\] | Stores the configuration items identified for a plan task. | Business Continuity Management -- Planning |
| Recovery Strategy \[sn_bcp_recovery_strategy\] | Stores the recovery strategy associated with an asset identified in a plan loss scenario. | Business Continuity Management -- Planning |
| Recovery Team \[sn_bcp_recovery_team\] | Stores the users and groups assigned to the recovery team of a plan. | Business Continuity Management -- Planning |
| Plan Template \[sn_bcp_template\] | Stores the document sections, element definitions, and loss scenarios identified for each plan template. | Business Continuity Management -- Planning |
| Dependency report source \[sn_bia_dependency_report_source\] | Stores columns that are tracked in a report. Used while creating an ad-hoc report on the dependency table. | Business Continuity Management -- Impact Analysis |
| Impact Analysis \[sn_bia_analysis\] | Stores all data related to BIA and the template it uses. | Business Continuity Management -- Impact Analysis |
| Impact Category Result \[sn_bia_category_result\] | Stores the impact category results of all BIAs. | Business Continuity Management -- Impact Analysis |
| Dependency \[sn_bia_dependency\] | Stores the dependency groups and their item details. | Business Continuity Management -- Impact Analysis |
| Impact Dependency Group \[sn_bia_dependency_group\] | Stores element definitions or the dependency groups associated with a BIA. | Business Continuity Management -- Impact Analysis |
| Result \[sn_bia_result\] | Stores the category result, disruption duration, and the impact rating data. | Business Continuity Management -- Impact Analysis |
| BIA Template \[sn_bia_template\] | Stores the impact categories and dependency groups that a business process depends on. | Business Continuity Management -- Impact Analysis |
| Score timeframe mapping \[sn_bia_score_timeframe_mapping\] | Stores the mapping results of the threshold score and the timeframe. | Business Continuity Management -- Impact Analysis |
| Activated Plan \[sn_recovery_activated_plan\] | Stores the list of recovery plans activated in an exercise or actual event. | Business Continuity Management -- Recovery Exercise Management |
| Event \[sn_recovery_event\] | Stores the status and owner details of events. | Business Continuity Management -- Recovery Exercise Management |
| Event Assets \[sn_recovery_event_asset\] | Stores the asset name and the state whether the asset is recovered or not in an actual or exercise event. | Business Continuity Management -- Recovery Exercise Management |
| Event Task \[sn_recovery_event_task\] | Stores the status details and assignees of event tasks. | Business Continuity Management -- Recovery Exercise Management |
| Impacted Asset to Activated Plan \[sn_recovery_impacted_asset_to_activated_plan\] | Maps impacted assets with the activated plans. | Business Continuity Management -- Recovery Exercise Management |
| Approval \[sn_recovery_approval\] | Store approval details of the event. | Business Continuity Management -- Recovery Exercise Management |
| Approval Configuration \[sn_grc_appr_approval_configuration\] | Stores approval configuration information that applies to any business document like BIA, BCP, events, or any table. | Business Continuity Management -- Approver Configurator |
| Approval Level \[sn_grc_appr_approval_level\] | Stores approval level information for an approval configuration of a business document. | Business Continuity Management -- Approver Configurator |
| Approval Rule \[sn_grc_appr_approval_rule\] | Stores information of the approval rule applied to the business document. | Business Continuity Management -- Approver Configurator |
| Approval \[sn_grc_appr_approval\] | Stores information of the approvers for each approval level. | Business Continuity Management -- Approver Configurator |
| Approval \[sn_bia_approval\] | Stores information of the BIA approvers for each approval level. | Business Continuity Management -- Impact Analysis |
| Approval \[sn_bcp_approval\] | Stores information of the BCP approvers for each approval level. | Business Continuity Management -- Planning |
[ ]

{#installed-with-bcm__table_fbz_45z_vdb}

## Properties installed {#installed-with-bcm__section_nhk_dhj_fyb}

For properties installed with the Business Continuity Management application, see [Properties installed with BCM](https://servicenow-prod.fluidtopics.net/UeFpnRJo2e0x49Vg1Zppbg "Properties are added with the activation of Business Continuity Management.").

## Script includes in Business Continuity Management {#ariaid-title2}

When you download the Business Continuity Management application, several script includes are added to your instance.

### Script includes updated for the Australia release {#script-includes-bcm__section_if2_tyr_cyb}

{#script-includes-bcm__table_pgw_1zr_cyb__entry__2}

| Script-includes | Description |
|-|-|
| ActivePlanCandidateFilter | Contains the utility functions that are used in the BCP active plan filter. |
| AssessmentTemplateBIAFieldsUtilBase | Functions used in creating AssessmentTemplateBIAFields record from selected assessment templates. |
| AssessmentTemplateBIAFieldsUtil | Script include to override BIA creation functions in AssessmentTemplateBIAFieldsUtilBase. |
| BCPConstants | Contains the utility functions that are used in the BCP constants. |
| BCPDataVisualizationUtilsBase | Contains the utility functions that are used in the BCP data visualization. |
| BCPDependencySnapshotUpdateStrategyBase | Contains the API for updating the dependencies in plans. |
| BCPDocumentationRecordAPIBase | Contains the utility functions that are used in the BCP documentation record API base. |
| BCPDocumentationRecordAPI | Contains the utility functions that are used in the BCP documentation record APIs.​ |
| BCPRecordUI | Contains the utility functions that are used in the BCP record UI pages.​ |
| BCPRecordUIBase | Contains the utility functions that are used in the BCP record UI base.​ |
| BCPRecordAPI | Contains the utility functions that are used in the BCP record API. |
| BCPTemplateUtilsBase | Contains the utility functions that are used in the BCP template utilities base. |
| 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. |
| 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. |
| BIAAssessmentUIBase | Utility class to support Business Impact Analysis Assessment UI pages. |
| BIAUtil | Script to handle insert and updates on BIA table, including validationsSetting depends on table field based on dependency group element definition. |
| BIASmartAssessmentBase | Utility class to support all Smart Assessment functionality. |
| BIASmartAssessment | Script include to override Smart Assessment related functions in BIASmartAssessmentBase |
| BIAConstants | Generic class for BIA constants |
| BIACopyUtilBase | Utility to copy existing BIA and generate a new BIA in draft state. |
| BIARecordCreationUtilBase | Functions used in creating BIAs from templates |
| BIAFilterUtilBase | Script which contains functions to provide reference qualifiers on BIA tables. |
| BIADependencySnapshotUpdateStrategyBase | Contains the API for updating the dependencies in the BIAs. |
| DependencySnapshotUpdateStrategyBase | Contains the API for the Update dependencies action and scheduled job​. |
| EventDependencyUpdateStrategyBase | Contains the API for updating the dependencies in the events. |
| PlanRestAPIResourceUtil | Contains the utility functions that are used in the BCP Plan Rest API resource utility. |
| PlanRestAPIResourceUtil | Contains the utility functions that are used in the BCP plan Rest API resource utility. |
| PopulateBIAForPlanAsset | Contains the utility functions that are used to populate the BIA for the plan and asset. |
| PlanCopyUtilBase | Contains the utility functions that are used in the BCP plan copy utility base. |
| PlanUtil | Contains the utility functions that are used in the BCP plan utility. |
| PlanCommonUtils | Contains the utility functions that are used in the plan common utility. |
| RecoveryTasksUtil | Contains the utility functions that are used in the BCP recovery tasks utility. |
[Table 2. Script includes updated for the Australia release]

{#script-includes-bcm__table_pgw_1zr_cyb}

### Scripts used for Nested events {#script-includes-bcm__section_ag2_2yd_12c}

{#script-includes-bcm__table_nvx_fyd_12c__entry__2}

| Name | Description |
|-|-|
| EventTaskGanttUIBase | Utility class to support event task hierarchical view. |
| EventTaskGanttUI | Script include to override event task hierarchical view functions in EventTaskGanttUIBase. |
| EventSandboxCallableUtilsBase | Utility class containing sandbox callable functions. |
| EventSandboxCallableUtils | Script include to override event related functions in EventSandboxCallableUtilsBase. |
| EventRecordProgressTrackerBase | Utility class to support progress tracker functionality for event. |
| EventRecordProgressTracker | Script include to override progress tracker related functions in EventRecordProgressTrackerBase. |
| BCMRecoveryConstants | Generic class for recovery constants. |
| EventRecordAPIBase | An API to interact with event record. |
| EventTaskUtil | Utility class for event tasks. |
| ActivatedPlanRecordAPIBase | An API to interact with activated plan record. |
[Table 3. Scripts used]

{#script-includes-bcm__table_nvx_fyd_12c}

## Import and export integration reference {#ariaid-title3}

Use 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.

### How the shared library works {#import-export-reference__section_library_overview}

The 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.  
The architecture uses an extension point pattern:

* The shared library defines an extension point.
* Your application creates a configuration class that implements this extension point.
* The shared library discovers your configuration at runtime by matching the value of `getTable()` against the target table.
{#import-export-reference__ul_lib_arch}

One 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`.

### Shared layer components {#import-export-reference__section_shared_layer}

You do not modify these shared layer components. The following table describes each component and its responsibility in the import and export flow.
{#import-export-reference__table_shared_layer__entry__2}

| Component | Description |
|-|-|
| ImportExportConfigReader | Resolves your configuration, builds the export URL, and resolves dot-walk values during import. |
| ExcelExportAjax | Fetches metadata, drop-down options, and records that are written to the Microsoft Excel file. |
| excel_export_modal (UI Page) | Builds the Microsoft Excel workbook on the client side using the ExcelJS library. |
| 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. |
| Event Registration and Script Action | Asynchronous event queue (`process_import_data`) that connects the import queue to the processing logic. |
| ImportProgressTracker | Tracks import progress and provides per-row updates that drive the inline progress tracker on the parent record. |
[Table 4. Shared layer components]

{#import-export-reference__table_shared_layer}

### Artifacts to create in your application scope {#import-export-reference__section_artifacts}

Everything 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.
{#import-export-reference__table_always_required__entry__2}

| Artifact | Description |
|-|-|
| \<Table\>ImportExportConfigBase | Script include (sys_policy: read). Contains all configuration method implementations. |
| \<Table\>ImportExportConfig | Script include. Thin concrete class that extends the base class and is registered as the extension instance. |
| Extension Instance | A `sys_extension_instance` record that points to your configuration class. |
[Table 5. Always required artifacts (export or import)]

{#import-export-reference__table_always_required}

The following table lists the additional artifacts that are required for export.
{#import-export-reference__table_export_only__entry__2}

| Artifact | Description |
|-|-|
| Declarative Action (client script) | Calls `ImportExportConfigReader.getExportUrl()` through GlideAjax and opens the export modal. |
| System Properties | Recommended. `<scope>.<table>_excel_export_max_rows` and `<scope>.<table>_excel_export_max_dropdown_records`. |
[Table 6. Export-only artifacts]

{#import-export-reference__table_export_only}

The following table lists the additional artifacts that are required for import.
{#import-export-reference__table_import_only__entry__2}

| Artifact | Description |
|-|-|
| Declarative Action (UXF client action or server script) | Calls `ImportDataUtils.queueImport()`. |
| Dictionary field | A `file_attachment` field on the parent table that is used to upload the Microsoft Excel file. |
| Staging table | Extends `sys_import_set_row`. String columns that match the import fields. |
| ACLs on the staging table | CRUD and `report_view` access for your admin role. |
| RTE configuration | ETL Definition, Staging Entity, Target Entity, Entity Mapping, Robust Import Set Transformer, and Field Mappings (one per column). |
| RTE Script Operations (optional) | Required only for reference fields with dot-walk configuration. Resolves display values to sys_ids. |
[Table 7. Import-only artifacts]

{#import-export-reference__table_import_only}

### Configuration class methods {#import-export-reference__section_config_methods}

The configuration base class implements the methods that are described in this section. Implement only the methods that your use case requires.

The following table describes the shared methods that are required for both export and import.
{#import-export-reference__table_shared_methods__entry__3}

| Method | Returns | Description |
|-|-|-|
| getTable() | string | Target table name, for example `sn_recovery_event_task`. |
| getFields() | string\[\] | Ordered field list. Drives export columns and import mapping. |
| 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`. |
| getOrderByField() | string | Sort field used by export queries. Defaults to `number`. |
| 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. |
[Table 8. Shared configuration methods]

{#import-export-reference__table_shared_methods}

The following table describes the export-related methods.
{#import-export-reference__table_export_methods__entry__3}

| Method | Returns | Description |
|-|-|-|
| getProtectedFields() | string\[\] | Read-only columns in the Microsoft Excel sheet (locked cells). |
| getUniqueFields() | string\[\] | Columns that use duplicate highlighting through conditional formatting. |
| getHiddenColumns() | string\[\] | Columns that are exported but hidden from the user. |
| getNoValidationFields() | string\[\] | Fields that skip drop-down and reference validation. |
| getRefQualOverrides() | Object | Reference qualifier overrides per field. Can use the stored source record for dynamic filtering. |
| getInfoSheetsDetails() | Object | Extra sheets, in the form `{ sheetName: [{ key: value }] }`. |
| getMaxRows() | string \| number | Maximum rows to export, read from the system property. |
| getMaxDropdownRecords() | string \| number | Maximum drop-down options before falling back to a plain text string. |
| getAllowTemplateDownload() | boolean | When `true`, users can download an empty template even when no data rows exist. |
| getRestrictEditsToExportedRows() | boolean | When `true`, only the exported data rows have drop-down lists and validation. Rows beyond the data are locked. |
[Table 9. Export configuration methods]

{#import-export-reference__table_export_methods}

The following table describes the import-related methods.
{#import-export-reference__table_import_methods__entry__3}

| Method | Returns | Description |
|-|-|-|
| getStagingTableName() | string | Staging table name, which extends `sys_import_set_row`. |
| getImportFieldMapping() | Object | Object of the form `{ fieldKey: stagingColumnName }`. Maps configuration fields to staging table columns. |
| getSheetConfig() | Object | Object of the form `{ sheetName: string, headerRowsToSkip: number }`. Specifies which sheet to read and how many header rows to skip. |
| getImportAttachmentField() | string | Name 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. |
| onBeforeStagingInsert(recordGr) | void | Optional. 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)`. |
| validateAttachment(sysId) | string\|null | Optional. Custom validation on the uploaded file. Return an error message string to abort the import. Return null if the file is valid. |
| validateRow (Source, Target) | Void | Optional. 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. Note: ETL stands for Extract, Transform, Load---a data integration process used to collect, process, and store data for analysis and reporting. |
| postProcessRow (Source, Target) | Void | Optional. Called per row after transform (`ETL on_after_script`). Use for post-transform operations such as updating related records or resolving cross-row dependencies. |
[Table 10. Import configuration methods]

{#import-export-reference__table_import_methods}

### Method usage matrix {#import-export-reference__section_method_matrix}

The 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.
{#import-export-reference__table_method_matrix__entry__4}

| Method | Export only | Import only | Both |
|-|-|-|-|
| getTable() | ✓ | ✓ | ✓ |
| getFields() | ✓ | ✓ | ✓ |
| getDotWalkFields() | o | o | o |
| getOrderByField() | ✓ | · | ✓ |
| setSourceRecord(gr) | o | o | o |
| getProtectedFields() | ✓ | · | ✓ |
| getUniqueFields() | ✓ | · | ✓ |
| getHiddenColumns() | o | o | o |
| getNoValidationFields() | o | o | o |
| getRefQualOverrides() | o | o | o |
| getInfoSheetsDetails() | o | o | o |
| getMaxRows() | ✓ | · | ✓ |
| getMaxDropdownRecords() | ✓ | · | ✓ |
| getAllowTemplateDownload() | ✓ | · | ✓ |
| getRestrictEditsToExportedRows() | o | · | o |
| getStagingTableName() | · | ✓ | ✓ |
| getImportFieldMapping() | · | ✓ | ✓ |
| getSheetConfig() | · | ✓ | ✓ |
| getImportAttachmentField() | · | ✓ | ✓ |
| onBeforeStagingInsert(recordGr) | · | o | o |
| validateAttachment(sysId) | · | o | o |
| validateRow (Source, Target) | o | o | o |
| postProcessRow (Source, Target) | o | o | o |
[Table 11. Method usage matrix]

{#import-export-reference__table_method_matrix}

### Export setup {#import-export-reference__section_export_setup}

The following example shows an export-only configuration base class.

    const YourTableImportExportConfigBase = Class.create();
    YourTableImportExportConfigBase.prototype = {
        initialize: function() {},

        getTable: function() {
            return 'your_table_name';
        },

        getFields: function() {
            return ['number', 'name', 'status', 'assigned_to', 'due_date'];
        },

        getDotWalkFields: function() {
            return { assigned_to: 'user_name' };
        },

        getOrderByField: function() {
            return 'number';
        },

        getProtectedFields: function() {
            return ['number', 'name'];
        },

        getUniqueFields: function() {
            return ['number'];
        },

        getHiddenColumns: function() {
            return [];
        },

        getNoValidationFields: function() {
            return [];
        },

        getRefQualOverrides: function() {
            return {};
        },

        getInfoSheetsDetails: function() {
            return {
                'Instructions': [
                    {
                        column: gs.getMessage('Number*'),
                        instruction: gs.getMessage('Unique identifier'),
                        validation: gs.getMessage('Read-only'),
                        example: gs.getMessage('RA0001001'),
                    },
                ],
            };
        },

        getMaxRows: function() {
            return parseInt(gs.getProperty('your_scope.your_table_excel_export_max_rows', '10000'), 10);
        },

        getMaxDropdownRecords: function() {
            return parseInt(gs.getProperty('your_scope.your_table_excel_export_max_dropdown_records', '10000'), 10);
        },

        getAllowTemplateDownload: function() {
            return true;
        },

        type: 'YourTableImportExportConfigBase'
    };

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.

Create two system properties in your application scope. The following table describes the properties.
{#import-export-reference__table_export_system_properties__entry__3}

| Property name | Default | Purpose |
|-|-|-|
| \<scope\>.\<table\>_excel_export_max_rows | 10000 | Maximum number of data rows in an export. |
| \<scope\>.\<table\>_excel_export_max_dropdown_records | 10000 | Maximum number of drop-down options per field before the column falls back to a plain text string. |
[Table 12. Export system properties]

{#import-export-reference__table_export_system_properties}

### Import setup {#import-export-reference__section_import_setup}

Add the following methods to your configuration base class, in addition to the shared methods.

    getStagingTableName: function() {
        return 'your_table_import';
    },

    getImportFieldMapping: function() {
        return {
            number: 'number',
            name: 'name',
            status: 'status',
            assigned_to: 'assigned_to',
        };
    },

    getSheetConfig: function() {
        return {
            sheetName: 'Your Sheet Name',
            headerRowsToSkip: 1,
        };
    },

    getImportAttachmentField: function() {
        return 'your_import_file_field';
    },

    onBeforeStagingInsert: function(recordGr) {
        if (this._sourceRecordSysId) {
            recordGr.setValue('parent_field', this._sourceRecordSysId);
        }
    },

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.

Create 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.
{#import-export-reference__table_staging__entry__3}

| Column | Type | Notes |
|-|-|-|
| Number | String (50) | Coalesce field. Used to match existing records. |
| Name | String (255) | --- |
| Status | String (40) | --- |
| Assigned_to | String (150) | Stored as raw text from Microsoft Excel. The Record Transform Engine resolves the value to `sys_id`. |
[Table 13. Staging table columns]

{#import-export-reference__table_staging}

All 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.

Add 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.

Create the following records in your application scope to configure the Record Transform Engine.
{#import-export-reference__table_rte_config__entry__2}

| Record | Purpose |
|-|-|
| ETL Definition | Top-level container for the transform. |
| Staging Entity | Points to your staging table. |
| Target Entity | Points to your target table. |
| Entity Mapping | Maps the staging entity to the target entity. Coalesce on `number` to ensure that the operation is an update, not an insert. |
| Robust Import Set Transformer | Connects the ETL definition to the staging table. |
| Field Mappings | One field mapping per staging column to target field. |
[Table 14. RTE configuration records]

{#import-export-reference__table_rte_config}

If 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.  
Important:  
The Record Transform Engine runs ES5 only (Rhino). Use `var`, `function()`, and `.concat()`. Do not use `const`, `let`, arrow functions, or template literals.

### Combined import and export integration {#import-export-reference__section_combined}

When 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.
{#import-export-reference__table_round_trip__entry__2}

| Direction | What happens |
|-|-|
| Export | `getDotWalkFields()` returns `{ assigned_to: 'user_name' }`. The Microsoft Excel file shows the user name value, for example, `abel.tuter`. |
| Import | The RTE script operation calls `resolveDotWalkValues(tableName, fieldName, batch, output)`, which resolves the value back to `sys_id`. |
[Table 15. Round-trip consistency]

{#import-export-reference__table_round_trip}

The 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.

### Onboarding checklist {#import-export-reference__section_onboarding_checklist}

Use the following checklist when you onboard a new consumer application. The checklist is grouped by integration mode.
{#import-export-reference__table_onboarding__entry__2}

| Mode | Items to complete |
|-|-|
| Export only | * Configuration base class with shared and export methods. * Configuration class that extends the base class. * Declarative action client script with GlideAjax that opens the export modal. * System properties for `max_rows` and `max_dropdown_records`. {#import-export-reference__ul_export_only_check} |
| Import only | * Configuration base class with shared and import methods. * `getImportAttachmentField()` returns the parent attachment field name. * (Optional) `onBeforeStagingInsert(recordGr)` stamps parent context on each row. * Configuration class that extends the base class. * Staging table that extends `sys_import_set_row` with string columns. * ACLs on the staging table (CRUD and `report_view`). * `file_attachment` dictionary field on the parent table. * Declarative action that calls `ImportDataUtils.queueImport()`. * RTE: ETL Definition, Staging Entity, Target Entity, Entity Mapping, and transformer. * RTE: field mappings (one per staging column to target field). * RTE: script operations for dot-walk reference fields (if applicable). {#import-export-reference__ul_import_only_check} |
| Combined | * All items from the export-only and import-only checklists. * A single configuration class that implements all methods. * Round-trip consistency verified: export dot-walk values, and confirm that import resolves the same values back. {#import-export-reference__ul_combined_check} |
| ValidateRow and PostProcessRow | Optional 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`. |
[Table 16. Onboarding checklist]

{#import-export-reference__table_onboarding}

### Troubleshooting {#import-export-reference__section_troubleshooting}

Use the following table to diagnose and resolve common issues that arise during integration.
{#import-export-reference__table_troubleshooting__entry__3}

| Problem | Cause | Fix |
|-|-|-|
| Extension point not found | Configuration class is not registered, or `getTable()` returns the wrong value. | Verify the extension instance record and the table name. |
| Export modal is blank | GlideAjax returns `null`. | Verify that `ImportExportConfigReader` has `client_callable=true`. |
| Import silently does nothing | `queueImport()` returns `false`. | Verify that the attachment exists, that it is an .xlsx file, and that the extension point resolves. |
| RTE transforms 0 records | Stale import set GlideRecord. | The shared layer re-fetches by `sys_id`. Verify that the staging table has data. |
| Dot-walk values not resolved | `getDotWalkFields()` is missing or has the wrong field name. | Verify that the configuration matches the `sys_dictionary` reference. |
| Data policy blocks import | `apply_import_set=true` on the target table. | Set `apply_import_set=false` on the blocking data policies. |
| ES6 syntax in RTE script operation | Use of `const`, `let`, or arrow functions. | RTE runs ES5 (Rhino). Use `var`, `function`, and `.concat()`. |
| 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. |
| Progress tracker stuck | Unhandled exception in `processAttachment`. | Check the system logs. The tracker automatically transitions to an error state when an exception is caught. |
| Import rejects valid rows | Row fails validation logic | Check validateRow. |
| GlideList values rejected | Dot-walk field format mismatch | Match dot-walk field format. |
| Protected fields edited after removing sheet protection | Fields are still protected at the import set level | Ignored by import. |
[Table 17. Troubleshooting integration issues]

{#import-export-reference__table_troubleshooting}

