The Bronze-Silver-Gold medallion engine for Epicor Kinetic to D365 data migration — extraction from Epicor via REST, DMT and BAQ, the canonical lookup model, key management and cross-reference tables, idempotent reruns, the reconciliation harness, data-quality gates, and the load path into D365 via DMF.
The previous chapter set the programme's shape: mode, waves, team and gates. This chapter goes one layer down — into the engine that actually moves data from Epicor to D365.
Bronze is the raw landing zone: verbatim Epicor data, landed immutably, partitioned by source system, table, load date and run ID. A Bronze partition is never overwritten — re-extracting the same data creates a new partition alongside the previous one, making replay, forensic audit and "what did the source look like on extraction day"…
Silver is the conformed, typed, de-duplicated layer. Raw Epicor data is resolved against the canonical lookup model — a governed registry of every concept that needs translation from Epicor to D365.
Epicor uses natural keys (PartNum, CustNum, OrderNum, JobNum). D365 uses a combination of natural keys (number sequences) and surrogate keys (RecId). The engine maintains cross-reference tables that map every Epicor natural key to its D365 equivalent:
Gold is the final transformation: Silver canonical output shaped to the exact contracts of D365 DMF data entities. Each Gold output file matches a specific data entity's field set, data types, enumerations and foreign-key references. The Gold layer is where:
Within a wave, entities must load in referential-dependency order. A simplified sequencing for Wave 2 (master data):
Reconciliation is built into the engine at every tier boundary, not bolted on after the load completes. Each transform emits reconciliation metadata; the harness compares:
The engine is hardened along six axes, each a design target proven in dress rehearsals:
Three full dress rehearsals at production volume is the minimum. Each serves a distinct purpose:
The medallion engine moves Epicor data through three governed tiers — Bronze (raw, immutable), Silver (canonical, conformed), Gold (D365-entity-shaped) — into D365 via DMF, with reconciliation built into every tier boundary. The canonical lookup model prevents mapping inconsistency. Cross-reference tables maintain key traceability.