Connecting an OData producer takes three steps: register the external data source, synchronize the schema to create external objects, and add the external objects to page layouts.
- Verify the producer publishes valid OData
Open the producer''s service root URL in a browser or Postman. Confirm the $metadata endpoint returns valid XML and at least one entity type. If the producer fails this check, fix the producer before proceeding.
- Create an External Data Source in Salesforce
Setup > External Data Sources > New. Select OData 2.0 or 4.0 as the type. Paste the service root URL. Pick the authentication method and supply credentials.
- Validate and Sync
Click Validate and Sync. Salesforce calls the $metadata endpoint and shows every entity type. Check the boxes for entities to bring in as external objects and click Sync. Salesforce creates one external object per checked entity.
- Configure external object permissions and page layouts
Update profiles or permission sets to grant Read (and optionally Write) on each new external object. Edit the relevant page layouts to add the external object as a related list or as a tab.
- Test as a user
Log in as a user with the new permission set. Navigate to a record, open the external object related list, and confirm data displays. Open the OData producer logs and verify the expected callouts are coming through.
Modern standard. JSON payloads, $apply support, simpler annotations. Use for greenfield producers.
Legacy version. Common with SAP NetWeaver and Dynamics. Use when producer cannot be upgraded.
Alternative for Salesforce-to-Salesforce. Uses Salesforce''s own OData implementation under the hood.
Fallback when the producer cannot speak OData. Write a Connection class extending DataSource.Connection.
- External objects do not support cross-object formula fields, roll-up summaries, or workflow rules. The data lives outside Salesforce, so platform automations that assume local storage do not apply.
- Reports on external objects are limited to standard report types; no cross-object reporting across external and internal data without CRM Analytics. Plan analytics architecture before relying on external objects.
- Per-User OAuth authentication requires every user to authorize the producer on first access. Plan a user-facing message explaining the OAuth dance to reduce help-desk tickets at rollout.
- The 100,000 callouts per hour limit on Salesforce Connect applies to the whole org, not per user. A busy list view can exhaust the limit during peak hours; cache aggressively or pre-fetch.