Platform Admin Service — Migration Plan
Status: populated Owner: TBD Last updated: 2026-04-18
1. Migration scope
platform-admin-service is a new service extracting functionality previously scattered across:
| Legacy location | New home | Notes |
|---|---|---|
Monolith platform-config module | platform-admin-service PlatformConfig | Schema normalized; allow-list enforced |
Monolith feature-flags module | platform-admin-service FeatureFlag | Evaluation logic extracted; Redis cache standardized |
| Ad-hoc health endpoints | platform-admin-service HealthSource | Dynamic registration replaces hardcoded list |
2. Legacy FR mapping
| Legacy prefix | New prefix |
|---|---|
FR-ADM-CFG-* | FR-PLTADM-CFG-* |
FR-ADM-FF-* | FR-PLTADM-FF-* |
FR-ADM-HLT-* | FR-PLTADM-HLT-* |
FR-ADM-ENH-* | FR-PLTADM-ENH-* |
3. Migration phases
Phase 1 — Config extraction (M0)
- Create
platform_adminschema; run migrations. - Export existing config KV from legacy monolith table.
- Validate all keys against code allow-list; log unknown keys for review.
- Deploy platform-admin-service; route
/admin/platform-configfrom monolith. - Verify config reads produce consistent results.
Phase 2 — Feature flag extraction (M0)
- Export existing feature flags from legacy module.
- Migrate tenant override arrays to new schema.
- Validate evaluation logic parity (test 50 sample flag+tenant combinations).
- Route evaluate endpoint from services to
/internal/admin/flags/:key/evaluate. - Legacy evaluate endpoint remains in monolith behind compatibility header for 30 days.
Phase 3 — Health source migration (M1)
- Replace hardcoded health endpoint list with dynamic registration.
- Update each service's startup to call
POST /internal/admin/health/sources. - Verify aggregate health reflects all 27 services.
- Remove legacy health aggregation from monolith.
Phase 4 — Compatibility route sunset (M2/M3)
- Remove legacy
/api/platform/*compatibility routes after 30-day verification. - Update any clients still using legacy paths.
4. Rollback plan
| Phase | Rollback |
|---|---|
| Phase 1 | Feature flag PLTADM_SERVICE_CONFIG_ENABLED=false re-routes to monolith |
| Phase 2 | Evaluate compatibility route kept; monolith flag eval remains active |
| Phase 3 | Hardcoded source list re-enabled via config flag |
5. Open questions
- Are there any tenant-scoped config keys in the legacy system not in the current allow-list?
- Feature flag migration: which flags are currently active and must not be interrupted?