Components installed with Business Continuity Management
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. |
|
Business Continuity Management – Core |
| BCM Program Manager (sn_bcm.program_manager) |
Create, read, write, and delete access to all BCM application tables. |
|
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. |
|
Business Continuity Management – Core |
| BCM Contributor (sn_bcm.contributor) |
|
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. |
|
Business Continuity Management – Core |
| BCM core_viewer (sn_bcm.core_viewer) | BCM core viewer role that can read the Smart assessment template. |
|
|
| 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. |
|
Business Continuity Management – Core |
| BCP Plan Manager (sn_bcp.plan_manager) | Create, read, write, and delete access on all the plans. |
|
|
| 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. |
|
|
| 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 |
|
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. | 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 |
Properties installed
For properties installed with the Business Continuity Management application, see Properties installed with BCM.
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 Australia 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, and provide the consumers with 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. |
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 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.
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 ( 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.
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'
};
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.
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);
}
},
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.
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 |
|
| Import only |
|
| Combined |
|
| 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. |