Skip to main content

NetSuite SuiteAnalytics Source

Connect NetSuite SuiteAnalytics as a source to sync NetSuite ERP data into your warehouse. Supaflow uses SuiteAnalytics Connect and discovers the tables visible to the role you configure.

For an overview of capabilities and use cases, see the NetSuite connector page. To run pipelines natively inside Snowflake, see Snowflake Native ETL.

Prerequisites

Before you begin, ensure you have:

  • A NetSuite account with SuiteAnalytics Connect enabled
  • A NetSuite role with SuiteAnalytics Connect permission and read access to the records you want to sync
  • The Account ID, Service Host, and Role ID from the SuiteAnalytics Connect Driver Download page
  • A NetSuite username and password for the user assigned to that role
  • Network access from your Supaflow agent to the NetSuite Connect service host on port 1708

For long-running production pipelines, use a dedicated NetSuite integration user rather than an individual's login. Password expiration, required password changes, role changes, user deactivation, or repeated failed login attempts can interrupt the connection.

Supported Objects

Supaflow discovers NetSuite tables dynamically through SuiteAnalytics Connect. The exact object list depends on the data available in your NetSuite account and visible to the configured role.

ObjectSync ModeDescription
Role-visible NetSuite tablesFull Refresh or IncrementalTables exposed by SuiteAnalytics Connect to the configured role. Common examples include transactions, transaction lines, customers, vendors, items, accounts, and subsidiaries.
Tables with a numeric source primary key and supported last-modified cursorIncrementalTables are eligible for incremental sync when schema discovery finds a numeric source primary key and one of lastmodifieddate, lastmodified, or linelastmodifieddate.
Other readable tablesFull RefreshTables without the required primary key and cursor metadata can still be read as full-refresh objects.

Not Yet Supported

The connector does not support OAuth 2.0 or token-based authentication. It uses the NetSuite username and password path for SuiteAnalytics Connect.

The connector also does not provide source-side delete capture. Incremental sync reads rows whose supported cursor advances; hard deletes in NetSuite are not emitted as delete events unless they are represented in a synced source table.

Supaflow syncs tables exposed through SuiteAnalytics Connect. It does not sync NetSuite saved searches, SuiteAnalytics datasets, SuiteAnalytics workbooks, or NetSuite reports as separate source objects unless NetSuite exposes the underlying data through a role-visible SuiteAnalytics Connect table.

Incremental Sync

Supaflow supports incremental sync for a NetSuite table only when schema discovery finds both:

  • A numeric source primary key
  • One of these cursor fields: lastmodifieddate, lastmodified, or linelastmodifieddate

Incremental reads use the last successful cursor position as the lower bound and the current pipeline cutoff time as the upper bound. This keeps each run bounded and lets Supaflow advance the cursor even when a window has no changed rows.

For large incremental tables, Supaflow reads within numeric ID ranges so a single wide table does not need to be fetched in one query. The durable cursor is still the last-modified timestamp, not the ID range.

Incremental sync depends on NetSuite advancing the supported last-modified cursor for the row. If a computed value, formula-backed value, or related record change does not update that cursor on the synced table, run a full-refresh sync for that table to capture the latest values.

Transaction Type Allowlist

The Transaction Type Allowlist setting applies only to the transaction table. Leave it blank to sync all transaction types visible to the role. Set it to a comma-separated list such as SalesOrd,CustInvc,PurchOrd when you want the transaction table limited to specific NetSuite transaction type codes.

Authentication

Supaflow authenticates to SuiteAnalytics Connect with the NetSuite username and password you provide, plus the Account ID and Role ID in the connection configuration. Oracle's SuiteAnalytics Connect authentication documentation also describes OAuth 2.0 and token-based authentication, but those methods are not exposed by this connector.

The connector is read-only. SuiteAnalytics Connect itself is read-only, and Supaflow does not write, update, or delete records in NetSuite.

Permissions

The role should have:

  • SuiteAnalytics Connect permission
  • Read access to every record type you want to sync
  • Access to the SuiteAnalytics Connect analytics data source

SuiteAnalytics Connect follows NetSuite role-based access restrictions. If a table or field is missing from schema discovery, first check whether the configured role can access that data in NetSuite. Oracle notes that NetSuite2.com is not accessible through the Administrator role, the deprecated Full Access role, roles that require two-factor authentication, or roles that access Connect with IP restrictions. Use a custom role that can access SuiteAnalytics Connect with username and password.

The Data Warehouse Integrator role requires token-based authentication. Because this connector does not expose token-based authentication or OAuth 2.0, do not configure Supaflow with a Data Warehouse Integrator-only setup unless Supaflow support has confirmed your account path.

Configuration

In Supaflow, create a new NetSuite source with these settings:

Account ID*

Your NetSuite account ID. Use the value shown under Your Configuration on the SuiteAnalytics Connect Driver Download page.
Examples: 1234567, 1234567_SB1

Server Host*

The SuiteAnalytics Connect service host for your account. Use the Service Host value from the Driver Download page and do not include the port.
Example: 1234567.connect.api.netsuite.com

Role ID*

The internal ID of the NetSuite role Supaflow should use for SuiteAnalytics Connect.

Username*

The NetSuite login email for the user assigned to the role.

Password*

The NetSuite password for the user.
Stored encrypted

Advanced Settings

Server Data Source

SuiteAnalytics Connect data source name.
Default: NetSuite2.com

Oracle's current SuiteAnalytics Connect data source guidance identifies NetSuite2.com as the only SuiteAnalytics Connect data source. Leave this value unchanged unless Supaflow support asks you to adjust it during troubleshooting.

Noop Query

Heartbeat query used to validate pooled NetSuite sessions.
Default: SELECT 1 FROM dual

Transaction Type Allowlist

Optional comma-separated NetSuite transaction type codes. Applies only to the transaction table.
Example: SalesOrd,CustInvc,PurchOrd

Numeric ID Chunk Width

Width of each numeric ID range for range-eligible NetSuite tables.
Default: 50000
Range: 1000 to 5000000

Range Chunk Planning Timeout

Timeout in seconds for NetSuite range-planning queries. Data reads use Query Timeout instead.
Default: 60
Range: 0 to 3300

Query Timeout

Timeout in seconds for a single NetSuite data query.
Default: 3300

Schema Refresh Interval

How often Supaflow re-discovers NetSuite schema metadata before running.
Options:

  • 0 -- Refresh before every pipeline execution
  • -1 -- Disable automatic schema refresh
  • Positive value -- Refresh interval in minutes (e.g., 60 = hourly, 1440 = daily)

Default: 60

Test & Save

After configuring the connection, click Test & Save. Supaflow verifies the SuiteAnalytics Connect connection, then runs schema discovery for the tables visible to the configured role.

Rate Limiting

NetSuite applies SuiteAnalytics Connect connection, query, and concurrency restrictions. Supaflow handles transient connection and concurrency errors with retry and backoff where the connector can classify them, but large NetSuite accounts can still take time to sync.

For large initial syncs:

  • Start with the tables you need first, then add more tables after the first pipeline is stable
  • Schedule heavy NetSuite syncs during off-peak hours
  • Use Transaction Type Allowlist when you only need specific transaction types
  • Reduce Numeric ID Chunk Width if individual range reads time out on wide or heavily filtered tables

See Oracle's SuiteAnalytics Connect service considerations for current NetSuite-side connection guidance.

Schema Evolution

Supaflow re-discovers NetSuite schema on the cadence set by Schema Refresh Interval.

  • New tables appear after schema refresh when the configured role can see them
  • New columns appear after schema refresh
  • Removed or inaccessible fields stop populating new rows; existing destination columns remain
  • Role permission changes can add or remove tables and fields from discovery
  • Incremental eligibility is recalculated on schema refresh from the current primary key and cursor metadata

NetSuite2.com is the current SuiteAnalytics Connect data source. Oracle's NetSuite2.com schema follows NetSuite's release cycle, so newly exposed records and fields may appear after NetSuite upgrades your account and Supaflow refreshes schema metadata.

Troubleshooting

Authentication failed

Problem:

  • Test & Save fails with a login, password, or credentials error

Solutions:

  1. Confirm the Username and Password match the NetSuite user assigned to the Role ID
  2. Sign in to NetSuite with the same user and verify the password has not expired
  3. Confirm the Account ID, Server Host, and Role ID match the values shown on the SuiteAnalytics Connect Driver Download page
  4. Use a role intended for SuiteAnalytics Connect, such as a custom integration role with the required read permissions

SuiteAnalytics Connect is not enabled

Problem:

  • Test & Save reports that the Connect service is not enabled

Solutions:

  1. In NetSuite, go to Setup > Company > Enable Features
  2. On the Analytics subtab, enable SuiteAnalytics Connect
  3. Add SuiteAnalytics Connect permission to the role used by Supaflow
  4. Run Test & Save again

Tables or fields are missing

Problem:

  • The source connects, but expected NetSuite tables or fields do not appear

Solutions:

  1. Confirm the configured role has access to the record type in NetSuite
  2. Confirm you are using the NetSuite2.com data source
  3. Confirm the configured role is not Administrator, Full Access, a role that requires two-factor authentication, or a role that uses Connect IP restrictions
  4. Use NetSuite's Records Catalog or SuiteAnalytics Workbook to check whether the role can see the table or field
  5. Set Schema Refresh Interval to 0 for the next run to force a fresh discovery
  6. If the field was recently added or the role was recently changed, run schema discovery again after NetSuite reflects the permission change

Incremental sync is not available for a table

Problem:

  • A table appears in schema discovery, but it can only be selected as full refresh

Solutions:

  1. Confirm the table has a numeric source primary key in SuiteAnalytics Connect metadata
  2. Confirm the table has one of lastmodifieddate, lastmodified, or linelastmodifieddate
  3. If either requirement is missing, use full refresh for that table

Transaction sync is too broad

Problem:

  • The transaction table returns more transaction types than you need

Solutions:

  1. Set Transaction Type Allowlist to the transaction type codes you need
  2. Use comma-separated values with the exact casing NetSuite exposes, such as SalesOrd,CustInvc,PurchOrd
  3. Leave the field blank when you want all transaction types visible to the role

Query timeout or slow initial sync

Problem:

  • A large NetSuite table times out or takes too long to read

Solutions:

  1. In Job Details, check the per-object failure to confirm which table timed out
  2. For the transaction table, use Transaction Type Allowlist if your reporting only needs specific transaction types
  3. Reduce Numeric ID Chunk Width so each range query reads less data
  4. Schedule the sync during off-peak hours
  5. Increase Query Timeout only after narrowing scope and chunk width have been considered

Appendix: Private Agent Driver Installation

Most customers use Supaflow-hosted agents and do not need to install NetSuite drivers. This appendix applies only if you run a private or installed Supaflow agent in your own tenant.

The Supaflow Agent does not ship with the proprietary NetSuite OpenAccess JDBC driver. For private agents, download NQjc.jar from your NetSuite SuiteAnalytics Connect driver bundle and place it in the agent's mounted external libraries directory before testing the connection.

Default shared install path:

/data/supaflow-external-libs/io/supaflow/supaflow-connector-netsuite/common/jars/NQjc.jar

If your agent sets SUPAFLOW_EXTERNAL_LIBS_DIR, replace /data/supaflow-external-libs with that value. The agent checks a connector-version-specific directory first, then falls back to common/jars:

/data/supaflow-external-libs/io/supaflow/supaflow-connector-netsuite/<connector-version>/jars/NQjc.jar

Use your normal agent file-transfer or deployment process to copy NQjc.jar into the mounted external libraries directory. If Supaflow manages your private agent deployment, contact Supaflow support to install the driver on the agent volume.

Support

Need help? Contact us at support@supa-flow.io