This article provides some tips on maximizing performance. Most readers will want to jump right there. For admins, we also discuss how we deal with NetSuite concurrency concerns.
NetSuite Concurrency
By default, NetSuite restricts integrations using basic credentials, ie username, and password, to make only one NetSuite web services call at a time. ExtendInsights supports basic credentials as well as token-based authentication (TBA).
ExtendInsights’ Current Approach
NetSuite enforces strict per account concurrency limits. ExtendInsights apps are designed to use only one queue (the first available) at a time, irrespective of the login mode (basic credentials or TBA). We want to be a team player with all of your other apps and not be overly aggressive in taking over queues. By ensuring that our apps occupy a single queue we minimize any impact on other real-time business-critical applications that customers may have running on their accounts.
For example, if your account’s allowed concurrency is 10 and your current integrations are using all 10 queues, then ExtendInsights app users logging in will run into concurrency issues and ExtendInsights will go into retry mode (as outlined below).
A future build of ExtendInsights will allow admins to specify a maximum number of queues for ExtendInsights when using TBA. Customers with sufficient NetSuite queues will have full control over ExtendInsights performance.
Retry Approach
In the event, all of your NetSuite queues are occupied ExtendInsights Apps have a built-in retry mechanism. Whenever the app notices that one of its requests is rejected due to concurrency restrictions, it continues to retry 3 times and then throws an error when it fails to make a call after all retries are done. In such cases, users will see an appropriate failure notification in the app and they will be required to retry the operation they were performing before.
NetSuite does provide the ability to purchase additional queues and we recommend you add other integrations to those queues to leave room for ExtendInsights in the event you consistently encounter concurrency issues.
Understanding your account concurrency levels
Follow this cheat sheet from NetSuite to understand your concurrency limits and usage.
Find out the concurrency limits for your NetSuite account:
Within NetSuite, NetSuite admins can go to Setup > Integration > Web Services Preferences and see their account’s Concurrency Governance called ACCOUNT CONCURRENCY LIMIT. The number listed here is the maximum number of concurrent requests that are allowed for the account.
Understanding your Integration application performance and usage:
NetSuite suggests installing Application Performance Management (APM) SuiteApp(You need to be logged in into your NetSuite to access this page) to understand and monitor your account Web Services and RESTlet concurrencies.
Once installed the following video should help you to understand when and why you are running into concurrency issues and see which applications are causing concurrency issues (this is a NetSuite video that will open outside of the ExtenInsights Help Center)
NetSuite Video
Best Practices for maximum performance
Change your scripts and workflows
When a user builds a workflow, they often only want it to run in the NetSuite UI. Because only one record is updated at a time the performance impact appears minimal. If, however, your workflow is also running in the context of SOAP web services it can dramatically slow down an upload because it will run on each record uploaded via CloudExtend.
Check with your admin or developer and see if it's possible to de-select SOAP web services in your workflow or your script.
Upserts
If known, use internalID only in [[nnnn]] format for picklists
Resolve values using Picklist prior to upserting (this inserts the NetSuite internalID for you behind the scenes)
Use Vlookups to other worksheets to retrieve internalID’s
Limit the number of columns to just those needed
Don't include line-level fields if you don't need them
Downloads
Use a data filter or pre-built NetSuite saved search to return only the records you need
Limit the number of columns to just those needed
Templates without sub-list columns can often lead to much faster downloads
If you don’t need to upsert data after downloading, consider adding ExtendInsights Analytics (a separate paid feature) to be able to quickly run/rerun your saved searches and download the results to Excel for reporting.
You can also leverage these searches to perform a look up of internal ID's to populate your template to speed up your uploads.