Context. An estate that grew alongside the platform, with approaches that were the standard of their day: legacy access policies on various objects, admin credentials where managed identities are used today, database access still on SQL logins.
Constraints. Everything in production: no downtime was acceptable, and every change had to be reversible.
Decision. I worked in modernisation campaigns, always with the same method: inventory, changes generated as reviewable scripts, rollback ready. Access policies moved to RBAC, credentials to managed identities; for the SQL logins an explicit cycle: inventory, disable, thirty days of observation, then the drop.
Outcome. Dozens of resources moved to the current standard with no downtime, and every step could be undone at zero cost.