Components installed with Business Continuity Management

reference brazil Updated Sep 10, 2026 25 min read installed-with-bcm.md
Raw file servicenow.com

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

Roles installed

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.

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.

Business Continuity Management – Core

BCM Planner (sn_bcm.planner)

Read accessNote: 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

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

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

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

 

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

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

 

BIA Manager (sn_bia.bia_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

 

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

Name

Type

Contains roles

Description

sn_recovery.event_manager

Operator

  • sn_doc.writer
  • fd_read_flows

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.

## BCM lite operator role

For information on the BCM lite operator role, see BCM lite operators.

Tables installed

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.Starting with release 12.x.x, recovery teams are created and managed globally in the Recovery Team [sn_bcm_recovery_team] table instead. Existing per-plan recovery team records were migrated to the global table.

Business Continuity Management – Planning

Recovery Team[sn_bcm_recovery_team]

Stores the name, description, location, and active status of a recovery team that you can reuse across multiple plans and events.

Business Continuity Management – Core

Recovery Team User [sn_bcm_m2m_recovery_team_user]

Stores the users assigned to a recovery team.

Business Continuity Management – Core

Recovery Team Group [sn_bcm_m2m_recovery_team_group]

Stores the groups assigned to a recovery team.

Business Continuity Management – Core

Recovery Team Hierarchy [sn_bcm_m2m_recovery_team_recovery_team]

Stores the parent-child relationships between recovery teams.

Business Continuity Management – Core

Plan Recovery Team [sn_bcp_m2m_plan_recovery_team]

Stores the recovery teams linked to 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

Collaboration Thread [sn_recovery_event_collaboration_thread]

Stores the recovery teams, impacted assets, and state of a collaboration thread on a crisis event.

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

## Properties installed

For properties installed with the Business Continuity Management application, see Properties installed with BCM.

Parent Topic:BCM reference

Script includes in Business Continuity Management

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

Script includes updated for the Brazil release

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.
CollabEmailUtilBase Resolves recovery-team members and linked groups, including nested sub-groups, into a deduplicated recipient list for collaboration-thread emails.
CollabEmailUtil Script include to override collaboration-thread email functions in CollabEmailUtilBase.
PlanRecoveryTeamUtilBase Contains the utility functions used to manage the many-to-many relationship between a plan and its recovery teams.
RecoveryTeamCandidateFilter Filters the recovery-team picker on a plan and the recovery-team typeahead on a collaboration thread to active recovery teams only.

Scripts used for Nested events

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.

Import and export integration reference

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

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.

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

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

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.

Artifacts to create in your application scope

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.

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.

The following table lists the additional artifacts that are required for export.

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.

The following table lists the additional artifacts that are required for import.

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.

Configuration class 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.

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.

The following table describes the export-related methods.

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.

The following table describes the import-related methods.

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.

### Method usage 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.

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

Export setup

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

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

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.

Import setup

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

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

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.

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.

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.

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

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.

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.

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

Use the following checklist when you onboard a new consumer application. The checklist is grouped by integration mode.

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

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.

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.

### Troubleshooting

Use the following table to diagnose and resolve common issues that arise during integration.

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.
Keywords BCMimportexportExcelintegrationextension pointRecord Transform Engine
Search documentation
Search document titles and file paths on the brazil branch