Data 360 connections, data streams and mapping — the Salesforce CRM connection, creating CRM data streams by API, refresh modes, mapping DLOs to DMOs, why Order and OrderItem need their own mapping, and the endpoints and metadata types involved

How CRM accounts, contacts and orders get into Data 360. The CRM connection, then POST /ssot/data-streams with the body from Salesforce's own automation post. Covers what the CRM mappings cover (Account and Contact map to standard DMOs, while Order and OrderItem have no CRM mapping page and must be mapped to Sales Order and Sales Order Product yourself), the mapping and object endpoints, the metadata types that describe streams, and failure modes.

markdownreferencev1RCRX-K20Sstage: ingesttrust: officialservice: data360interface: restData 360 data streamSalesforce CRM connectorGET /ssot/connections?connectorType=SalesforceDotComPOST /ssot/data-streamsconnectorInfo connectorDetails sourceObjectdataLakeObjectInfodatastreamType SFDCrefreshConfig UPSERTfrequencyTypesourceFieldsPOST /ssot/data-streams/{name}/actions/rundata-model-object-mappingsfield-mappingsAccount to Account DMOContact to Individual Contact Point EmailOrder to Sales Order mappingOrderItem to Sales Order ProductDataStreamDefinitionDataSrcDataModelFieldMapObjectSourceTargetMapMktDataTranObjectlegacy data bundlesPerson Accountfield not visible to Data 360

Created 23 Oct 2026 · Modified 23 Oct 2026 · 1 version

Connections, data streams and mapping

1. The CRM connection

In the org that hosts Data 360, the Salesforce CRM connector reads the home org (and other orgs you connect). Find its API name:

GET /services/data/v66.0/ssot/connections?connectorType=SalesforceDotCom

Salesforce's own automation post matches on a label that starts with "Salesforce Connector". The hub's reading: match on the connection's API name instead, which you control.

2. Create a CRM data stream (one per object)

From Salesforce's February 2026 automation post:

{
  "name": "Order_Home",
  "datastreamType": "SFDC",
  "connectorInfo": {
    "connectorType": "SalesforceDotCom",
    "connectorDetails": { "name": "<connection API name>", "sourceObject": "Order" }
  },
  "dataLakeObjectInfo": { "name": "Order_Home__dll", "label": "Order_Home", "category": "Other" },
  "refreshConfig": { "refreshMode": "UPSERT", "frequency": { "frequencyType": "Minutely" } }
}
  • POST /services/data/v66.0/ssot/data-streams creates it. Add sourceFields to limit the columns; validate them against the object's describe first, because a field the API user can't see fails the stream.
  • Use one API user for both the describe and the stream creation, as Salesforce's post advises, so permissions match.
  • Choose the DLO category deliberately. Salesforce's post uses Other. The hub's reading: Account and Contact belong in Profile (identity resolution unifies profile data), and Order and OrderItem in Engagement or Other. Confirm on an existing stream with GET /ssot/data-streams/{name} before scripting it.
  • Run a stream on demand with POST …/data-streams/{name}/actions/run. The path is the community plugin's.

For accounts, people and orders, stream at least Account, Contact, Order, OrderItem and Product2. With Person Accounts, also check how person accounts arrive: Salesforce's mapping pages say nothing about them.

3. Map DLOs to DMOs

CRM objectTarget DMOsMapping
AccountAccount, Contact Point Address, Contact Point PhoneSalesforce publishes the field mapping ("Salesforce CRM: Account Mappings")
ContactIndividual, Contact Point Email, Contact Point Phone, Contact Point Address, Account ContactPublished ("Salesforce CRM: Contact Mappings")
OrderSales OrderNo CRM mapping page. Map AccountId → ssot__BillToAccountId__c, the customer → ssot__SoldToCustomerId__c, TotalAmount → ssot__GrandTotalAmount__c, EffectiveDate → ssot__OrderStartDate__c, Status → ssot__SalesOrderStatusId__c (the hub's reading)
OrderItemSales Order ProductNo CRM mapping page. Map the order ID to Sales Order, then product, quantity and price
Product2Master Product"Salesforce CRM: Product Mapping"
  • Mapping endpoints (paths from the community plugin, reconciled to Salesforce's v67 spec):
  • POST /ssot/data-model-object-mappings creates a DLO-to-DMO mapping;
  • PATCH or DELETE …/{mapping}/field-mappings/{field} change single fields.
  • Objects and relationships: POST /ssot/data-model-objects creates a custom DMO, and POST /ssot/data-model-objects/{name}/relationships adds a relationship.
  • Capture before you script. Map once in the UI in a development org, then GET the mapping and keep the JSON. The pipeline replays captured definitions rather than guessing request bodies (guides/data360/automate-the-golden-record-pipeline.md).

Metadata types

DataStreamDefinition, DataSourceObject, DataSrcDataModelFieldMap, ObjectSourceTargetMap, MktDataTranObject and DataStreamTemplate are in Salesforce's metadata registry. They are what a data kit packages (reference/data360/automation-and-data-kits.md). The hub's reading: generate them by adding streams to a data kit, not by hand.

Failures

SymptomCause → fix
Stream creation fails on a field listA field in sourceFields doesn't exist or isn't visible to the API user. Describe the object as that user and filter
No connection foundNo CRM connection, or the label doesn't match the convention you searched for. List connections and match on API name
Order rows are in the DLO but no Sales Order DMO dataThe Order DLO isn't mapped. Create the mapping in step 3
Identity resolution ignores accounts or contactsTheir DLO isn't profile category, or the required Individual or Account mappings are missing
Stream refreshes cost more than expectedIngestion consumes Data 360 credits. Pick the slowest refresh that meets the use case (family 10)

Read this document as markdown — the same bytes an agent receives.