Skip to content

One Source of Truth per Attribute

Also in 28 languages

Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A key rack beside a front door, five different keys on their own hooks, each with a plain colored tag.
Image generated with AI

Module 1 of 6 in the chapter Master Data and Identity, chapter 6 of the Data Architect course. Each module stands on its own. Next: The Four Ways to Master Data

The question this module answers: What does “single source of truth” really mean?

There’s a phrase I hear constantly: “We need a single source of truth.” Okay. For what? The customer? That’s not specific enough. Take an account. Who owns the customer’s name, billing address, credit limit, account executive, support tier, marketing preferences? Those answers don’t point to the same system. The ERP may control the legal name, billing address and credit status; Salesforce the relationship owner and sales attributes; another platform the consent. So when someone tells me “Salesforce is our single source of truth for the customer,” my next question is: which truth?

The first principle of master data is this: authority is assigned per attribute, not per record. An account may live in Salesforce without Salesforce being authoritative for every field on it. Seven fields on one record, two authorities:

AttributeAuthoritative system
Legal name, billing address, ERP customer ID, credit limitERP
Account executive, strategic account flag, success tierSalesforce

One record; the truth is distributed. That’s normal. “System of record = Salesforce” doesn’t describe it. An authority model does.

Created, Edited, Referenced, and How Fast?

Section titled “Created, Edited, Referenced, and How Fast?”

When I teach master data, I keep coming back to the same questions for every important piece of data: where is it created, where is it edited, where is it referenced, and what’s its latency of change? They expose the architecture fast. (You met the first three in chapter 4, sorting the kinds of data; here’s where they do their real work.)

Take an asset. A customer orders three bicycles. Salesforce has the opportunity and its line items, and the order goes to the ERP. The ERP fulfills it, and that’s where the assets are created: three bicycles, three serial numbers, sent back to Salesforce. Months later the customer calls about one of them, and support references the asset in a case. Now someone needs to correct an attribute. Which ones may Salesforce edit, and which belong to the ERP that created them? And when the ERP changes one, how fast does Salesforce need to know? One asset, four questions, and the answers aren’t the same for every field.

Say the legal name is created in the ERP and referenced in Salesforce, and a rep notices it’s wrong. Should they fix it in Salesforce? If the ERP owns the field, changing the copy fixes nothing. At best the next sync overwrites it; at worst the two systems now disagree and nobody knows which to trust. If the business wants the rep to start the correction, that’s different: Salesforce provides the experience, sends a request to the ERP, the ERP makes or approves the change, and the authoritative value comes back. That’s a very different architecture from letting Salesforce edit the field on its own.

Latency is part of truth too. The ERP changes a customer’s credit status at 10 a.m.; Salesforce syncs it nightly; at 3 p.m. a rep looks at Salesforce. Is the value wrong? It’s stale. If the value changes once a year and a day’s delay costs nothing, nightly is fine. If it decides whether you accept a million-dollar order today, it isn’t. Authority says where truth comes from; latency says how fast others must learn it changed. Two separate decisions.

Chapter 4’s vocabulary helps here. A system of record maintains the authoritative version. A system of engagement is where people work with it. A system of reference supplies data another system uses but doesn’t own. Salesforce can be the system of engagement for the customer relationship while the ERP stays the system of record for its legal and financial attributes. That isn’t a weakness in the architecture; it is the architecture. The mistake is pretending one system must own everything so the diagram looks simpler.

That changes what “golden record” means. Chapter 5 introduced the idea while keeping bad data out; here it’s the heart of the design. People picture one magical record with every field mastered in one place. Sometimes that’s the design. On Salesforce, more often I see a hybrid: part of the account mastered elsewhere and copied in (legal name, ERP customer number, billing address, credit status), and part that exists only because Salesforce needs it (account executive, opportunity strategy, success tier, relationship notes). The ERP fields come in so people can use them. The Salesforce fields never go back, because the ERP doesn’t care about them. Perfectly reasonable, as long as everyone knows which is which.

So I make external authority obvious in the schema. If SAP controls a field, it gets a prefix: sap_Customer_Number, sap_Credit_Status, sap_Legal_Name. It’s the same idea as chapter 4’s erp_ prefix. Use the system’s name when that authority is specific and stable, and a generic prefix when the meaning matters more than today’s vendor. The point is that six months later, someone reading the model can see: this isn’t just another Salesforce field; another system owns this value. Don’t make people rediscover authority by reverse-engineering integrations.

For important master data, I want an authority map: for each key attribute, who creates it, who owns the business decision, which system is authoritative, and who or what may change it. Four different questions:

AttributeCreated byBusiness ownerAuthoritative systemMay change it
Legal nameFinanceFinanceERPThe finance process
Credit limitFinanceFinanceERPThe credit team
Account executiveSales operationsSalesSalesforceSales management
Support tierService operationsServiceSalesforceService management
ConsentThe customerPrivacyConsent platformThe customer, an approved process

Notice that business owner and authoritative system aren’t the same thing. A system doesn’t own policy; people do. The system stores and enforces the result. That’s chapter 5 again: owners set policy; architects enforce it.

An attribute authority map An authority map for one customer's attributes, with the authoritative system highlighted. Legal name: created by Finance, owned by Finance, authoritative in the ERP, changed only by the finance process, referenced by Salesforce, the portal and analytics. Credit limit: created and owned by Finance, authoritative in the ERP, changed by the credit team, referenced read-only in Salesforce. Account executive: created by sales operations, owned by Sales, authoritative in Salesforce, changed by sales management, referenced by analytics and commissions. Support tier: created by service operations, owned by Service, authoritative in Salesforce, changed by service management, referenced by routing and entitlements. Consent: created by the customer, owned by Privacy, authoritative in a consent platform, changed by the customer or an approved process, referenced by Salesforce and messaging. Underneath: one customer, many attributes, one authority for each. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.28.0", "built": "2026-10-15", "id": "DGM-DA-MD-11", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape/inventory 0.10.0", "theme": "stevetecharc 1.4.0"} ATTRIBUTE CREATED BY BUSINESS OWNER AUTHORITATIVE SYSTEM MAY CHANGE IT REFERENCED BY Legal name Finance Finance ERP The finance process Salesforce, the portal, analytics Credit limit Finance Finance ERP The credit team Salesforce (read-only) Account executive Sales operations Sales Salesforce Sales management Analytics, commissions Support tier Service operations Service Salesforce Service management Routing, entitlements Consent The customer Privacy Consent platform The customer, an approved process Salesforce, messaging One customer. Many attributes. One authority for each. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

One customer. Many attributes. One authority for each.

A rep meets a prospect the ERP has never heard of and creates the account in Salesforce. At that point Salesforce is authoritative for the name, address, contacts and qualification. The prospect becomes a customer; the ERP creates the official customer and assigns the customer number, legal name, billing address and credit. Authority moved. Salesforce wasn’t wrong before; the lifecycle changed. It’s chapter 5’s provisional-to-governed pattern: before conversion, Salesforce owns the prospect; after, the ERP owns the governed attributes, and Salesforce keeps owning its own. So “which system owns the account?” is a weak question. Ask: which system owns this attribute, at this point in the lifecycle?

We copy ERP data into Salesforce because people need it constantly. That makes Salesforce a convenient local copy, not the master, and the architecture should behave accordingly: read-only for users, refreshed by the integration, labeled with its source, changed only through a request, checked by reconciliation when the copy drifts. The copy is useful. The authority hasn’t moved.

“Billing address: 123 Main Street.” Should you trust it? I want trust signals: where it came from, when it was last confirmed, which system supplied it, and who or what last changed it: a person, an integration, an agent? Now the ERP says 123 Main Street, Salesforce says 125, and a partner file says “123 Main St., Suite 200.” Which is right? Don’t answer “use the most recent one.” Maybe. But “most recent” is itself a rule that assumes whoever changed it last deserves to win. That might be true, or terrible. Module 3 takes this on. Trust comes from authority and provenance, not from finding a field that’s filled in.

A Retail Partner sends a delivery, and several truths hide in that one transaction. The partner’s order reference is the partner’s; Steve Trucking keeps it to match updates, but doesn’t become its master. The delivery status (arrived, delivered, installed, an exception) is Steve Trucking’s; the partner receives it, but receiving a status doesn’t make the partner authoritative for what happened on the truck. And the Recipient is the partner’s customer. The partner supplies the name, address, phone and delivery notes because Steve Trucking needs them to deliver. That doesn’t make Steve Trucking the master of that person’s identity, and that distinction decides the Recipient design at the checkpoint.

Whose truth is it? One delivery One Steve Trucking delivery, split by whose truth each attribute is. The Retail Partner's truth, which Steve Trucking keeps a copy of: the partner order number, the Recipient's name, address and phone, and the delivery notes from the order; Steve Trucking keeps them to deliver and to match updates, but doesn't become their master. Steve Trucking's truth, which the partner receives: the delivery ID, the status such as out for delivery or delivered, and the outcome such as installed or an exception; the partner receives the status in its own format, but doesn't become its master. Underneath: one delivery, two authorities; how Steve Trucking models the Recipient is the checkpoint's decision. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.28.0", "built": "2026-10-15", "id": "DGM-DA-MD-12", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "comparison 0.3.0", "theme": "stevetecharc 1.4.0"} The Retail Partner's truth Steve Trucking keeps a copy OWNS The partner order number The Recipient: name, address, phone Delivery notes from the order STEVE TRUCKING keeps them to deliver and to match updates doesn't become their master Steve Trucking's truth the partner receives it OWNS The delivery ID The status: out for delivery, delivered The outcome: installed, an exception THE PARTNER receives the status in its own format doesn't become its master One delivery, two authorities. How Steve Trucking models the Recipient is the checkpoint's decision. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

One delivery, two authorities.

Where data lives and who owns its truth are different questions. Salesforce can hold the ERP customer number without owning it; Snowflake can hold delivery status without being its operational master; a customer data platform can unify identities without owning every attribute. An agent can read all three, and that certainly doesn’t let the agent decide which is true.

Beyond the exam: what AI changes. Agents turn attribute authority into an execution rule. A person sees a wrong billing address and knows “that comes from SAP; I shouldn’t change it here.” An agent told to “update the customer’s billing address” won’t know unless we design for it. It needs the same authority map the architect has: access to a field doesn’t make that field the right place to write.

  • Which system is authoritative for each important attribute, rather than one system for a whole record.
  • Where each attribute is created, edited and referenced, and how fast its changes must travel.
  • Who sets the policy for each attribute, and which people, integrations or agents may change it.
  • How external authority shows in the model: naming prefixes, permissions, integration behavior.
  • How authority shifts over the lifecycle, such as a prospect becoming an ERP-governed customer.

A single source of truth doesn’t mean one org, one ERP, one MDM platform or one giant record. It means that for each piece of governed information, the architecture can say where the authoritative value is, and every other system knows how to behave because of it. That’s not a single source of truth. It’s an architecture of truth.