Skip to main content

Advanced NetSuite Configuration Settings

Written by Reut Barak
Updated this week

This article covers advanced configuration options for the Salto NetSuite adapter. For common fetch and File Cabinet settings, see the NetSuite Configuration Guide.

To open your configuration file, go to Environment Settings → Application Connections → click the three dots next to your application → Edit Configuration File


Configuring Concurrency Limits

NetSuite enforces API rate limits that can impact fetch and deploy operations. If you encounter concurrency-related errors during fetch operations, you may need to adjust settings both in NetSuite and in your Salto configuration.

NetSuite UI Configuration: If you're experiencing concurrency limit errors, first increase the limit in NetSuite:

  1. Navigate to Setup → Integration → Manage Integrations → Salto Integration → Edit

  2. Increase the Max Concurrency Limit field

  3. Click Save

Salto Configuration Options: You can also configure concurrency settings in your Salto configuration file to optimize performance:

netsuite {
concurrencyLimit = 5
client = {
fetchAllTypesAtOnce = false
fetchTypeTimeoutInMinutes = 4
maxItemsInImportObjectsRequest = 40
sdfConcurrencyLimit = 4
}
suiteAppClient = {
suiteAppConcurrencyLimit = 4
httpTimeoutLimitInMinutes = 20
}
}

Omitting Fields on Fetch

Use fetch.fieldsToOmit to prevent specific fields from being included in your workspace. This is useful for noisy, auto-generated fields that cause unnecessary diffs.

netsuite {
fetch = {
fieldsToOmit = [{
type = "workflow"
subtype = "workflow_workflowstates_workflowstate"
fields = [
"positionx",
"positiony",
]
}]
}
}

Managing SuiteApps

Fetch SuiteApp objects using the following configuration:

netsuite {
client = {
installedSuiteApps = [
"com.netsuite.someapp",
"com.netsuite.anotherapp"
]
}
}

Managing Deploy Dependencies

You can include or exclude specific dependencies when deploying to NetSuite:

netsuite {
deploy = {
additionalDependencies = {
include = {
features = [
"DEPARTMENTS", // added as optional
"SUBSCRIPTIONBILLING:required", // added as required
]
objects = [
"some_object_script_id"
]
files = [
"/SuiteScripts/myScript.js"
]
}
exclude = {
features = []
objects = [
"unwanted_object"
]
files = []
}
}
}
}

Note – Features are included as optional by default. Add the :required suffix to mark a feature as required.


Deploy Flags

Deploy Referenced Elements

When enabled, deploying an element will automatically include all elements it references:

netsuite {
deploy = {
deployReferencedElements = true
}
}

Default: false


Warn on Stale Workspace Data

When enabled, Salto will warn you during deploy if the changes you're deploying would override changes made directly in NetSuite since your last fetch:

netsuite {
deploy = {
warnOnStaleWorkspaceData = true
}
}

Default: false


Deployment Validation

Deployment validation is enabled by default. If needed, it can be disabled:

netsuite {
deploy = {
validate = false
}
}

Skip List

The skip list allows you to exclude specific objects or files from being processed, without changing your fetch include/exclude rules.

netsuite {
skipList = {
types = {
workflow = ["some_workflow_script_id", "another_.*"]
}
filePaths = [
"^/SuiteScripts/legacy/.*"
]
}
}

Parameter

Default

Description

types

{}

Map of type name → list of script ID regexes. Matching objects are skipped.

filePaths

[]

List of file path regexes. Matching files are skipped.


Full Parameter Reference

Top-level

Parameter

Default

Description

fetch.authorInformation.enable

true

Whether to fetch the user who last changed each element

fetch.strictInstanceStructure

true

Whether to omit untyped values

fetch.fieldsToOmit

[]

Fields to omit on fetch

concurrencyLimit

Higher of suiteAppConcurrencyLimit / sdfConcurrencyLimit

Overall concurrency cap

client

{}

SDF client configuration

suiteAppClient

{}

Salto SuiteApp client configuration

deploy.deployReferencedElements

false

Auto-include referenced elements when deploying

deploy.warnOnStaleWorkspaceData

false

Warn if deploy would override service changes since last fetch

deploy.additionalDependencies

{}

SDF manifest include/exclude dependencies (features, objects, files)

Client options

Parameter

Default

Description

fetchAllTypesAtOnce

false

Fetch all config elements in a single SDF call

fetchTypeTimeoutInMinutes

4

Max minutes for a single SDF command

maxItemsInImportObjectsRequest

40

Max items per import-objects request

sdfConcurrencyLimit

4

Max concurrent SDF API calls

installedSuiteApps

[]

SuiteApp IDs to fetch and deploy

maxInstancesPerType

5000

Max instances fetched per type

maxFileCabinetSizeInGB

3

Max File Cabinet size in GB

maxFilesPerFileCabinetFolder

1000

Max files per File Cabinet folder

SuiteApp client options

Parameter

Default

Description

suiteAppConcurrencyLimit

4

Max concurrent SuiteApp API calls

httpTimeoutLimitInMinutes

20

HTTP timeout in minutes (must be > 1)

wsdlVersion

"2020_2"

SOAP WSDL version (e.g. 2023_2, 2024_1)


Full Configuration Example

Below is a complete reference configuration showing all available options:

netsuite {
fetch = {
include = {
types = [
{
name = ".*"
},
]
fileCabinet = [
"^/SuiteScripts/.*",
"^/Templates/.*",
]
customRecords = [
{
name = "customrecord_.*"
}
]
}
exclude = {
types = [
{
name = "savedsearch"
ids = [".*"]
},
{
name = ".*"
criteria = {
isinactive = true
}
},
]
fileCabinet = [
"^/Web Site Hosting Files.*",
]
}
fieldsToOmit = [{
type = "workflow"
subtype = "workflow_workflowstates_workflowstate"
fields = [
"positionx",
"positiony",
]
}]
}
concurrencyLimit = 5
client = {
fetchAllTypesAtOnce = false
fetchTypeTimeoutInMinutes = 4
maxItemsInImportObjectsRequest = 40
sdfConcurrencyLimit = 4
maxFileCabinetSizeInGB = 3
maxFilesPerFileCabinetFolder = [
{
folderPath = "/SuiteScripts.*"
limit = 2000
},
]
}
suiteAppClient = {
suiteAppConcurrencyLimit = 4
httpTimeoutLimitInMinutes = 20
wsdlVersion = "2024_1"
}
skipList = {
types = {
workflow = ["some_workflow_script_id", "another_.*"]
}
filePaths = [
"^/SuiteScripts/legacy/.*"
]
}
deploy = {
deployReferencedElements = false
warnOnStaleWorkspaceData = false
validate = true
additionalDependencies = {
include = {
features = [
"DEPARTMENTS",
"SUBSCRIPTIONBILLING:required",
]
objects = [
"some_object_script_id"
]
files = [
"/SuiteScripts/myScript.js"
]
}
exclude = {
features = []
objects = [
"unwanted_object"
]
files = []
}
}
}
}
Did this answer your question?