Skip to main content

Salesforce Settings

Configure Salesforce adapter settings in Salto

Written by Support
Updated this week

After adding a Salesforce application connection to an environment, users can customize various aspects according to their unique setup.

To do this, go to the Environment Settings -> Application Connections -> click the three dots next to your application -> Edit Configuration File.

For more information about changing settings, read the Salto Configuration File article.

Managing Data Records

Managing Salesforce data records is optional, and can be enabled by updating your Salto Configuration File.

​

By default, data records are not fetched. You can enable this feature by adding a data section to your configuration with includeObjects, or fetch data records when referenced from other fetched data records with allowReferenceTo:

salesforce {
fetch = {
data = {
includeObjects = [
"Product2",
"PricebookEntry",
"Custom_Object__c"
]
allowReferenceTo = [
"Product3"
]
}
}
}

For better data management, you can also configure how Salto identifies records across environments:

salesforce {
fetch = {
data = {
saltoIDSettings = {
defaultIdFields = [
"##allMasterDetailFields##",
"Name",
]
overrides = [
{
objectsRegex = "PricebookEntry"
idFields = [
"Pricebook2Id",
"Product2Id",
]
}
]
}
}
}
}

The fields listed for each type will be used to create a unique Salto ID for each record.

You can define which fields are used to generate aliases for data records.

salesforce {
fetch = {
data = {
defaultAliasFields = ["Name"]
}
}
}

Note – Salto does not fetch all data records by default to avoid performance issues in large environments.

Managing Which Records

saltoManagementFieldSettings lets you define a custom boolean field on Salesforce objects. Salto will only fetch records where that field is true, skipping all others. This works across any object in your includeObjects list that has the field.

salesforce {
fetch = {
data = {
saltoManagementFieldSettings = {
defaultFieldName = "IsActive"
}
}
}
}

Managing CPQ and Advanced Approvals

If you are using Salesforce CPQ (SBQQ) and Advanced Approvals (sbaa), you can configure Salto to manage these components with the recommended setup:

salesforce {
fetch = {
data = {
includeObjects = [
"SBQQ__.*",
"sbaa__ApprovalChain__c",
"sbaa__ApprovalCondition__c",
"sbaa__ApprovalRule__c",
"sbaa__ApprovalVariable__c",
"sbaa__Approver__c",
"sbaa__EmailTemplate__c",
"sbaa__TrackedField__c"
]
excludeObjects = [
"SBQQ__ContractedPrice__c",
"SBQQ__Quote__c",
"SBQQ__QuoteDocument__c",
"SBQQ__QuoteLine__c",
"SBQQ__QuoteLineGroup__c",
"SBQQ__Subscription__c",
"SBQQ__SubscribedAsset__c",
"SBQQ__SubscribedQuoteLine__c",
"SBQQ__SubscriptionConsumptionRate__c",
"SBQQ__SubscriptionConsumptionSchedule__c",
"SBQQ__WebQuote__c",
"SBQQ__WebQuoteLine__c",
"SBQQ__QuoteLineConsumptionSchedule__c",
"SBQQ__QuoteLineConsumptionRate__c",
"SBQQ__InstallProcessorLog__c",
"SBQQ__ProcessInputValue__c",
"SBQQ__RecordJob__c",
"SBQQ__TimingLog__c"
]
allowReferenceTo = [
"Product2",
"Pricebook2",
"PricebookEntry"
]
saltoIDSettings = {
defaultIdFields = [
"CUSTOM_OBJECT_ID_FIELD"
]
}
brokenOutgoingReferencesSettings = {
defaultBehavior = "BrokenReference"
perTargetTypeOverrides = {
User = "InternalId"
}
}
}
}
}

Excluding elements

By default, Salto will fetch all metadata. You can exclude specific metadata types or named elements from being fetched by editing the Salto Configuration File. This helps reduce workspace size and improve performance, especially in large Salesforce orgs.

To exclude elements, use the exclude list under the metadata section of the fetch block.

For example, the following configuration excludes all custom objects with names starting with Test_, as well as all reports and dashboards:
​

salesforce {
fetch = {
metadata = {
exclude = [
{
metadataType = "CustomObject"
name = "Test_.*"
},
{
metadataType = "Report"
name = ".*"
},
{
metadataType = "Dashboard"
name = ".*"
}
]
}
}
}


Only metadataType, name, and namespace can be filtered using regex in this context. Filtering by other conditions (such as labels or field values) is not supported.


Managing Custom Settings

You can control whether all custom settings instances are fetched automatically:

salesforce {
fetch = {
fetchAllCustomSettings = false
}
}

When set to false, you can fetch specific custom settings by adding them to data.includeObjects.


Configuration example

salesforce {
maxItemsInRetrieveRequest = 2500
client = {
polling = {
interval = 10000
deployTimeout = 3600000
fetchTimeout = 1800000
}
deploy = {
rollbackOnError = true
ignoreWarnings = true
purgeOnDelete = false
checkOnly = false
testLevel = "NoTestRun"
runTests = ["Test name", "Other test"]
deleteBeforeUpdate = false
flsProfiles = ["System Administrator", "Cloud Profile"]
}
retry = {
maxAttempts = 5
retryDelay = 5000
retryStrategy = "NetworkError"
timeout = 900000
}
maxConcurrentApiRequests = {
total = 100
retrieve = 3
read = -1
list = -1
query = 4
describe = -1
deploy = -1
}
}
fetch = {
metadata = {
exclude = [
{
metadataType = "Report"
},
{
metadataType = "ReportType"
},
{
metadataType = "ReportFolder"
},
{
metadataType = "Dashboard"
},
{
metadataType = "DashboardFolder"
},
{
metadataType = "Profile"
},
{
metadataType = "ForecastingSettings"
},
{
metadataType = "PermissionSet"
},
{
metadataType = "CustomObjectTranslation"
},
{
metadataType = "EmailTemplate"
},
{
metadataType = "StandardValueSet"
name = "AddressCountryCode.*"
},
{
metadataType = "StandardValueSet"
name = "AddressStateCode.*"
},
{
metadataType: 'EclairGeoData',
},
{
metadataType:
'OmniUiCard|OmniDataTransform|OmniIntegrationProcedure|OmniInteractionAccessConfig|OmniInteractionConfig|OmniScript',
},
{
metadataType: 'DiscoveryAIModel',
},
{
metadataType: 'Translations',
},
]
}
data = {
includeObjects = [
"SBQQ__CustomAction__c",
"PricebookEntry",
]
saltoManagementFieldSettings = {
defaultFieldName = "ManagedBySalto__c"
}
brokenOutgoingReferencesSettings = {
defaultBehavior = "BrokenReference"
perTargetTypeOverrides = {
User = "InternalId"
}
}
omittedFields = [
"PricebookEntry.Price",
]
saltoIDSettings = {
defaultIdFields = [
"##allMasterDetailFields##",
"Name",
]
overrides = [
{
objectsRegex = "PricebookEntry"
idFields = [
"Pricebook2Id",
"Name",
]
},
{
objectsRegex = "SBQQ__CustomAction__c"
idFields = [
"SBQQ__Location__c",
"SBQQ__DisplayOrder__c",
"Name",
]
},
]
}
}
fetchAllCustomSettings = false
}
}

For advanced configuration options including Data records, Fetch Performance and Limits Configuration, see the Advanced Salesforce Configuration Guide.

Did this answer your question?