WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
    • VMware Cloud Foundation 9.1
    • VMware Cloud Foundation 9.0
  • VKS
  • Homelab
    • Hardware Options
    • Hardware Reviews
    • Lab Deployment Scripts
    • Nested Virtualization
    • Homelab Podcasts
  • VMware Nostalgia
  • Apple
You are here: Home / VCF Operations / VCF 9.1 - Automating New License Entitlement Workflow between VCF Operations & VCF Business Service Console (BSC)

VCF 9.1 - Automating New License Entitlement Workflow between VCF Operations & VCF Business Service Console (BSC)

05.18.2026 by William Lam // Leave a Comment

VMware Cloud Foundation (VCF) 9.1 introduces a few new updates with the license entitlement workflow between VCF Operations and VCF Business Service Console (BSC) for users operating in an air-gapped or disconnected environment.

Below is a visual that outlines the workflow between VCF BSC (red) and VCF Operations (orange), along with the new changes in 9.1:


Whether your organization will have a single or multiple VCF Fleets, automation is essential for consistency and operating at scale.

Last year, I had created a PowerShell Module called Broadcom.Community.VCFLicensing that can help users fully automate the end-to-end licensing entitlement process and I am please to share that it has now been refreshed to support VCF 9.1!

Step 1 - Install and/or Update the Powershell Module by running the following command:

Install Module

Install-Module Broadcom.Community.VCFLicensing

Update Module

Update-Module Broadcom.Community.VCFLicensing

Step 2 - Login to VCF BSC portal (https://vcf.broadcom.com) to create an OAuth API Client by navigating to Access Management->OAuth Apps and make a note of the Client ID and Client Secret.

You will also need to make a note of your BSC Tenant ID, which can be obtained by hovering over the info icon next to your SiteID on the left hand navigation.


Step 3 - Create your desired VCF license allocation in the VCF BSC portal by navigating to Licenses section on the left hand navigation. In my example, I have created two license allocations with the following:

  • wlam-vcf with 256 VCF cores
  • wlam-vsan with 256 vSAN TiBs


Make a note of the license allocation labels as they will be referenced in the next step.

Step 4 - Update the following user variables that will be used by the various functions.

$VCF_OPERATIONS_HOSTNAME="vcf01.vcf.lab"
$VCF_OPERATIONS_USERNAME="admin"
$VCF_OPERATIONS_PASSWORD='VMware1!VMware1!'

$VCF_BSC_OAUTH_CLIENT_ID="XXX"
$VCF_BSC_OAUTH_CLIENT_SECRET="XXX"
$VCF_BSC_TENANT_ID="XXX"

$VCENTER_HOSTNAME="vc01.vcf.lab"
$VCF_LICENSE_ENTITLEMENT_NAME="wlam-vcf"
$VSAN_LICENSE_ENTITLEMENT_NAME="wlam-vsan"

Step 5 - Login to both your VCF Operations instance using the Connect-VcfOperations function and Connect-VcfBsc function.

$CWD = (Get-Location).Path

$VCF_OPERATIONS_REGISTRATION_LABEL=$VCF_OPERATIONS_HOSTNAME
$VCF_LICENSE_FILENAME="${VCF_OPERATIONS_HOSTNAME}.lic"
$VCF_VERIFICATION_FILENAME="${VCF_OPERATIONS_HOSTNAME}.verification"

$VCF_VERIFICATION_FILE="${CWD}/${VCF_VERIFICATION_FILENAME}"
$VCF_LICENSE_FILE="${CWD}/${VCF_LICENSE_FILENAME}"

Connect-VcfOperations -Fqdn $VCF_OPERATIONS_HOSTNAME -User $VCF_OPERATIONS_USERNAME -Password $VCF_OPERATIONS_PASSWORD
Connect-VcfBsc -ClientId $VCF_BSC_OAUTH_CLIENT_ID -SecretId $VCF_BSC_OAUTH_CLIENT_SECRET


Note: There are few variable declarations above the connect commands, make sure these are defined as-is or you will have issues following the examples.

Step 6 - Run the Download-VcfOperationsRegistrationFile function to download the registration file from your VCF Operations instance to your local system as shown in the screenshot below.

$DEFAULT_REG_FILENAME = Download-VcfOperationsRegistrationFile
$REGISTRATION_FILENAME = [System.IO.Path]::ChangeExtension($DEFAULT_REG_FILENAME, ".registration")
Rename-Item $DEFAULT_REG_FILENAME $REGISTRATION_FILENAME


Note: There is a known issue where the registration file from VCF Operations will have a file extension of .data but the VCF BSC portal has been updated to require .registration extension and the commands above will handle the file rename.

Step 7 - Register your VCF Operations instance by using the Register-VcfOperations2 function providing the registration file that was downloaded from Step 6 and friendly name to label your VCF Operations instance in VCF BSC portal.

$VCF_OPERATIONS_REGISTRATION_FILE="${CWD}/${REGISTRATION_FILENAME}"

$VCF_OPERATIONS_BSC_ID=Register-VcfOperations2 -TenantId $VCF_BSC_TENANT_ID -RegistrationFile $VCF_OPERATIONS_REGISTRATION_FILE -Name $VCF_OPERATIONS_REGISTRATION_LABEL


Upon successful registration, an ID will be returned for the your VCF Operations instance that is required for future operations and it is automatically stored in $VCF_OPERATIONS_BSC_ID variable.

Step 8 - Next, we need to download the verification file from VCF BSC portal by using the Download-VcfBscVerificationFile function providing the registered ID for our VCF Operations instance and the name of the verification file to save.

Download-VcfBscVerificationFile -TenantId $VCF_BSC_TENANT_ID -VcfOperationsId $VCF_OPERATIONS_BSC_ID -VerificationFile $VCF_VERIFICATION_FILE

Step 9 - We now need to upload the verification file to VCF Operation by using the Import-VcfOperationsVerificationFile function and provide the full path to the verification file.

$VCF_OPERATIONS_CONFIRMATION_FILE=Import-VcfOperationsVerificationFile -VerificationFile $VCF_VERIFICATION_FILE

Upon successful import, VCF Operations will return a confirmation file that will be saved locally.

Step 10 -  The confirmation file needs to be imported to VCF BSC portal by using the Import-VcfOperationsConfirmationFile function to complete the challenge/response process providing the registered ID for our VCF Operations instance and the full path to the confirmation file.

$VCF_LICENSE_SERVER_BSC_ID=Import-VcfOperationsConfirmationFile -TenantId $VCF_BSC_TENANT_ID -VcfOperationsId $VCF_OPERATIONS_BSC_ID -ConfirmationFile $VCF_OPERATIONS_CONFIRMATION_FILE

Step 11 - Assuming Step 3 was completed earlier, we can now retrieve the license allocations from VCF BSC portal and associate that with our registered VCF Operations instance and its associated VCF License Server ID, which was returned from completing the challenge/response process from previous step.

$BSC_VCF_LICENSE_ID=(Get-VcfBscLicense -TenantId $VCF_BSC_TENANT_ID -Name $VCF_LICENSE_ENTITLEMENT_NAME).id
$BSC_VSAN_LICENSE_ID=(Get-VcfBscLicense -TenantId $VCF_BSC_TENANT_ID -Name $VSAN_LICENSE_ENTITLEMENT_NAME).id
$VCF_BSC_LICENSE_IDS=@($BSC_VCF_LICENSE_ID,$BSC_VSAN_LICENSE_ID)

Set-VcfBscLicense2 -TenantId $VCF_BSC_TENANT_ID -LicenseServerId $VCF_LICENSE_SERVER_BSC_ID -LicenseIds $VCF_BSC_LICENSE_IDS -Operation Associate


Note: In my example, I am associating both VCF core entitlement and vSAN TiB entitlement. If you only have VCF entitlements or some other combination, the $VCF_BSC_LICENSE_IDS variable simply just needs to contain the IDs of the license allocations that wish to associate with your VCF License Server.

Step 12 - We are now ready to download our VCF license file by using the Download-VcfBscLicense function.

$VCF_LICENSE_FILE=Download-VcfBscLicense -TenantId $VCF_BSC_TENANT_ID -VcfOperationsId $VCF_OPERATIONS_BSC_ID -LicenseFile $VCF_LICENSE_FILE

Step 13 - For VCF Operations to use the VCF license, we need to import it using the Import-VcfOperationsLicenseFile function with the full path to the license file.

Import-VcfOperationsLicenseFile -LicenseFile $VCF_LICENSE_FILE

Step 14 - Finally, we can assign the VCF entitlements within VCF Operations by using a combination of Get-VcfOperationsVcenters2, Get-VcfOperationsEntitlements and Set-VcfOperationsLicenseAssignment2 functions.

$VCENTER_ID=$((Get-VcfOperationsVcenters2 | where {$_.vCenter -eq $VCENTER_HOSTNAME}).Id)
$VCF_LICENSE_ID=$((Get-VcfOperationsEntitlements | where {$_.Name -eq $VCF_LICENSE_ENTITLEMENT_NAME}).Id)
$VSAN_LICENSE_ID=$((Get-VcfOperationsEntitlements | where {$_.Name -eq $VSAN_LICENSE_ENTITLEMENT_NAME}).Id)

Set-VcfOperationsLicenseAssignment2 -VcenterId $VCENTER_ID -LicenseId $VCF_LICENSE_ID
Set-VcfOperationsLicenseAssignment2 -VcenterId $VCENTER_ID -LicenseId $VSAN_LICENSE_ID

Note: When assigning VCF addon entitlements such as vSAN, VCF core entitlements on that vCenter Server needs to be completed which can take a few seconds. If you attempt to run the VCF addon entitlement immediately after, it may return an error. Simply re-run the operation.

At this point everything should be licensed and you can verify that by logging into the VCF Operations UI and navigating to Manage->Licensing->Licensing & Registration

Similarly, if you login to the VCF BSC portal, you will see that VCF Operations has been fully registered and in compliance.

You will now have up to 180 days before you need to provide a usage report and then download an updated license entitlement from the VCF BSC portal.

Use the Download-VcfOperationsUsageFile function to generate a usage file from VCF Operations.


To upload the usage file into the VCF BSC portal , you will use the Import-VcfOperationsUsageFile function

$VCF_OPERATIONS_USAGE_FILE="Usage-vcf01.vcf.lab-2025-12-16T21_09_14Z.gzip"
Import-VcfOperationsUsageFile -TenantId $VCF_BSC_TENANT_ID -UsageFile $VCF_OPERATIONS_USAGE_FILE


After successfully importing the usage file, you can then download a new license entitlement file by using the same Download-VcfBscLicense function as shown in Step 12.

Categories // VCF Operations, VMware Cloud Foundation Tags // VCF 9.1

Thanks for the comment!Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • VCF 9.1 - Configuring vSphere Supervisor to use VCF Identity Broker (IDB) for External Identity Federation 06/08/2026
  • VCF 9.1 - Quick Tip: Understanding VCF Installer Default Behavior for VCF Patch Releases 06/07/2026
  • VCF 9.1 - Quick Tip: Upgrading ESX Hosts with Non-Certified vSAN ESA NVMe Devices in SDDC Manager 06/06/2026
  • VCF 9.1 - Deploying VCF Automation (VCFA) to non-Management Network 06/05/2026
  • VCF 9.1 - Deploying VCF Management Services (VCFMS) to non-Management Network during VCF Upgrade 06/03/2026
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.

To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2026

Loading Comments...