After upgrading VMware vCenter Server from version 8.0 to 9.1, you may encounter the following issues when attempting to enable/reconfigure vSphere High Availability (HA) on a cluster running 8.0 ESXi host.
The operation fails with the error message: License not available to perform the operation.
The vSphere Client may display a secondary warning: Make sure the License Service is available.
The issue persists even after a valid vCenter 9.x license has been successfully applied to the environment.
/var/log/vmware/cis-license/license.log on vCenter contains below error,
YYYY-MM-DDTHH:MM:SS ERROR CISLicense 54 [vc@4413 threadName="invocation-vmomi-executor-3" logger="server.core.oldmanagement.vmomi.LicenseAssignmentManagerMoImpl" opId="########-####-####-####-############"] Unable to store license entity ########-####-####-####-############com.vmware.cis.license.vpx.server.core.oldmanagement.LicenseAssignmentManagerException$StorageException: Unable to store license entity ########-####-####-####-############ at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerBaseImpl.addDaoLicenseEntityDuringUpdateEntity(LicenseAssignmentManagerBaseImpl.java:470) at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerImpl.cleanRegisterEntity(LicenseAssignmentManagerImpl.java:1344) at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerImpl.registerOrUpgradeEntityInt(LicenseAssignmentManagerImpl.java:1137) at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerImpl.updateEntityInt(LicenseAssignmentManagerImpl.java:529) at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerBaseImpl.updateEntity(LicenseAssignmentManagerBaseImpl.java:221) at com.vmware.cis.license.vpx.server.core.oldmanagement.vmomi.LicenseAssignmentManagerMoImpl.updateEntity(LicenseAssignmentManagerMoImpl.java:220) at com.vmware.cis.license.vpx.server.core.oldmanagement.vmomi.BaseLicenseAssignmentManagerWrapperMoImpl.updateEntity(BaseLicenseAssignmentManagerWrapperMoImpl.java:94) at com.vmware.cis.license.vpx.server.core.oldmanagement.vmomi.ConcurrentLicenseAssignmentManagerWrapperMoImpl.updateEntity(ConcurrentLicenseAssignmentManagerWrapperMoImpl.java:94) at jdk.internal.reflect.GeneratedMethodAccessor263.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.vmware.vim.vmomi.server.impl.InvocationTask.run(InvocationTask.java:86) at com.vmware.vim.vmomi.server.common.impl.RunnableWrapper$1.run(RunnableWrapper.java:47) at com.vmware.vim.vmomi.core.tracing.OtelTracer$OtelSpan.runWithinSpanContext(OtelTracer.java:226) at com.vmware.vim.vmomi.server.common.impl.TracingRunnableWrapper.run(TracingRunnableWrapper.java:62) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)Caused by: com.vmware.cis.license.vpx.server.core.oldmanagement.dao.licstorage.LicenseStorageException: com.vmware.cis.license.embedded.server.core.management.exception.AlreadyExistsException$AssetAlreadyExistsException: Asset already exists: ########-####-####-####-############-########-####-####-####-############ at com.vmware.cis.license.vpx.server.core.oldmanagement.dao.licstorage.impl.CisWrapperLicenseStorageDaoImpl.convertToLicenseStorageException(CisWrapperLicenseStorageDaoImpl.java:1178) at com.vmware.cis.license.vpx.server.core.oldmanagement.dao.licstorage.impl.CisWrapperLicenseStorageDaoImpl.addEntityInt(CisWrapperLicenseStorageDaoImpl.java:974) at com.vmware.cis.license.vpx.server.core.oldmanagement.dao.licstorage.impl.CisWrapperLicenseStorageDaoImpl.addEntityDuringUpdateEntity(CisWrapperLicenseStorageDaoImpl.java:386) at com.vmware.cis.license.vpx.server.core.oldmanagement.impl.LicenseAssignmentManagerBaseImpl.addDaoLicenseEntityDuringUpdateEntity(LicenseAssignmentManagerBaseImpl.java:468) ... 17 moreCaused by: com.vmware.cis.license.embedded.server.core.management.exception.AlreadyExistsException$AssetAlreadyExistsException: Asset already exists: ########-####-####-####-############-########-####-####-####-############ at com.vmware.cis.license.embedded.server.core.management.impl.SystemManagerImpl.registerAssetInt(SystemManagerImpl.java:1629) at com.vmware.cis.license.embedded.server.core.management.impl.AssetManagerImpl.registerAssetInt(AssetManagerImpl.java:56) at com.vmware.cis.license.vpx.server.core.oldmanagement.dao.licstorage.impl.CisWrapperLicenseStorageDaoImpl.addEntityInt(CisWrapperLicenseStorageDaoImpl.java:943) ... 19 moreCaused by: com.vmware.cis.license.embedded.server.core.management.dao.licstorage.CisLicenseStorageDaoException: Asset id: ########-####-####-####-############-########-####-####-####-############ already exists
vCenter 9.x
ESXi 8.x
This issue is typically caused by stale or orphaned LicenseEntity asset records in the VMware Directory Service (vmdir) following the vCenter upgrade and updating license. When vSphere HA is enabled, the License Service attempts to validate the current license against these legacy entries in the directory service tree. This conflict prevents the validation of the new 9.1 license specifically for the HA feature set on ESXi hosts.
To resolve this issue, please engage Broadcom technical support. See Contact Support.