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:
Navigate to Setup → Integration → Manage Integrations → Salto Integration → Edit
Increase the Max Concurrency Limit field
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 |
|
| Map of type name → list of script ID regexes. Matching objects are skipped. |
|
| List of file path regexes. Matching files are skipped. |
Full Parameter Reference
Top-level
Parameter | Default | Description |
|
| Whether to fetch the user who last changed each element |
|
| Whether to omit untyped values |
|
| Fields to omit on fetch |
| Higher of | Overall concurrency cap |
|
| SDF client configuration |
|
| Salto SuiteApp client configuration |
|
| Auto-include referenced elements when deploying |
|
| Warn if deploy would override service changes since last fetch |
|
| SDF manifest include/exclude dependencies (features, objects, files) |
Client options
Parameter | Default | Description |
|
| Fetch all config elements in a single SDF call |
|
| Max minutes for a single SDF command |
|
| Max items per import-objects request |
|
| Max concurrent SDF API calls |
|
| SuiteApp IDs to fetch and deploy |
|
| Max instances fetched per type |
|
| Max File Cabinet size in GB |
|
| Max files per File Cabinet folder |
SuiteApp client options
Parameter | Default | Description |
|
| Max concurrent SuiteApp API calls |
|
| HTTP timeout in minutes (must be > 1) |
|
| SOAP WSDL version (e.g. |
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 = []
}
}
}
}