Snowflake ServiceNow
Snowflake ServiceNow
Introduction
Snowflake ServiceNow integration is commonly used when organizations want to move ServiceNow operational data into Snowflake for analytics, reporting, historical analysis, data engineering, and cross-platform reporting. Instead of running complex analytical queries directly against ServiceNow, teams can ingest data such as incidents, changes, users, configuration items, service catalog information, and assets into Snowflake and combine it with data from ERP, HR, finance, customer, or cloud platforms.
In a real implementation, the integration is usually not just a matter of “connecting two systems.” The project team needs to decide which ServiceNow tables are required, how authentication will work, how frequently data should be synchronized, how deletes and schema changes will be handled, who owns the Snowflake objects, and how the resulting data will be exposed to reporting teams.
Snowflake provides a Snowflake Connector for ServiceNow specifically for ingesting ServiceNow data into Snowflake. The connector supports an initial historical load followed by incremental updates, making it suitable for operational analytics and centralized data platforms.
This article explains the architecture, prerequisites, connector setup, ingestion process, testing approach, common implementation problems, and practical consultant-level recommendations.
What Is Snowflake ServiceNow Integration?
Snowflake ServiceNow integration connects a ServiceNow instance with a Snowflake data platform so that ServiceNow records can be ingested and analyzed in Snowflake.
A typical architecture looks like this:
ServiceNow → ServiceNow Table API → Snowflake Connector → Snowflake Tables/Views → Analytics / BI / Data Applications
The ServiceNow side remains the operational system. Snowflake becomes the analytical destination.
For example, consider a global organization with 500,000 ServiceNow incidents.
The ServiceNow application is responsible for:
Incident creation
Assignment
Prioritization
SLA processing
State changes
Resolution
Service desk workflows
The analytics team may need to answer questions such as:
Which business units generate the most incidents?
Which assignment groups have the longest resolution times?
How has incident volume changed over 12 months?
Which configuration items are associated with recurring incidents?
What percentage of incidents breach SLA?
How do incidents correlate with changes?
Running these analytical workloads directly against the operational platform may not be the preferred architecture.
Instead, the relevant ServiceNow data can be ingested into Snowflake, transformed into analytical structures, and consumed by downstream reporting tools.
Snowflake’s connector uses ServiceNow’s Table API for ingestion. The current connector documentation specifies ServiceNow Table API v2 as the ingestion mechanism.
Key Components of the Integration
A production implementation normally contains the following components:
| Component | Purpose |
|---|---|
| ServiceNow Instance | Source system |
| ServiceNow Tables | Source data structures |
| OAuth Application | Authentication |
| ServiceNow Table API | Data access |
| Snowflake Connector | Data ingestion |
| Snowflake Warehouse | Compute |
| Raw Tables | Store source records |
| Event Log Tables | Track changes |
| Flattened Views | Make records easier to query |
| Reporting Layer | Analytics and dashboards |
One important point is that the connector is designed primarily for ServiceNow-to-Snowflake ingestion. It should not automatically be treated as a bidirectional integration.
If the business requirement is to update ServiceNow from Snowflake, a separate integration design is normally required.
Real-World Integration Use Cases
Use Case 1 – Service Desk Performance Analytics
A large enterprise wants a single dashboard for service desk performance.
ServiceNow contains:
Incidents
Assignment groups
Users
Priorities
SLAs
Categories
Configuration items
Snowflake receives the required ServiceNow tables.
The data engineering team then creates analytical models such as:
FACT_INCIDENT
DIM_USER
DIM_ASSIGNMENT_GROUP
DIM_CONFIGURATION_ITEM
DIM_DATE
DIM_PRIORITY
A BI platform can then calculate:
Mean time to resolution
Incident backlog
Open incidents by priority
Resolution trend
SLA breach percentage
The important implementation decision is to avoid loading every ServiceNow table simply because it is available.
Load only the tables required by the reporting requirements.
Use Case 2 – Change and Incident Correlation
An organization wants to determine whether infrastructure changes are followed by increased incident volume.
The team ingests:
incident
change_request
change_task
cmdb_ci
sys_user
Snowflake can then correlate incidents and changes using appropriate identifiers and timestamps.
For example:
Change deployed
↓
Incident occurs
↓
Configuration item identified
↓
Assignment group identified
↓
Historical incident pattern analyzed
This is much easier when operational data is available in a centralized analytical platform.
Use Case 3 – Enterprise Data Warehouse Integration
Suppose an organization already has:
Oracle Fusion Cloud
Salesforce
ServiceNow
Azure
AWS
HR systems
The enterprise data platform is Snowflake.
ServiceNow data can become another source in the warehouse.
A reporting model might combine:
ServiceNow
↓
Incidents / Assets / Users
↓
Snowflake
↑
Oracle Fusion
↑
CRM
↑
Cloud Platforms
This allows business teams to analyze IT operations together with financial, workforce, procurement, and business data.
For example, a company could compare IT support costs with employee counts by business unit.
Architecture and Technical Flow
The basic technical flow is:
SERVICE NOW
|
|
ServiceNow Tables
|
v
ServiceNow Table API
|
v
Snowflake Connector
|
Authentication
/ \
OAuth API
|
v
Snowflake
|
+----------+----------+
| | |
v v v
Raw Event Log Flattened
Tables Tables Views
|
v
Transformation Layer
|
v
Analytics / BI / ML
The connector supports an initial load and incremental synchronization.
This is important because loading millions of historical records every time the connector runs would be inefficient.
A practical pattern is:
Initial Load
↓
Historical ServiceNow Data
↓
Incremental Synchronization
↓
New / Updated Records
↓
Analytical Model
How Data Appears in Snowflake
For synchronized ServiceNow tables, the connector creates different structures for working with the ingested data.
A typical pattern includes:
Raw Table
The raw table contains the source record in a semi-structured format, commonly using Snowflake’s VARIANT data type.
This preserves the source representation.
Event Log
An event-log structure can be used to understand changes to records.
This is particularly useful when implementing incremental processing or troubleshooting synchronization.
Flattened View
The connector can also expose a flattened view in which ServiceNow fields appear as individual columns.
For example:
number
short_description
priority
state
assigned_to
assignment_group
opened_at
closed_at
sys_id
This is generally easier for analysts to consume than querying nested VARIANT data.
Prerequisites
Before beginning the implementation, confirm the following.
ServiceNow Prerequisites
You should have:
ServiceNow instance URL
Appropriate administrative access
Required source tables identified
sys_idavailable for tables that will be synchronizedOAuth configuration
Required API permissions
Network access that allows the connector to communicate with ServiceNow
Snowflake Prerequisites
You should have:
Snowflake account
Appropriate administrative privileges
Access to Snowflake Marketplace
Warehouse
Database
Schema
Appropriate roles
Resource monitoring
Connector access
Snowflake documentation currently specifies ACCOUNTADMIN access for connector installation in its setup tutorial and ORGADMIN access for accepting applicable Marketplace terms.
Do not use administrative roles as the permanent runtime model unless your organization’s security policy explicitly requires it.
Create appropriately restricted operational roles after initial setup.
Step-by-Step Build Process
Step 1 – Identify the ServiceNow Tables
Start with the reporting requirement.
For example:
| Requirement | ServiceNow Table |
|---|---|
| Incident reporting | incident |
| Change reporting | change_request |
| User analysis | sys_user |
| Configuration items | cmdb_ci |
| Service catalog | Relevant catalog tables |
| Company information | Relevant company table |
Do not begin by synchronizing hundreds of tables.
Create a source-to-target inventory first.
For every table document:
Table name
Business purpose
Required fields
Record volume
Refresh requirement
Data classification
Owner
Downstream consumers
Step 2 – Create the ServiceNow OAuth Application
In ServiceNow, navigate to the OAuth application configuration area.
The exact navigation can vary by ServiceNow release and interface, but the implementation goal is to create an OAuth application that allows the Snowflake connector to authenticate.
Record the required:
Client ID
Client secret
OAuth endpoint information
Treat the client secret as sensitive information.
Do not store it in:
Source code
Git repositories
Plain-text documentation
Email
Shared spreadsheets
Step 3 – Prepare Snowflake
Create or identify:
Database
|
+-- ServiceNow Raw Schema
|
+-- ServiceNow Analytics Schema
For example:
CREATE DATABASE SERVICENOW_DW;
CREATE SCHEMA SERVICENOW_DW.RAW;
CREATE SCHEMA SERVICENOW_DW.ANALYTICS;
The exact naming standard should follow the organization’s Snowflake governance model.
Step 4 – Configure the Warehouse
Create a dedicated warehouse if appropriate.
For example:
CREATE WAREHOUSE SERVICENOW_WH
WITH
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;
Do not blindly copy this configuration into production.
Warehouse size and auto-suspend settings should be based on:
Data volume
Synchronization frequency
Transformation workload
Concurrent users
Cost requirements
The current Snowflake connector documentation specifically notes that a warehouse with AUTO_RESUME enabled is required for connector operations.
Step 5 – Install the Snowflake Connector
In Snowsight, go to the Snowflake Marketplace and search for:
Snowflake Connector for ServiceNow
Follow the connector installation wizard.
The current Snowflake documentation supports installation and configuration through both Snowsight and SQL.
Step 6 – Configure OAuth Authentication
Provide the ServiceNow connection information required by the connector.
Depending on the selected OAuth flow, this can include:
ServiceNow instance
Client ID
Client Secret
OAuth endpoint
Security integration
Snowflake secret
The connector documentation describes the use of Snowflake security integrations and secret objects for managing ServiceNow authentication information.
The authentication layer should be separated from business data permissions.
Step 7 – Validate the Connection
Run the connector’s connection validation process.
Check:
ServiceNow authentication
API accessibility
OAuth credentials
Table permissions
Network accessibility
Required ServiceNow fields
Do not proceed to large-scale ingestion until connection validation succeeds.
Step 8 – Select Tables for Synchronization
Select only the tables required by the project.
For an initial proof of concept, use a small set such as:
incident
sys_user
cmdb_ci
After the first successful synchronization, add additional tables.
This makes troubleshooting considerably easier.
Step 9 – Configure Delete Synchronization Where Required
Updates and inserts are not the same as deletes.
If the analytical platform must understand deleted ServiceNow records, explicitly design for deletion handling.
The connector documentation describes using ServiceNow’s deletion journal information for this purpose.
This is particularly important for compliance reporting.
For example:
Day 1:
INC0012345 exists
Day 5:
Record deleted in ServiceNow
Analytics requirement:
Historical deletion must remain traceable
Do not assume that a missing record automatically means a deletion event has been captured.
Step 10 – Start Ingestion
After the source tables and connector configuration have been validated, start ingestion.
Monitor:
Initial load
Record counts
Connector status
API errors
Failed tables
Processing time
Warehouse consumption
For a production implementation, establish monitoring before onboarding large datasets.
Testing the Integration
Testing should be divided into multiple levels.
Test 1 – Connection Test
Verify that the connector can authenticate to ServiceNow.
Expected result:
Authentication successful
ServiceNow API accessible
Required permissions available
Test 2 – Initial Data Load
Create or identify a known ServiceNow incident.
For example:
Incident: INC0012345
Priority: 2
State: In Progress
Assignment Group: Network Support
After synchronization, search for the corresponding record in Snowflake.
Validate:
sys_idIncident number
State
Priority
Assignment group
Timestamps
Test 3 – Update Test
Change the incident in ServiceNow.
For example:
State:
In Progress → Resolved
After the next synchronization cycle, confirm that Snowflake reflects the updated state.
Test 4 – Delete Test
If delete synchronization is enabled, delete a controlled test record.
Confirm that the expected deletion information is available downstream.
Do this only in a development or test environment.
Test 5 – Volume Test
Do not stop after testing one incident.
Test with realistic volumes.
Measure:
Initial synchronization duration
Incremental synchronization duration
API usage
Snowflake warehouse consumption
Query performance
Transformation performance
Common Errors and Troubleshooting
OAuth Authentication Failure
Symptoms:
Authentication failed
Unauthorized
Invalid client
Token failure
Check:
Client ID
Client secret
OAuth endpoint
Grant configuration
ServiceNow application configuration
User/application permissions
Regenerate credentials only after confirming that the configuration itself is correct.
Table Access Failure
A connector may successfully authenticate but still fail to read a particular table.
This usually points toward authorization rather than authentication.
Check:
Table ACLs
Roles
API permissions
Application access
Table accessibility
Table Does Not Synchronize
Verify that:
The table contains
sys_idThe table is supported
The table is not a ServiceNow view
The connector configuration includes the table
The source table has accessible records
The current connector documentation explicitly notes that ServiceNow views aren’t supported directly. Where a view is needed, synchronize its underlying tables and construct the equivalent analytical join in Snowflake.
Schema Changes Are Not Reflected as Expected
This is a common production issue.
Suppose the ServiceNow team adds:
business_impact
to a source table.
Do not assume that every already-ingested record will immediately behave as though the new field always existed.
Review the connector’s schema-change behavior and validate both newly changed and historical records.
Coordinate ServiceNow configuration changes with the data engineering team.
Network or IP Restrictions
An integration can work perfectly in a development environment and fail in production because production ServiceNow has additional network restrictions.
The current connector documentation specifically identifies restrictions involving external network access and instances hidden behind VPN configurations.
This should therefore be part of the architecture review, not a troubleshooting exercise after deployment.
Warehouse Costs Increase Unexpectedly
If synchronization is frequent or transformation workloads are heavy, Snowflake consumption can increase.
Check:
Warehouse runtime
Query history
Connector frequency
Table volumes
Transformation schedules
Concurrency
Do not solve every performance issue simply by increasing warehouse size.
First determine what is actually consuming compute.
Practical Consultant Recommendations
1. Start With Business Questions
Do not begin with:
“Which ServiceNow tables can we load?”
Begin with:
“What business questions must Snowflake answer?”
This produces a much cleaner data model.
2. Keep Raw and Analytics Layers Separate
A practical architecture is:
ServiceNow
↓
RAW
↓
STAGING
↓
ANALYTICS
↓
BI
The raw layer should preserve source information.
The analytics layer should represent business-friendly structures.
3. Treat sys_id as an Important Technical Key
ServiceNow record identifiers are essential when building relationships and incremental processing.
Do not casually replace technical keys with display values.
For example:
assigned_to = "John Smith"
is not necessarily a reliable relational key.
Prefer the underlying identifier and join to the appropriate user dimension.
4. Don’t Flatten Everything Immediately
Semi-structured data can be valuable.
Flatten fields required for analytics rather than creating hundreds of unnecessary columns.
5. Plan for Historical Data
Ask the business:
How many years are required?
Is archived data needed?
Are deleted records required?
Are historical field values required?
What is the retention policy?
These questions affect the architecture significantly.
6. Establish Data Ownership
Define ownership clearly:
| Area | Owner |
|---|---|
| ServiceNow configuration | ServiceNow team |
| OAuth | Security / ServiceNow team |
| Connector | Data engineering |
| Raw schema | Data platform team |
| Analytics model | Data engineering / BI |
| Dashboard | BI team |
| Data quality | Data owner |
Without clear ownership, production incidents tend to become “ServiceNow vs Snowflake” troubleshooting exercises.
7. Monitor Data Quality, Not Just Connector Status
A connector can report successful execution while business data is still incomplete.
Monitor:
Record counts
Null percentages
Duplicate keys
Latest synchronization timestamp
Unexpected volume changes
Missing reference records
Schema changes
For example:
Yesterday: 125,000 incidents
Today: 126,200 incidents
Expected increase: ~1,000
Actual increase: ~1,200
That difference should be investigated.
Snowflake ServiceNow Integration in a Broader Enterprise Architecture
In a large enterprise, ServiceNow is rarely the only source.
A more complete architecture might look like:
Oracle Fusion ────────┐
|
ServiceNow ───────────┤
|
CRM ──────────────────┤
v
Snowflake
|
Data Transformation
|
+-------------+-------------+
| | |
BI Data Science APIs
For Oracle Fusion environments, teams may use REST APIs, reporting extracts, or other supported extraction mechanisms depending on the business requirement.
The key architectural principle is to keep the operational systems responsible for transactions while Snowflake provides a centralized analytical foundation.
This avoids turning Snowflake into an accidental transactional extension of ServiceNow.
Frequently Asked Questions
FAQ 1 – Can Snowflake directly ingest ServiceNow data?
Yes. Snowflake provides a Snowflake Connector for ServiceNow that is designed to ingest ServiceNow data into Snowflake. It supports initial loading and incremental updates.
FAQ 2 – Can the connector synchronize every ServiceNow object?
Not necessarily. The connector has specific supported structures and limitations. For example, synchronized ServiceNow tables need a sys_id, and ServiceNow views aren’t directly supported. Always validate the required table against the current connector documentation before committing it to the production design.
FAQ 3 – Can Snowflake update ServiceNow records through this connector?
The connector is primarily intended for ingesting ServiceNow data into Snowflake. A requirement to update ServiceNow from Snowflake should be treated as a separate integration requirement and designed using an appropriate ServiceNow API or integration mechanism.
Summary
Snowflake ServiceNow integration provides a practical way to move ServiceNow operational information into an enterprise analytical platform. The most important implementation work happens before the connector is enabled: identifying the correct tables, defining the business requirements, establishing OAuth securely, deciding the refresh strategy, planning deletion and schema-change handling, and defining data ownership.
A successful implementation normally follows this sequence:
Business Requirements
↓
ServiceNow Table Analysis
↓
OAuth & Security Design
↓
Snowflake Environment
↓
Connector Installation
↓
Table Synchronization
↓
Initial Load
↓
Incremental Updates
↓
Data Validation
↓
Analytics Model
↓
Production Monitoring
The current Snowflake connector documentation should always be reviewed before production implementation because connector capabilities, prerequisites, authentication options, and limitations can change.
For Oracle Fusion Cloud environments that feed the same enterprise data platform, also refer to the current Oracle Fusion Cloud Applications documentation and the applicable 26A API and implementation guides. Oracle’s central documentation portal is available at:
https://docs.oracle.com/en/cloud/saas/index.html
For Oracle Time and Labor-related integrations or workforce data requirements, refer to the applicable Oracle Time and Labor 26A documentation within the Oracle Fusion Cloud HCM documentation set and verify the guide corresponding to the exact HCM module and release used by the project.
Additional Documentation
For current implementation details, consult the official Snowflake Connector for ServiceNow documentation, particularly the connector overview, installation/configuration, ingestion, and data-access sections.
The Oracle Fusion Cloud Applications documentation should be treated as the authoritative reference when ServiceNow/Snowflake data is combined with Oracle Fusion Cloud data, especially where REST APIs, security, reporting, or release-specific behavior is involved.