Salesforce Data Cloud Data Modelling

You’ve enabled and activated Data Cloud.

You’ve also set up Data Cloud Data Ingestion.

There’s an ongoing flow of data coming from many sources. Connectors, Data Source Objects, Data Lake Objects.

So now, how does all that data get harmonized and mapped to the Salesforce 360 Data Model so you can actually activate it?

That’s what we’ll cover in this guide.

Data Mapping and the Salesforce Customer 360 Data Model

Data Mapping

Each data source you ingest in Data Cloud comes with its own data schema.

For example, you might have an AWS S3 source Data Lake Object “ShopOrders” and a Cloud Storage Data Lake Object called “EcommerceOrders”.

Both DLOs have an Order field (they both contain Transactional data from your customers), but the schemas might slightly differ:

ShopOrders
OrderID: 001
First Name: Frank
Quantity: 100
Currency: EUR

EcommerceOrders
Ecom_Order_ID: 002
Name: Anne
Qty: 120
Currency: EUR

Mapping means assigning those disparate data source structures to a common data model, normalized.

Salesforce Customer 360 Data Model – Overview

Salesforce Data Cloud comes with a canonical Data Model so your data mapping is seamless:

The Salesforce Customer 360 Data Model.

You can find the full model to view and download here:

Salesforce Customer 360 Data Model – Salesforce Architects Full Diagram:
https://architect.salesforce.com/diagrams/data-models/data-cloud/engagement

Salesforce Customer 360 Data Model – Salesforce Data Cloud Documentation:
https://help.salesforce.com/s/articleView?id=sf.c360_a_c360datamodel.htm&type=5

The idea behind a canonical data model is:

  • It helps reduce complexities of integrating disparate schemas.
  • It helps build a standardised single view of each customer.
  • It serves as a foundational layer so that no matter how custom your data model is, once it is harmonized in Data Cloud, everyone can understand what each object does, what data purpose it has, etc.

From left to right, this would be a representation of how the Data Ingestion and Data Modelling steps help your business drive value:

1. Different Data Sources –> 2. Standard Data Cloud Data Model –> 3. Data Value

In other words, the source data needs to be harmonized so that you can later “do positive ROI stuff” with it, such as Identity Resolution, Segmentation, Activations, Insights, etc.

Canonical Data Model vs BYO Data Model

A common best practice when working with Salesforce is to leverage Standard Objects as much as possible.

Data Cloud is no exception.

The idea behind a canonical Salesforce data model is that you strategically plan the mapping between your company data and the Customer 360 Data Model so you can make the most out of Data Cloud.

That’s why it’s super important to plan ahead, understand the 360 Customer Data Model, how mapping works, etc.

Data Modelling Phases

Normally, Data Modelling can be done in 2 differentiated phases in a Data Cloud project:

  1. Data Design
  2. Data Build

Data Design

The Data Design Phase should come as a consequence of an initial Data Discovery, of course.

Direction > Speed

For this Data Discovery to be efficient, you will need a clear understanding of the Data Cloud Setup and Provisioning models and considerations, Use Cases requirements and value matrix applied to them, scope of the project, etc.

When it comes to Data Cloud, 80% of a project is strategy and planning.

Assuming the right strategy is already in place (the most important step), the Data Design phase will typically include:

  1. Preparing your data dictionary or data inventory
    This means creating an inventory of all your data sources to be ingested into Data Cloud, including their data schema, attributes, value samples for each field, edge cases, Primary and Foreign Keys, API names and labels, etc.
  2. Confirming your Field-Level data mapping requirements
    For each data source, check attributes, define what Data Model Object they will be mapped to, ensure data types match when needed, define cardinality of the data relationships, shared keys, Key Qualifiers, etc.

Makes sense, doesn’t it?

First, you gather everything you’ll ingest into Data Cloud and why.
Second, you confirm that data is going to be translated into the Salesforce Data Model.

Data Build

Once the data inventory is in place and you’re 100% sure of the required mappings, the Data Build phase starts.

This includes 3 main points:

  • Configuration of the data model mappings in Data Cloud
  • Configuration of Data Relationships
  • Review required mappings, extra relationships, custom objects extension, etc

Customer 360 Data Model – Subject Areas

The Salesforce Customer 360 Data Model is organised into Subject Areas.

Subject Area: a group of data objects that relate to the same business goal or logical organization

For example:

  • Engagement data
  • Sales Orders
  • Product Information

Each Subject Area is made up of Data Model Objects (DMOs), and each DMO has different Attributes.

A simplified example of this level of organization would be:

1. Subject Area
Product

2. DMOs in “Product” Subject Area:
Brand DMO
Goods Product DMO

3. Attributes in each DMO
Brand DMO
Brand ID
Created Date
Data Source Object
Name
Parent Brand

Goods Product DMO
Brand
Color
Created Date
Gross Weight
Height
Is Installable
Is Returnable

Getting familiar with the different Subject Areas of the 360 Data Model takes time. In the next section, you can find a quick overview of each area and the DMOs included.

Subject Area – Case Data Model

This Subject Area covers issues in customer service, such as a support ticket or a fault in a purchased appliance. Find below a breakdown of all the Data Model Objects (DMO) included in this area:

Data Model Object (DMO)Description
IndividualThis DMO refers to the people who interact with your business: customers, contacts, etc.
CaseThis DMO contains the support tickets or cases for your customers, based on different issues, categories of issues, etc.
AccountThis DMO contains info about how a party prefers to interact with your business.
Account ContactThis DMO refers to a specific person within an Account, with a specific role.

Subject Area – Engagement Data Model

The Engagement Subject Area refers to all the interactions of a specific party with your business. Some examples of those interactions: purchasing a product, receiving an SMS.

Breakdown of all the DMOs:

Data Model Object (DMO)Description
DeviceThe Device DMO refers to an electronic device from which your business needs to track events or info. E.g: a smartphone, an electric car.
Device Application EngagementThis DMO includes all the collected app info from the Device. It can include data points such as app usage on a smartphone, for instance.
Device Application TemplateThis DMO includes the standard format for the messages on applications of the devices.
Email EngagementThis DMO includes info about data captured about an engagement from different sources.
Email TemplateThe DMO that contains the template or standard format of email messages which can later be customised with personalization, etc.
Engagement TopicThe DMO for the topic or theme of the engagement. E.g: campaigns, promotions.
Product Browse EngagementA DMO that includes the data events gathered from a consumer's behaviour when viewing products, searching for them, visiting PDP pages, etc.
Product Order EngagementThe DMO that includes all the data about a consumer's order data when shopping. E.g: currency, total amount, etc.
Shopping Cart EngagementThe DMO that includes all the data events gathered around Shopping Cart behaviour. E.g: products added, removed from cart.
SMS EngagementThis DMO includes data about engagement with an SMS message.
SMS TemplateThe DMO that contains the template or standard format of SMS messages.
Web Search EngagementThe DMO for engagement data points around web search. E.g: browser, country.
Website EngagementThe DMO that contains any data related to the user's behaviour on your website. E.g: view events, clicks, etc.

Subject Area – Loyalty Data Model

The Loyalty Subject Area groups the objects relating to Loyalty programs and recognition programs for customers.

Breakdown of all its DMOs:

Data Model Object (DMO)Description
Account ContactThis DMO refers to the contact that is assigned to a loyalty program member.
Loyalty Aggregated Point Expiration LedgerThis DMO, within a Loyalty Program context, gathers all the points that a loyalty program member has, based on currency and expiration policies of points.
Loyalty BenefitThis DMO refers to a benefit or perk which is part of a loyalty program. E.g: gifts you get from points redeemed.
Loyalty Benefit TypeThe DMO which specifies the types of Loyalty Benefits available to loyalty program members.
Loyalty Journal SubtypeThis DMO refers to a subtype of a Journal Type. E.g: product review.
Loyalty Journal TypeThis DMO includes information about the different transaction methods available in the program, be it for points redemption or accrual.
Loyalty LedgerThis DMO records the points given or taken to/from a program member across transactions.
Loyalty Member CurrencyThis DMO includes the info about the value a loyalty program member selects to receive points as (e.g: USD, miles).
Loyalty Member TierThis DMO is the benefit tier to which a program member is assigned.
Loyalty Partner ProductThe DMO which has info about a product offered by a partner within the loyalty program.
Loyalty Program Partner PromotionThis DMO contains all the info about the promotions that the loyalty program has in cooperation with partners.
Loyalty ProgramThe DMO which refers to the marketing strategy of having a loyalty program which encourages customer retention.
Loyalty Program BadgeThe DMO for the different badges that program members can win and be assigned as rewards.
Loyalty Program CurrencyThis DMO refers to the currency data that the loyalty program uses.
Loyalty Program Engagement AttributeThis DMO includes data about certain attributes that the owner of the loyalty program can define for tracking customers's loyalty. Some examples coudl be: X number of times log in, time on site, etc.
Loyalty Pgm Engmt Attribute PromotionThis DMO is used for the different promotions that are associated with the Loyalty Program Engagement Attributes available.
Loyalty Pgm Group Member RelationshipThis DMO contains info about a loyalty program member and the contribution they mean to a group of the program they're part of.
Loyalty Program MemberThis is the core DMO which refers to a person or individual who has joined the loyalty program.
Loyalty Program Member Attribute ValueThe DMO used for tracking the specific value that a program member has obtained in relation to an Engagement Attribute goal.
Loyalty Program Member BadgeThis DMO includes the badges that a loyalty program member has been given.
Loyalty Program Member CaseThis is the DMO which contains the cases opened or created by a loyalty program member.
Loyalty Program Member PromotionThis DMO contains the data and details about the promotions available to a specific program member.
Loyalty Program PartnerThe DMO for companies that have loyalty program offerings for members.
Loyalty TierThis DMO defines the tier within the loyalty program where the benefits increase to higher levels for members.
Loyalty Tier BenefitThis is the DMO which contains the specific benefits available within a particular Loyalty Tier.
Loyalty Tier GroupThis DMO refers to those loyalty programs with multiple sets of benefits that are grouped based on business goals or clusters. E.g: lifetime.
Loyalty Transaction JournalThis DMO is used to track the activities, changes, adjustments and behaviours of members in a loyalty transaction.
Market SegmentThis is a DMO for Segments in Salesforce Data Cloud. Segments are the audiences of different promotions which sahre specific segmentation criteria.
Member BenefitThis DMO refers to a specific benefit in the loyalty program which a loyalty program member has decided to obtain being qualified for it.
ProductThis is the Data Cloud DMO for products available in a company.
Product CategoryThe DMO for the Product Categories of those products available for sale in a company.
PromotionThis DMO contains the info about promotions associated to a loyalty program. E.g: type of promotion, promotion status, etc.
Promotion Loyalty Partner ProductThis is the DMO for the product which one of the program partners co-markets to loyalty program members.
Promotion Market SegmentThis is a DMO for those promotions that are associated to a specific market segment.
Unit of MeasureThis is a Data Cloud DMO which is used for defining units of measure of the units or quantity of products purchased by loyalty program members.
VoucherThis DMO contains details about voucher definitions assigned to a loyalty program.
Voucher DefinitionThis DMO contains the data about voucher defintions assigned to a loyalty program, such as expiration date.

Subject Area – Party Data Model

The Party Subject Area is one of those tricky groups of the Salesforce 360 Customer Data Model, so I feel it deserves further initial clarification.

The term “party” can refer to the following elements:

TermDescriptionPurpose
Party Subject AreaThe Party Subject Area is a group of the Customer 360 Data Model that includes DMOs related to data about a Contact.The purpose of Subject Areas is to group together DMOs that are related to the business area in the SF Canonical Data Model.
Party Identification DMOA Data Model Object (DMO) of the Data Cloud Customer 360 Data Model that contains data about a contact and its different identifiers and unique numbers. E.g: a driver's license as a Party Identification of a specific Contact.It helps identify all the different "contexts" in which a Contact has an identification and a number assigned to that identification in that context. E.g:
- David as a driver with his license number
Party Identification IDAn Attribute or field in the Data Model Object (DMO) Party Identification.The Party Identification ID attribute in the Party Identification DMO is the Primary Key. It is used to uniquely identify a contact. For example, in the context of Driver's Licenses, David's driving license has a unique ID as Primary Key of that row.
PartyAn Attribute or field in the Data Model Object (DMO) Party Identification.This Party attribute is the reference ID to the parent Party, that is, the Individual of all those party "contexts/scenarios". This ID is the same as the one in Individual.

E.g:
David (Individual) is the parent Party of David as a driver with driver's license XXX.
Party Identification TypeThis is an attribute of the Party Identification DMO.

It is the specific type of identification. It is optional in match rules configuration.
Some types could be, for instance:
- License
- Loyalty Membership
Identification NameThis is an attribute of the Party Identification DMO.

It is the name of the specific identification.

This attribute is mandatory in match rules configuration.
Some names could be:
- State Driver License
- Airline Member Number
Identification NumberThis is an attribute of the Party Identification DMO.

It is the actual value of the identification record, used in Identity Resolution to match customer profiles.
An example of an Identification Number for a Driver License could be like:
000723-F

Having said that, here is the breakdown of the Party Data Model and its DMOs grouped in the Party Subject Area:

Data Model Object (DMO)Description
AccountThis DMO has the info of how a party wants to interact with your company.
Account ContactThe DMO for the Individual within an Account with a specific role in that Account.
Contact Point AddressThis DMO contains the mailing address of a party.
Contact Point AppThe DMO with the info about the software application used by a Party on a specific Device.
Contact Point EmailThe DMO for the email address of a specific party.
Contact Point PhoneThe DMO for the phone number of a specific party.
Contact Point SocialThe DMO for storing the social media information about a party.
IndividualThis is the Data Cloud DMO for all the people who interact with your company.
LeadThis is the Data Cloud DMO for all the people who has shown interest in your company's services or products.
Party IdentificationThe Data Cloud DMO used for storing all the ways or contexts where an Individual is considered an identified Party. E.g: a driver's license.

Subject Area – Privacy Data Model

If the Party Subject Area seems rather confusing, the Privacy Data Model takes this complexity to a whole new level: it has its own Privacy Data Model.

Since this area of the data model is the foundation of your company’s consent management and data privacy preferences, I’ll devote a whole section to this model further down.

As a high level overview for now, these are the primary DMOs in this Subject Area:

Data Model Object (DMO)Description
Authorization Form ConsentThis DMO contains all the details of a form which gathered consent, with the following info: where, when, how, what policy, etc.
Communication SubscriptionThe DMO for the subscription preferences of a customer for a specific communication.
Communication Subscription ConsentThis DMO contains the engagement or channel preferences of a specific customer.
Contact Point ConsentThe DMO with the consent preference info of a customer for a given contact point. E.g: consent preferences for email.
Engagement Channel Type ConsentThe DMO that contains individual preferences of privacy in a specific channel of communication, such as email or SMS.
Party ConsentThis DMO stores the consent preferences of an Individual.

Subject Area – Product Data Model

This Subject Area groups together all the DMOs related to anything your company sells or uses as part of a product to track service purposes.

These are the DMOs in this area:

Data Model Object (DMO)Description
BrandThis DMO stores the brand of a product.
Goods ProductThis DMO stores the data about a specific product.
Data Model Object (DMO)Description
Product CatalogThis DMO stores the inventory of your company.
Product Catalog CategoryThis DMO stores the category of the product catalog. E.g: sports.
Product CategoryThis DMO includes info about the categories of products or services that a company sells. E.g: tennis equipment.
Product Category ProductThis DMO is used for identifying how products are assigned to Product Categories. E.g: for a certain company, a tennis outfit could be categorised as both "tennis equipment" and "sportswear".

Subject Area – Sales Order Data Model

The Sales Order Subject Area of the data model includes all the information about the future revenue or quantity of an Opportunity. It also includes product families, territory or hierarchy in organising this information.

These are the DMOs included in this data model:

Data Model Object (DMO)Description
Sales OrderThis DMO stores the data about outstanding and current sales orders in your company.
Sales Order ProductThis DMO stores the specific product. E.g: a smartphone, a book.
Sales StoreThis DMO includes info about a retail store which sells the products.
Order Delivery MethodThis DMO is used for identifying the order and delivery method selected.
OpportunityThis is a core DMO that stores a sale or business deal which is in progress and is not completed yet.
Opportunity ProductThis is the DMO which contains the product that the Opportunity represents. It serves a N:N relationship.

Additional Standard Data Model Objects

There are other Standard Salesforce Objects which are included in the Customer 360 Data Model. These can help in data modelling as well.

Data Model Object (DMO)Description
Market Journey ActivityThis is the DMO for a specific Journey Builder step or Activity in SFMC Journey Builder.
Market SegmentThis DMO stores an audience or segment, which is a group of people who share the same segmentation criteria (e.g: demographics, behaviour, etc).
Data Model Object (DMO)Description
Software ApplicationThis is a Salesforce Data Cloud DMO used for having info about programs that your company made for its end users. E.g: an app for your VIP club of consumers

Salesforce Privacy Data Model

The Privacy Model in the Salesforce 360 Customer Data Model is the foundation of consent management and privacy preferences for your company and customers.

It is flexible and robust, capable of addressing every single aspect of consent management for any customer scenario.

First, you need to know that:

the consent model is related to the Individual DMO as the foundation for any consent. The relationship is 1:N (one Individual will have many consent preferences stored).

An Individual is just a parent abstraction of any person object, such as Lead, Contact, User, Person Account, etc.

Second, the Privacy Data Model allows you to manage consent on different levels or layers for the Individual object:

  1. Global Consent
  2. Engagement Channel Consent
  3. Contact Point Consent
  4. Data Use Purpose
  5. Brand

Global Consent refers to the global consent settings for an Individual: a customer giving you general consent or not at all. This manages the general privacy settings.

Global Privacy Settings:

Global Consent SettingDescription
Don't Processdo not collect, share, store, etc my personal data.
Don't Profiledo not use my consent for profiling, creating personas, segmentation, etc.
Don't Solicitpreference not to solicit products or services.
Don't Trackdo not track my web activity, if I open an email, etc.
Forget This Individualdelete all my records and personal data related to my Individual.
OK to Store PII Data Elsewhereconsent to store Personally Identifiable Information outside the legislation area.
E.g: store my EU's personal data in the UK.
Individual's Agean indication of whether an Individual is a minor.
Block Geolocation Trackingdo not track my geolocation on mobile devices.

Engagement Channel Consent is managed with the ContactPointTypeConsent object, and it refers to consent preferences for a specific contact point or channel of communications.

  • Contact Point = a point of contact or channel format between the company and the customer (Individual).
    E.g: email or phone.
DMODescription
Engagement Channel TypeThis is the Data Cloud DMO for the channels supported by individual preferences. For example, I give you consent for email communications but not for phone calls.

This level refers to, within a Contact Point Type or channel (e.g: email), the specific contact point on which the customer wants to be contacted.

For example, a customer may give consent for email channel (Level 2), but only on a personal email address john@example.com, not on the work email address johnatwork@work.com (Level 3).

Level 4 – Data Use Purpose

This level is closely related to Levels 2 and 3. It defines the data purpose of the consent given on a specific channel and contact point. What is the reason for the company communications?

Some examples:

  • Is it transactional communications, which are a legitimate interest related to the service the company gives? (e.g: an Order Confirmation email)
  • Is it commercial communications with a promotional purpose? (e.g: marketing campaigns, new products).

In other words, within a Level 2 and Level 3 consent (specific channel and specific contact point), your company may have different data purposes: newsletters, social media, profiling, etc.

This object manages that.

Brand

Brand is not part of the Privacy Data Model, but it’s an important part of it as a related object.

The object that manages this aspect is BusinessBrand, which has a native relationship with the objects Contact Point Type and Contact Point Consent. It defines for what Brand within your Org the consent applies.

E.g: you may have Levels 1, 2, 3 and 4 for managing consent, but these can differ across multiple company brands within the same Salesforce Org.

All the Data Subject Rights Requests that you receive from customers need to be processed using the Consent API in Data Cloud.

The Data Cloud Consent API reads and writes to the Profile of a customer (Individual, Contact, Lead, User, Person Account object records) in Data Cloud. It does so by accessing and updating org-wide consent data (e.g: links between records, values of consent flags, etc).

These are the actions supported by the Consent API, as documented by Salesforce:

ActionDescription
ShouldForgetThis is the Right To Be Forgotten: permanently deleting PII (Personally Identifiable Information) data and all related records.
ProcessingThis action restricts the use of Data Cloud processes (e.g: insights, query, segmentations) to process the customer data.
PortabilityThis is used to allow the customer to have thier Data Cloud data exported.

Data Cloud Privacy Model DMOs

Here is a comprehensive list of all the Data Model Objects (DMOs) that are included within the Privacy Data Model in the Salesforce 360 Customer Data Model:
General

Data Model Object (DMO)Description
Authorization Form ConsentThis DMO contains all the details of a form which gathered consent, with the following info: where, when, how, what policy, etc.
Communication SubscriptionThe DMO for the subscription preferences of a customer for a specific communication.
Communication Subscription ConsentThis DMO contains the engagement or channel preferences of a specific customer.
Contact Point ConsentThe DMO with the consent preference info of a customer for a given contact point. E.g: consent preferences for email.
Engagement Channel Type ConsentThe DMO that contains individual preferences of privacy in a specific channel of communication, such as email or SMS.
Party ConsentThis DMO stores the consent preferences of an Individual.
Contact Consent Configuration
DMODescription
Authorization FormThe DMO for the group of privacy policy, contract, terms and conditions or consent forms.
Authorization Form Data UseThis DMO stores the data uses within an authorization form.
Authorization Form TextThe Data Cloud DMO for storing the language and text of a specific consent form (authorization form).
Communication Subscription TimingThis is the DMO that stores the Individual's preferences for timing of receiving communications.
Data Use Purpose Consent ActionThis DMO stores the Individual's consent preferences for consent actions, such as data collection, tracking, sharing, etc.
Contact Consent Setup
DMODescription
Communication Subscription Channel TypeThis is the DMO that stores info about a specific engagement channel. E.g: email, SMS.
Consent ActionThis DMO stores the uses for which the Individual consents to give their data (e.g: tracking, sharing).
Consent StatusThis DMO stores the consent status: opted in, opt out.
Data Use Legal BasisThis the Data Cloud DMO that contains the info about the legal reason why the company communicates with the Individual. E.g: billing, contract.
Data Use PurposeThis is the DMO that stores the data use purpose of the communications. E.g: transactional, marketing communications, etc.
Engagement
DMODescription
Engagement Channel TypeThis is the Data Cloud DMO for the channels supported by individual preferences. For example, I give you consent for email communications but not for phone calls.

Salesforce Data Cloud Primary Keys

One of the key aspects of how Data Cloud uses data is the concept of Primary Keys and Data Lineage.

Let’s look at some important terminology first:

TermDescriptionExample
Primary KeyThis is the Data Source Field that uniquely identifies a row or record in a table.In an Order object, the Primary Key could be OrderID.

E.g:
OrderID = 001
OrderID = 002

Each unique Order has an ID value that is different per row.
Composite KeyWhen a Data Source does not have a single field that uniquely identifies a record, you can combine multiple fields (usually through Concatenation) to create a new, extra field, out of a Formula. This is a Composite Key.If OrderID was not enough to uniquely identify one row, we could come up with the following unique combination of both orderID and SKU of a product.

E.g:
OrderID_SKU
001_DKL
Key QualifierWhen multiple Data Sources have duplicated values in the Primary Key field, a Key Qualifier is an extra field that helps you identify where the data comes from, to deduplicate.

A Key Qualifier is the Source of the data, for example.
If your company has Contacts from both CRM and SFMC in 2 different Data Sources, the Key Qualifier "Source" could be added to distinguish and keep Data Lineage:

ContactID = 001
Name = David
Source = SFMC

ContactID = 001
Name = David
Source = CRM
Fully Qualified KeyA Fully Qualified Key is the combination of having the Data Source Primary Key Field + Key Qualifier Field.

We talk of Fully Qualified Keys when the data lineage and record uniqueness can be tracked thanks to the added Key Qualifier field.
Once we use the "Source" field to identify where data comes from, we can uniquely identify records with the same source Primary Key value.

ContactID = 001
Source = CRM

ContactID = 001
Source = SFMC

ContactID = 002
Source = SFMC

DLO Primary Key != DMO Primary Key

This is a very common scenario.

Let’s imagine you want to ingest Customer Data into Data Cloud, and you have the following 2 DLOs with 1 row and 2 rows, respectively:

DLO 1
CustomerID (PK) = 001
Name = Laia

DLO 2
ID (PK) = 001
Name = Laia

ID (PK) = 002
Name: Alex

Now, let’s imagine a simplified version of the Individual DMO with these attributes and Primary Key:

Individual DMO
Individual Id (PK)
Name

Based on the Primary Key fields and values of the DLOs, if we map these 2 DLOs to the DMO, we would get…2 rows right? Both Laias share the same value for the Primary Keys of the DLOs (001):

Individual Id = 001 (Laia)
Individual Id = 002 (Alex)

However, this is not how Data Cloud works.

The Individual DMO, although it has Individual Id as the Primary Key, it will be mapped with these 3 rows instead:

Individual Id = 001 (Laia)
Individual Id = 001 (Laia)
Individual Id = 002 (Alex)

Key Qualifiers and Fully Qualified Keys

How do we solve the issue of having duplicated Primary Key values?

Using Key Qualifiers to have Fully Qualified Keys in the DLOs.

For example, consider these 2 rows in the Individual DMO:

Individual DMO
Individual Id = 003
KQ_ID = CRM

Individual Id = 003
KQ_ID = SFMC

By adding the extra Source field as a Key Qualifier (KQ_ID), we now have an extra attribute to uniquely identify records.

How to configure and use Fully Qualified Keys

  • When you configure multiple Data Lake Objects (DLOs) to be mapped to the same DMO, you need to ensure that all of the DLOs have the Key Qualifier field.
  • You need to add the Key Qualifier Field after configuring the Data Stream for the DLO.
  • Data Cloud automatically creates the Key Qualifier fields in DMOs after they have been configured in the corresponding DLOs.
  • In Tableau, Calculated Insights, all SQL table joins, dimensions, etc, always use Key Qualifier fields to ensure data is accurate.

Salesforce Data Model Mapping

Before you start the Data Model Mapping implementation, let’s do a quick recap of previous steps:

  1. Design: Data Strategy and Discovery
    Plan a thorough Data Strategy and Discovery phase so you can create a detailed Data Inventory of all your source data, mappings, PKs, schemas, Data Model extensions, etc.
  2. Salesforce Data Cloud Data Model is normalised.
    Your source data will need to be normalised before it can be mapped.
  3. Assess Transformations and Mappings
    Decide how to leverage Data Model Subject Areas, how you will transform data when necessary, etc.
  4. Select Data Object Type Categories
    Profile, Engagement, Other.
    Remember that once the first DLO is mapped to a DMO, the Data Model Object will inherit, keep  and only allow that Data Object Type Category in the future.

Now, let’s look at the actual mapping workflow in Data Cloud.

Data Cloud Objects

Here’s a recap of the different types of objects that exist in Salesforce Data Cloud and how each of them is created on a different stage of the data process:

NameTermStageFormatPurposeLocation
Data Source
Object
DSOStage 1:
raw, when data source is first ingested and a Data Stream is configured
- Multi Format (e.g: CSV, Json, etc).
- Original schema is preserved
- Multi sourced: Mulesoft, Cloud Storage, etc.
Original data source and files/transient data of the organization.

Needed so a Data Lake copy can be created for later mapping.
Not physically stored:

A staging or temporary view of the original, raw data, before it's created physically in the Data Lake as a DLO.
Data Lake
Object
DLOStage 2:
automatically created as a locally stored copy of the DSO, but including transformations, validation, normalisation, etc.
- Schema is enforced.
- Categorised into DC types of objects: Profile, Engagement, Other
- Parquet Formatted Iceberg tables
Normalised, validated and transformed version of the DSO so it can be mapped to the SF Data Model.

Objects cannot be used unless they're mapped to the Data Model.
Physically stored in the Data Lake assigned Data Space:

This is the core "copy" of the data ingested. Data only exists at the DLO level in Data Cloud.
Data Model
Object
DMOStage 3:
DLOs are mapped to a SF 360 Data Model object and this creates a harmonized grouping of data that is mapped to the canonical DM of Salesforce.
- Harmonized and grouped view of the DLO, mapped to a data model object.
- Type Category is inherited from the DLO mapped.
- Unified Individuals and Insights are DMOs.
Mapped version of the DLO so it can be leveraged in Data Cloud features:

insights, segments, identity resolution, etc.
Not physically stored:

A DMO is just a "view" of the DLO in the Data Lake, not a copy of the DLO itself. It is not materialised.

How to map Data Model Objects

  1. Go to the Data Streams tab in Data Cloud
  2. Find the Data Stream you want to map
  3. Click on Start Data Mapping OR Review if mappings have already been configured
  4. Click on Select Objects to display the available DLOs
  5. Select the Field to map from DLO and click on the target DMO Related Field

DMO Data Object Type Categories

DMOs come without an assigned Data Object Type Category (Profile vs Engagement vs Other).

  • The DMO will inherit the Object Type Category of the first DLO that you map to it.
  • Once the first DLO is mapped, the DMO will keep and only allow mappings of the same Object Type Category.

1 DLO <–> 1 DMO Mapping

When mapping, take into account these 1 DLO <–> 1 DMO requirements and best practices:

  • You can only map 1 DLO Attribute –> to 1 DMO Attribute.
    E.g:
    You cannot map both:
    DLO.PrimaryEmail –> DMO.EmailAddress
    DLO.SecondaryEmail –> DMO.EmailAddress
  • You can map 1 DLO Attribute –> to +2 different DMO Attributes.
    E.g:
    DLO.PrimaryEmail –> DMO.EmailAddress
    DLO.PrimaryEmail –> DMO.AlternativeEmail
  • If you want to map +2 DLO Attributes to the same DMO Attribute, you could, for example, separate data so that there are 2 Data Streams and DLOs mapped to the same DMO.

N DLOs <–> 1 DMO Mapping

Data Cloud allows you to map several Data Lake Objects (DLOs) to the same target Data Model Object (DMO).

Here are some best practices:

  • Use multiple DLOs to 1 DMO if you have several Data Sources from different systems and they all align well with the same DMO.
    E.g:
    Ecommerce_Orders
    StoreOrdersThey are two different data sources, but both contain information of the same data model entity.
  • It’s possible that each Data Source aligns well with different target attributes in the same DMO.
    E.g:
    Ecommerce_Orders has the needed attributes for OrderId and Currency
    StoreOrders has other attributes that Ecommerce_Orders lacks, so they complement each other.
  • It’s also possible that both Data Sources have attributes that map to the same target attribute in the DMO.
    E.g:
    Ecommerce_Orders.OrderID –> DMO.ID
    StoreOrders.OrderIdNumber –> DMO.ID

Data Bundles automatic mapping

During Data Cloud Data Ingestion, Data Bundles allow you to ingest and map pre-defined objects from popular Salesforce Clouds (e.g: Service and Sales Cloud, Salesforce Marketing Cloud, etc).

These Data Bundles automatically map the Salesforce standard objects to the Data Cloud DMOs.

You can review the Data Streams after the Data Bundle is configured and deployed.

Configure Object Relationships

To review and/or configure DMO Relationships:

  1. Click on Data Model tab in Data Cloud
  2. Select your DMO
  3. Click on Relationships tab

In terms of the Data Relationships that you can configure for DMOs, there are 2 types:

  • Standard Data Relationships
    The standard data relationship is a built-in relationship. It’s enabled once there is at least one mapping between the related DMOs. You may disable standard relationships but you cannot delete them.
  • Custom Data Relationships
    You may create custom data relationships between DMOs on the Relationships tab. You may also delete or deactivate a custom data relationship. A custom data relationship is deleted automatically when the mapping for at least one field is removed.

Data Relationships always come in the following format:

ObjectFieldKey Qualifier
(Field)
CardinalityRelated ObjectRelated FieldKey Qualifier
(Related Field)
CaseAccount ContactKQ_AccountContactIdN:1IndividualIndividual IdKQ_Id

There are 2 levels where you can configure Data Relationships:

  1. At the Data Source level
    You may configure data relationships for your Data Sources.
    For example, OrderLineItems might have a N:1 relationship with Order (e.g: one OrderID can have multiple OrderLineItems)
  2. At the Data Model Object level
    Individual DMO has a 1:N relationship with Contact Point Email (e.g: one Individual may have multiple email addresses to be contacted on).

Data Types in DLO and DMO

The data types in the fields mapped between a Data Lake Object (DLO) and a Data Model Object (DMO) must be compatible. Otherwise, Data Cloud will not let you map them.

Use this table for reference of compatible data types:

Field Type in DLOCompatible Field Types in DMO
TextText, Email, Phone, URL
URLURL, Email, Phone, Text
NumberNumber, Text
PhonePhone, Email, Text, URL
PercentPercent, Number
BooleanBoolean
EmailEmail, Phone, Text, URL
DateDate
DateTimeDateTime

Required Data Model Mappings and Relationships

These are the DMOs that you must map for Data Cloud to work in terms of Identity Resolution, Activation, etc:

  • Individual
  • Party Identification
  • Contact Point Address
  • Contact Point Email
  • Contact Point Phone
  • Contact Point App
  • Contact Point Social

Find below a table with the Data Model Data Object Relationships for the required mandatory DMOs:

ObjectFieldCardinalityRelated ObjectRelated Field
IndividualIndividual Id1:NParty IdentificationParty
IndividualIndividual Id1:NContact Point AddressParty
IndividualIndividual Id1:NContact Point PhoneParty
IndividualIndividual Id1:NContact Point EmailParty
IndividualIndividual Id1:NContact Point AppParty
IndividualIndividual Id1:NContact Point SocialParty

Data Model Dependencies

You may run into technical issues that stem from what’s often called by Salesforce, Data Model “interlocking”.

Once there are dependencies configured for a specific DMO, this Data Model Object will require at least 1 DLO actively mapped to it.

This means that you cannot delete records from a Data Stream, for example, unless you remove those DMO dependencies.

What are these DMO “interlocking” dependencies?

  • The DMO is used in Identity Resolution
  • The DMO is used in Insights
  • The DMO is currently used in Segmentation
  • The DMO is being used for Activations

Recap and Summary

This would be the logical order of steps when implementing Data Mapping in Data Cloud:

  1. Perform a thorough and strategic Data Design phase (e.g: data inventory, strategy and planning, schemas and Primary Keys, Use cases, etc).
  2. Get familiar with the Salesforce 360 Customer Data Model, Subject Areas, etc.
  3. Plan how your company will leverage the Privacy Data Model for consent management.
  4. Go through Data Model Mapping, taking into account:
    – Data Object Type Categories
    – DLO x DMO mapping best practices
    – Object Relationships
    – Data Type Compatibility
    – Required DMO mappings
  5. Take into account dependencies and interlocking once the model is mapped