#System Configuration Reference
iSyncSF uses two configuration layers: System Properties (a list custom setting with name/value pairs) for runtime behavior, and Custom Metadata (DataSyncProperties) for package-level defaults. This page documents every configurable property, its purpose, and recommended values.
#System Properties (SystemProperties)
System Properties are stored as name/value pairs in the SystemProperties custom setting. They control runtime behavior such as log levels, batch sizes, processing modes, and feature toggles.
| Name | Purpose | Default | Notes |
|---|---|---|---|
| DebugLevel | Controls runtime log verbosity. | ERROR |
Valid values: ERROR, DEBUG, FINEST. Set to DEBUG or FINEST for troubleshooting; reset to ERROR afterward to reduce log volume. |
| SyncMode | Sync processing mode. | (standard) | Set to FAST to enable optimized processing mode for faster data transfer. |
| DMLBuffer | Number of records per DML operation batch. | 100 |
Controls the internal DML chunking. Lower values reduce risk of DML row limit errors but increase transaction count. |
| SOQLBuffer | Number of records per SOQL query chunk. | 50 |
Controls how many records are queried at a time during relationship resolution. |
| AbortLeadTime | Milliseconds of lead time before a job abort triggers. | 60000 |
Provides a safety margin to allow batch jobs to complete gracefully before aborting. |
| FastProcessingDisable | Disables the fast (optimized) processing mode. | false |
Set to true to force standard processing even when FAST mode is configured. |
| DeleteTempFiles | Whether to delete temporary attachment files after processing. | true |
Set to false to retain temporary files for debugging. Remember to re-enable after troubleshooting. |
| EnableVersion | Enables data versioning for rollback support. | false |
When enabled, iSyncSF captures a snapshot of each record's pre-sync values, allowing rollback to restore updated records. |
| MAXAPICALLLIMIT | Maximum daily API call usage percentage before the engine pauses. | 90 |
Prevents iSyncSF from consuming all of the org's daily API call allocation. The engine pauses when usage reaches this threshold. |
| ENABLESHARINGOBJECT | Enables processing of sharing objects (e.g., AccountShare). | false |
Enable only if you need to migrate sharing records between orgs. |
| UpdateSourceExternalRecordID | Enables updating the source org's external record ID field after sync. | false |
When enabled, the source record's external ID field is updated with the target record's ID after successful sync. |
| ObjectCacheBatchSize | Maximum number of objects to process in a single Object Cache batch. | 25 |
Controls metadata cache population batch size. |
| OVERRIDESHARINGCHECK | Enables record sharing override during sync. | false |
Requires the OverrideRecordSharing custom permission to also be assigned. Bypasses sharing rules when querying source records. |
| ISEXTERNALAPIENABLED | Enables the external API endpoint and large file migration routing. | false |
Set to true when using the File Migration Service for files over 5 MB. |
| CrossTemplateCache | Enables cross-template caching of processed record maps. | false |
Improves performance when running multiple templates against the same org by reusing ID mappings. |
| PreScanSync | Enables the pre-scan sync step before the main sync. | false |
Adds an additional preparatory step to the sync pipeline. |
| UseKahnsAlgorithm | Uses iterative (Kahn's) algorithm for hierarchy computation. | false |
Recommended for objects with deep self-referencing hierarchies (10+ levels). Prevents stack overflow. |
| MAXSUBORDERLEVEL | Maximum depth of parent levels to traverse for self-referencing hierarchies. | 5 |
Increase if your hierarchy has more than 5 levels. |
| SUBORDERCHUNKSIZE | Chunk size for sub-order audit record processing. | 500 |
Controls how many hierarchy records are processed per iteration. |
| ISHIGHVOLUMESUBORDERMODE | Enables high-volume sub-order processing mode. | false |
Enable for objects with very large hierarchies (thousands of records). |
| ManageMetadata | Enables the Manage Metadata feature. | false |
Controls visibility of the Manage Metadata page. |
| PERSONACCOUNTSTDFIELDS | Comma-separated list of Person Account standard fields. | SALUTATION,FIRSTNAME,LASTNAME |
Person Account fields that are not prefixed with "Person" or suffixed with "__pc". |
#Custom Metadata (DataSyncProperties)
The DataSyncProperties custom metadata type stores package-level defaults that apply globally. The primary record is named GLOBAL. These settings can be overridden per template using the template's FlowName field to point to a different custom metadata record.
| Field | Purpose |
|---|---|
| APIVersion | Salesforce REST API version used for callouts to the target org (for example, v47.0). Controls which API version iSyncSF uses when communicating with the target. |
| DefaultObjectsToSkip | Comma-separated list of object API names to skip during sync processing (for example, User,RecordType). These objects are excluded from parent-child relationship traversal. |
| EnforceFieldSecurity | When checked, enforces field-level security (FLS) on all data sync queries and DML. Users must have access to all fields involved in the sync. |
| IncludeSR | Comma-separated standard child relationship names to include in sync (for example, OpportunityLineItems,Tasks). Can be overridden per template. |
| MaxLimitUsage | Maximum governor limit usage percentage (0–100) before the engine pauses processing. Default is 80. Keep below 85 to avoid governor limit exceptions. |
| TextFieldScanForID | When enabled, the engine scans text and long-text fields for embedded Salesforce IDs and remaps them to their target org equivalents. Useful when IDs are stored in formula fields or rich text. |
| DummyObjectName | Placeholder object name used during internal processing. Default is User. Generally does not need to be changed. |
| IDRegex | Regular expression pattern used to identify Salesforce IDs inside text fields. Used when TextFieldScanForID is enabled. |
| DataTransformationCallback | Name of a custom Apex class that implements transformation logic. Executed before data sync to apply custom business rules to the data. |
| SourceCallback | Name of an Apex class for source-org callback logic, executed on the source side before data is sent. |
| TargetCallback | Name of an Apex class for target-org callback logic, executed on the destination side after data is received. |
#How to Change a System Property
System Properties can be modified in two ways:
Via the Setup Assistant (Recommended)
- Open the iSyncSF app in Salesforce.
- Navigate to the Setup Assistant tab.
- Select the System Properties section.
- Find the property you want to change, update the value, and click Save.
Via Salesforce Custom Settings
- Go to Salesforce Setup > Custom Settings.
- Find SystemProperties and click Manage.
- Click the property name to edit it, or click New to create a new property.
- Enter the property Name (the key) and the Value, then click Save.
Important: System Properties take effect immediately. Changes to properties like SyncMode or DebugLevel apply to the next sync operation without requiring a restart.
Changing Custom Metadata
Custom Metadata records (DataSyncProperties) are modified through Salesforce Setup > Custom Metadata Types > Data Sync System Property > Manage Records. Edit the GLOBAL record to change the default values. Changes take effect on the next sync operation.
#Performance Tuning
Use these settings to optimize sync performance for your specific environment:
Batch Size Settings
| Setting | Location | Recommendation |
|---|---|---|
| MaxBatchSize | Object Settings | Start at 200 (default). Reduce to 50–100 for objects with many fields, rich text fields, or complex validation rules on the target. |
| ExternalMaxbatch | Sync Template | Controls records per callout. Reduce if you see CalloutException: Exceeded max size limit. |
| InternalMaxBatches | Sync Template | Controls internal processing iterations. Increase (e.g., to 200) if scans are not completing. |
| PreviewBatchSize | Sync Template | Controls how many records are loaded per scan iteration. Reduce to 50 if scans hit governor limits. |
Processing Mode
Set the SyncMode system property to FAST for optimized processing. This mode uses a different transfer mechanism that can significantly reduce sync time for large datasets. Test with a small dataset first to verify compatibility with your target org configuration.
Governor Limit Threshold
The MaxLimitUsage setting (default 80%) controls how aggressively iSyncSF uses governor limits. A lower value (60–70%) is safer but slower. A higher value (85–90%) is faster but increases the risk of limit exceptions. The recommended range is 75–85%.
Hierarchy Optimization
For objects with deep self-referencing hierarchies (Account parent-child trees, for example):
- Enable UseKahnsAlgorithm to use the iterative algorithm instead of the recursive one.
- Increase MAXSUBORDERLEVEL to cover all hierarchy levels.
- Enable ISHIGHVOLUMESUBORDERMODE for hierarchies with thousands of records.
- Adjust SUBORDERCHUNKSIZE based on record volume (higher values for larger datasets).
#Environment-Specific Configuration
Different environments (production, sandbox, developer) may require different settings:
Production Org (Source)
- Set DebugLevel to
ERRORto minimize log volume. - Set MAXAPICALLLIMIT to
80or lower to preserve API calls for other integrations. - Enable the OAuth Token Refresh scheduled job to keep connections active.
- Schedule Cleanup Jobs to manage audit log and application log storage (see Cleanup & Maintenance).
Sandbox (Target)
- API limits are typically more relaxed in sandboxes. You can set MAXAPICALLLIMIT higher (e.g.,
95). - Consider using larger batch sizes (MaxBatchSize) since sandbox performance is usually less critical.
- Use Automation Control to disable validation rules and triggers before seeding.
Per-Template Overrides
Many global settings can be overridden at the template level. The template's FlowName field specifies which DataSyncProperties custom metadata record to use. Create a separate custom metadata record with template-specific values (for example, a different API version or different objects to skip) and set the template's FlowName to that record's developer name.