7.2 DLO-to-DMO Mapping Patterns, Cardinality & Custom DMO Design
Key Takeaways
- The Data Mapping Canvas provides a declarative visual interface to link physical Data Lake Object (DLO) fields to canonical Data Model Object (DMO) fields, enforcing data type compatibility and mandatory primary key mapping.
- A single source DLO containing denormalized customer contact details must be mapped to multiple DMOs (1:Many mapping), requiring unique composite primary keys (e.g., CONCAT(Id, '_work_email')) on each child contact point to preserve record uniqueness.
- Many:1 mapping allows multiple heterogeneous source DLOs (e.g., CRM Contacts, Marketing Subscribers, POS Shoppers) to converge into a single canonical DMO like Individual__dlm, standardizing enterprise customer identity.
- Custom DMOs (CustomEntity__dlm) should only be constructed for distinct business entities that have no representation within the Cloud Information Model (e.g., clinical trials, vehicle warranties, hotel reservations), adhering to strict category and naming conventions.
- Relationship cardinality (1:1, 1:N, N:1) between DMOs defines query navigation paths in the Segment Builder, separating Direct Attributes (1:1/N:1) from Related Attributes (1:N) and establishing valid join paths for Calculated Insights.
DLO-to-DMO Mapping Patterns, Cardinality & Custom DMO Design
Once raw source data has been ingested into physical Data Lake Objects (DLOs), the critical next step in the Data Cloud pipeline is data mapping. Through the Data Mapping Canvas, consultants translate source-specific physical schemas into the standardized semantic Customer 360 Data Model Objects (DMOs).
Mapping is not merely a cosmetic aliasing exercise: how source fields are mapped, how cardinality is configured, and how relationships are established between DMOs directly determines whether Identity Resolution can unify records, whether the Segment Builder can traverse behavioral attributes, and whether Calculated Insights can execute performant analytical aggregations.
The Data Mapping Canvas Architecture
The Data Mapping Canvas is Data Cloud's visual design environment for connecting DLO fields to DMO fields. When configuring mappings, consultants navigate between the source DLO on the left and the target canonical DMO on the right, drawing connections between attributes.
┌──────────────────────────────────────┐ ┌──────────────────────────────────────┐
│ SOURCE DATA LAKE OBJECT │ │ TARGET DATA MODEL OBJECT │
│ Contact_DLO__dll │ │ Individual__dlm │
├──────────────────────────────────────┤ ├──────────────────────────────────────┤
│ CRM_Contact_ID__c (Text) ├────────────►│ Id__c (Text - Primary Key) │
│ First_Name__c (Text) ├────────────►│ FirstName__c (Text) │
│ Last_Name__c (Text) ├────────────►│ LastName__c (Text) │
│ Date_of_Birth__c (Date) ├────────────►│ BirthDate__c (Date) │
│ Customer_Segment__c (Text) ├────────────►│ CustomerSegment__c (Custom Field) │
└──────────────────────────────────────┘ └──────────────────────────────────────┘
Mandatory Rules on the Mapping Canvas
- Primary Key Mapping is Strictly Required: Every DMO has a designated Primary Key (
Id__c). The mapping canvas will not allow deployment if the target DMO's primary key remains unmapped. - Strict Data Type Compatibility: The source DLO field and target DMO field must have compatible data types:
Text➔TextNumber➔NumberDate➔DateDateTime➔DateTime- Attempting to map a
Textfield containing string timestamps into aDateTimeDMO field will trigger a validation error. Data conversion must occur prior to mapping via Ingestion Formula Fields.
- Custom Field Mapping on Standard DMOs: If the source DLO contains attributes that do not map to standard CIM fields, consultants can add Custom Fields directly to standard DMOs. Custom fields automatically append the
__csuffix and behave identically to standard fields in segmentation and activation.
Mapping Cardinality Topologies
Depending on the schema architecture of the incoming source systems, consultants deploy one of three core mapping topologies: 1:1 Mapping, 1:Many Mapping, or Many:1 Mapping.
1. 1:1 Mapping Pattern
- Definition: A single source DLO maps directly to a single target DMO.
- Typical Use Cases: Ingesting a clean, normalized relational table where each row corresponds directly to a canonical entity.
- Example: A Salesforce CRM Contact DLO mapping exclusively to
Individual__dlm. - Example: An ERP Product Catalog DLO mapping exclusively to
GoodsProduct__dlm.
- Example: A Salesforce CRM Contact DLO mapping exclusively to
- Key Architectural Rule: The primary key of the DLO is mapped directly to the primary key (
Id__c) of the target DMO.
2. 1:Many Mapping Pattern (The Wide Table Deconstruction Pattern)
- Definition: A single source DLO maps to multiple distinct target DMOs.
- The Enterprise Challenge: Legacy marketing lists, point-of-sale customer tables, or external CRM exports frequently arrive as flat, "wide" records. A single customer row might contain:
Customer_ID,First_Name,Last_Name,Personal_Email,Work_Email,Mobile_Phone,Work_Phone,Billing_Street,Billing_City, andBilling_Zip. - The Harmonization Solution: Because the Customer 360 model normalizes contact channels into separate objects, this single DLO must be mapped multiple times:
- Map DLO ➔
Individual__dlm(Maps Name, BirthDate, Customer ID ➔Id__c). - Map DLO ➔
ContactPointEmail__dlmfor Personal Email (Maps Personal Email ➔EmailAddress__c). - Map DLO ➔
ContactPointEmail__dlmfor Work Email (Maps Work Email ➔EmailAddress__c). - Map DLO ➔
ContactPointPhone__dlmfor Mobile Phone (Maps Mobile Phone ➔TelephoneNumber__c). - Map DLO ➔
ContactPointAddress__dlmfor Billing Address.
- Map DLO ➔
[!CAUTION] The Composite Primary Key Mandate in 1:Many Mappings Every record in a DMO must have a unique
Id__c. If a customer withCustomer_ID = "C-101"has both a Personal Email and a Work Email, you CANNOT mapCustomer_IDas the primary key for bothContactPointEmail__dlmrecords! If you do, the second record will overwrite the first in lakehouse storage.Consultant Solution: Create Ingestion Formula Fields on the Data Stream to generate unique composite primary keys for each contact point:
Personal_Email_PK__c=CONCAT(source.Customer_ID, "_email_personal")Work_Email_PK__c=CONCAT(source.Customer_ID, "_email_work")Mobile_Phone_PK__c=CONCAT(source.Customer_ID, "_phone_mobile")Map these composite formula fields to the respective
Id__cfields of the Contact Point DMOs, while mapping the rawCustomer_IDtoPartyId__con all of them to maintain relational linkage to the Individual!
3. Many:1 Mapping Pattern (Multi-Source Ingestion into Canonical DMO)
- Definition: Multiple disparate source DLOs map into the same target canonical DMO.
- Typical Use Cases: Enterprise multi-system customer consolidation.
- Source 1: Service Cloud
Contact_DLOmaps toIndividual__dlm. - Source 2: Sales Cloud
Lead_DLOmaps toIndividual__dlm. - Source 3: Marketing Cloud
Subscriber_DLOmaps toIndividual__dlm. - Source 4: E-Commerce
Shopper_DLOmaps toIndividual__dlm.
- Source 1: Service Cloud
- Key Architectural Rule: To prevent records from different source systems overwriting each other in the canonical DMO due to coincidentally matching IDs (e.g., both systems having an ID
001), each source DLO MUST prepend a unique source or tenant prefix to its primary key at ingestion (e.g.,CONCAT("SVC_", Id)vsCONCAT("MKT_", SubscriberKey)).
Mapping Cardinality Topologies Comparison
| Topology | Visual Pattern | Common Enterprise Scenario | Critical Implementation Mandate |
|---|---|---|---|
| 1:1 Mapping | DLO_A ──► DMO_A | Normalized ERP Product table to GoodsProduct__dlm | Direct PK mapping (DLO.PK ➔ DMO.Id__c). Data types must strictly align. |
| 1:Many Mapping | DLO_A ──┬─► DMO_A<br/> ├─► DMO_B<br/> └─► DMO_C | Wide CRM Contact row deconstructed into Individual, ContactPointEmail, ContactPointPhone | Must generate composite PKs for child DMOs via ingestion formulas; map source master ID to PartyId__c. |
| Many:1 Mapping | DLO_A ──┐<br/>DLO_B ──┼─► DMO_A<br/>DLO_C ──┘ | Ingesting Leads, Contacts, and Web Shoppers into canonical Individual__dlm | Must apply source prefixing to avoid cross-system primary key collision in the unified table. |
Custom DMO Design & Governance
While the Customer 360 Data Model provides robust coverage across retail, sales, service, and marketing domains, specialized industries often require storing entities that have no representation in standard CIM subject areas.
When to Create a Custom DMO (CustomEntity__dlm)
- Approved Custom DMO Scenarios:
- Healthcare & Life Sciences: Clinical Trial Protocols, Prescription Authorizations, Medical Devices.
- Automotive & Manufacturing: Vehicle Telematics, Warranty Claims, Dealer Franchise Locations.
- Travel & Hospitality: Flight Manifests, Cabin Upgrades, Hotel Room Reservations.
- Financial Services: Insurance Underwriting Policies, Loan Applications, Wealth Portfolios.
- Anti-Pattern (When NOT to create a Custom DMO):
- Do NOT create a custom DMO for customer profiles (use
Individual__dlm). - Do NOT create a custom DMO for business accounts (use
Account__dlm). - Do NOT create a custom DMO for transactions (use
SalesOrder__dlmandSalesOrderProduct__dlm). - If standard DMOs simply lack 5 or 10 specific attributes, add custom fields to the standard DMO instead of building a custom object.
- Do NOT create a custom DMO for customer profiles (use
Architectural Steps for Custom DMO Creation
- Select Creation Method: In Data Model management, create a new DMO from scratch or clone an existing template.
- Configure Object Properties:
- Label & API Name: Standard camel-case label; the system automatically appends the
__dlmsuffix. - Category Selection: Must select Profile, Engagement, or Other.
- Profile: Persistent entities (e.g.,
Patient__dlm,InsuredParty__dlm). - Engagement: Behavioral time-stamped events (e.g.,
VehicleTelematicsPing__dlm,PrescriptionRefillEvent__dlm). Requires an Event Time field! - Other: Reference catalogs (e.g.,
WarrantyPlanLookup__dlm,DealerLocation__dlm).
- Profile: Persistent entities (e.g.,
- Label & API Name: Standard camel-case label; the system automatically appends the
- Define the Primary Key: Explicitly designate a Text field as the Primary Key (
Id__c). - Define Custom Relationships: Configure foreign key lookup relationships linking the custom DMO to other DMOs.
Standard DMO Extension vs. Custom DMO Decision Matrix
| Evaluation Criteria | Add Custom Fields to Standard DMO | Create Brand New Custom DMO (__dlm) |
|---|---|---|
| Conceptual Entity Match | Concept exists in CIM (Person, Account, Order, Product) | Concept does NOT exist in CIM (Warranty, Flight, Loan) |
| Identity Resolution Need | Must participate in Identity Resolution unification rules | Entity is an auxiliary dimension or event, not a core human profile |
| Out-of-the-Box Features | Requires standard Calculated Insights, RFM, or Activation paths | Requires bespoke SQL insights or custom flow triggers |
| Relational Structure | Extends existing 1:1 or 1:N standard relationships | Requires new relational data models and foreign key links |
Relational Cardinality & Downstream Impact
In Data Cloud, configuring relationships between DMOs is not just for documentation—it builds the relational graph that powers the Segment Builder and Calculated Insights query engines.
┌───────────────────────┐ 1:N ┌───────────────────────┐
│ Individual__dlm │──────────────────────────►│ SalesOrder__dlm │
│ PK: Id__c │◄──────────────────────────│ PK: Id__c │
└───────────────────────┘ N:1 │ FK: SoldToPartyId__c │
└───────────────────────┘
Cardinality Definitions & Directions
When establishing a relationship in the Data Model canvas, the consultant defines:
- Source DMO & Target DMO: Which object contains the Foreign Key and which contains the Primary Key.
- Cardinality Type:
- Many-to-One (N:1): Many records in the source object relate to one record in the target object (e.g., many
SalesOrderrecords point to oneIndividual). This is the most common foreign key relationship. - One-to-Many (1:N): One record in the source object relates to many records in the target object (e.g., one
Individualhas manyContactPointEmailrecords). - One-to-One (1:1): Exactly one record in the source relates to one record in the target (e.g.,
Individualto an extended demographic profile table).
- Many-to-One (N:1): Many records in the source object relate to one record in the target object (e.g., many
Downstream Impact on the Segment Builder Canvas
The relationship cardinality configured in the data model dictates how fields appear and behave in the Segment Builder:
- Direct Attributes (1:1 and N:1):
- When segmenting on the
IndividualDMO, any relationship whereIndividualis on the "One" side (or 1:1) is treated as a Direct Attribute. - Direct attributes represent single-value attributes of the individual (e.g.,
Individual.BirthDate,Individual.LastName, orAccount.BillingCityif linked N:1). - Segment logic evaluates these as simple boolean comparisons (e.g.,
State = 'CA').
- When segmenting on the
- Related Attributes (1:N):
- Any relationship where an
Individualpoints to multiple child records (e.g.,Individual➔SalesOrder,Individual➔WebsiteClick) appears under Related Attributes. - Because a customer may have dozens or thousands of child records, filtering on Related Attributes requires specifying aggregation criteria:
- Occurrence count:
COUNT >= 3orders. - Value aggregations:
SUM(GrandTotalAmount) > 500. - Value conditions: At least one related order where
OrderStatus = 'Completed'within the last 30 days.
- Occurrence count:
- Any relationship where an
Downstream Impact on Calculated Insights
Calculated Insights use ANSI SQL to aggregate metrics across DMOs. However, SQL queries in Data Cloud cannot execute arbitrary ad-hoc joins between unrelated DMOs!
- If a query attempts to join
Individual__dlmandVehicleWarranty__dlm, an explicit relationship path must exist in the Data Model Canvas between those two objects (or through an intermediate object). - If the relationship is missing or configured with inverted cardinality, the Calculated Insight validation parser will fail with a "No relationship path found" error.
Critical Exam Traps & Consultant Pitfalls
[!WARNING] Exam Trap 1: The Incompatible Data Type Trap An external transactional log stores purchase timestamps as text strings:
"2026-09-21 14:30:00". A junior admin attempts to map this source DLO field directly toSalesOrder__dlm.OrderedDate__c(DateTime) on the mapping canvas.Why it fails: Data Cloud mapping requires identical primitive types. The mapping line will be rejected. The consultant must create an Ingestion Formula Field using date parsing functions (or a Batch Transform) to convert the text to DateTime before mapping to the DMO.
[!CAUTION] Exam Trap 2: The Unmapped Primary Key Deployment Failure A team maps 25 customer demographic fields from a CRM Contact DLO to
Individual__dlm, but forgets to map the CRM Contact ID toIndividual__dlm.Id__c.Why it fails: The Data Mapping Canvas enforces a strict validation rule: a DMO mapping cannot be deployed or saved if the target DMO's primary key (
Id__c) is unmapped. Deployment will be permanently blocked until a valid unique text field is mapped toId__c.
[!NOTE] Exam Trap 3: The Missing Relationship Link in the Segment Canvas A consultant maps an external survey results DLO to a custom DMO
SurveyResponse__dlm. Later, the marketing team complains thatSurveyResponse__dlmdoes not appear anywhere in the Segment Builder when building an audience onIndividual.The Root Cause: Creating and mapping a custom DMO is only half the job! You must also navigate to the Data Model canvas, select
SurveyResponse__dlm, and explicitly define a Relationship linkingSurveyResponse__dlm.RespondentPartyId__c(N:1) toIndividual__dlm.Id__c. Without this relationship definition, the Segment engine cannot traverse from the segment anchor to the survey records.
A company ingests a flat CSV customer export into Data Cloud. Each row contains Customer_ID, Full_Name, Personal_Email, and Business_Email. The consultant maps Customer_ID to Individual__dlm.Id__c. Next, the consultant wants to map both email addresses into the standard ContactPointEmail__dlm object. What architectural pattern must the consultant implement to prevent data corruption and row overwrites?
An enterprise automotive client needs to track vehicle service warranty contracts and telematics error codes associated with connected vehicles. Neither vehicle warranties nor telematics error codes exist in the standard Cloud Information Model (CIM) subject areas. What is the recommended architectural solution for modeling this data in Data Cloud?
A marketing operations team is building a segment in Data Cloud anchored on the Individual__dlm object. The team needs to include individuals who have placed at least three purchases with a total order value exceeding $500 in the past 60 days. In the Segment Canvas, why do the SalesOrder__dlm attributes appear under 'Related Attributes' rather than 'Direct Attributes'?