ServiceNow

The RegScale ServiceNow integration provides bidirectional synchronization between your ServiceNow instance and RegScale. It keeps incidents, change requests, cases, attachments, and work notes aligned across both systems so that ITSM activity in ServiceNow becomes compliance evidence in RegScale without manual re-entry.

What Gets Synchronized

ServiceNow recordServiceNow tableRegScale recordDirection
IncidentincidentIssueBidirectional
Change Requestchange_requestChangeBidirectional
Case (CSM)sn_customerservice_caseIssueBidirectional
Attachmentsys_attachmentFileBidirectional
Work Notesys_journal_fieldIssue descriptionServiceNow to RegScale only

All synchronization is scoped to a single RegScale parent record — by default a Security Plan.

Prerequisites

Before running any command you need:

  • A ServiceNow instance URL, in the form https://yourinstance.service-now.com.
  • A ServiceNow service account with permission to read and write the tables you intend to sync. At minimum this means create and update rights on incident; add change_request, sn_customerservice_case, and sys_attachment as needed.
  • A RegScale account and API token. Run regscale login to authenticate. Tokens are valid for 24 hours.
  • The RegScale Security Plan ID you want to sync against.

📘

Case synchronization requires CSM

The sync_cases command reads the sn_customerservice_case table, which only exists if the ServiceNow Customer Service Management plugin is installed. Case sync is disabled by default and must be explicitly enabled with snowCaseSyncEnabled: true.

Tagging and the label_entry ACL

RegScale links ServiceNow records back to RegScale records using ServiceNow labels. Tags follow the pattern regscale-REGSCALE_MODULE-REGSCALE_ID.

For tagging to work, the service account needs write access to the table and table_key columns on the label_entry table. ServiceNow restricts these by default. A ServiceNow administrator can apply the label_entry_update_acls.xml update set from the RegScale community GitHub repository, or grant the equivalent ACLs manually.

If you do not need tag-based filtering, set snowTagOnlyLinked: false and the integration will process records without relying on labels.

Configuration

All settings live in init.yaml. Every key can also be supplied as an environment variable using its UPPER_SNAKE_CASE equivalent — snowUrl becomes SNOW_URL, snowUserName becomes SNOW_USER_NAME, and so on. Environment variables take precedence over init.yaml.

Minimum Configuration

domain: https://yourcompany.regscale.com
token: <your RegScale bearer token>
userId: <your RegScale user id>

snowUrl: https://yourinstance.service-now.com
snowUserName: regscale.service
snowPassword: <service account password>

❗️

Keep credentials out of source control

snowPassword and token are secrets. Prefer environment variables (SNOW_PASSWORD, REGSCALE_TOKEN) over committing them to init.yaml in a shared repository.

Connection Settings

KeyDefaultDescription
snowUrl(required)ServiceNow instance base URL
snowUserName(required)Service account username
snowPassword(required)Service account password
snowApiVersionv2ServiceNow REST API version
snowUseSdkfalseUse the PySNC SDK instead of raw REST calls
snowTimeout30Request timeout in seconds

🚧

snowVerifySsl is deprecated

This key is no longer read. Use the top-level sslVerify setting to control TLS certificate verification for all integrations.

Sync Behavior

KeyDefaultDescription
snowSyncDirectionbidirectionalDefault direction: bidirectional, to_snow, or from_snow
snowIncidentSyncEnabledtrueEnable incident synchronization
snowChangeSyncEnabledtrueEnable change request synchronization
snowCaseSyncEnabledfalseEnable case synchronization (requires CSM)
snowAttachmentSyncEnabledtrueEnable bidirectional attachment synchronization
snowWorkNotesSyncEnabledtrueEnable work notes synchronization
snowTagNameRegScaleLabel name used to identify RegScale-linked records
snowTagOnlyLinkedfalseOnly sync ServiceNow records carrying the RegScale tag
snowChangeDaysBack30How far back to look for change requests

Defaults for New Incidents

KeyDefaultDescription
snowDefaultAssignmentGroup(empty)Assignment group applied to incidents the CLI creates
snowDefaultUrgencyMediumUrgency for new incidents: High, Medium, or Low
snowDefaultPriority3Priority for new incidents, 1 through 5

📘

Assignment group values are case sensitive

snowDefaultAssignmentGroup accepts either the group name or its sys_id. If you supply a name, it must match the ServiceNow record exactly, including capitalization.

Table Overrides

Set these only if your instance uses non-standard table names or a scoped application.

KeyDefault
snowIncidentTableincident
snowChangeTablechange_request
snowCaseTablesn_customerservice_case
snowAttachmentTablesys_attachment
snowWorkNotesTablesys_journal_field
snowUserGroupTablesys_user_group
snowLabelTablelabel

Performance Tuning

KeyDefaultDescription
snowBatchSize100Records per bulk operation
snowPageLimit500Maximum records returned per API page
snowMaxWorkers10Maximum concurrent worker threads

Query Filters

These append an additional ServiceNow sysparm_query to the records the CLI retrieves.

KeyDefaultDescription
snowIncidentFilter(empty)Extra query filter for incidents
snowChangeFilter(empty)Extra query filter for change requests
snowCaseFilter(empty)Extra query filter for cases

For example, to sync only incidents assigned to a specific group:

snowIncidentFilter: assignment_group.name=Security Operations

🚧

Filters silently narrow your evidence set

A filter that is too restrictive causes records to be excluded from the sync with only a warning in the log. If you use filters for compliance evidence collection, document what each one excludes.

Custom Field Mapping

Map additional ServiceNow fields to RegScale fields using JSON objects. Each record type has its own mapping.

KeyApplies to
snowCustomFieldsIncidents
snowChangeCustomFieldsChange requests
snowCaseCustomFieldsCases
serviceNow:
  customFields:
    u_business_service: Enterprise Platform
    u_cost_center: CC-4417

Commands

All commands are under the regscale servicenow group.

regscale servicenow --help

test_connection

Validates your configuration and confirms the CLI can reach your ServiceNow instance. Run this first when setting up.

regscale servicenow test_connection

On success it reports the instance hostname and whether the SDK mode is active.

inventory

Checks which standard ServiceNow tables the service account can actually read. Use this to diagnose permission problems before running a full sync.

regscale servicenow inventory

Each table is reported as Available, Empty, or Not accessible.

sync_incidents

Synchronizes ServiceNow incidents with RegScale issues, creating records on either side as needed and updating those that already exist.

FlagDefaultDescription
--regscale_ssp_id(required)RegScale Security Plan ID
--directionfrom configbidirectional, to_snow, or from_snow
--sync-attachments / --no-attachments--sync-attachmentsWhether to sync attachments
--parent-modulesecurityplansRegScale parent module
regscale servicenow sync_incidents --regscale_ssp_id 5 --direction bidirectional

sync_changes

Synchronizes ServiceNow change requests with the RegScale Change module, including the full set of change management fields.

FlagDefaultDescription
--regscale_ssp_id(required)RegScale Security Plan ID
--directionfrom configbidirectional, to_snow, or from_snow
--days-back30How many days back to look for changes
--parent-modulesecurityplansRegScale parent module
regscale servicenow sync_changes --regscale_ssp_id 5 --days-back 90

sync_cases

Synchronizes ServiceNow CSM cases with RegScale issues. Requires the CSM plugin and snowCaseSyncEnabled: true.

FlagDefaultDescription
--regscale_ssp_id(required)RegScale Security Plan ID
--directionfrom configbidirectional, to_snow, or from_snow
--sync-attachments / --no-attachments--sync-attachmentsWhether to sync attachments
--parent-modulesecurityplansRegScale parent module
regscale servicenow sync_cases --regscale_ssp_id 5

sync_all

Runs every enabled synchronization in one pass. This is the command to schedule for routine operation.

FlagDefaultDescription
--regscale_ssp_id(required)RegScale Security Plan ID
--directionfrom configbidirectional, to_snow, or from_snow
--incidents / --no-incidents--incidentsInclude incidents
--changes / --no-changes--changesInclude change requests
--cases / --no-cases--no-casesInclude cases
--attachments / --no-attachments--attachmentsInclude attachments
--parent-modulesecurityplansRegScale parent module
regscale servicenow sync_all --regscale_ssp_id 5 --cases

sync_work_notes

Pulls work notes from ServiceNow and appends them to the matching RegScale issue descriptions with HTML formatting. This is a one-way sync from ServiceNow into RegScale.

FlagDefaultDescription
--regscale_ssp_id(required)RegScale Security Plan ID
--parent-modulesecurityplansRegScale parent module
regscale servicenow sync_work_notes --regscale_ssp_id 5

Legacy Commands

These remain available for backward compatibility with existing scripts. New automation should use the commands above.

Legacy commandReplacement
issuessync_incidents --direction to_snow
issues_and_attachmentssync_incidents --direction bidirectional

issues still accepts --snow-assignment-group and --snow-incident-type, but these values are no longer used for routing. Assignment is controlled by snowDefaultAssignmentGroup in init.yaml. The CLI prints a notice when it receives them.

issues_and_attachments accepts --sync-all-incidents to process every incident rather than only tagged ones. This is equivalent to setting snowTagOnlyLinked: false.

🚧

Flag names changed for some options

--parent-module uses hyphens and replaces the older --regscale_module. The Security Plan ID flag still accepts --regscale_ssp_id, --regscale_id, --id, and -id. Update any scripts that pass --regscale_module or underscore-separated ServiceNow flags.

Change Request Field Mapping

sync_changes maps the following fields in both directions.

ServiceNow fieldRegScale Change field
numberexternalId
short_descriptiontitle
descriptiondescription
reasonreason
justificationjustification
typechangeType
statestatus
approvalapprovalStatus
riskriskLevel
prioritypriority
implementation_planimplementationPlan
backout_planrollbackPlan
test_plantestPlan
start_date / end_datescheduledStart / scheduledEnd
work_start / work_endactualStart / actualEnd
opened_by / opened_atcreatedBy / dateCreated
closed_at / close_notesdateCompleted / closeNotes
assigned_toassignedTo

Change types map as standard, normal, and emergency. Priority maps from the ServiceNow 1–5 scale to RegScale's Critical, High, Medium, and Low values.

Configuration Management Evidence Coverage

Organizations pursuing FedRAMP, RMF, or similar authorizations frequently use this integration to bring change management records into their compliance program. This section describes what the change synchronization contributes as evidence.

The integration transports and retains records about changes. It does not approve, gate, or enforce changes — those functions remain in ServiceNow. Control satisfaction requires a documented process, enforcement, and records; this integration automates the records and evidence portion.

Control areaWhat the sync contributes
Documenting proposed changesreason, justification, description, and changeType are captured as first-class fields, with the ServiceNow change number retained as externalId for traceability.
Documenting change decisionsapprovalStatus records the approval decision, closeNotes the disposition rationale, and dateCompleted the timestamp.
Implementing approved changesimplementationPlan alongside actualStart and actualEnd demonstrates that the approved change is what was executed, and when. rollbackPlan evidences that a reversal path was defined.
Retaining change recordsRecords persist in the RegScale Change module scoped to the Security Plan, independent of ServiceNow retention policy, with a clean line back to the originating change ticket.
Testing and validating changestestPlan carries the intended testing approach. Test results are not part of the mapping and must be evidenced separately.
Change review and oversightapprovalStatus reflects the board decision and the sync gives reviewers a consolidated view. Board membership, quorum, and review workflow are not modeled and require separate process documentation.
Continuous monitoringChange records landing under the Security Plan help keep authorization boundary documentation current between assessments.

What This Integration Does Not Provide

  • Security impact analysis. There is no dedicated impact analysis field in the standard mapping. risk maps to riskLevel, which is a coarse risk band rather than an analysis artifact. If your instance records impact analysis in a custom field, map it through snowChangeCustomFields.
  • Approval chain verification. The integration copies the value of the approval field. It does not validate who approved the change or on what basis. The strength of this evidence depends entirely on the ServiceNow workflow behind that field.
  • Access restrictions for change. Enforcement is handled by ServiceNow and RegScale role-based access control, not by the CLI.

📘

Confirm control applicability against your baseline

Which configuration management controls and enhancements apply depends on your target baseline. Work with your assessor to confirm applicability before relying on this integration as an evidence source.

Scheduling Routine Synchronization

Commands can be chained in any shell. The example below uses Bash, but PowerShell and Python work equally well.

Create regscaleScheduler.sh:

#!/bin/sh
regscale login
regscale servicenow sync_all --regscale_ssp_id 5 --direction bidirectional

Run it with:

. regscaleScheduler.sh

Commands execute sequentially, so you can combine ServiceNow synchronization with other RegScale CLI operations in the same script.


Did this page help you?