Upgrading a vSphere 8 Brownfield Workload Domain to VCF 9: My Step-by-Step Guide

Welcome back! I’m going to walk you through exactly how I upgraded an imported vSphere 8 brownfield workload domain to VMware Cloud Foundation (VCF) 9.0.2.

If you remember from my last post, we ran into a “back-in-time” trap when we initially tried to import this workload domain. I’ve since fixed that by aligning my NSX versions, and everything is ready to go. Upgrading from 8 to 9 is a multi-step journey, with a few bumps along the way, so I want to share exactly how I navigated the entire process.


Phase 1: Initial Pre-Checks & the Backup Hustle

The very first thing I did was log into my VCF 9 portal, head over to Fleet Management and Lifecycle, and run a pre-check targeting version 9.0.2. VCF is incredibly thorough, and it immediately flagged two missing requirements: I needed valid backups for both vCenter and NSX.

  • Fixing the vCenter Backup: I logged directly into the vCenter appliance management interface (VAMI) as root. From there, I configured a standard FTP backup location, set a strong encryption password, and manually triggered the backup.
  • Fixing the NSX Backup: I logged in to the NSX Manager UI to verify my backup configurations.

🚨 Gotcha Alert: The NSX Backup False Positive Even after my NSX backup showed as “Successful” in the NSX UI, the VCF pre-check continued to throw an error. VMware actually has a KB for this exact symptom: it’s a known UI quirk. If your backups are completely successful on the NSX side, you can safely ignore this error in VCF and proceed with the upgrade.

Here is the KB –>> https://knowledge.broadcom.com/external/article/383528/backup-configuration-error-in-the-upgrad.html


Phase 2: Upgrading NSX Managers & Edges

With backups sorted, the first actual upgrade phase targets the NSX Managers and Edge nodes (we save the ESXi hosts for later). I double-checked that all my target binaries (NSX, ESXi, vCenter) were properly downloaded in SDDC Manager under Lifecycle Management, and then I scheduled the upgrade.

🚨 Gotcha Alert: “Precheck Already Running” During my first attempt, the task failed with a message saying: “NSX precheck already running. Please wait until this completes.” The fix for this was surprisingly simple. I followed a VMware KB —>>> https://knowledge.broadcom.com/external/article/414698/nsxt-upgrade-precheck-from-vcf-operation.html
that advised rebooting the three NSX Managers. After the reboot, I re-ran the workflow, and it went through perfectly.


Phase 3: The vCenter Switchover

Upgrading to vCenter 9 uses a parallel deployment method to keep downtime to an absolute minimum.

When I kicked off the vCenter upgrade, the wizard asked me for a temporary IP address. Behind the scenes, VCF automatically deployed a brand new vCenter 9 OVA alongside my existing vCenter 8 appliance. Once the new vCenter was prepped and ready, the system performed a seamless switchover—shutting down the old vCenter, migrating the data, and taking over the original IP address.


Phase 4: Upgrading ESXi Hosts (The Heavy Lifting)

This was arguably the most demanding part of the upgrade. You cannot upgrade hosts to version 9 if your cluster is still using legacy Baseline lifecycle management. I had to transition the cluster to Image-based management (vLCM) first.

Here is how I tackled it:

  1. Converted to Image-Based: I went into vCenter and set the cluster to use an image.
  2. Imported the Legacy Image: Because SDDC Manager only natively supports VCF 9 images, I had to manually import my current vSphere 8 image from vCenter into SDDC Manager so it would recognize my starting point.
  3. Ran the Transition Script: I downloaded the official script from this KB —> https://knowledge.broadcom.com/external/article?articleNumber=385617 , connected it to my vCenter via CLI, and followed the prompts to cleanly transition the cluster.

🚨 Gotcha Alert: SDDC Manager Depot Error I hit one final error stating my SDDC Manager depot was missing in the vCenter patch store. To fix this, I simply went into vCenter Lifecycle Manager settings, added a new download source pointing to VCF 9, and enabled it.

Once that was resolved, my pre-checks passed cleanly. I scheduled the host update, and VCF took over—automatically placing hosts into maintenance mode, vMotioning my VMs, applying vSphere 9.0.2, and rebooting them one by one.


Phase 5: Finalizing NSX and Reaping the Rewards

Once all the ESXi hosts were successfully running vSphere 9, the NSX upgrade workflow (which had paused earlier) automatically resumed, upgrading the NSX components on the hosts.

After a final check of the inventory, every single build showed as 9.0.2.

The best part? I can now leverage the full VCF 9 experience. Everything from Fleet Management to centralized certificate management and unified operations is available right from the new Single UI.