Every NetSuite customer has a certain number of limits for how many calls can be made concurrently against their instance of NetSuite. You'll want to connect with your NetSuite Admin to learn more about the number of limits your account has setup.
A common question from our NetSuite customers is how the Formstack Sync integration impacts these limits. While it's not possible to give an exact set of concurrency calls that our Connector will make at any one time, this is a general guideline for how it functions and also the options available to reduce the calls if you are running into a situation where your limits are being hit.
CONCURRENT CALL OVERVIEW
Every 5 minutes or so the integration will wake up and ask NetSuite for recently modified records since the last time the integration ran. Each record-type that we are talking to will result in 5 requests. For example, Contacts are a record type we read, so we'll make 5 parallel requests to GET contact records that were updated since the last time our sync ran. Each request can return up to 100 records. Since we’re doing 5 requests in parallel, we’ll get up to 500 updated records. So, if less than 500 contacts have been created or updated, we’ll get all of the changed records in these initial 5 calls. If more than 500 records have been changed, we’ll do another 5 parallel requests. This continues until we get all of the modified contacts.
Each record-type is called upon at the same time when we make the GET requests. So if your integration is syncing Contacts, Leads, Prospects, Customers and Opportunities from NetSuite, that is 5 different record-types so 5*5 = 25 calls will be made when we wake up to look for recently modified records in your NetSuite instance since the last time the sync ran.
When Formstack Sync is writing (POST OR PUT) data into NetSuite, we are making up to 4 parallel requests.
Translating the above into what NetSuite calls "Concurrency Units", our GET requests use 35 concurrency units each. So with 5 parallel requests we'll use up to 175 "concurrency points" when we are reading out data for a given record-type. Most customers have the following record-types enabled in their NetSuite connectors: Employee, Contact, Lead, Prospect, Customer, Opportunity. So with 6 different record-types, the max number of "concurrency points" is 1,050.
For the write requests (POST or PUT), we use 30 concurrency units per request and so with 4 parallel requests it will use up to 120 concurrency points during the writing process.
OPTIONS TO REDUCE CALLS
Option 1: Reduce the calls to retrieve only 1 record-type at a time. We would still make 5 parallel requests per data type but this would reduce the max number of "concurrency points" that we make in any given request.
Option 2: Scale the number of parallel calls for retrieving a record-type down from 5 all the way to 1. For example, if this is adjusted to 3 calls instead of 5, the number of "concurrency points" used to read out data would be 105 per record-type instead of 175.
Write (POST or PUT) Adjustments
Option 1: We can reduce the parallel writes down from 4 to 1 request, however, this requires moving customers to our slowest sync engine.
The last option would be to reduce the number of record-types involved in your integration. This is a last resort option and not recommended as it means reducing the value you are receiving from the data you are syncing between your systems.
WARNING: All of the options outlined above will either have an impact on the speed/performance of your integration or potentially decrease the value you are receiving from the data being kept in sync between NetSuite and your other system(s). It therefore may make more sense to review the options to increase your NetSuite limits if you are finding you are exceeding your limits on a daily basis.