View All Docs
Product overview
Account overview
Integrations
Transforms
Security
Hide Navigation
Product overview
Account overview
Integrations
Transforms
Security

Pull from NetSuite

The Pull from NetSuite integration enables users to connect to any NetSuite account and pull in saved search results that have been built in the NetSuite UI. Multiple saved searches, across varying search types, can be configured in a single flow.

This step is currently offered to users on our Advanced Plan. Check out the Pricing Page for additional information.

The following document outlines the configuration requirements in NetSuite for creating the integration credentials, defining relevant role permissions, and running the integration in Parabola.

NetSuite configuration process

The following configuration steps are required in NetSuite prior to leveraging the Parabola integration:

  • Create or select a web services only role that can be used by Parabola
  • Create or select a user that will be used for the integration in NetSuite. Ensure the role from the step above is applied to this user record
  • Create a new integration in Netsuite
  • This will result in the creation of your consumer key and consumer secret
  • Create a new set of access tokens that reference the user, role, and integration specified above
  • This will result in the creation of your token id and token secret

Once complete, you will enter the unique credentials generated in the steps above into the Pull from NetSuite step in Parabola. This will also require your account id, which is obtained from your NetSuite account’s url. Ex: https://ACCOUNTID.app.netsuite.com/

The following document will review how to create each of the items above.

Creating a NetSuite role

The permissions specified on the role applied to your integration will determine which saved searches, transactions, lists, and results you’ll be able to access in Parabola. It is important for you to confirm that the role you plan to use has access to all of the relevant objects as required.

The following permissions are recommended, in addition to any specific transaction/list/report specific you may require.

Transactions

  • Any specific transaction types required: sales orders, purchase orders, transfer orders, etc.
  • Find transaction

Reports

  • Any specific report types required

Lists

  • Any specific lists required: items, locations, companies, customers, etc.
  • Perform search, persist search, and publish search

Setup

  • Log in using Access Tokens
  • SOAP Web Services

Custom Records:

  • Any specific custom record objects required

Ensure the checkbox for the web services only role is selected.

Creating a NetSuite integration

Video walk-though of the setup process:

Follow the path below in the NetSuite UI to create a new integration record.

  1. Setup > Integration > Manage Integrations > New
  2. Specify an integration name, ensure the status is set to active, and select the token-based authentication option.
  3. Uncheck the TBA: Authorization Role and Authorization Code Grant checkboxes.
  4. Save the record.

A consumer key and consumer secret will be generated upon saving the record. Record these items, as they will disappear once you leave this page.

Creating a new access token

Once the role, user, and integration have been created, you’ll need to generate the tokens which are required for authentication in Parabola.

Follow the path below in the NetSuite UI to create a new token record.

  1. Setup > Users/Roles > Access Tokens > New Access Tokens
  2. Specify the integration created previously, the desired user, and role, and click save.
  3. The newly created token id and token secret will appear at the bottom of the page.  Record these credentials, as they will disappear once you leave this page.

Configure your settings in Parabola

  1. Gather the credentials created from each step earlier in the process and navigate to the Pull from NetSuite step in Parabola.
  2. Open the Pull from NetSuite step and click Authorize or Edit Accounts
  3. Enter each applicable token and consumer key/secret and click authorize.

Once authorized, you’ll be prompted to select a search type and specific saved search to run. Click refresh and observe your results!

The Return only columns specified in the search checkbox enables a user to determine if all available columns, or only the columns included in the original search, should be returned. This setting is helpful if you’d like to return additional data elements for filtered records without having to update your search in NetSuite.

Helpful Tips

  • The Pull from NetSuite step integrates directly with the saved search function. Based on permissions, users have the ability to access all saved searches from the NetSuite UI within Parabola.
  • If no saved search options are returned for a specific transaction type, please validate your user and role have access to the specific object you’re attempting to access.
  • Users will need permissions within NetSuite to create new integrations, manage access tokens, edit roles, etc. in order to generate the credentials required for this integration
  • Formula fields within saved searches will not be returned
  • Saved searches which include summary results are not supported
  • Ensure the user/role configured for the integration has sufficient permissions to access all necessary saved searches and results

By default, the NetSuite API will only return the full data results from the underlying search record type (item, customer, transaction, etc) and only the internal ids of related record types (vendors, locations, etc) in a search.

For example, running the following search in Parabola would return all of the information as expected from the base record type (item in this scenario), and the internal id of the related object (vendor).

The best way to return additional details from related objects (vendor in this scenario) is by adding joined fields within the search. Multiple joined fields can be added to a single search to return data as necessary.

Alternatively, another solution would be running separate searches and joining the results by using a Combine Tables step within the flow. This is demonstrated below.

Usage notes

  • Users will need permissions within NetSuite to create new integrations, manage access tokens, edit roles, etc. in order to generate the credentials required for this integration
  • Formula fields within saved searches will not be returned
  • Saved searches which include summary results are not supported
  • Ensure the user/role configured for the integration has sufficient permissions to access all necessary saved searches and results

Query and Update data from NetSuite

The NetSuite REST Web Services API is used to interact programmatically with NetSuite data, allowing developers to manage, retrieve, and manipulate data and execute business operations directly in NetSuite. SuiteQL is a query language to provide advanced query capabilities to access your NetSuite records and data.

Use Cases

Use Case Description
Perform CRUD Operations on Records Create, Read, Update, and Delete records in NetSuite. These records can be standard records, like customers, invoices, and sales orders, or custom records designed for specific business needs.
Execute SuiteQL Queries Perform custom queries on data, similar to SQL, to retrieve specific records or filtered data. SuiteQL supports complex joins and aggregate functions, making it useful for reporting, analytics, and retrieving data for custom dashboards.
Automate Business Processes Automate business processes like creating invoices upon order completion, updating inventory counts from external systems, and synchronizing customer and order data.

🤝  NetSuite | Integration configuration

📖  NetSuite API Reference docs:

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/chapter_1540811107.html

🔎  NetSuite SuiteQL Example docs:

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_156257790831.html#subsect_156474852230

🔐  NetSuite Authentication docs:

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_158074210415.html

Instructions

  1. Ensure appropriate features are enabled
    1. Navigate to Setup > Company > Enable features > SuiteCloud tab.
      1. Enable the following features:
        1. Select SuiteTalk > Rest Web Services.
        2. Select Manage Authentication > OAuth 2.0.
  2. Ensure the role assigned to the user that will be leveraged for the integration has the following permissions:
    1. Enable permissions for your role: Setup > Users/Roles > Manage roles > Name of your role > Edit.
    2. Enable the following permissions:
      1. Select Permissions > Setup > Log in using OAuth 2.0 Access Tokens(Full), OAuth 2.0 Authorize Applications Management(Full) and REST Web Services(Full).
  3. Create OAuth 2.0 Client for NetSuite
    1. Navigate to Setup > Integrations > Manage Integrations > New
    2. Give it a name Parabola OAuth 2.0
    3. Uncheck all items under token-based authentication
    4. Under OAuth2.0
      1. Check Authorization Code Grant
      2. Check Rest Web service' under Scopes
      3. Add https://parabola.io/api/steps/generic_api/callback within the Redirect URI field
      4. Click save
    5. Copy the following values that are generated:
      1. Application ID
      2. Client ID
      3. Client Secret

🔐  Parabola | Authentication configuration

  1. Add a Pull from API step to your canvas.
  2. Click into the step to configure your authentication.
  3. Under the Authentication Type, select OAuth 2.0 before selecting Configure Auth.
  4. Toggle on Switch to custom settings

Auth name

Give your authorization account an identifiable name.

Authorization Request URL (GET)

https://<account-id>.app.netsuite.com/app/login/oauth2/authorize.nl

💡 Tip: Swap in your account-id into the Authorization Request URL.

URL Parameters

Key Value
client_id <Your Client Id>
response_type code
redirect_uri https://parabola.io/api/steps/generic_api/callback
scope rest_webservices
state <Any string between 22 and 1024 characters>

Access Token Request URL (POST)

https://<account-id>.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token

💡 Tip: Swap in your account-id into the Authorization Request URL.

Request Body

Header Key Header Value
grant_type authorization_code
client_id <Your Client Id>
client_secret <Your Client Secret>
redirect_uri https://parabola.io/api/steps/generic_api/callback

Refresh Token Request URL (POST)

https://<account-id>.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token

💡 Tip: Swap in your account-id into the Authorization Request URL.

Request Body

Header Key Header Value
grant_type refresh_token
client_id <Your Client Id>
client_secret <Your Client Secret>

Example Screenshot

🌐  NetSuite | Sample API Requests

Query NetSuite data with SuiteQL

Run a SuiteQL query to retrieve data from a  record. Get started with this template.

  1. Add a Query NetSuite Data with SuiteQL step to your Flow.
  2. Click into the Pull from API: SuiteQL step.
  3. Under Authentication Type, select OAuth 2.0 to use your authentication credentials.
  4. Click into the Request Settings to configure your request using the format below:

API Endpoint URL

Field Value
Method POST
API Endpoint URL https://<account-id>.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql

Request Body

Key Value
Format JSON
Body {
  "q": "SELECT id, entityid, email FROM customer WHERE isinactive = false"
}

Pagination Style

  1. Select Offset and Limit
  2. Set the Offset key field .
  3. Set the Starting value field to 0.
  4. Set the Increment by field to 100.
  5. Set the Limit key field to limit.
  6. Set the Limit value field to 100.
  7. Enter the number of pages to return using Pages to fetch while editing and Pages to fetch while running fields. Each page returns 100 orders.
  8. Click Refresh data to display the results.
  9. Use an Expand JSON step to parse nested JSON objects into a tabular structure.
  10. Finish off Flow by exporting you date using a Send to Parabola Table step.

Example Screenshots

Update Sales Order Line Items

Update the properties of your sales orders by making API requests to NetSuite’s SuiteTalk REST web services. Get started with this template

  1. Use a Pull from NetSuite step to pull in a saved Transaction search with applicable order details. 
  2. Connect it to a Send to API: Update NetSuite SO Line Items step to your Flow.
  3. Under Authentication Type, select OAuth 2.0 to use your authentication credentials.
  4. Click into the Request Settings to configure your request using the format below:

API Endpoint URL

Field Value
Method PATCH
API Endpoint URL https://<account-id>.suitetalk.api.netsuite.com/services/rest/record/v1/salesorder/{Internal id}
⚠️ Note: An Internal Id associated with the sales order must be provided.

Request Body

Key Value
Format JSON
Body

        
{
    "item": {
        "items": [
            {
                "line": {Line},
                "item": {
                    "id": {Item join: internal id}
                },
                "custom_column_property_name_1": 123,
                "custom_column_property_name_2": "some text"
            }
        ]
    }
}
          
        
⚠️ Note: Depending on the property, custom fields can accept string values or Internal Ids. If a property is configured to accept an Id, using the property’s literal string value will throw an error.

Example Screenshot