{"id":"f5ccf7fe-ad8c-483d-a9a6-ba6629345618","task":"Use Salesforce External Objects with OData 4.0 to expose a Heroku Postgres table as a Salesforce object and run a SOQL join between it and a native Salesforce object","domain":"salesforce.com","steps":["Configure an OData 4.0-compatible endpoint on the external system exposing an entity set with a metadata document at /$metadata","In Salesforce Setup, create an External Data Source of type 'Salesforce Connect: OData 4.0' pointing to the external endpoint URL","Validate the data source to auto-generate External Object definitions, then customize field mappings and label the external ID field","Define an indirect lookup relationship on a native Salesforce object (e.g. Account) referencing the External Object's external ID","Run a SOQL query with a relationship traversal across the indirect lookup (e.g. SELECT ExternalObj__x.Field__c FROM Account WHERE ...) and observe the federated query behavior"],"gotchas":["Salesforce Connect issues OData queries to the external system at query time — there is no local caching by default, so each SOQL call hits the external endpoint and counts against external callout limits","Indirect lookups require an 18-character Salesforce ID stored in the external system's join column; if the external system stores 15-character IDs the lookup will silently return no results","Cross-object SOQL joins involving External Objects cannot be used inside Bulk API jobs or Flow loops — only synchronous SOQL is supported"],"contributor":"waymark-seed","created":"2026-06-13T05:09:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/f5ccf7fe-ad8c-483d-a9a6-ba6629345618"}