Extracted from ../../other/migration-benchmark.md.
- v0.1 — Placeholder created during gap-analysis pass; awaiting Benchmark_Editable DB
- v1.0 — POPULATED — comprehensive schema review complete:
- §1: 150 Benchmark tables inventoried; 9 key domains identified (Projects, Items, Resources, Libraries, Codes, Subcontracting, Commercials, Audit)
- §2: Entity mapping table populated with 15 major entity pairs + cardinality + transformation notes
- §3: Field-level mapping completed for 13 key entities (project, project_item, item_library, resource_library, subcontractor_quote, etc.)
- §4: 14 lost concepts identified and handled (spread mechanics → Rules, ranges → archive, currency variants → AUD, etc.)
- §5: 8 new concepts requiring post-migration setup (Output Unit, Codes, Reference Rates, Anomaly Review, etc.)
- §6: Data cleaning rules defined (unit mapping, duplicate resources, stale rates, orphaned records, plugged rates, variables, calculations)
- §7: Cutover plan fleshed out with Alpha + Release phases, validation strategy, rollback procedure
- §8: 8 open items documented for decision/clarification
- v1.1 — Four key decisions locked in:
- Code naming — Benchmark
activity→ oxFlow Workcentre (on Items); Benchmarkcost_code→ oxFlow Activity Code (on Resources). Two separate Code dimensions, aligned with Workbench naming. - Rate history — Migrated into oxFlow as archived Price Books with date-range scopes (not discarded, not in audit log only). Feeds Anomaly Review historical comparison (Release).
- Monte Carlo ranges — Discarded. Consciously out of scope.
- Output Unit — Sourced directly from Benchmark’s item unit field (typically defined).
- Updated §2 mappings, §3.7 (resource_rate), §3.8 / §3.9 (Codes), §4 (Lost), §5 (New), §7 (Cutover), §8 (Open items).
- Code naming — Benchmark
- v1.3 — Flag Catalog + Modifier Catalog model per Resource entity spec v0.3:
- Benchmark Resource-level fields mapped to locked catalog model (admin-seeded, Lead Estimator editable)
- Flags: 6 boolean fields (isplugged, iscartage, isgst, iscurrency, isexchlocked, donotinflate) → Flag Catalog entries
- Modifiers: 5 numeric fields (factor, wastage, flagfall, mindistance, crewsize) → Modifier Catalog entries with math operations
- Admin catalog seeding plan: use Benchmark field names & types as initial entries; migration script generates seed SQL
- Updated §3.6 (RESOURCE_LIBRARY field mapping with explicit Flag/Modifier columns), §4 (removed false “lost concept” entries for cartage/factor/wastage), §5 (Flag + Modifier Catalog as new locked models)
- v1.2 — Added plug_rate mapping per Item spec v0.3 update:
- Benchmark
project_item_rateonly(flag) +project_item_rateonlyamount(value) → oxFlowItem.plug_rate(nullable number) - When rateonly=‘Y’ and rateonlyamount is set, migrate to plug_rate; otherwise default to null
- Item status auto-derived from Worksheet content (Priced if resources present, Plugged if plug_rate set)
- Updated §3.3 (PROJECT_ITEM → ITEM mapping table)
- Benchmark