> For the complete documentation index, see [llms.txt](https://docs.ovaledge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ovaledge.com/release8.2/connectors/connector-repositories/application/netsuite-crm.md).

# Netsuite CRM

This article outlines the integration with the NetSuite CRM connector, enabling streamlined metadata management through features such as crawling, manual lineage, and data preview. The connector extracts metadata from NetSuite CRM schemas, record types, tables, columns, nested objects, custom subrecords, and their relationships, providing comprehensive visibility into CRM data assets and metadata structure.

The connector establishes connectivity through the NetSuite CRM REST APIs using OAuth 1.0 Token-Based Authentication (TBA). It authenticates using NetSuite integration credentials, including the Consumer ID, Consumer Secret, Token ID, Token Secret, and Realm ID, to validate the connection, crawl metadata, retrieve sample data, and perform related connector operations.

<div align="left"><img src="/files/ySqaLQfYDi1DWJujnOaz" alt="" height="293" width="624"></div>

## Overview

### Connector Details

| Connector Category                                                               | RDBMS                |
| -------------------------------------------------------------------------------- | -------------------- |
| OvalEdge Release Supported                                                       | Release8.0 and later |
| <p>Connectivity</p><p>\[How the connection is established with NetSuite CRM]</p> | REST APIs            |

## Connector Features

<table data-search="false"><thead><tr><th>Feature</th><th align="center">Availability</th></tr></thead><tbody><tr><td>Crawling</td><td align="center">✅</td></tr><tr><td>Delta Crawling</td><td align="center">❌</td></tr><tr><td>Profiling</td><td align="center">❌</td></tr><tr><td>Sample Profiling</td><td align="center">✅</td></tr><tr><td>Query Sheet</td><td align="center">❌</td></tr><tr><td>Data Preview</td><td align="center">✅</td></tr><tr><td>Auto Lineage</td><td align="center">❌</td></tr><tr><td>Manual Lineage</td><td align="center">✅</td></tr><tr><td>Secure Authentication via Credential Manager</td><td align="center">✅</td></tr><tr><td>Data Quality</td><td align="center">❌</td></tr><tr><td>DAM (Data Access Management)</td><td align="center">❌</td></tr><tr><td>Bridge</td><td align="center">✅</td></tr></tbody></table>

#### Metadata Mapping

The following objects are crawled from NetSuite CRM and mapped to the corresponding UI assets.

<table data-search="false"><thead><tr><th>NetSuite CRM Object</th><th>NetSuite CRM Attribute</th><th>OvalEdge Attribute</th><th>OvalEdge Category</th><th>OvalEdge Type</th></tr></thead><tbody><tr><td>Schema</td><td>Schema Name</td><td>Schema</td><td>Databases</td><td>Schema</td></tr><tr><td>Schema</td><td>Schema Comment</td><td>Source Description</td><td>Databases</td><td>Schema</td></tr><tr><td>Schema</td><td>Record Type Name</td><td>Table</td><td>Tables</td><td>table</td></tr><tr><td>-<br></td><td>Record Type/Table Type</td><td>Type</td><td>Tables</td><td>table</td></tr><tr><td>-<br></td><td>Record Description</td><td>Source Description</td><td>Descriptions</td><td>Source Description</td></tr><tr><td>Table (Nested Object)</td><td>Object Property Name</td><td>Table</td><td>Tables</td><td>Table</td></tr><tr><td>Table (Custom Subrecord)</td><td>Custom Record Schema Name</td><td>Table</td><td>Tables</td><td>Table</td></tr><tr><td>Columns</td><td>Property Name (Field Key)</td><td>Column</td><td>Table Columns</td><td>-</td></tr><tr><td>-<br></td><td>JSON Schema Type</td><td>Column Type</td><td>Table Columns</td><td>-</td></tr><tr><td>-<br></td><td>Property Title</td><td>Title</td><td>Table Columns</td><td>-</td></tr><tr><td>-<br></td><td>Property Description</td><td>Source Description</td><td>Table Columns</td><td>-</td></tr><tr><td><br>-</td><td>Ordinal Position</td><td>Column Position</td><td>Table Columns</td><td>-</td></tr><tr><td><br>-</td><td>Length</td><td>Data Type Size</td><td>Table Columns</td><td>-</td></tr><tr><td>Relationship Column (Synthetic)</td><td>Parent Table Name</td><td>Column</td><td>Table Columns</td><td>-</td></tr><tr><td>Column Relations</td><td>Parent ↔ Child Object Table</td><td>Relationship</td><td>Relationships</td><td>-</td></tr></tbody></table>

### Set up a Connection

### Prerequisites

The prerequisites to establish a connection:

### **Service Account User Permissions**

{% hint style="info" %}
Use a dedicated service account to establish the connection to the data source, configured with the following minimum set of permissions.
{% endhint %}

{% hint style="info" %}
👨‍💻 Who can provide these permissions? The NetSuite CRM administrator grants these permissions, as standard accounts may not have the required access to assign them independently.
{% endhint %}

<table data-search="false"><thead><tr><th>Operations</th><th>Objects</th><th>System Tables</th><th>Access Permissions</th></tr></thead><tbody><tr><td>Connection Validation</td><td>SuiteTalk REST API</td><td>OPTIONS /services/rest/*</td><td>OPTIONS (Read)</td></tr><tr><td>Connection Validation</td><td>Schema</td><td>OPTIONS /services/rest/*</td><td>OPTIONS (Read)</td></tr><tr><td>Crawling</td><td>Tables (Record Types)</td><td>GET /services/rest/record/v1/metadata-catalog</td><td>GET (Read)</td></tr><tr><td>Crawling</td><td>Table Columns</td><td>GET /services/rest/record/v1/metadata-catalog</td><td>GET (Read)</td></tr><tr><td>Crawling</td><td>Custom Subrecords</td><td>GET /services/rest/record/v1/metadata-catalog (swagger)</td><td>GET (Read)</td></tr><tr><td>Crawling</td><td>Relationships</td><td>Derived From Metadata</td><td>Read (Metadata)</td></tr><tr><td>Profiling</td><td>Tables (Sample Data)</td><td>POST /services/rest/query/v1/suiteql</td><td>POST (Read)</td></tr><tr><td>Profiling</td><td>Tables (Row Count) / Table Columns</td><td>POST /services/rest/query/v1/suiteql</td><td>POST (Read)</td></tr><tr><td>-<br></td><td>Views, Procedures, Functions, Triggers, Query Sheet, Lineage, Indexes</td><td>N/A</td><td>Not Supported</td></tr></tbody></table>

### Connection Configuration Steps

{% hint style="info" %}
Users must have the Connector Creator role to configure a new connection.
{% endhint %}

1. Log in to OvalEdge, go to Administration > Connectors, click + **(New Connector)**, search for NetSuite CRM, and complete the required parameters.

   **Note**: Fields marked with an asterisk (\*) are mandatory for establishing a connection.

<table data-search="false"><thead><tr><th width="219.3333740234375">Field Name</th><th>Description</th></tr></thead><tbody><tr><td>Connector Type</td><td>By default, "NetSuite CRM" is displayed as the selected connector type.</td></tr><tr><td>Credential Manager*</td><td><p>Select the desired credentials manager from the drop-down list. Relevant parameters will be displayed based on the selection.</p><p>Supported Credential Managers:</p><ul><li>Database</li><li>HashiCorp</li><li>AWS Secrets Manager</li><li>Azure Key Vault</li></ul><p>For more details, click <a href="https://docs.ovaledge.com/release8.1/connectors/additional-requirements/credential-manager-configuration">here</a>.</p></td></tr><tr><td>Connector Name*</td><td><p>Enter a unique name for the NetSuite CRM connection              </p><p>(Example: "NetSuiteCRM_Prod").</p></td></tr><tr><td>Connector Environment</td><td><p>Select the environment (Example: PROD, STG) configured for the connector.<br></p><p>For more details, click <a href="https://docs.ovaledge.com/connectors/introduction-to-connectors/setup-and-connectivity/prerequisites#connector-environment">here</a>.</p></td></tr><tr><td>Connector Description</td><td>Enter the description related to the connector.</td></tr><tr><td>Netsuite account Id*</td><td>Enter the unique NetSuite Account ID associated with the NetSuite CRM instance.</td></tr><tr><td>Client/Consumer Id*</td><td>Enter the OAuth 1.0 Consumer ID (Consumer Key) generated from the NetSuite Integration record. </td></tr><tr><td>Client/Consumer Secret*</td><td>Enter the OAuth 1.0 Consumer Secret associated with the NetSuite integration application. </td></tr><tr><td>Token Id*</td><td>Enter the Token ID generated for Token-Based Authentication (TBA) in the NetSuite account. </td></tr><tr><td>Token secret*</td><td>Enter the Token Secret generated for the Token-Based Authentication (TBA) access token in NetSuite. </td></tr><tr><td>Realm Id*</td><td>Enter the NetSuite Realm ID (Account ID) in the Account_ID format to identify the NetSuite account to connect to. </td></tr><tr><td>Plugin Server</td><td>Enter the server name when running as a plugin server.</td></tr><tr><td>Plugin Port</td><td>Enter the port number on which the plugin is running.</td></tr></tbody></table>

**Default Governance Roles**

<table data-header-hidden><thead><tr><th width="219.33331298828125"></th><th></th></tr></thead><tbody><tr><td>Default Governance Roles*</td><td>Select the appropriate users or teams for each governance role from the drop-down list. All users and teams configured in OvalEdge Security are displayed for selection.</td></tr></tbody></table>

**Admin Roles**

<table data-header-hidden><thead><tr><th width="219.3333740234375"></th><th></th></tr></thead><tbody><tr><td>Admin Roles*</td><td>Select one or more users from the dropdown list for Integration Admin and Security &#x26; Governance Admin. All users configured in OvalEdge Security are available for selection.</td></tr></tbody></table>

**No of Archive Objects**

<table data-header-hidden><thead><tr><th width="219.33331298828125"></th><th></th></tr></thead><tbody><tr><td>No Of Archive Objects*</td><td><p>This shows the number of recent metadata changes to a dataset at the source. By default, it is off. To enable it, toggle the Archive button and specify the number of objects to archive.</p><p>Example: Setting it to 4 retrieves the last four changes, displayed in the 'Version' column of the 'Metadata Changes' module.</p></td></tr></tbody></table>

**Bridge**

<table data-header-hidden><thead><tr><th width="219.33331298828125"></th><th></th></tr></thead><tbody><tr><td>Select Bridge*</td><td><p>If applicable, select the bridge from the drop-down list.</p><p>The drop-down list displays all active bridges configured in OvalEdge. These bridges enable communication between data sources and OvalEdge without altering firewall rules.</p></td></tr></tbody></table>

2. After entering all connection details, the following actions can be performed:
   1. Click Validate to verify the connection.
   2. Click Save to store the connection for future use.
   3. Click Save & Configure to apply additional settings before saving.
3. The saved connection will appear on the Connectors home page.

## Manage Connector Operations

### Crawl/Profile

{% hint style="info" %}
To perform crawl and profile operations, users must be assigned the Integration Admin role.
{% endhint %}

The **Crawl/Profile** button allows users to select one or more schemas for crawling and profiling.&#x20;

1. Navigate to the Connectors page and click **Crawl/Profile**.
2. Select the schemas to crawl.
3. The **Crawl** option is selected by default. Click the **Crawl & Profile** radio button to enable both operations.
4. Click **Run** to collect metadata from the connected source and load it into the **Data Catalog**.
5. After a successful crawl, the information appears in the **Data Catalog > Databases** tab.

The **Schedule** checkbox allows automated crawling and profiling at defined intervals, from a minute to a year.

1. Click the **Schedule** checkbox to enable the **Select Period** drop-down.
2. Select a time period for the operation from the drop-down menu.
3. Click **Schedule** to initiate metadata collection from the connected source.
4. The system will automatically execute the selected operation (**Crawl** or **Crawl & Profile**) at the scheduled time.

### Other Operations

The **Connectors page** in OvalEdge provides a centralized view of all configured connectors, including their health status.

**Managing connectors includes:**

* **Connectors Health**: Displays the current status of each connector, with a green icon for active connections and a red icon for inactive connections, helping monitor connectivity to data sources.
* **Viewing**: Click the Eye icon next to the connector name to view connector details, including Tables, Views, and Columns.&#x20;

**Nine Dots Menu Options:**

To view, edit, validate, configure, or delete connectors, click on the Nine Dots menu.

* **Edit Connector**: Update and revalidate the data source.
* **Validate Connector**: Check the integrity of the connection.
* **Settings**: Modify connector settings.
  * **Crawler**: Configure data extraction.
  * **Profiler**: Customize data profiling rules and methods.
  * **Access Instructions**: Add notes on how data can be accessed.
  * **Business Glossary Settings**: Manage term associations at the connector level.
  * **Lineage**: Select server dialects for parsing and setting connector priority for table lineage.
  * **Others**: Configure notification recipients for metadata changes.
* **Delete Connector**: Remove a connector with confirmation.

For more details on connector settings, click [here](https://docs.ovaledge.com/release8.1/connectors/introduction-to-connectors/setup-and-connectivity/connector-settings).

### Connectivity Troubleshooting

If incorrect parameters are entered, error messages may appear. Ensure all inputs are accurate to resolve these issues. If issues persist, contact the assigned support team.

<table><thead><tr><th width="84.5555419921875">S.No.</th><th width="206.5555419921875">Error Message(s)</th><th>Error Description &#x26; Resolution</th></tr></thead><tbody><tr><td>1</td><td>HTTP 401 Unauthorized </td><td><p>Error Description:<br>The NetSuite CRM connector validation fails because the OAuth authentication request is rejected. This issue typically occurs due to an invalid OAuth signature, incorrect API credentials, or an incorrect Realm ID.</p><p><br>Resolution:</p><ul><li>Verify that the Client (Consumer) ID and Client (Consumer) Secret are correct.</li><li>Ensure that the Token ID and Token Secret are valid and have not expired or been revoked.</li><li>Confirm that the configured Realm ID matches the NetSuite account ID.</li><li>Verify that the OAuth credentials use the HMAC-SHA256 signing method supported by the connector.</li><li>Regenerate the access token if the client secret or token secret has been rotated or updated.</li><li>Retry the connection after updating the OAuth credentials and Realm ID.</li></ul></td></tr><tr><td>2</td><td>HTTP 403 Forbidden </td><td><p>Error Description:<br>The NetSuite CRM connector request is denied because the configured integration role lacks the required permissions to access the requested REST resource.</p><p><br>Resolution:</p><ul><li>Verify that the integration role has the REST Web Services permission enabled.</li><li>Ensure that the role has SuiteAnalytics Workbook and SuiteQL permissions required for profiling.</li><li>Confirm that the role has Read access to all record types selected for crawling.</li><li>Validate that the integration role has separate permissions for both Metadata Catalog and SuiteQL endpoints.</li><li>Save the updated role permissions and retry the connection or crawl operation.</li></ul></td></tr><tr><td>3</td><td>Insufficient permissions to access NetSuite CRM. Minimum SuiteTalk REST permissions are required for connection validation and metadata crawling. </td><td><p>Error Description:<br>The NetSuite CRM connector validation fails because the configured user or integration role lacks the minimum SuiteTalk REST permissions required to validate the connection, retrieve metadata, and perform profiling operations.</p><p><br>Resolution:</p><ul><li>Ensure that the configured NetSuite user or integration role has the required SuiteTalk REST permissions.</li><li>Grant read access to OPTIONS /services/rest/* for connection validation.</li><li>Grant read access to GET /services/rest/record/v1/metadata-catalog and GET /services/rest/record/v1/metadata-catalog/{recordType} for metadata crawling.</li><li>Grant access to the Swagger metadata catalog for custom subrecords, if applicable.</li><li>Grant access to POST /services/rest/query/v1/suiteql for sample profiling and row count operations.</li><li>Verify that the assigned role has access to the required record types and metadata.</li><li>Retry the connection after updating the role permissions.</li></ul></td></tr><tr><td>4</td><td>Error while retrieving profiling results: Received HTTP 400 (Bad Request) from the NetSuite CRM SuiteQL API. </td><td><p>Error Description:<br>The profiling operation fails because the SuiteQL query is invalid or the configured role lacks permission to execute SuiteQL queries. This can also occur when profiling unsupported nested object tables or custom subrecords.</p><p><br>Resolution:</p><ul><li>Verify that the configured NetSuite role has the required SuiteQL permissions.</li><li>Ensure that the table or record name used for profiling is valid and supported by SuiteQL.</li><li>Avoid profiling nested object tables and custom subrecords; instead, profile the parent record types whenever possible.</li><li>Review the NetSuite error details logged by the connector to identify the specific cause of the HTTP 400 response.</li><li>Retry the profiling operation after correcting the table selection or updating the role permissions.</li></ul></td></tr></tbody></table>

***

Copyright © 2026, OvalEdge LLC, Peachtree Corners, GA, USA.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ovaledge.com/release8.2/connectors/connector-repositories/application/netsuite-crm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
