Error "Unable to relocate VM - The operation is not supported on the object" when changing storage policy of a virtual machine from VMFS or ISCSI to vSAN in VMware Cloud Director
search cancel

Error "Unable to relocate VM - The operation is not supported on the object" when changing storage policy of a virtual machine from VMFS or ISCSI to vSAN in VMware Cloud Director

book

Article ID: 400464

calendar_today

Updated On:

Products

VMware Cloud Director

Issue/Introduction

  • ISCSI, VMFS and vSAN datastores are within the same cluster.
  • Attempting to change Virtual Machine (VM) storage policy from VMFS or ISCSI to vSAN in VCD(VMware Cloud Director) fails with following error:
    Unable to relocate VM - The operation is not supported on the object

  • In /opt/vmware/vcloud-director/logs/vcloud-container-debug.log, you see entries similar to the following:

    | DEBUG    | task-service-activity-pool-20974 | CJob                           | updateFailedJob(com.vmware.ssdc.util.RelocateException) with locale=en_US | requestId=#####-#####-####-####-####,request=POST https://VCD_URL/api/vApp/vm-UUID/action/reconfigureVm,requestTime=1745416173535,remoteAddress=#.#.#.#:47868,userAgent=Mozilla/5.0
     (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...,accept=application/*+xml;version 40.0.0-alpha vcd=#####-#####-####-####-####,task=#####-#####-####-####-#### activity=(com.vmware.vcloud.backendbase.management.system.TaskActivity,urn:uuid:#####-#####-####-####-####)
    com.vmware.ssdc.util.RelocateException: Unable to relocate VM.
            at com.vmware.vcloud.val.internal.impl.RelocateVmActivity$WaitForInventoryUpdatePhase.invoke(RelocateVmActivity.java:397)
            at com.vmware.vcloud.activity.executors.ActivityRunner.runPhase(ActivityRunner.java:175)
            at com.vmware.vcloud.activity.executors.ActivityRunner.run(ActivityRunner.java:112)
            at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
            at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
            at java.base/java.lang.Thread.run(Thread.java:829)
    Caused by: com.vmware.ssdc.util.exceptions.NotSupportedException: The operation is not supported on the object.
            at com.vmware.ssdc.library.vim.LmVim.Convert(LmVim.java:292)
            at com.vmware.ssdc.library.vim.LmVim.Convert(LmVim.java:502)
            at com.vmware.vcloud.val.taskmanagement.AsynchronousTaskWaitActivity.getResultIfTaskAlreadyCompleted(AsynchronousTaskWaitActivity.java:526)
            at com.vmware.vcloud.val.taskmanagement.AsynchronousTaskWaitActivity$InitialPhase.invoke(AsynchronousTaskWaitActivity.java:138)
            ... 7 more
    Caused by: (vmodl.fault.NotSupported) {
       faultCause = null,
       faultMessage = (vmodl.LocalizableMessage) [
          (vmodl.LocalizableMessage) {
             dynamicType = null,
             dynamicProperty = null,
             key = com.vmware.vim.vpxd.iofilter.policyChangeDisallowed,
             arg = (vmodl.KeyAnyValue) [
                (vmodl.KeyAnyValue) {
                   dynamicType = null,
                   dynamicProperty = null,
                   key = operation,
                   value = migrate
                }
             ],
             message = Changing or applying VM Storage Policies with Data Service capabilities during migrate operations is disallowed. VM Storage Policies with Data Service capabilities can be assigned to the provis
    ioned VM after the migrate operation has been completed and before the VM has been powered on.
          }

  • Similarly corresponding  /var/log/vmware/vpxd/vpxd.log on vCenter server, you see entries similar to the following:

    2025-04-23T13:49:41.587Z info vpxd[09355] [Originator@6876 sub=vpxLro opID=vcd-#####-#####-####-####-####;activity=urn:uuid:#####-#####-####-####-####] [VpxLRO] -- FINISH task-7378921
    2025-04-23T13:49:41.587Z error vpxd[09355] [Originator@6876 sub=Default opID=vcd-#####-#####-####-####-####;activity=urn:uuid:#####-#####-####-####-####] [VpxLRO] -- ERROR task-7378921 -- 5
    #####-#####-####-####-####(#####-#####-####-####-####) -- vm-632608 -- vim.VirtualMachine.relocate: :vmodl.fault.NotSupported
    --> Result:
    --> (vmodl.fault.NotSupported) {
    -->    faultCause = (vmodl.MethodFault) null,
    -->    faultMessage = (vmodl.LocalizableMessage) [
    -->       (vmodl.LocalizableMessage) {
    -->          key = "com.vmware.vim.vpxd.iofilter.policyChangeDisallowed",
    -->          arg = (vmodl.KeyAnyValue) [
    -->             (vmodl.KeyAnyValue) {
    -->                key = "operation",
    -->                value = "migrate"
    -->             }
    -->          ],
    -->          message = <unset>
    -->       }

Environment

VMware Cloud Director 10.6.x

Cause

The issue by the IOPS capacity enabled on source ISCSI/VMFS Storage Policy used to migrate a VM from this policy to vSAN policy, and failing in vCenter because Cloud Director code passes default Profile Specification instead of target Profile Specification.

Resolution

This issue will be fixed in later release of Cloud Director.

Workaround:

To migrate a vm from source ISCSI/VMFS to vSAN policy Detailed steps:

1. Clone original source Storage Policy and disable IOPS capability on this storage policy.
2. Migrate the VM from source ISCSI/VMFS to this intermediate clonedSource Storage Policy. This will cause just a Reconfigure Call in vCenter so that IOPS is disabled on the VM and  datastore will be left intact.
3. Change the policy from clonedSource[intermediate] Storage Policy to destination vSAN Storage Policy.