Bits, Bytes, & Radio Waves

A quiet journey through discovery and understanding.

VMware Cloud Foundation (VCF) Bundle Transfer Utility v5.2 for Windows

Overview

This post walks you through setting up and using the Bundle Transfer Utility (BTU) to upload install bundles into VMware Cloud Foundation (VCF) Lifecycle Manager (LCM). It’s especially useful in air-gapped environments where internet access isn’t available.

If your SDDC Manager appliance isn’t connected to an online or offline depot, the BTU allows you to download bundles on a separate, internet-connected system and manually upload them into SDDC Manager.

Think of this as the missing manual—covering the steps and details the official documentation leaves out or glosses over.


RTFM

Offline Download of VMware Cloud Foundation 5.2.x Upgrade Bundles

VCF authenticated downloads configuration update instructions

“Got Http error[403] while downloading bundle”, OBTU tool fails to download bundles from the online repositories

Uploading manifest file to LCM fails using OBTU VCF 5.2

Offline bundle utility fails with the error: “Unable to create token after 8 retries”

Cannot generate token when using OBTU uploading manifest to SDDC LCM

Uploading a bundle using bundle transfer utility in SDDC Manager fails with “BUNDLE_MANIFEST_FILE_NOT_FOUND”

Cleanup historical manifests from LCM database to reduce memory consumption


Download the Tool

Log in to support.broadcom.com. Select VMware Cloud Foundation from the software selection category.

Click My Downloads and search for VMware Cloud Foundation in the search box. Finally, select VMware Cloud Foundation.

Select VMware Cloud Foundation 5.2, then select 5.2.1.

Select Drivers & Tools, expand the line with Bundle Transfer Utility on it, then click the download from cloud icon.

Windows Defender SmartScreen may need to be Unblocked. Right-click on the file and select Properties. Select the checkbox to Unblock.

Extract the utility archive. This post was written using Windows 11 24H2, and the built-in “Extract All” option worked without issue. When prompted with a file conflict pop-up, simply check “Do this for all current items” and choose “Skip” to proceed.

The extracted tool.


Update the Repository URLs

As of May 5, 2025, Broadcom has updated the process for downloading bundles.

Download URLs are now unique to each customer, rather than shared. This means you’ll need to reconfigure your setup accordingly.

Before continuing, make sure you’ve either registered for or have your Download Token ready. Refer to the links above for instructions on updating your VCF authenticated downloads configuration.

Next, navigate to the conf directory where the tool was extracted, then open and edit the application-prod.properties file.

C:\Users\%username%\Downloads\lcm-tools-prod\conf\application-prod.properties

Line 22

lcm.depot.adapter.host=dl.broadcom.com

Line 23

lcm.depot.adapter.remote.rootDir=/<downloadToken>/PROD

Line 24

lcm.depot.adapter.remote.repoDir=/COMP/SDDC_MANAGER_VCF

Line 35

lcm.depot.adapter.remote.lcmManifestDir=/COMP/SDDC_MANAGER_VCF/lcm/manifest

Line 38

lcm.depot.adapter.remote.bundletransferconfig.repoDir:/COMP/SDDC_MANAGER_VCF/obtu

Save the file and follow the remaining steps to download the bundles and artifacts.


Install Java Runtime Environment (JRE)

Download and install the Java Runtime Environment (JRE) from java.com/download/.


Download Bundles and Artifacts

Open a Windows Command Prompt (cmd.exe) and navigate to the directory where you extracted the Bundle Transfer Utility. In this post, I’ve placed it in the Downloads folder.

cd C:\Users\%username%\Downloads\lcm-tools-prod\bin

Manifest File

This is a structured metadata file that contains information about the VMware product versions included in the release Bill of Materials.

lcm-bundle-transfer-util.bat --download --manifestDownload --depotUser Username

Here’s an example.

C:\Users\aaron\Downloads\lcm-tools-prod\bin>lcm-bundle-transfer-util.bat --download --manifestDownload --depotUser [email protected]
        1 file(s) moved.
OpenJDK 32-Bit Client VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
----------------------------------------------------------------------------------------------------
                                              WARNING
* Have you configured TCP keepalive in your SSH client to prevent socket connection timeouts when
using the Bundle Transfer Tool for long-running operations?
----------------------------------------------------------------------------------------------------
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Enter Myvmware user password:

Validating the depot user credentials...
Downloading LCM Manifest to: C:\Users\aaron/PROD2/evo/vmw
Successfully completed downloading file
Log file: C:\var\log\vmware\vcf\lcm\tools\debugtool\tmp\debuglog\lcmdebug.log

Compatibility Matrix

lcm-bundle-transfer-util.bat --download --compatibilityMatrix --depotUser Username

Here’s an example.

C:\Users\aaron\Downloads\lcm-tools-prod\bin>lcm-bundle-transfer-util.bat --download --compatibilityMatrix --depotUser [email protected]
        1 file(s) moved.
OpenJDK 32-Bit Client VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
----------------------------------------------------------------------------------------------------
                                              WARNING
* Have you configured TCP keepalive in your SSH client to prevent socket connection timeouts when
using the Bundle Transfer Tool for long-running operations?
----------------------------------------------------------------------------------------------------
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Enter Myvmware user password:

Validating the depot user credentials...
User has not set the path using the default path
Directory to download data is existing or created at path C:\Users\aaron\PROD2\evo\vmw\
Download VMware compatibility matrix to directory C:\Users\aaron\PROD2\evo\vmw\Compatibility\VmwareCompatibilityData.json
2025-06-06T13:44:31.287-04:00  INFO   --- [           main] c.v.v.c.c.i.v.rest.client.VvsApiClient   : vvs uri with query params: https://vvs.esp.vmware.com/v1/products/bundles/type/vcf-lcm-v2-bundle?format=json
vvs uri with query params: https://vvs.esp.vmware.com/v1/products/bundles/type/vcf-lcm-v2-bundle?format=json
Successfully downloaded VMWARE_COMPAT compatibility data to file C:\Users\aaron\PROD2\evo\vmw\Compatibility\VmwareCompatibilityData.json
Compatibility metadata has been downloaded, to upload to SDDC Manager use this path as input: C:\Users\aaron\PROD2\evo\vmw\
Log file: C:\var\log\vmware\vcf\lcm\tools\debugtool\tmp\debuglog\lcmdebug.log

vSAN HCL

lcm-bundle-transfer-util.bat --vsanHclDownload

Here’s an example.

C:\Users\aaron\Downloads\lcm-tools-prod\bin>lcm-bundle-transfer-util.bat --vsanHclDownload
        1 file(s) moved.
OpenJDK 32-Bit Client VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Downloading the vSAN HCL file to path: C:\Users\aaron\PROD2\vsan\hcl\all.json
Successfully completed downloading vSAN HCL file
Log file: C:\var\log\vmware\vcf\lcm\tools\debugtool\tmp\debuglog\lcmdebug.log

Upgrade Bundles

Make a directory to download the bundles.

mkdir C:\Users\%username%\Downloads\offline-bundles
lcm-bundle-transfer-util.bat --download --outputDirectory absolute-path-output-dir --depotUser Username --sv current-vcf-version --p target-vcf-version

Here’s an example.
(Note: Yes, there are misspelled words in the output—this is copied verbatim from the tool.)

As mentioned earlier, the --outputDirectory parameter must point to a directory that already exists. It’s also a good idea to wrap the path in double quotes, especially if it includes spaces.

The --sv flag specifies the Source Version. In this example, I chose a specific version to retrieve a smaller subset of updates.

The --p flag stands for Patch Version. While the product version may show as 5.2.1.0, there are actually SDDC Manager patches for 5.2.1.2. Unfortunately, I haven’t found any documentation that clearly defines which values to use for Source or Patch Versions. In practice, I guess the version I need and run the command until I get the desired patches.

Since I had already downloaded the bundles, I used q to quit. Available options are:

  • all
  • install
  • patch
  • a comma-separated list of specific bundle names
C:\Users\aaron\Downloads\lcm-tools-prod\bin>lcm-bundle-transfer-util.bat --download --outputDirectory "C:\Users\aaron\Downloads\offline-bundles" --depotUser [email protected] --sv 5.2.0.0 --p 5.2.1.0
        1 file(s) moved.
OpenJDK 32-Bit Client VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
----------------------------------------------------------------------------------------------------
                                              WARNING
* Have you configured TCP keepalive in your SSH client to prevent socket connection timeouts when
using the Bundle Transfer Tool for long-running operations?
----------------------------------------------------------------------------------------------------
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Enter Myvmware user password:

Validating the depot user credentials...
Do you want to include VMware Aria Products bundles (Y/N)?: Y
Creating delta file
Downloading LCM Manifest to: C:\Users\aaron\Downloads\offline-bundles
Successfully completed downloading file
Default manifest file found, attempting to read into manifest object.
Copping C:\Users\aaron\Downloads\offline-bundles\tmp\index.v3 to C:\Users\aaron\Downloads\offline-bundles\index.v3
List of applicable bundles:

-------------------------------------------------------------------------------------------------------------------------------------------------
Bundle                               | Product Version  |      Bundle Size | Bundle Component                                   | Bundle Type
-------------------------------------------------------------------------------------------------------------------------------------------------
bundle-133762                        | 5.2.1.0          |         606.4 MB | ESX_HOST-8.0.3-24280767                            | PATCH
bundle-133763                        | 5.2.1.0          |        8895.2 MB | NSX_T_MANAGER-4.2.1.0.0-24304122                   | PATCH
bundle-202281                        | 5.2.1.0          |        2364.8 MB | SDDC_MANAGER_VCF-5.2.1.1-24397777                  | PATCH
bundle-214558                        | 5.2.1.0          |        2375.9 MB | SDDC_MANAGER_VCF-5.2.1.2-24690695                  | PATCH
bundle-133765                        | 5.2.1.0          |       18817.0 MB | VCENTER-8.0.3.00300-24305161                       | PATCH
bundle-130870                        | 5.2.1.0          |        4238.5 MB | NSX_ALB-22.1.7-24190832                            | INSTALL
bundle-133764                        | 5.2.1.0          |       11636.7 MB | NSX_T_MANAGER-4.2.1.0.0-24304122                   | INSTALL
bundle-133766                        | 5.2.1.0          |       11832.3 MB | VCENTER-8.0.3.00300-24305161                       | INSTALL
-------------------------------------------------------------------------------------------------------------------------------------------------

Created delta file
Total applicable bundles: 8
To download all the required bundles, specify value as: all.
To download all install bundles, specify value as: install.
To download all patch bundles, specify value as: patch.
To download specific bundles, provide bundle names as comma separated values, Example: bundle-38371, bundle-38378
To quit, specify value as: quit/q
q
Discontinuing downloading bundles
Log file: C:\var\log\vmware\vcf\lcm\tools\debugtool\tmp\debuglog\lcmdebug.log

Copy the Bundles and Artifacts to the SDDC Manager Appliance

You may notice the documentation refers to using one path or another when uploading specific files to the SDDC Manager. If you’re following the Broadcom docs, the files do eventually end up on the SDDC Manager—but even with the provided steps, I still found myself searching Google and KB articles to fill in the gaps.

I’ve included helpful links in the RTFM section below to save you that trouble.

Below is a screenshot from the documentation.

For this post, I’ll be using WinSCP to transfer the files, but you can use any tool that supports SCP or SFTP.

Connect to the SDDC Manager appliance using the vcf user account. Then, copy the following items to the /home/vcf/ directory on the SDDC Manager:

  • The PROD2 directory
  • lcm-tools-prod.tar.gz

Copy the offline-bundles to the /nfs/vmware/vcf/nfs-mount/ directory.


On the SDDC Manager Appliance

Prepare the lcm-tools Directory

SSH in to the SDDC Manager appliance using the vcf user account.

Switch to the root user for this.

su -

Create a new directory for the Bundle Transfer Utility.
If a directory from a previous version already exists, it’s best to delete its contents and start fresh with a clean copy before proceeding.

mkdir /opt/vmware/vcf/lcm/lcm-tools

Change into the new directory.

cd /opt/vmware/vcf/lcm/lcm-tools

Now copy the lcm-tools-prod.tar.gz to the new directory.

cp /home/vcf/lcm-tools-prod.tar.gz /opt/vmware/vcf/lcm/lcm-tools

Extract the contents of lcm-tools-prod.tar.gz.

tar -xvf lcm-tools-prod.tar.gz

Set the permissions for the lcm-tools directory.

chown vcf_lcm:vcf -R ../lcm-tools/
chmod 750 -R ../lcm-tools/

Monitor the lcmdebug.log File

To make troubleshooting easier, I highly recommend opening a second SSH session to monitor the lcmdebug.log file while running these commands. This will give you more insight into what’s happening and whether the commands are doing what they’re supposed to.

tail -f /var/log/vmware/vcf/lcm/tools/debugtool/tmp/debuglog/lcmdebug.log

Prepare the Manifest File Directory

The lcmManifest.json file must be in the /home/vcf/manifest/lcm/manifest/v1 directory (according to 381165).

Make the new directory to copy the lcmManifest.json file to.

mkdir -p /home/vcf/manifest/lcm/manifest/v1

Copy the lcmManifest.json file to the new directory.

cp /home/vcf/PROD2/evo/vmw/lcm/manifest/v1/lcmManifest.json /home/vcf/manifest/lcm/manifest/v1

Change the ownership of the lcmManifest.json file.

chown -R vcf_lcm:vcf /home/vcf/manifest/

Upload the Manifest File

From the /opt/vmware/vcf/lcm/lcm-tools/bin directory, run the following command to upload the manifest file from the directory that was just prepared.

./lcm-bundle-transfer-util --update --sourceManifestDirectory Manifest-Directory --sddcMgrFqdn FQDN --sddcMgrUser Username
root@sddc-163-100 [ /opt/vmware/vcf/lcm/lcm-tools/bin ]# ./lcm-bundle-transfer-util --update --sourceManifestDirectory /home/vcf/manifest/ --sddcMgrFqdn sddc-163-100.aaronrombaut.com --sddcMgrUser [email protected]
*********Welcome to OBTU tool***********

Make sure to download the most recent metadata files and upload them to the SDDC Manager appliance before
downloading bundles. If you do not have the most recent metadata files, the metadata for most recent upgrades will be
missing and will impact the upgrades. The following metadata files are required:  LCM manifest and VMware compatibility
data (For 5.0 or upgrade to 5.0), vSAN HCL data (For 5.1 or upgrade to 5.1). VxRail requires these additional metadata files: 
VxRail compatibility data (For 5.0 or upgrade to 5.0) and partner bundle manifest (PBM).
https://docs.vmware.com/en/VMware-Cloud-Foundation/5.0/context?id=vcf_451\n
please confrim this is the right finger print sha256 Fingerprint=D3:CD:BB:A9:9D:8C:A9:F6:69:E2:52:6B:EB:24:0F:37:7E:C7:C6:80:F6:EE:FE:AF:D4:3F:F9:5C:63:1D:60:91   Y/N Y
keytool error: java.lang.Exception: Alias <sddc-163-100.aaronrombaut.com> does not exist
Certificate was added to keystore
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Uploading manifest file
Enter SDDC Manager User password:
Manifest File Path: /home/vcf/manifest/lcm/manifest
Setting base path - sddc-163-100.aaronrombaut.com
Setting base path - sddc-163-100.aaronrombaut.com
Successfully uploaded manifest file
Successfully uploaded the lcm 2.0 manifest
Log file: /var/log/vmware/vcf/lcm/tools/debugtool/tmp/debuglog/lcmdebug.log

LCM Manifest Upload Failed

If you’re seeing the dreaded “Unable to create token after 8 retries.” message in the lcmdebug log, don’t panic—it’s likely because your SDDC Manager is fresh out of the box and still using the default TLS certificate.

I’ve linked a couple of helpful articles in the RTFM section above—definitely check those out for more details.

In a nutshell, the issue is that the certificate on the SDDC Manager appliance doesn’t include the fully qualified domain name (FQDN) in its Subject Alternative Name (SAN) field.

To inspect the certificate, you can run the following command on the SDDC Manager appliance:

openssl s_client -connect localhost:443 | nl

Look for the Server certificate section, which typically starts around line 14 and ends around line 41 on an unmodified SDDC Manager. Copy that chunk into a file named server.crt for further inspection or troubleshooting.

-----BEGIN CERTIFICATE-----
MIIEyzCCAzOgAwIBAgIJAPNv7xe2BGjcMA0GCSqGSIb3DQEBCwUAMIGiMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExJDAiBgNV
BAoMG3Zjc2EtMTYzLTIuYWFyb25yb21iYXV0LmNvbTEbMBkGA1UECwwSVk13YXJl
IEVuZ2luZWVyaW5nMB4XDTI1MDYxMjEyNTYyNFoXDTI3MDYwMjEyNTYyNFowezEL
MAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQBgNVBAcMCVBhbG8g
QWx0bzEPMA0GA1UECgwGVk13YXJlMRswGQYDVQQLDBJWTXdhcmUgRW5naW5lZXJp
bmcxFTATBgNVBAMMDHNkZGMtMTYzLTEwMDCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBANBp+yexlMdHaQ8qXZHFJVazEkU23xfxrL4hM5uCvP+gXKik5Tjj
FtMVV5ONFdY1nY7YV/vc3J9iztFf5uRNOejvhGmgSXEqx/e9hPHQgj9KY0wN6kVD
yQOG/YMrUizcEvOqCkSGUUXQ/CiEQ9y8higLvJJ3n3I2X8+HyDZ6n0vUL4E7zEPX
JXSEKRvICSMr+NZGvWp/VIG4+7NtqvUhShaXMeqpNAJZZV69kqqxmJqltor2JF6L
m0Fkfy5y6rnbdWGOjOyQGZzfQYPbsZ56YXiskPixL3vVChuPijGzFAOQ+lLchB/z
hN6m0b4/EW8rLBZeRyOM40OHPDrHIplJjX8CAwEAAaOBqTCBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwFwYDVR0RBBAwDoIMc2RkYy0xNjMtMTAwMB8G
A1UdIwQYMBaAFIWsaZZFIsSmxWulm0fes2OoSH7QMEsGCCsGAQUFBwEBBD8wPTA7
BggrBgEFBQcwAoYvaHR0cHM6Ly92Y3NhLTE2My0yLmFhcm9ucm9tYmF1dC5jb20v
YWZkL3ZlY3MvY2EwDQYJKoZIhvcNAQELBQADggGBAIh5zmDnMeCEmyXqKSXfFLjl
72I9blWeFkztACQ1/F+37Su1apI1H+3CVLhy7fWKXL51t8pFcXgIpZo8A34t7TPE
It0C/kscZM/aT5cXgWIzHYAmmbys+tK8VYo2EXtenUItPQozdvfZb6nMBtiL4TqM
AK8OyMIevETrleOiEzAJwWNYqnqqhPckdyGr8FOYo3oWuMXUYzeYPRf/Qi9XfIVz
0f4Mu1DMCWKgwAxgRv+RoOM5omNgYUpYIlTkPlcAginYWedK7z2BulCFffGx4Zja
8MdC9/z8Pn78Gj4HJ7QT10j+/Orl1L9y8xPdfLBksL20Nzib2iwnj9cdkYmMkeEL
70knLaF2oXnhLIirR5dBy6GdlRH8R7uwWnhiIMI4DZrRlV4DCDOaGFRKCXlFACJn
jtDPobjTbDzec3+OJV6SGpETxo7oGlwsPuflnN8KmGu9lX4Bp1UCZgvIfXdXhehU
Ig2QAp6pQBPDCqubfzrNFOYu2V1OTrWW0yvPWc+3TA==
-----END CERTIFICATE-----

Now view the output for the certificate and look for the X509v3 Subject Alternative Name (SAN) around line 38.

openssl x509 -noout -text -in server.crt | nl

The following is an example of a fresh SDDC Manager where the certificate has not been swapped out.

        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Subject Alternative Name:
                DNS:sddc-163-100
            X509v3 Authority Key Identifier:
                85:AC:69:96:45:22:C4:A6:C5:6B:A5:9B:47:DE:B3:63:A8:48:7E:D0
            Authority Information Access:
                CA Issuers - URI:https://vcsa-163-2.aaronrombaut.com/afd/vecs/ca

The following is an example of the SDDC Manager with a configured certificate with the Subject Alternative Name (SAN) appropriately configured.

        X509v3 extensions:
            X509v3 Extended Key Usage:
                TLS Web Server Authentication
            X509v3 Subject Alternative Name:
                IP Address:172.16.3.100, DNS:sddc-163-100, DNS:sddc-163-100.aaronrombaut.com
            X509v3 Subject Key Identifier:
                63:BA:B1:F7:70:A3:D4:75:20:1F:14:1D:51:B6:B9:55:71:4D:CF:D0
            X509v3 Authority Key Identifier:
                B5:71:40:5C:D2:F3:45:80:20:2B:47:62:38:9B:93:70:79:74:58:5F

Once the SDDC Manager certificate is swapped out with a good certificate, go ahead and try to upload the manifest file again.


Delete a Manifest File

If you receive a warning that the Manifest file has already been uploaded, you’ll need to remove the existing entry from the LCM database before you can upload the new one.

/usr/pgsql/13/bin/psql -h localhost -U postgres -d lcm

Get the id and sequence_number from the table.

SELECT id, creation_time, sequence_number FROM manifest;

Delete the entry from the database so that a new Manifest file can bu uploaded.

DELETE FROM manifest WHERE id = <id>;

Quit the PostgreSQL command-line interface.

\q

Try to upload the Manifest file again.


Upload the CompatibilityMatrix File

The VmwareCompatibilityData.json file is located in the /home/vcf/PROD2/evo/vmw/Compatibility directory. Note that the uppercase Compatibility is intentional, not a typo. Also, the Bundle Transfer Utility expects the directory path to end one level higher—at vmw/ in this case.

./lcm-bundle-transfer-util --update --compatibilityMatrix --inputDirectory compatibility-file-directory --sddcMgrFqdn FQDN --sddcMgrUser Username
root@sddc-163-100 [ /opt/vmware/vcf/lcm/lcm-tools/bin ]# ./lcm-bundle-transfer-util --update --compatibilityMatrix --inputDirectory /home/vcf/PROD2/evo/vmw/ --sddcMgrFqdn sddc-163-100.aaronrombaut.com --sddcMgrUser [email protected]
*********Welcome to OBTU tool***********

Make sure to download the most recent metadata files and upload them to the SDDC Manager appliance before
downloading bundles. If you do not have the most recent metadata files, the metadata for most recent upgrades will be
missing and will impact the upgrades. The following metadata files are required:  LCM manifest and VMware compatibility
data (For 5.0 or upgrade to 5.0), vSAN HCL data (For 5.1 or upgrade to 5.1). VxRail requires these additional metadata files: 
VxRail compatibility data (For 5.0 or upgrade to 5.0) and partner bundle manifest (PBM).
https://docs.vmware.com/en/VMware-Cloud-Foundation/5.0/context?id=vcf_451\n
please confrim this is the right finger print sha256 Fingerprint=D3:CD:BB:A9:9D:8C:A9:F6:69:E2:52:6B:EB:24:0F:37:7E:C7:C6:80:F6:EE:FE:AF:D4:3F:F9:5C:63:1D:60:91   Y/N Y
keytool error: java.lang.Exception: Alias <sddc-163-100.aaronrombaut.com> does not exist
Certificate was added to keystore
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Enter SDDC Manager User password:
User has set the path to: /home/vcf/PROD2/evo/vmw/
Setting base path - sddc-163-100.aaronrombaut.com
Setting base path - sddc-163-100.aaronrombaut.com
Successfully upload VMWARE_COMPAT compatibility data in Sddc Manager
Log file: /var/log/vmware/vcf/lcm/tools/debugtool/tmp/debuglog/lcmdebug.log

Upload the vSAN HCL File

This command uses the path to the actual file in the –inputDirectory parameter.

./lcm-bundle-transfer-util --vsanHclUpload --inputDirectory hcl-file-path --sddcMgrFqdn sddc-manager-fqdn --sddcMgrUser user
root@sddc-163-100 [ /opt/vmware/vcf/lcm/lcm-tools/bin ]# ./lcm-bundle-transfer-util --vsanHclUpload --inputDirectory /home/vcf/PROD2/vsan/hcl/all.json --sddcMgrFqdn sddc-163-100.aaronrombaut.com --sddcMgrUser [email protected]
*********Welcome to OBTU tool***********

Make sure to download the most recent metadata files and upload them to the SDDC Manager appliance before
downloading bundles. If you do not have the most recent metadata files, the metadata for most recent upgrades will be
missing and will impact the upgrades. The following metadata files are required:  LCM manifest and VMware compatibility
data (For 5.0 or upgrade to 5.0), vSAN HCL data (For 5.1 or upgrade to 5.1). VxRail requires these additional metadata files: 
VxRail compatibility data (For 5.0 or upgrade to 5.0) and partner bundle manifest (PBM).
https://docs.vmware.com/en/VMware-Cloud-Foundation/5.0/context?id=vcf_451\n
please confrim this is the right finger print sha256 Fingerprint=D3:CD:BB:A9:9D:8C:A9:F6:69:E2:52:6B:EB:24:0F:37:7E:C7:C6:80:F6:EE:FE:AF:D4:3F:F9:5C:63:1D:60:91   Y/N Y
keytool error: java.lang.Exception: Alias <sddc-163-100.aaronrombaut.com> does not exist
Certificate was added to keystore
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
Uploading vSAN HCL file
Enter SDDC Manager User password:
vSAN HCL upload File Path: /home/vcf/PROD2/vsan/hcl/all.json
Setting base path - sddc-163-100.aaronrombaut.com
Setting base path - sddc-163-100.aaronrombaut.com
Successfully uploaded the vSAN HCL file
Log file: /var/log/vmware/vcf/lcm/tools/debugtool/tmp/debuglog/lcmdebug.log

Prepare the offline-bundles Directory

The directory storing the offline bundles must have the correct user and group ownership set. Because the bundles were downloaded on Windows, file permissions don’t automatically translate to Linux, so you’ll need to set them manually.

ls -la /nfs/vmware/vcf/nfs-mount/offline-bundles

Permissions and ownership before changing.

total 64
drwx------  6 vcf  vcf  4096 Jun 12 17:08 .
drwxrwxr-x 10 root vcf  4096 Jun 12 16:36 ..
drwx------  2 vcf  vcf  4096 Jun 12 17:08 bundles
-rw-------  1 vcf  vcf   183 Jun  3 18:54 deltaFileDownloaded
-rw-------  1 vcf  vcf    32 Jun  3 18:54 deltaFileDownloaded.md5
-rw-------  1 vcf  vcf  4096 Jun 11 18:31 ._.DS_Store
-rw-------  1 vcf  vcf  6148 Jun 11 18:31 .DS_Store
-rw-------  1 vcf  vcf 20071 Jun  3 18:51 index.v3
drwx------  3 vcf  vcf  4096 Jun 12 17:08 lcm
drwx------  2 vcf  vcf  4096 Jun 12 17:08 manifests
drwx------  2 vcf  vcf  4096 Jun 12 17:08 tmp

Change the ownership.

chown -R vcf_lcm:vcf /nfs/vmware/vcf/nfs-mount/offline-bundles
total 64
drwx------  6 vcf_lcm vcf  4096 Jun 12 17:08 .
drwxrwxr-x 10 root    vcf  4096 Jun 12 16:36 ..
drwx------  2 vcf_lcm vcf  4096 Jun 12 17:08 bundles
-rw-------  1 vcf_lcm vcf   183 Jun  3 18:54 deltaFileDownloaded
-rw-------  1 vcf_lcm vcf    32 Jun  3 18:54 deltaFileDownloaded.md5
-rw-------  1 vcf_lcm vcf  4096 Jun 11 18:31 ._.DS_Store
-rw-------  1 vcf_lcm vcf  6148 Jun 11 18:31 .DS_Store
-rw-------  1 vcf_lcm vcf 20071 Jun  3 18:51 index.v3
drwx------  3 vcf_lcm vcf  4096 Jun 12 17:08 lcm
drwx------  2 vcf_lcm vcf  4096 Jun 12 17:08 manifests
drwx------  2 vcf_lcm vcf  4096 Jun 12 17:08 tmp

Change the permissions.
Note: Yes, we’re setting them to 777—and no, this isn’t a misunderstanding of file permissions or a case of being lazy. This is straight from the vendor documentation.

chmod -R 777 /nfs/vmware/vcf/nfs-mount/offline-bundles
total 64
drwxrwxrwx  6 vcf_lcm vcf  4096 Jun 12 17:08 .
drwxrwxr-x 10 root    vcf  4096 Jun 12 16:36 ..
drwxrwxrwx  2 vcf_lcm vcf  4096 Jun 12 17:08 bundles
-rwxrwxrwx  1 vcf_lcm vcf   183 Jun  3 18:54 deltaFileDownloaded
-rwxrwxrwx  1 vcf_lcm vcf    32 Jun  3 18:54 deltaFileDownloaded.md5
-rwxrwxrwx  1 vcf_lcm vcf  4096 Jun 11 18:31 ._.DS_Store
-rwxrwxrwx  1 vcf_lcm vcf  6148 Jun 11 18:31 .DS_Store
-rwxrwxrwx  1 vcf_lcm vcf 20071 Jun  3 18:51 index.v3
drwxrwxrwx  3 vcf_lcm vcf  4096 Jun 12 17:08 lcm
drwxrwxrwx  2 vcf_lcm vcf  4096 Jun 12 17:08 manifests
drwxrwxrwx  2 vcf_lcm vcf  4096 Jun 12 17:08 tmp

Upload the Bundles – Utility Method

./lcm-bundle-transfer-util --upload --bundleDirectory absolute-path-bundle-dir
./lcm-bundle-transfer-util --upload --bundleDirectory /nfs/vmware/vcf/nfs-mount/offline-bundles
root@sddc-163-100 [ /opt/vmware/vcf/lcm/lcm-tools/bin ]# ./lcm-bundle-transfer-util --upload --bundleDirectory /nfs/vmware/vcf/nfs-mount/offline-bundles
*********Welcome to OBTU tool***********

Make sure to download the most recent metadata files and upload them to the SDDC Manager appliance before
downloading bundles. If you do not have the most recent metadata files, the metadata for most recent upgrades will be
missing and will impact the upgrades. The following metadata files are required:  LCM manifest and VMware compatibility
data (For 5.0 or upgrade to 5.0), vSAN HCL data (For 5.1 or upgrade to 5.1). VxRail requires these additional metadata files: 
VxRail compatibility data (For 5.0 or upgrade to 5.0) and partner bundle manifest (PBM).
https://docs.vmware.com/en/VMware-Cloud-Foundation/5.0/context?id=vcf_451\n
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
----------------------------------------------------------------------------------------------------
                                              WARNING                                               
* Have you configured TCP keepalive in your SSH client to prevent socket connection timeouts when
using the Bundle Transfer Tool for long-running operations?
----------------------------------------------------------------------------------------------------
Please acknowledge that the above requirements are met and press [Y/N] to continue: Y
VMware Cloud Foundation LCM Bundle Transfer Tool, Version: 2024.10-24352717
*****************************************************************************************************
Please ensure you are running latest bundle transfer utility tool from https://my.vmware.com/group/vmware/downloads/
*****************************************************************************************************
Please ensure to update VCF LCM with the 2.0 Manifest file along with the bundles
Checking for sufficient disk space before uploading all VSRN bundles
Available disk space on SDDC Manager directory: /nfs/vmware/vcf/nfs-mount is 367671.0 MB
Required disk space to upload the bundles is 33388.2 MB
Uploading the bundles...
Bundle 1c145a20-1f19-4393-bec3-b424d12245b5 checksum validation successful
Uploading bundle: 1c145a20-1f19-4393-bec3-b424d12245b5
Current upload status is: VALIDATING for bundleId: 1c145a20-1f19-4393-bec3-b424d12245b5 
...truncated for brevity...
Current upload status is: VALIDATING for bundleId: 1c145a20-1f19-4393-bec3-b424d12245b5 
Current upload status is: SUCCESS for bundleId: 1c145a20-1f19-4393-bec3-b424d12245b5 
Bundle already exists in LCM and skipping re uploading bundle id: 649c709a-b890-4cab-8b59-2c67326fd7c5 
Bundle dacab600-58b0-47b6-a995-f42055cf3885 checksum validation successful
Uploading bundle: dacab600-58b0-47b6-a995-f42055cf3885
Current upload status is: VALIDATING for bundleId: dacab600-58b0-47b6-a995-f42055cf3885 
...truncated for brevity...
Current upload status is: VALIDATING for bundleId: dacab600-58b0-47b6-a995-f42055cf3885 
Current upload status is: SUCCESS for bundleId: dacab600-58b0-47b6-a995-f42055cf3885 
Completed uploading bundles
Log file: /var/log/vmware/vcf/lcm/tools/debugtool/tmp/debuglog/lcmdebug.log

Upload the Bundles – API Method

Sometimes the bundle utility may not be appropriate or not working to upload the required or necessary bundles. The alternative method is to manually upload them using the API. The bundles still must to be uploaded and accessible from the SDDC Manager appliance, so make sure you follow my suggestions above about preparing.

Here is an example of where I already attempted to upload the bundles via the Bundle Transfer Utility and supposedly all bundles were uploaded. In reality, I am missing this bundle and having to manually upload it so it is available.

Log in to the SDDC Manager appliance and select the Developer Center link from the left menu.

Select the API Explorer tab.

Locate and expand the Bundles API Category.

Expand the POST method. In the Try it out section, click the BundleUploadSpec link to populate the body.

The body populates after clicking the link.

If you are unsure which bundle corresponds to the bundleId that is provided, you can run the following command on the SDDC Manager appliance in the /offline-bundles/manifests directory.

grep <bundleId> *

Here is an example.

grep f1f8acbf-5750-4397-a5da-9f5c0bd476dc *

Here is the result.

bundle-214558.manifest:  "bundleId" : "f1f8acbf-5750-4397-a5da-9f5c0bd476dc",
bundle-214558.manifest:    "bundleId" : "f1f8acbf-5750-4397-a5da-9f5c0bd476dc",

So now I know which bundle to upload back in the Developer Center. The required keys are in bold for easy reference.

{
    "bundleFilePath": "",
    "compatibilitySetsFilePath": "",
    "manifestFilePath": "",
    "partnerExtensionSpec": {
        "partnerBundleMetadataFilePath": "",
        "partnerBundleVersion": ""
    },
    "signatureFilePath": ""
}

Here’s an example.

{
    "bundleFilePath": "/nfs/vmware/vcf/nfs-mount/offline-bundles/bundles/bundle-214558.tar",
    "compatibilitySetsFilePath": "",
    "manifestFilePath": "/nfs/vmware/vcf/nfs-mount/offline-bundles/manifests/bundle-214558.manifest",
    "partnerExtensionSpec": {
        "partnerBundleMetadataFilePath": "",
        "partnerBundleVersion": ""
    },
    "signatureFilePath": "/nfs/vmware/vcf/nfs-mount/offline-bundles/manifests/bundle-214558.manifest.sig"
}

Once this is populated with the correct paths, select the Execute button, then the Continue button on the Are you sure? window.

The upload task can be monitored in the normal Tasks pane of the SDDC Manager Appliance. Once the task is complete, hopefully you can proceed with the original task.


Conclusion

By now, I hope you’re either successfully uploading your bundles or have already completed the process within your SDDC Manager appliance. While this is a helpful tool, it’s clear that the Broadcom documentation leaves much to be desired, and unfortunately, it hasn’t seen much improvement over time.

One thing that continues to puzzle me is the need for specific directory structures and levels in the utility. It raises the question: why are these hard-coded? If certain directories or levels are mandatory, it seems unnecessary to have parameters like --inputDirectory or --sourceManifestDirectory in the first place. Additionally, the vSAN HCL file uses the entire path, so why not standardize the approach across the board?

As administrators, we’re already dealing with a complex process, and it would be incredibly helpful if the system allowed for a simpler workflow. If we could upload the files directly to the SDDC Manager, set proper ownership (vcf_lcm:vcf), apply reasonable permissions (without resorting to 777), and just point to the necessary files without needing to rely on countless workarounds, it would save a lot of time and frustration.


2 responses to “VMware Cloud Foundation (VCF) Bundle Transfer Utility v5.2 for Windows”

  1. Ataulla Fareed Pasha Avatar
    Ataulla Fareed Pasha

    Its a very well documented article. Thanks a lot. Initially didnt understand not because of your article but because of the long list of steps to perform. After going through 2 more times, now im able to understand what all needs to be done. Thanks for clearly writing this out.

    I have VCF on Vxrail setup and what are the steps or additional steps that ill need to follow for VCF on Vxrail.

  2. John Howard Avatar
    John Howard

    Excellent post and exactly what I was looking for. You mentioned you haven’t found any documentation for the source versions and patch versions. This is what I found:

    https://knowledge.broadcom.com/external/article/314608/correlating-vmware-cloud-foundation-vers.html

Leave a Reply

Your email address will not be published. Required fields are marked *