VMware to OpenShift Virtualization — Article 4 of 15
Technical baseline: OpenShift Virtualization 4.20 and MTV 2.11 documentation. Reviewed 31 October 2026. Examples are instructional and have not been executed against a production cluster; check your installed release, support matrix, and environment before use.
A successful VMware-to-OpenShift migration moves an application service with its data, connectivity, recovery procedures, and ownership. Copying a virtual disk is only one stage. This strategy provides a phased delivery model with measurable acceptance gates and a practical rollback boundary.
- Phase 1: discover the application estate
- Phase 2: qualify the destination
- Phase 3: choose the migration method
- Phase 4: run a representative pilot
- Phase 5: build dependency-aware waves
- A reusable cutover runbook
- Rollback before and after target writes
- Turn discovery into a technical preflight
- Design network and storage maps as reviewed artifacts
- Calculate the cutover window from measured stages
- Schedule the decision points explicitly
- Test hooks and automation as production changes
- Acceptance and decommissioning
Phase 1: discover the application estate
Build one migration record per VM, then group records into applications. Capture owner, business criticality, OS and firmware, CPU and memory, disk layout and used capacity, networks, IPs, dependencies, backup policy, recovery objectives, maintenance window, and vendor support requirements.

Record exceptional devices and configurations separately: passthrough, shared disks, encryption, appliances, legacy operating systems, and tight licensing dependencies. Do not assume every item in vCenter is eligible simply because its disk can be copied.
Phase 2: qualify the destination
Prepare storage classes, VM networks, namespaces, quotas, RBAC, monitoring, guest access, and backup integration. Demonstrate a restore before moving a critical application. Capacity approval must include node-maintenance reserve and temporary migration resources, not only the final VM footprint.
Use the installed product’s supported source and guest matrix. MTV 2.11 documents cold and warm migration workflows and their provider prerequisites. Review the MTV planning reference before committing a wave.
Phase 3: choose the migration method

| Method | Suitable use | Planning consequence |
|---|---|---|
| Cold migration | A shutdown window can cover transfer and conversion | Measure end-to-end downtime using a representative VM |
| Warm migration | Bulk data should transfer before the outage | Budget for remaining changes, conversion, boot, and validation |
| Application-level migration | The application provides replication or a supported relocation method | Coordinate consistency and cutover with the application owner |
| Rebuild and restore | Standardized target build is preferable to carrying forward the source | Prove restore completeness and configuration reproducibility |
VMware-to-OpenShift warm migration is not a transfer of the running guest’s memory state. It still has a cutover outage. Do not confuse it with live migration of an already running OpenShift VM.
Phase 4: run a representative pilot
Select examples covering the estate’s real variability: Windows, Linux, large disks, multiple interfaces, high write rates, and at least one dependency-rich application. A small idle test VM is useful for connectivity, but cannot validate a production migration window.
Measure preparation time, initial copy throughput, delta growth, conversion duration, boot duration, application validation time, and operator effort. Record failures as reproducible conditions with a named remediation owner. Re-run the affected test after changing the design.
Phase 5: build dependency-aware waves
Group applications by dependency and recovery boundary. Keep tightly coupled components together unless their cross-platform connectivity is already proven. Give shared infrastructure such as DNS, identity, monitoring, and backup special attention because many waves depend on it.
For every wave define an execution owner, application validator, network contact, storage contact, rollback approver, latest safe abort time, and communications schedule. Limit concurrency using measured source read load, network capacity, target write load, and conversion resources.
A reusable cutover runbook
- Confirm backups, restore evidence, change approval, and target readiness.
- Freeze incompatible source changes and confirm the exact VM list.
- Stop or quiesce application writes according to its consistency procedure.
- Perform the selected migration’s cutover and record timestamps.
- Verify target disks, interfaces, guest boot, time, and identity.
- Execute application transactions and dependency checks.
- Switch traffic or identity controls as designed, then observe real clients.
- Obtain explicit acceptance and start the agreed observation period.
Define stop conditions in advance: missing disks, failed consistency checks, unexpected network exposure, exhausted outage budget, or inability to prove the active writer. Do not invent acceptable limits during the outage.
Rollback before and after target writes
Before the target accepts authoritative writes, rollback can often involve isolating and stopping the target, confirming source consistency, and returning service to the source. It is still a documented procedure, not a guarantee.

After the target accepts writes, the original source may be stale. Restarting it without a data reconciliation plan can lose transactions or create split brain. The rollback design must specify replication, export/import, restore, or application recovery steps, with a business-approved recovery point. MTV is not an automatic bidirectional application rollback system.
Turn discovery into a technical preflight
Use automated collection to establish facts, then have owners resolve the exceptions automation cannot judge. A read-only PowerCLI inventory can capture identifiers and basic sizing after connecting to the intended vCenter:
$sourceServer = Connect-VIServer -Server 'vcenter.example.com' -Credential (Get-Credential)
$inventory = Get-VM -Server $sourceServer | ForEach-Object {
[pscustomobject]@{
Name = $_.Name
SourceMoRef = $_.ExtensionData.MoRef.Value
InstanceUuid = $_.ExtensionData.Config.InstanceUuid
PowerState = $_.PowerState
vCPU = $_.NumCpu
MemoryGB = $_.MemoryGB
Firmware = $_.ExtensionData.Config.Firmware
GuestId = $_.ExtensionData.Config.GuestId
Host = $_.VMHost.Name
}
}
$inventory | Export-Csv -LiteralPath '.\migration-inventory.csv' -NoTypeInformation
Replace the example server and authenticate with an approved read-only inventory account. The connection object comes from Connect-VIServer. This inventory does not collect application dependencies, authoritative guest filesystem use, or support eligibility. Add disk, network, snapshot, and performance collection using supported APIs, then join the results by source ID rather than display name.
Classify each preflight result as pass, fail, or requires review. Missing information must remain visible. For example, an unknown application owner is not a pass, and an unsupported guest should not be quietly dropped from the report. Give each failed item a remediation owner and recheck date.
Design network and storage maps as reviewed artifacts
| Source fact | Target decision | Validation |
|---|---|---|
| Port group and VLAN | Actual destination attachment | Guest-to-gateway and client tests |
| Static IP and routes | Preserve or change through an approved method | Address, DNS, return path, no duplicate identity |
| Datastore and disk layout | Destination class and per-disk allocation | Capacity, access mode, latency, disk completeness |
| Firmware and boot disk | Supported target configuration | Repeated successful boot |
| VM placement constraints | Target pool and policies | Scheduling plus maintenance destination |
Version these maps with the wave. A last-minute change to a shared mapping can affect more VMs than the operator intended. Freeze the reviewed configuration for execution or explicitly revalidate the affected plan after changes.
Calculate the cutover window from measured stages
For a warm migration, a useful planning decomposition is:

Outage budget =
application quiesce/shutdown
+ final changed-data transfer
+ guest conversion/finalization
+ target boot and guest initialization
+ network/traffic transition
+ application validation
+ contingency
Suppose the final delta is 40 GiB and the measured effective copy rate is 200 MiB/s. Its transfer component alone is about 205 seconds. If shutdown takes 5 minutes, conversion 12, boot 6, traffic transition 3, and validation 15, the subtotal is roughly 44.4 minutes before contingency. An advertised fast disk copy does not turn that into a five-minute outage.
Measure the slow tail across representative pilots. Use the agreed confidence margin and reserve enough time to roll back before the window closes. For cold migration, replace final-delta transfer with the full required transfer and account for any different conversion behavior.
Schedule the decision points explicitly
A runbook should contain timestamps or elapsed-time gates, not only a sequence of commands. Define when preflight closes, when application writes stop, when target boot must succeed, when acceptance must finish, and the latest safe rollback start.

If rollback takes 20 minutes and the outage window ends at 02:00, a 01:55 decision is already too late. Work backward from the recovery deadline and include validation of the restored source. Use one agreed time zone in the change bridge and retain UTC timestamps in execution records where practical.
At each gate, record proceed, hold, or rollback with the evidence and decision owner. A green migration console should not overrule a failed business transaction or an unidentified active writer.
Test hooks and automation as production changes
Migration hooks can prepare or validate an application, but their failure behavior must be defined. Use bounded execution, clear exit codes, sanitized logs, and idempotent actions where possible. A hook that stops a service must have a documented recovery path if the next stage fails.
Do not hide destructive database operations or broad infrastructure changes inside a migration hook. Keep the application consistency procedure reviewable by its owner. Test hook behavior when the network fails, credentials expire, the service is already stopped, and the hook is run again.
Acceptance and decommissioning
| Gate | Required evidence |
|---|---|
| Technical | Correct disks, networks, CPU/memory, guest agent, monitoring |
| Application | Successful business transactions and scheduled jobs |
| Performance | Agreed latency and throughput against baseline |
| Protection | Target backup completed and restore process validated |
| Operations | Ownership, alerts, patching, access, and runbook handed over |
Retain the source according to the approved rollback period, isolated from accidental startup where appropriate. Decommission only after retention, licensing, inventory, and backup records are reconciled. Continue with MTV internals and the enterprise architecture.
Explore the complete series
- VMware vs OpenShift Virtualization: Complete Technical Comparison
- OpenShift Virtualization Architecture Explained
- Understanding KubeVirt, VM and VMI
- VMware to OpenShift: Complete Migration Strategy
- MTV Architecture and Internal Working
- OpenShift Virtualization Networking Deep Dive
- OpenShift Virtualization Storage Deep Dive
- OpenShift VM Live Migration Explained
- OpenShift Cluster Sizing for Virtualization
- Migrating Windows VMs Using MTV
- Migrating Linux VMs Using MTV
- VMware PowerCLI vs OpenShift CLI
- Building OpenShift PowerShell Cmdlets
- OpenShift Virtualization Troubleshooting Guide
- Enterprise-Scale VMware to OpenShift Migration Architecture