vs. Legacy.
Every legacy AdminConsole, ClientConsole, SuperAdmin, and Client Central surface, mapped to its modern equivalent — and the capability that's new. This is the page to forward to anyone who's lived inside the Millin stack for a decade.
AdminConsole / SuperAdmin → /platform/*
Platform-operator surfaces — the things only the platform team can do. Legacy stacks scattered these across half a dozen tools and a lot of DBA-driven SQL. The new platform consolidates them into a single platform-JWT-gated console.
/platform/tenants/new Region + Postgres-server placement is previewed before commit; tenant DEK + Key Vault secret + initial admin user are seeded in one async job.
/platform/tenants/:id/move Capacity headroom on the target server is shown alongside the move; audit lands in master + tenant simultaneously.
/platform/tenants Filters cover active / read-only / suspended / off-boarding; region + brand + Postgres-server columns visible without leaving the page.
/platform/db-servers Tenant-per-server count and headroom visible at a glance; no T-SQL queries against system tables required.
/platform/nppes Monthly full + weekly delta cadence is platform-managed; URL templates editable without a redeploy; manual ingest available per run.
/platform/env-config Source of truth lives in Terraform + Azure Key Vault; the surface is a viewer, not an editor — no config drift between Portal clicks and IaC.
/platform/federation JWT keypairs follow staged → active → superseded → revoked. Up to two active keys per partner during rollover; revoke propagates platform-wide in < 30 s.
/platform/tenants/:id/impersonate Live banner in the impersonated session; audit lands in both master and tenant; TTL enforced server-side.
/platform/audit Every platform-JWT action recorded; cross-tenant queries are first-class; retention class + legal-hold flag per row.
/platform/account/security TOTP + WebAuthn + recovery codes; phishing-resistant policy enforceable; FIDO MDS3 sync gates trusted authenticator models.
Azure-native, not custom: nine production KQL alert rules ship with the platform; alerts route to email / Slack / PagerDuty via Action Group.
ClientConsole / Client Central → /admin/*
Tenant-operator surfaces — the things customer ops + billing leaders need to run their own organisation. Legacy stacks put dozens of forms behind a stored-procedure backend; the new platform exposes each domain as a configuration surface.
/admin/users RBAC matrix editor; per-user effective-scope drawer; audit drawer per row; every change captures actor + before/after.
/admin/providers EMR↔NPPES discrepancies detected at ingest; suppression list per row; taxonomies and endpoints kept in sync via the platform refresh schedule.
/admin/sites Each org-structure entity becomes a scope dimension in the rules engine; no more "we forgot to update the dropdown" bugs.
/admin/payers A single source of truth per payer; submission capabilities (270/271/276/277/278/837P/I) enforced at config time, not discovered in production.
/admin/contracts Deep-link to the payer + program scope; expiry alerts surface contracts before they lapse.
/admin/fee-schedules UI grid; CSV import; per-row validation against the master procedure catalog; effective-dating + draft → published lifecycle.
/admin/rules/PRE_SUBMIT_VALIDATE Content-addressed artifacts; draft → in-review → approved → published lifecycle; simulator paste-a-claim → winning rule + also-rans.
/admin/modifiers Five trigger families (credential / POS / time / telehealth / group) shown side-by-side; simulator returns winning + losing rules to make precedence explicit.
/admin/states Read aggregator that deep-links into the rules / fee-schedules / contracts scoped to the state — no more grepping the database for `OH_`.
/admin/ingestion Mappings are YAML-versioned; visual editor + Monaco; dry-run + diff before publish.
/admin/audit Retention class assigned per row; legal-hold flag prevents deletion; cross-references the actor and the affected resource.
/admin/security/mfa-policy TOTP + WebAuthn factors configurable; phishing-resistant requirement toggleable; enforcement window dated.
/admin/federation Standards-based JWT (RFC 7519) + JWK (RFC 7517); customer-side keypair management; 30 s revoke propagation across instances.
Specialized utilities → modern surfaces
Legacy stacks shipped a constellation of single-purpose utilities: a Trading Partner Tool, a Companion Guide editor, an EDI Replay Tool, and a stack of T-SQL stored procedures for every recurring need. The new platform folds these into the rules engine + EDI operator console.
/trading-partners Per-partner capability matrix (270/271/276/277/278/834/835/837P/I/999/TA1); credentials sealed in Key Vault; test-connection per row.
/companion-guides Monaco editor; live preview pane re-assembles a sample 837 / 270 as you type; rule scope per partner + transaction type.
/routing Precedence simulator returns the winning + the losing rules; paste a claim, see the resolution.
/replay "We lost a batch" becomes a UI click. DLQ visibility; idempotent re-submit; audit per replay.
/platform/nppes NPPES loaded once for the platform, not once per customer. URL templates editable without a redeploy.
/admin/ingestion/mappings Diff between versions; dry-run before publish; rollback by re-publishing a prior version.
/admin/rules INGEST / CHARGE_VALIDATE / CHARGE_DERIVE / CLAIM_BUILD_GROUPING / PRE_SUBMIT_VALIDATE / COMPANION_GUIDE_VALIDATE / POSTING / EVV_CONFIG. Each artifact is content-addressed and effective-dated.
Materialised view exposes success rate per CARC; new handlers are TypeScript functions registered against a CARC, not stored procedures.
Stored procedures → declarative, configurable rules
The biggest architectural difference is the disappearance of T-SQL stored procedures as the carrier of business rules. Every recurring legacy "sproc category" has a configuration surface counterpart on the new platform.
Per-payer scrubbers become per-payer rules with effective dating and a simulator.
Per-payer / per-state requirements become rules; simulator returns the winning rule.
Five trigger families exposed as configuration; precedence is explicit, not buried.
States become a scope dimension; the navigator deep-links the rules / fee schedules / contracts.
Segment-level overrides expressed as rules; the live preview surfaces the resulting 837.
Resolution is explainable: every match returns the winning + losing rules and the specificity score that broke the tie.
Group-size bands + supervisor rules + triggers are first-class canonical entities, not sproc state.
EVV requirements expressed as configuration; state-by-state rollouts are a YAML change.
The legacy model is one custom integration project per partner; the new model is one self-service partner registration per partner.
Drill into the new surfaces.
The comparisons above point at configuration surfaces, rules engines, and EDI flows. Each has a dedicated capability page.
Configuration & Rules
Eight rule-set kinds, content-addressed artifacts, scope precedence, lifecycle state machine, simulator.
EDIEDI Engine
Every X12 transaction, every routing rule, every replay capability. Trading-partner directory + companion-guide editor + live preview.
AppRCM Application
Every tenant workflow and Configuration tab. 22 admin surfaces, 8 platform surfaces, 12 EDI operator surfaces.