Your System of Record Is a Relationship
The question is why we keep asking “which system is the system of record?” as the first move in an integration. On the surface it sounds disciplined. In practice it quietly decides the outcome: one system becomes the winner, and everything else is treated as a subordinate copy.
What’s at stake is not a naming convention. It’s how work gets done. When we crown a single “source of truth” too early—usually the ERP—we force every adjacent tool and team to conform to one system’s constraints. We then spend months translating, flattening, and re-keying real operational nuance into fields that were never designed to carry it.
From first principles, “truth” in an operating company is rarely a single static record. It is a set of responsibilities: who can create, change, approve, and rely on specific attributes of an entity at a specific point in time. A system of record is not a database. It is a relationship—an agreement between systems about ownership, timing, and meaning.
Why “one system of record” becomes a failure mode
The dominance framing creates two predictable outcomes.
It forces one system’s definition onto everyone else
Different systems care about different aspects of the same entity. An ERP may define a vendor in terms of legal name, remit-to address, tax forms, payment terms, and bank details. A procurement platform cares about RFQ eligibility, category coverage, performance history, catalog, and buyer-facing contacts. A logistics tool cares about ship-from locations and lead-time variability.
If you make the ERP the system of record for “the vendor,” you also make the ERP’s definition of vendor the definition that every other system must accept. That creates friction because you’re not integrating “vendor data.” You are integrating conflicting models of the business.
It hides workflow realities behind data sync
The most common workarounds are not technical. They are human: dummy records, bypassed approvals, spreadsheets that “temporarily” become the real operating system, and manual re-entry to keep processes moving. The integration can be correct and still be wrong for the business because it blocks the wrong team at the wrong time.
Reframing the system of record as a responsibility map
A more durable design starts by splitting the question into smaller ones:
- Which system owns which attributes? (creation and updates)
- Which system validates which attributes? (approval and compliance)
- When is an attribute “good enough” for a given workflow? (state, not just value)
- How do systems refer to the same real-world entity? (identity and linking)
This yields a responsibility map instead of a winner. In that map, multiple systems can be “of record,” each for a specific slice of the entity. The integration’s job is not to replicate everything everywhere. It is to maintain a stable relationship between the slices.
A concrete example: ERP + procurement without dummy vendors
Consider integrating a specialized procurement platform with a central ERP (NetSuite is a common example). The conventional approach usually sounds like: “NetSuite is the system of record for vendors, so all vendor creation happens there first, then we sync to procurement.”
Operationally, this breaks down immediately. Procurement needs to add a potential supplier to run an RFQ or collect quotes. Finance needs tax forms, banking details, sanctions screening, insurance certificates, and internal approvals. Those are not wrong controls—but they are often slow controls. If procurement is forced to wait for full financial onboarding before it can even evaluate a supplier, the team will route around the system.
A relationship-based design separates the vendor into two identities:
- Operational identity (owned by procurement): supplier name as used by buyers, sourcing contacts, categories, performance notes, RFQ eligibility, catalog references.
- Financial identity (owned by ERP/finance): legal entity details, tax classification, payment terms, remit-to and bank information, compliance outcomes.
Instead of synchronizing a “master vendor record,” you link these two records with a shared identifier and a lifecycle policy.
How the linkage works in practice
One practical pattern is to maintain a cross-reference table (sometimes in an integration layer, sometimes in the ERP via custom records):
- Procurement Supplier ID
- ERP Vendor Internal ID (nullable until onboarding completes)
- Link status (unlinked, pending onboarding, linked, blocked)
- Reason codes (e.g., missing W-9, failed screening)
Then, define workflow gates based on states rather than “does the vendor exist in the ERP.” For example:
- RFQ creation only requires an operational identity.
- Purchase order submission may require the operational identity plus a “financial identity pending” status.
- Invoice creation and payment require a linked, approved financial identity.
When procurement selects a supplier for a PO, the integration checks for a linked ERP vendor. If one exists, the PO proceeds normally. If it doesn’t, the integration triggers financial onboarding and sets the link status to pending—without forcing procurement to create dummy vendors or halt sourcing work.
This eliminates the dummy vendor problem because the system no longer conflates “a supplier we want to source from” with “a vendor we can pay today.” Those are different truths with different owners.
Designing “truth” with data contracts, not full sync
Once you accept that truth is federated, the architectural focus shifts from data centralization to interface clarity.
Define attribute ownership explicitly
For each shared entity (vendor, item, customer, employee, location), document:
- System of entry (where it is created)
- System of change (where updates are allowed)
- System of approval (where it becomes valid for specific actions)
- Propagation rules (what is copied vs referenced)
Use stable identifiers and maintain crosswalks
Relying on one system’s internal ID to serve every other system is convenient until it isn’t. Crosswalks are not “overhead”; they are how you keep systems loosely coupled. This is especially important when systems are replaced, merged, or reorganized.
Integrate by events and states, not just records
Many integrations fail because they treat data as a snapshot. Real operations are transitions: invited → quoted → selected → onboarded → payable. If you model those states explicitly, you can reduce unnecessary synchronization and make exceptions visible instead of silent.
What control looks like in a networked architecture
The fear behind federated truth is loss of control: “If the ERP isn’t the single source, how do we govern?” The answer is that governance comes from constraints and contracts, not from forcing everything into one schema.
Controls become easier to enforce when they align with workflows. Finance can require compliance before payment, not before evaluation. Procurement can manage supplier performance without asking the ERP to store it. Operations can keep logistics attributes current without negotiating with accounting’s vendor form.
Ultimately, a system of record is a negotiated agreement about responsibility, not a throne. What this means is that integration work is less about picking a master database and more about designing identity, ownership, and lifecycle gates that match how teams actually operate. The takeaway: control comes from designing the relationships between systems, not from centralizing the data inside one of them.