Experimental Solution
STARK MDM Concept Lab
A concept space that separates STARK MDM applications from the shared reference platform they depend on for validation, governance, and canonical translation.
MDM Prototype
Working small-scale Location MDM on top of the modular concept
MDM Worklist
Total records
Open the full MDM worklist sorted by latest activity.
LOC-GOT-007 | SE-RETAIL | SE
LOC-HAM-010 | DE-TRADE | DE
LOC-BER-003 | DE-PRO | DE
LOC-HEL-004 | FI-OPS | FI
LOC-CPH-005 | DK-TRADE | DK
LOC-TAM-009 | FI-BUILD | FI
LOC-TRD-011 | NO-PRO | NO
LOC-AAR-008 | DK-PRO | DK
LOC-STO-001 | SE-TOOLS | SE
LOC-OSL-002 | NO-BUILD | NO
LOC-MAL-006 | SE-BUILD | SE
Open runtime and architecture concept
Runtime View
How the MDM applications depend on the reference platform
Portal and Trusted Inputs
Customer, Supplier, and Location portals accept steward changes while approved upstream systems can submit inbound records through governed APIs and integration adapters.
Gateway and Access Control
The API gateway enforces authentication, authorization, tracing, throttling, and schema checks before changes reach domain services.
Command and Workflow Services
Write operations create draft versions, route approvals, apply SLA timers, and record business justification for every mutation.
Validation, DQ, and Golden Record
Validation rules, duplicate handling, survivorship logic, and versioning decide whether the next golden record version is accepted, flagged, or sent to manual review.
Reference and Rules Foundation
Reference domains, mapping sets, governance rules, and canonical standards provide the controlled configuration layer used by validation, UI labels, and integration translation.
SDM Facade and Distribution
Approved records are translated to SDM-compliant payloads, validated against canonical schema, and published through Kafka and read APIs.
Consumers and Reconciliation
ERP, CRM, analytics, and coexistence services consume the same canonical output while reconciliation services monitor parity with Informatica during migration.
Lifecycle
Golden record journey
Create or Ingest
A steward or trusted source creates a draft record with idempotent command metadata and correlation IDs.
Validate and Score
Synchronous field checks run immediately, then asynchronous DQ and duplicate checks enrich the task context.
Review and Approve
Workflow routes the record to the right approver based on domain, BU, sensitivity, and governance rules.
Publish Golden Record
An approved immutable version becomes active, is transformed to SDM, and is distributed to subscribed systems.
Reconcile and Improve
Parity checks, audit history, KPI dashboards, and steward tasks highlight drift, backlog, or rule improvements.
Interaction Contract
How the two concepts work together
Validation
MDM applications read governed reference values and format rules from the reference platform to validate portal entry, inbound API payloads, and DQ checks.
Canonical Translation
Before publish, MDM services use reference mappings and canonical standards to translate internal values into SDM-compliant output.
Governance Independence
Reference changes follow their own maker-checker lifecycle and can be versioned independently from master entity changes.
Runtime Dependency
MDM depends on reference APIs and event distribution, but the two concepts remain functionally separate so each can evolve without collapsing into one shared application.
Scalability Model
How the concept scales across domains, countries, and BUs
MDM Core
Shared services handle workflow, approvals, audit, versioning, events, access control, and reconciliation without hard-coding Location, Customer, or Supplier logic.
Domain Modules
Each master data domain contributes its own data model, UI composition, business rules, enrichment steps, and duplicate logic while reusing the shared core.
Country and BU Packs
Country-specific and BU-specific validations, formats, enrichment connectors, and attribute extensions are attached as modular rule packs rather than changes to platform-wide logic.
Reference Dependency
Validation and translation rely on the separate reference platform through stable APIs and event contracts, keeping shared dictionaries independent from domain implementation.
Modular Pipelines
Validation, enrichment, and publishing stay pluggable
Validation Pipeline
Schema validation, mandatory checks, reference lookups, duplicate checks, and domain business rules should run as composable modules registered per domain and country context.
Enrichment Pipeline
Address normalization, external registry lookups, geocoding, compliance enrichment, and source-specific processors should be attachable without altering the shared MDM core.
Publish Pipeline
Approved records pass through canonical mapping, SDM validation, and outbound event formatting in a controlled sequence that can evolve independently per domain.
Migration and Controls
Coexistence with Informatica
Coexistence with Informatica
During migration, ownership remains explicit by domain, attribute, and BU. Non-owner updates create reconciliation work instead of silently overwriting one platform with the other.
Dual-Run Guardrails
Cutover depends on parity thresholds, freeze windows, and rollback capability. Kafka synchronization stays active until the domain or BU is fully transferred.
Operational Controls
Target controls from the design docs include 99.9% business-hours availability, sub-2-second portal/API interactions, daily backups, encrypted storage, and full traceability.
Walkthrough Guide
Questions to use with the developers
Which responsibilities must stay in STARK MDM applications, and which should move into the separate reference platform?
What does MDM need to read from reference services at runtime for validation, translation, and UI guidance?
Which approval flows should be independent for reference changes versus master entity changes?
How do we want teams, APIs, and release cadence to reflect this functional separation?
Open MDM concept documentation
Concept Framing
Two Functional Concepts
The concept is now split into two functional layers: STARK MDM applications that manage Customer, Supplier, and Location records, and a separate reference platform that supplies controlled values, mappings, and validation inputs.
Concept Framing
Clearer Ownership and Control
This makes it easier to discuss which capabilities belong in domain MDM flows versus which belong in shared reference governance. It also creates a cleaner path for access control, lifecycle management, and team ownership.
Prototype Framing
Visual concept, not the final STARK implementation
Prototype Only
This site is a visual concept prototype for architecture and workflow discussions. It is not intended to become the final STARK production implementation.
Target Rebuild
The patterns shown here are meant to be lifted into the real STARK platform stack and reimplemented in the target runtime environment such as Azure and Kubernetes.
Current Scope
The prototype currently implements Location as the first walkthrough domain. Customer and Supplier are intentionally deferred until the Location SDM model and modular MDM foundation are in place, but the target platform must still support all three domains through the same shared core.
API and Integration Ownership
API contracts, endpoint design, integration patterns, and syndication flows are not being finalized in this prototype. Those parts should be designed and implemented by the developers who own the target runtime environment and know the surrounding platform integrations best.
Functional Split
Separate the MDM applications from the reference platform
STARK MDM Applications
Responsibility: Own domain workflows, golden record lifecycle, steward tasks, approvals, duplicate handling, DQ dashboards, and syndication of master entities.
Includes: Customer, Supplier, and Location portals, BFFs, command services, workflow engine, golden record engine, reconciliation, and SDM publishing.
Excludes: Should not own the definition of shared reference codes, external code mappings, or canonical validation dictionaries.
Reference Platform
Responsibility: Own governed reference domains, canonical values, mapping sets, hierarchy support, standards metadata, and deterministic translation rules.
Includes: Reference stewardship UI, value lifecycle, mapping lifecycle, import/export, approval controls, audit trail, and distribution contracts.
Excludes: Should not own master entity workflows, survivorship decisions for business records, or portal task handling for customer/supplier/location changes.
MDM Scope
Location is implemented first on a three-domain target foundation
Customer Domain
Focus: Customer onboarding, enrichment, duplicate control, and CRM/ERP syndication.
Golden record: Golden record for legal entity, contacts, segmentation, consent, and regional attributes.
Stewardship: BU steward enters and fixes data, approver validates governed changes, downstream systems consume SDM output.
Supplier Domain
Focus: Supplier onboarding, compliance attributes, bank details, PEPPOL, and risk controls.
Golden record: Golden record for supplier identity, sourcing attributes, payment details, and regulatory flags.
Stewardship: Sensitive fields stay policy-controlled with explainable approvals and audit history.
Location Domain
Focus: Branch, warehouse, and site hierarchy management with localized business-unit context.
Golden record: Golden record for address structure, usage type, operational flags, and ownership metadata.
Stewardship: Portal workflow supports local updates while preserving group-wide canonical structure.
Location Model
Text version of the extracted target structure
Target Structure In The Prototype
The Location walkthrough now follows the extracted model as four related structures inside one prototype record: Location, Facility, Branch, and Contact.
Address Embedded In Facility
In the supplied diagram, address fields are grouped inside Facility rather than shown as a separate Address entity. The prototype now reflects that structure.
Reference-Driven Attributes
Domain types, classes, statuses, facility types, branch types, contact types, capabilities, countries, and pricing regions are all read from the shared reference store.
Entity Structure
Location to Facility, Branch, and Contact
Location
Role: Top-level entity
Fields: LocationID, LocationSource, LocationName, LocationDomainType, LocationClass, ParentLocationID, CreatedDate, LastUpdateDate, Latitude, Longitude, GLN, Region, BU context.
Facility
Role: Child of Location
Fields: FacilityID, LocationID, FacilitySource, address fields, Country, FacilityManager, PhoneNumber, OperationalHours, OperationalStatus, FacilityType, Capabilities, BUOwnership, Capacity, FirmaCode, PricingRegion.
Branch
Role: Operational sub-entity under the location structure
Fields: BranchID, BranchName, BranchType, BranchSource, OperationalStatus, OpeningHours, ManagerContact, Capabilities, CostCenter, CreatedDate, LastUpdateDate.
Contact
Role: Linked to Facility and/or Branch
Fields: ContactID, BranchID, FacilityID, ContactSource, ContactName, ContactType, ContactEmail, ContactMobile, CreatedDate, LastUpdateDate.
Open Target State Location SDM
Target State
How the Location SDM should be understood
Target State, Not Flat Record Editing
The target state for Location SDM is a nested business structure, not a single flat form. One Location can own multiple Facilities, and each Facility can own multiple Branches, Addresses, and Contacts.
Operational Collections Are First-Class
Addresses and Contacts are collections because the same location structure must support country differences, business-unit extensions, alternate addresses, and several operational contact roles.
Prototype Direction
The prototype should therefore guide developers toward repeatable collections and modular validation per entity type, even if the current persistence layer still stores the structure as one versioned payload.
Golden Record Separation
The target solution should explicitly separate the Golden Record from local or source-specific master data. The Golden Record is the governed cross-domain representation, while local master data or source views can still exist as operational context without being treated as the Golden Record itself.
Cardinality
Relationship model for the target structure
Location -> Facilities
Cardinality: 1 -> 0..n
A single logical location record can contain one or many facilities, for example several operational footprints or country-specific facility nodes under the same governed location.
Facility -> Addresses
Cardinality: 1 -> 1..n
Each facility needs at least one address, but may carry several addresses for operational, legal, delivery, or country-specific use cases.
Facility -> Branches
Cardinality: 1 -> 0..n
A facility can have no branches or several branches, which is the key target-state requirement for the Location domain.
Facility -> Contacts
Cardinality: 1 -> 0..n
Facility-level contacts support shared operational ownership and roles that are not specific to one branch.
Branch -> Contacts
Cardinality: 1 -> 0..n
A branch can carry one or many role-based contacts such as branch manager, logistics lead, or customer pickup contact.
Data Model
Target State Location SDM entities
Location
Purpose: The governed top-level master record for the site concept.
Key attributes: LocationID, LocationSource, LocationName, LocationDomainType, LocationClass, ParentLocationID, GLN, Latitude, Longitude, Region, BU context.
Design note: Carries the cross-domain identity and the attributes that should stay stable regardless of how many child facilities or branches exist.
Facility
Purpose: The primary operational node under a location.
Key attributes: FacilityID, FacilitySource, CountryCode, OperationalStatus, FacilityType, Capabilities, FacilityManager, PhoneNumber, OperationalHours, BUOwnership, Capacity, FirmaCode, PricingRegion.
Design note: Facilities are the anchor for local operational data and the parent of facility addresses, facility contacts, and branches.
Facility Address
Purpose: Address collection attached to a facility.
Key attributes: AddressLine1, AddressLine2, PostalCode, City, RegionState, CountryCode.
Design note: The model should support more than one address because operational and legal usage can differ by country or business process.
Branch
Purpose: Operational sub-entity under a facility.
Key attributes: BranchID, BranchName, BranchType, BranchSource, OperationalStatus, OpeningHours, Capabilities, ManagerContact, CostCenter.
Design note: This is where the target state explicitly needs 0..n instances per facility.
Facility or Branch Contact
Purpose: Role-based contact collection attached to a facility or branch.
Key attributes: ContactID, ContactSource, ContactName, ContactType, ContactEmail, ContactMobile.
Design note: Contacts must be repeatable because one operational node can require several maintained roles and escalation paths.
Physical ERD
Normalized target tables
location (location_id PK)
facility (facility_id PK, location_id FK -> location.location_id)
facility_address (facility_address_id PK, facility_id FK -> facility.facility_id)
facility_contact (facility_contact_id PK, facility_id FK -> facility.facility_id)
branch (branch_id PK, facility_id FK -> facility.facility_id)
branch_contact (branch_contact_id PK, branch_id FK -> branch.branch_id)
Target SQL
Physical table skeleton for the real platform
CREATE TABLE location (
location_id UUID PRIMARY KEY,
bu_code TEXT NOT NULL,
location_source TEXT NOT NULL,
location_name TEXT NOT NULL,
location_domain_type TEXT NOT NULL,
location_class TEXT NOT NULL,
parent_location_id UUID NULL REFERENCES location(location_id),
gln TEXT NULL,
latitude NUMERIC(9,6) NULL,
longitude NUMERIC(9,6) NULL,
region TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE facility (
facility_id UUID PRIMARY KEY,
location_id UUID NOT NULL REFERENCES location(location_id) ON DELETE CASCADE,
facility_source TEXT NOT NULL,
country_code TEXT NOT NULL,
operational_status TEXT NOT NULL,
facility_type TEXT NOT NULL,
capabilities TEXT NULL,
facility_manager TEXT NULL,
phone_number TEXT NULL,
operational_hours TEXT NULL,
bu_ownership TEXT NULL,
capacity TEXT NULL,
firma_code TEXT NULL,
pricing_region TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE facility_address (
facility_address_id UUID PRIMARY KEY,
facility_id UUID NOT NULL REFERENCES facility(facility_id) ON DELETE CASCADE,
address_line_1 TEXT NOT NULL,
address_line_2 TEXT NULL,
postal_code TEXT NOT NULL,
city TEXT NOT NULL,
region_state TEXT NULL,
country_code TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE branch (
branch_id UUID PRIMARY KEY,
facility_id UUID NOT NULL REFERENCES facility(facility_id) ON DELETE CASCADE,
branch_name TEXT NOT NULL,
branch_type TEXT NOT NULL,
branch_source TEXT NOT NULL,
operational_status TEXT NULL,
opening_hours TEXT NULL,
capabilities TEXT NULL,
manager_contact TEXT NULL,
cost_center TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE facility_contact (
facility_contact_id UUID PRIMARY KEY,
facility_id UUID NOT NULL REFERENCES facility(facility_id) ON DELETE CASCADE,
contact_source TEXT NOT NULL,
contact_name TEXT NOT NULL,
contact_type TEXT NOT NULL,
contact_email TEXT NULL,
contact_mobile TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE branch_contact (
branch_contact_id UUID PRIMARY KEY,
branch_id UUID NOT NULL REFERENCES branch(branch_id) ON DELETE CASCADE,
contact_source TEXT NOT NULL,
contact_name TEXT NOT NULL,
contact_type TEXT NOT NULL,
contact_email TEXT NULL,
contact_mobile TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
Open document alignment notes
Document Alignment
What is aligned and what needs confirmation
Aligned with FD/TDD
Domain-oriented modularity
The documents already describe domain-specific portals, shared platform services, SDM alignment, and reusable backend capabilities. The modular architecture in this prototype is a presentation of those same principles.
Aligned with FD/TDD
Country and BU variability
The functional design explicitly calls for multi-BU support, localization, configurable workflows, and governance by domain and BU. Country and BU packs are a scalable interpretation of that requirement.
Aligned with FD/TDD
Location-first phased rollout
Implementing Location first while Customer and Supplier follow later is a delivery sequencing choice, not a contradiction to the target design. The documents describe a broader MDM capability set, and this prototype now makes clear that Location is the first implemented SDM slice on top of that target direction.
Needs confirmation
Golden Record versus local master data separation
The prototype now calls out the need to distinguish Golden Record data from local or source-specific master data. That separation is consistent with the intent of the target design, but it should be made explicit in the target architecture if this is how downstream persistence, stewardship, and publish decisions are expected to work.
Needs confirmation
Functional separation of MDM and reference platform
The design documents strongly support reference/config stores and canonical mapping capabilities, but they do not yet state as explicitly as this prototype that reference management should be treated as a separate functional product area. If that separation is desired, either the solution description or the documents should make it explicit.
Needs confirmation
Prototype versus production platform
The documents describe target production architecture and operations. This prototype now explicitly states that the current implementation is only a visual aid and must be recreated on the real platform stack. That clarification is not a design conflict, but it should be documented so no one mistakes the prototype for the delivery target.
Aligned with FD/TDD
API and integration scope boundary
The current omission of final API contracts, endpoint structure, and syndication implementation in the prototype is intentional. Those concerns belong to the target platform realization and should be detailed by the developers who own the runtime environment, integration layer, and publish architecture.
Gap Analysis
How the current Location MDM prototype maps to FD and TD
Aligned
Location workflow and stewardshipImplemented and demonstrable. The prototype supports draft handling, validation, approval flow, version history, and steward-facing workbench behavior for Location.
Keep this as the baseline walkthrough and use it to validate role flows, UX, and core MDM lifecycle expectations before expanding into more domains.
Partial
Customer and Supplier domainsNot implemented yet by design. The current prototype only runs Location as the first SDM slice.
Document this as a phased rollout: stabilize the shared MDM core with Location first, then onboard Customer and Supplier onto the same modular foundation.
Gap
Golden Record separationOnly partially expressed today. The prototype shows versioned master data, but it does not yet make a fully explicit structural split between Golden Record data and local or source-specific master data.
Make Golden Record separation explicit in the target architecture and data model so stewardship, survivorship, storage, and publish rules can distinguish governed GR content from local context.
Partial
Location target data modelFunctionally represented. The prototype now supports Location, Facilities, Facility Addresses, Branches, and Contacts in the target-state walkthrough, but persistence still uses a versioned payload structure rather than the full physical target model.
Use the documented ERD and SQL skeleton as the handoff model for the target platform implementation, while keeping the prototype payload approach only as a visualization aid.
Aligned
Validation architectureStrongly aligned. Validation is modularized into reusable rules and a registry-based pipeline, with shared logic for references, addresses, contacts, GLN, and coordinates.
Continue growing the rule registry with country packs, BU overrides, and future business-rule modules instead of adding domain logic directly into route handlers or one-off scripts.
Aligned
Reference platform dependencyAligned in concept and in prototype behavior. MDM reads reference-driven values and validations from the separate reference concept rather than hard-coding dictionaries into the domain workflow.
Preserve this contract boundary and let the target platform realize it with formal APIs/events owned independently from MDM workflow services.
Gap
Match, merge, and survivorshipNot implemented. The prototype does not yet behave like a full Golden Record engine with duplicate resolution, survivorship rules, or merge outcomes.
Treat this as a major next capability for the real platform design, and model it as a dedicated engine or service layer rather than folding it into simple CRUD or UI validation logic.
Partial
Workflow/state machine depthSimplified. The current flow is enough for draft, submit, review, and approve, but it is not yet a configurable workflow/state machine per domain, BU, or sensitivity profile.
Let the target platform own richer workflow configuration and orchestration so approval rules can evolve independently of the portal UI.
Aligned
API, integration, and syndicationIntentionally out of scope in this prototype. The current app demonstrates user-facing behavior and concept boundaries, but it does not define the final endpoint structure, runtime contracts, or publish implementation.
Document these as target-platform responsibilities and let the developers who know the integration landscape define the production APIs, event contracts, and syndication patterns.
Gap
Target runtime and non-functional designNot implemented in target form. The prototype is a single concept application and does not realize the production runtime concerns from TD such as service decomposition, OIDC/RBAC, observability, SLOs, or resilience patterns.
Use the prototype as a functional walkthrough only, and treat infrastructure, security, telemetry, and runtime topology as implementation work for the real platform environment.