What it is
The VPN-to-ZTNA Migration Plan is a practical playbook for moving from a flat, network-level VPN to zero-trust network access — replacing 'on the network = trusted' with per-application, identity-and-posture-based access, without a risky big-bang cutover. It opens with a side-by-side model comparison (network-level vs. per-request trust; whole-subnet reach vs. only granted applications; largely-unrestricted lateral movement vs. default-deny app isolation; public VPN concentrator vs. no inbound ports; coarse IP/port logs vs. per-user, per-app session logging) so the case for migrating is concrete, then lays out five phases from inventory through VPN decommission.
The phases are sequenced to be reversible. Phase 1 inventories every app reached over VPN — hostname, ports, location, owner — maps who needs each and from what devices, and classifies apps by protocol fit (web/HTTP migrates easily; thick-client, server-initiated, or peer-to-peer protocols need agent-based connectors, not clientless). Phase 2 stands up the ZTNA broker and outbound-only connectors, integrates SSO/IdP, and defines per-app policy (identity groups, MFA, device posture) with default-deny segmentation. Phase 3 runs VPN and ZTNA in parallel, onboarding a pilot and migrating low-risk apps first while VPN stays as fallback. Phase 4 cuts over per app by removing each app's VPN route once ZTNA is proven — the moment the flat path actually closes — keeping a documented rollback. Phase 5 decommissions the VPN, closing inbound ports and reclaiming licenses while keeping a tested break-glass path.
It's built around the failure modes that make migrations painful: protocols that clientless ZTNA can't broker, posture signals that aren't trustworthy enough to gate on, hard-coded IPs and service-to-service calls that assumed a flat network, and the temptation to skip the parallel phase and turn every edge case into a same-day outage. The plan enforces the app-by-app, fallback-protected sequence that keeps the migration boring. It builds on the endpoint posture checklist (the device conditions ZTNA enforces) and realizes the network-layer side of the zero-trust security checklist.
What it's used for
VPNs grant flat network reach and broad lateral movement that zero trust is meant to eliminate, but ripping one out carelessly causes outages. Teams use this plan to migrate deliberately, app by app:
- ✓ Planning a full VPN-to-ZTNA migration as a phased, reversible project rather than a big-bang cutover that turns every edge case into a same-day outage.
- ✓ Inventorying every application reached over the VPN — hostname, ports, location, owner, and who needs it — as the baseline the whole migration is sequenced from.
- ✓ Classifying apps by protocol fit so web/HTTP apps migrate clientless while thick-client, server-initiated, and peer-to-peer protocols are designed for agent-based connectors instead of silently failing.
- ✓ Standing up the ZTNA broker with outbound-only connectors and default-deny segmentation, eliminating the public VPN concentrator and its open inbound ports.
- ✓ Defining per-app access policy on identity, MFA, and device posture, so 'on the network' stops meaning 'trusted' and each app is reachable only by its named policy.
- ✓ Running VPN and ZTNA in parallel with the VPN as fallback, migrating low-risk apps first and moving users' muscle memory before any route is removed.
- ✓ Cutting over and decommissioning safely — removing each app's VPN route only after ZTNA is proven, keeping a documented rollback, and retaining a tested break-glass path after the concentrators are shut down.
Who uses it
A VPN-to-ZTNA migration touches networking, security, identity, and every app owner. The plan coordinates them through its phases.
Context & good to know
The VPN's defining weakness is its trust model: once you're connected, you're 'on the network,' and the network largely trusts you. That means broad subnet reach, mostly-unrestricted lateral movement, and a public-facing concentrator with open inbound ports — exactly the conditions that let one compromised credential or device roam. ZTNA inverts this: nothing is reachable by default, each application is granted individually based on verified identity and device posture, connectors make only outbound connections so there are no inbound holes, and every session is logged per-user and per-app. The migration is how you trade the flat model for the verified one.
Protocol fit is the technical reality that derails naive migrations. Web and HTTP apps move easily — often clientless, through a browser. But thick clients, server-initiated protocols, and peer-to-peer traffic (think certain RDP setups, SMB, legacy line-of-business apps) can't be brokered by clientless ZTNA; they need an agent-based connector, and if you don't design for that up front they simply fail to migrate, silently, at cutover. Classifying every app by protocol fit in Phase 1 is what prevents that surprise.
The parallel-run phase is the difference between a calm migration and a string of outages. Running VPN and ZTNA side by side, with the VPN still serving each app as a fallback until ZTNA is proven for it, means every edge case — a hard-coded IP, a service-to-service call that assumed same-subnet reachability, a license server that expected a flat network — surfaces while there's still a working path. Skipping parallel run turns each of those into a same-day, all-hands outage. The plan's app-by-app cutover, where the VPN route is removed only after soak passes, keeps a rollback available at every step.
Two things are easy to forget and expensive to skip: posture trustworthiness and break-glass. Posture is a core ZTNA control, but if your EDR/MDM coverage is patchy, posture conditions will either block legitimate users or wave through unhealthy ones — which is why the endpoint posture checklist is a prerequisite, not a nice-to-have. And once the VPN is gone, an IdP or broker outage can lock out all remote access; the plan insists on keeping a minimal, tested break-glass path documented after decommission. Done right, the migration ends with no public inbound ports, no flat reach, and far better visibility — the network-layer realization of zero trust.