Establishing a Connection
To access NetSuite data in BizTalk, you need to configure the adapter and then configure the connection.
Configure the NetSuite Adapter
You can configure the adapter in the properties for the receive location or send port: Select the adapter in the Type menu, and then click Configure. You can then specify receive or transmit properties in the Transport Properties dialog that is displayed.
See Adapter Configuration for guides to configure the adapter for receive locations and send ports.
Configure the Connection
After you configure the adapter, you need to configure connection properties. In the Transport Properties dialog, click the button in the Connection String box. You can set connection properties in the dialog that is displayed.
Connecting to NetSuite
As of 2020.2, NetSuite will no longer support user / password connections. While the CData BizTalk Adapter for NetSuite will continue to support User/Password connections for Version set to values lower than 2020.2, it is recommended that all customers migrate to OAuth and Token Based Authentication mechanisms described below.
It is recommended but not required to specify the NetsuiteMetadataFolder. The Netsuite Metadata Folder is a folder on disk where NetSuite metadata files will be stored. If you do not specify one, a folder location will be selected automatically. To ensure fast load times when listing metadata about tables, it is best to set this property.
NetSuite Web Services Permissions
The adapter communicates with NetSuite through the NetSuite Web services. This means that any connecting user must have permissions on the specified AccountId to connect through NetSuite Web services. Please see the Permission Configurations for greater details on required and optional permissions.
1. Create or edit a role for Web services permissions
- Log into NetSuite and under Setup go to User/Roles -> Manage Roles -> New. Alternatively, edit an existing role.
- Click Permissions -> Setup and add the "SOAP Web Services" and "REST Web Services" permissions.
- Add other permissions that are needed for interacting with various entities and transactions.
- Under Setup, go to User/Roles -> Manage Users and select the user.
- On the Access tab, add the newly created role and save the user.
There are two methods of Token Authentication that may be performed:
- Token Based Authentication - A form of authentication where the administrator directly creates an app within NetSuite and the OAuthAccessToken and OAuthAccessTokenSecret to assign the user. See Creating an Access Token in NetSuite for further details on this process.
- OAuth - OAuth 1.0 is used to form a two way handshake where the user logs in and directly grants permissions to the connection application and selects which role will be used for the app. Please see Using OAuth Authentication for details on how to connect via OAuth.
By default, NetSuite allows only one request at a time for a given user. If a request is still executing against NetSuite when another one is attempted, an error stating "Only one request may be made against a session at a time" will be thrown on the second connection.
NetSuite Response Times
NetSuite response times can take a long time depending on what you are retrieving. This can range from 20-40 seconds to retrieve 1000 SalesOrders to up to 8-12 minutes to retrieve a single page of the SalesOrder_ItemList. The main factor that can affect performance is whether or not child table information is retrieved. For instance, the SalesOrder_ItemList table would be considered the child table of SalesOrder. In addition, the information in the ItemListAggregate on the SalesOrder table would be considered child table information. Because of the significant delay it adds in response times from NetSuite, we have defaulted AggregateColumnMode to Ignore. When set to either Ignore or List, this will cause any Aggregate columns on base tables such as SalesOrder to not request data from NetSuite. This property has no effect on child tables.
Slow NetSuite response times extend to inserts, updates, and deletes as well.This can be especially noticeable when using batch processing. When inserting, updating, or deleting multiple records at a time, it may be worthwhile to set UseAsyncServices to true. This will cause the request to be processed asynchronously on NetSuite's end and a JobId will be returned in the Info#TEMP table. The JobId can be checked against the stored procedures CheckJobStatus and GetJobResults for information about when the job is completed, if any errors occurred, and for the InternalIds for newly created entities.