Setting up an External Object has two layers: getting Salesforce Connect configured (data source, named credential, connector type) and exposing the external schema as External Objects (validate and sync, field mapping, relationship design). Both layers need careful design because the source system constrains what is possible.
- Confirm Salesforce Connect licensing
Check Setup > Company Information for the Salesforce Connect add-on entitlement. Without it, External Data Sources cannot be registered and External Objects do not appear. Talk to the account executive if licensing is missing because Connect is sold per external table and per user.
- Register the external data source
Setup > External Data Sources > New. Pick the connector type: OData 2.0, OData 4.0, Cross-Org, or a custom Apex adapter. Provide the service URL, named credential for authentication, and any required certificates. Click Validate to confirm Salesforce can reach the endpoint.
- Validate and sync the external schema
From the data source detail page > Validate and Sync. The platform fetches the schema and shows the tables available for synchronization. Select the tables to expose as External Objects. Each selected table becomes an External Object with the __x suffix and a default external ID field.
- Review the generated External Objects
Setup > External Objects shows the synced objects. Review the auto-generated field mappings. Field types map to nearest Salesforce equivalents; review for correctness, especially for date and numeric precision conversions that the source system may handle differently.
- Add relationship fields between Salesforce and External Objects
External Lookup from a standard or custom object points to an External Object. Indirect Lookup on the External Object points to a Salesforce object using a unique external ID. Plan the direction of the join carefully before creating the field.
- Configure page layouts and FLS
Add the External Object fields to page layouts where the data should appear. Set field-level security per profile. Add the External Object as a related list on parent Salesforce objects so users see external rows in context.
- Test with users across profiles
Log in as users with different profile and permission set combinations. Confirm external rows resolve correctly. If rows render as blank, check the named credential, the external user permissions on the source system, and the connector authentication chain.
- Add monitoring for the external connection
Build a periodic health-check Apex job that queries one external record. Alert if response time exceeds the threshold the business can tolerate. Build a dashboard that surfaces failed connector calls. External system slowness directly degrades Salesforce UX.
The registered service that exposes external tables. Configured with endpoint, named credential, and connector type.
The unique identifier from the source system. Auto-generated per External Object during schema sync.
External Lookup (Salesforce to external) or Indirect Lookup (external to Salesforce). Drives the direction of the join.
- External Objects require Salesforce Connect, which is licensed separately from base CRM and per external table. Without the add-on, the object type does not appear in Object Manager.
- External Object queries push down to the source system on every read. Reporting workloads can starve the external system during business hours unless the Salesforce Connect cache is enabled.
- External Object schema is controlled by the source system. Field-name changes or type changes on the source side require re-syncing the External Object metadata in Salesforce.
- Read-only is the default. Writable External Objects require connector-side support and careful coordination with the source system owner because writes propagate immediately.
- Complex SOQL (joins, subqueries) does not always push down to the external system, forcing Salesforce to fetch broad result sets and filter locally. Test query performance with realistic volumes.