Sign Up for the Quarterly Newsletter

Cross vCenter Workload Migration Utility

This utility allows users to easily migrate virtual machines in bulk from a graphical user interface between vCenter servers using the Cross-vCenter vMotion feature.

Key Features

  • Completely UI-driven workflow for VM migration
  • Provides REST API for automating migration tasks
  • Works with vCenters in same/different SSO domains
  • Enables batch migration of multiple VMs in parallel
  • Auto-populates inventory for ease of management

Supported Operations

  • Perform live/cold migration as well as relocate/clone operations
  • Works for migration tasks within and across vCenter servers
  • Select host/cluster/folder/resource pool as placement target
  • Supports both storage vMotion and shared datastore migration
  • Flexible configuration for VMs with multiple network interfaces
Also see: Bulk VM Migration using new Cross vCenter Workload Migration vMotion Utility Fling.
  • vCenter Server 6.0 Update 3 or above (ESXi hosts must also be 6.0u3+
  • Java Runtime Environment 1.8-10
  • Web Browser
  • Please review for Cross vCenter vMotion requirements
  1. Run the utility jar file from a shell window
    Java 8:
    $ java -jar xvm-2.0.jar
    Java 9/10:
    $ java --add-modules -jar xvm-2.0.jar
    Default app port is 8080 which can be changed (e.g., 31000) by providing an additional flag:
    $ java -jar -Dserver.port=31000 xvm-2.0.jar
  2. Connection to the app from the browser. Use IP address/hostname of the machine ( for localhost) where the utility is running as 'host'
  3. Register vCenter servers for migration operations on the 'Register' tab. Provide required parameters:
    Sitename: a name to identify the vCenter server
    vCenter Hostname/IP address, username, password
    Trust server: select to skip SSL verification during VC connection
    After a restart of the utility, enter password and re-establish connection for previously registered sites.

  4. Initiate VM migration operations from the 'Migrate' tab. Progress of migration tasks can be monitored on the home page. Provide required parameters (select values from menu):
    Operation type: supported operations are relocate/clone
    Source and target sites: select sites from already registered sites
    Source VMs: select datacenter and VMs from the source site for migration
    Placement target: select target compute resource (host or cluster)
    Target datastore: select target datastore for placement
    Network mappings: select networks to map from source to target sites
    (Optional) Target pool and folder: select target VM folder/resource pool


REST APIs for automating migration tasks can be accessed/executed from the API reference link under the help menu which links to the Swagger UI. Here are examples of site registration and performing migration task through the API:
Site registration
curl -X POST  -H "Content-type: application/json" -d '{"sitename":"my-vc", "hostname":"","username":"administrator@vsphere.local","password":"mysecret","insecure":false}'

Migration task
curl -X POST  -H "Content-type: application/json" -d '{"operationType":"relocate","sourceSite":"site1","targetSite":"site2","sourceDatacenter":"Datacenter","vmList":["vm1", "vm2", "vm3"],"targetDatacenter":"Datacenter","targetCluster":"Cluster","targetHost":null,"targetDatastore":"Datastore","networkMap":{"Private Network":"Internal Network", "VM Network":"VM Network"}}'


  • Application logs are stored in xvm.log file.
  • Site connection details (excluding password) are stored in xvm.dat file on disk.
  • SSL keys for vCenter servers are stored in xvm.ks keystore file.
  • The app stores migration task state in memory, implying a restart of the app loses information about migration tasks.
  • Duplicate object names (networks, vms) in the same datacenter can cause the inventory to not display properly and the utility to misbehave.
  • Known issue: in case of duplicate network names within a datacenter (a pair of a standard switch and distributed switch networks), the DVS network is selected for migration tasks.
  • Please refer to this KB article for supported configurations for Cross vCenter vMotion
  • A detailed blog by William Lam on the utility
  • A demo of an earlier version of the utility can be found at

Version 2.6, April 15, 2019

  • Added support for NSX-T Opaque Network (enables migration to/from VMC and on-premises vSphere with NSX-T)

Version 2.5, November 5, 2018

  • Remember registered site information (without password) 
  • Easily retry a previously attempted task in case of failures 
  • Search box for keyword filtering of migration task history 
  • Option to clear task history by removing completed tasks 
  • Added documentation and other links under the help menu 
  • Partial fix for an issue related to duplicate network names

Version 2.3, October 18, 2018

  • Added support for migration within a single vCenter server

Version 2.2, July 16, 2018

  • Support for vSphere Resource Pool and VM folder for placement under advanced options
  • Support for VMware Cloud on AWS (VMC) by specifying resource pool and folder options

Version 2.1, June 21, 2018

  • Increased simultaneous migration limit to 100 from 10
  • Added check to ignore unknown fields for inventory info
  • Fixed source/target site names in task status view
  • Updated status API to include version number

Version 2.0, May 4, 2018

  • Added support to select individual host as the placement target
  • Added support for migrating VMs with shared datastore
  • Added clone functionality in addition to relocate
  • Added resource summary details for placement targets
  • Added a prompt to verify site thumbprint during SSL verification
  • Added a link to refresh vm list in the inventory view
  • Updated REST APIs to add operation type parameter

Version 1.1.0, March 30, 2018

  • Added a detailed task info view for migration tasks
  • Fixed an issue with site name containing “DOT” characters
  • Display VM resource (CPU, Mem, Disk) info
  • Add a button to clear selected inventory data