A FIELD_INTEGRITY_EXCEPTION occurs when an incoming data payload violates structural, schema, or relational business rules enforced at the database level. Unlike standard validation rules—which evaluate custom logic—field integrity checks protect core system dependencies such as lookup validity, polymorphic relationships, currency constraints, picklist restrictions, and inactive user assignments.
Fast Fix
Inspect the rejected row’s specific error message in your Data Loader error log. Match the field name listed in the error against invalid ID formats (e.g., 15-character vs. 18-character typos), inactive user IDs in owner fields, or values not present in a restricted picklist definition. Correct the raw CSV value and retry.
Diagnostic Snapshot
- Error Signatures:
FIELD_INTEGRITY_EXCEPTION,bad value for restricted picklist field,invalid cross reference id,There is an implementation restriction on this field. - Affected Areas: Data Loader, Bulk API imports, Salesforce CLI (
sf data import), third-party integrations (HubSpot, Zapier, MuleSoft). - Common Targets:
OwnerId,RecordTypeId,CurrencyIsoCode, Master-Detail Lookups, and Restricted Picklists. - Permissions Needed: System Administrator access or “Customize Application” permissions to edit picklist definitions and user statuses.
Isolating the Sub-Type of Field Integrity Exception
The raw error message always includes a specific diagnostic suffix. Use the table below to determine your next action:
| Error Message Subtype | Core Root Cause | Immediate Diagnostic Action |
|---|---|---|
invalid cross reference id | Referenced ID does not exist, was deleted, or belongs to a different object | Query the referenced ID in Salesforce via SOQL to verify existence and object prefix. |
bad value for restricted picklist field: [Value] | Target field has “Strict Picklist” enabled and value is missing | Add the value to the picklist or correct the mapping in the source file. |
operation not allowed on inactive user | An OwnerId or CreatedById references a deactivated user | Activate the user temporarily or map the records to an active system owner. |
There is an implementation restriction... | Attempting to update a read-only system relationship or compound field | Exclude read-only fields (e.g., BillingAddress, audit fields) from the mapping. |
Diagnostic Path & Resolution
Field Integrity Exception Encountered
├── Contains "invalid cross reference id" ──────► Validate ID prefix, check Recycle Bin, verify Org ID
├── Contains "restricted picklist" ─────────────► Check API name vs label; verify picklist active values
├── Contains "inactive user" ───────────────────► Reassign OwnerId or temporarily enable "Update Records with Inactive Owners"
└── Contains "currency" or "iso code" ──────────► Verify multi-currency ISO codes match active currencies
Step 1: Resolving “Invalid Cross Reference ID”
This is the most common variant. It means an ID field in your CSV file cannot be linked to an active database record.
- Extract the ID mentioned in the error log.
- Verify the key prefix (the first 3 characters):
001= Account003= Contact006= Opportunity005= User
- If importing into a Sandbox, confirm you didn’t accidentally copy IDs from Production. Production IDs will fail in a sandbox environment unless refreshed recently.
- Run a SOQL query including deleted records: If
IsDeleted = true, restore the record from the Recycle Bin or point your import to an active parent.SELECT Id, IsDeleted FROM Account WHERE Id = '001XXXXXXXXXXXX' ALL ROWS
Step 2: Resolving Restricted Picklist Errors
When a picklist field has the setting “Restrict picklist to the values defined in the value set” enabled, any unlisted string causes an immediate integrity failure.
- Verify API Name vs. Label: Salesforce imports evaluate the API Name of a picklist value, not its UI label. If your label is “North America” but the API Name is
NA, importing “North America” fails. - Check Record Type assignment: If the target object uses Record Types, verify that the picklist value is assigned to that specific Record Type. A value can be active globally but disabled for the specific record type being imported.
Step 3: Handling Inactive User Owners
If your CSV contains historical data referencing former employees in an OwnerId or CreatedById column:
- In Salesforce Setup, type User Interface into the Quick Find box.
- Select User Interface.
- Check the box for “Update Records with Inactive Owners”.
- Check “Enable ‘Set Audit Fields on Record Creation’ and ‘Update Records with Inactive Owners’ User Permissions”.
- Assign the corresponding permission to your system admin profile or permission set.
- Re-run your import.
Step 4: Compound and System Field Mappings
Data Loader sometimes auto-maps compound address fields incorrectly:
- Do not map both
BillingAddressandBillingStreet. Map individual components:BillingStreet,BillingCity,BillingState,BillingPostalCode, andBillingCountry. - Never map system audit fields (
CreatedDate,LastModifiedDate) unless “Set Audit Fields on Record Creation” is specifically enabled for data migrations.
Common Misdiagnosis: Validation Rule vs. Integrity Exception
Administrators often assume a FIELD_INTEGRITY_EXCEPTION is a custom Validation Rule. Consequently, they spend time deactivating Validation Rules in Setup, only to find the error persists.
- Validation Rules display custom error text written by your admin team (e.g., “Close Date must be in the current fiscal year”). If a validation rule is indeed blocking updates, check Fix: Salesforce “Validation Rule” preventing valid API updates.
- Field Integrity Exceptions are hardcoded system-level schema violations generated directly by the platform data layer. They cannot be bypassed using validation rule bypass checkboxes or admin overrides.