Table of Contents


Overview

Nutanix Move is a free migration tool that moves virtual machines between hypervisors with minimal downtime. It is deployed as an appliance, registers source and target environments as providers (VMware vSphere, Microsoft Hyper-V, Nutanix AHV, AWS and Azure), and organises the work into migration plans. A plan names a set of VMs, a source provider and a target, and runs through a lifecycle: validate the plan, prepare the guests, seed data while the source VM keeps running, then cut over during a short window. Move reports readiness and per-VM progress throughout.

The ReadyWorks connector talks to the Move appliance’s v2 REST API. It posts the connection’s username and password to /move/v2/users/login as a spec.username and spec.password body, reads the JWT from the Status.Token node of the response, and presents it as Authorization: Bearer on all subsequent calls. The inbound jobs then read plans, providers, workloads and appliance configuration into their own staging tables in the estate. Every job carries a retry policy of five attempts, five seconds apart, with a three hundred second API timeout.

In a ReadyWorks context this connector is about tracking a live migration programme. The inbound jobs tell you which plans exist, which VMs sit inside each plan, what state each of those VMs is in, and what the source environments actually contain. That lets you reconcile the migration plan against the estate of record, spot VMs that belong in a wave but were never added to a plan, report wave progress from the real appliance state rather than from a spreadsheet, and tie migration status back to the applications and owners already held in ReadyWorks.

Direction: the connector is bidirectional, and its outbound side is materially different from most connectors in this library. The eight outbound templates drive the migration itself rather than writing records back into Move. They create and delete migration plans, run readiness checks, prepare guest VMs, start a plan and perform per-VM actions such as cutover. In effect ReadyWorks becomes the orchestrator: the estate decides which VMs move in which wave, and these jobs execute that decision against the Move appliance.

NOTE: Six of the eight outbound templates ship with Enabled set to Yes, including Delete Migration Plan and Start Migration Plan. These jobs change the state of a live migration. Review the outbound job list and disable everything you do not intend to run before you attach this connection to production data.

Connector Properties

PropertyValueIdentifierNUTANIX MOVENameNutanix MoveDescriptionNutanix Move (Move) is a cross-hypervisor mobility solution to migrate VMs and files with minimal downtime.Job TypesBoth Inbound and OutboundOrder50EnabledYesLockedYesBlock UpdateNoSingle AuthenticationNoWindows OnlyNoConnector Version2026-07-06HooksNoneAdditional Job FieldsNoneImage

Authentication Methods

The connector ships one authentication method. It exchanges a Move appliance username and password for a JWT and uses that token for every subsequent call.

MethodIdentifierBase MethodScriptOrderEnabledConfig FieldsNutanix Move: User/Pass to JWT TokenNUTANIX MOVE_bd1bfbc15bNUTANIX MOVE_bd1bfbc15bjson_rest_api.php10Yes7

NOTE: The account used here needs enough privilege on the Move appliance to perform whatever the enabled outbound jobs do. If you enable only the inbound jobs, a read-capable account is sufficient. If you enable the plan lifecycle jobs, the account can create, start and delete migration plans.

Method 1: Nutanix Move: User/Pass to JWT Token (NUTANIX MOVE_bd1bfbc15b)

Username and Password to JWT Token

Posts the username and password as a JSON body (spec.username and spec.password) to the Authentication Token End Point, extracts the JWT from the Status.Token node named in Authentication Token JSON Node, and attaches it as a Bearer token on the data calls. Both the API Domain and the Authentication Token End Point ship with a placeholder hostname that must be replaced with your Move appliance address before the connection will work.

Connection Configuration Fields (7)

OrderLabelTypeRequiredDefaultMax LenTooltip10API DomaintextYeshttps://MOVE_FQDN_REPLACE255Enter API domain of the Connection30Server Temporary Working PathtextYesstorage/etl5255Enter path where temporary files are stored during data processing (exclude starting and ending backslash)40UsernametextNo1024Tooltip for Username50PasswordpasswordNo64000Tooltip for Password190Authentication Token End PointtextYeshttps://MOVE_FQDN_REPLACE/move/v2/users/login500Tooltip for Authentication End Point200Authentication Token JSON NodetextYesStatus.Token255Tooltip for Authentication Data Node250Additional Job Fieldsfields_listNoEnter list of additional fields to add to staging data for all jobs

Authentication Configuration

Headers sent on the authentication call:

HeaderValueBase64Content-Type:application/jsonOff

Headers sent on the data calls:

HeaderValueBase64Authorization:Bearer%auth_data%Off

Authentication request body:

KeyValuespec.username%user_name%spec.password%user_pass%

cURL options:

OptionAuthentication CallData CallsUSERAGENTMozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0SameSSL_VERIFYHOSTfalseSameSSL_VERIFYPEERfalseSameRETURNTRANSFERtrueSameFOLLOWLOCATIONtrueSameFAILONERRORtrueSame

NOTE: The appliance FQDN appears in two separate fields, API Domain and Authentication Token End Point. Change both. Editing only the API Domain leaves the token request pointing at the placeholder host.

NOTE: This connection form does not expose the Single Authentication field, so the connector’s default of re-authenticating on every enumeration and pagination loop cannot be changed from the connection form.

Inbound Job Fields Enabled (45)

Inbound jobs expose the full REST job form, including the pagination group and all three enumeration levels, which the plan-scoped and provider-scoped jobs depend on.

OrderLabelTypeRequiredDefaultTooltip10Job DescriptiontextYesEnter description of the Job20Job SchedulelookupYesDailySelect frequency Job should run30EnabledradioYesYesChoose if Job is enabled40Use Unparsed DataradioNoNoChoose if you wish to parse the incoming data, or leave it in its raw format50Log Raw API CallsradioYesNoChoose if raw API calls are logged60Convert UUID-Keyed Objects to RowsradioNoNoWhen parsing JSON convert objects keyed entirely by UUIDs into rows of a single table, storing each UUID in a _map_key field, instead of creating a separate table per UUID70Destination TabletextYesEnter name of the destination table80Data IdentitytextNoEnter identity of the Job120Append New Data to Existing TablesradioNoNoChoose if new data will append to the existing destination table, or will create a new destination table130Fields to IndextextNoEnter fields to index170Method TypeselectYesGETSelect method type of the Job190API End PointtextNoEnter API end point of the Job200API Data Parametersfields_listNoEnter API data parameters of the Job210Body Data Sending MethodselectYesJSON Encoded DataSelect method for sending the body data220Raw JSON Body DatatextareaNoEnter the raw JSON body to send. Do not use body selections in the API Parameters if this is used.230API Return Data NodetextNoEnter API return data node of the Job250Pagination TypeselectNoNoneSelect request paging type of the Job270API Pagination NodetextNoEnter API pagination node of the Job280Pagination Offset StarttextNoEnter request paging offset start of the Job290Pagination LimittextNoEnter request pagination limit of the Job300Pagination Termination NodetextNoEnter request paging termination node and value of the Job310Maximum API CallstextNoEnter maximum number of API calls for the Job to make320Enumeration 1 TypeselectNoNoneEnter enumeration level 1 type330Enumeration 1 ETL JoblookupNoSelect ETL job for the enumeration values340Enumeration 1 Data Typedata_typeNoSelect the data type and fields for enumeration 1 values350Enumeration 1 Keys End PointtextNoEnter enumeration 1 keys end point of the Job360Enumeration 1 NodetextNoEnter enumeration 1 node of the Job370Enumeration 1 Fieldsfields_listNoEnter enumeration 1 fields of the Job380Enumeration 2 TypeselectNoNoneEnter enumeration level 2 type390Enumeration 2 ETL JoblookupNoSelect ETL job for the enumeration 2 values400Enumeration 2 Data Typedata_typeNoSelect the data type and fields for enumeration 2 values410Enumeration 2 Keys End PointtextNoEnter enumeration 2 keys end point of the Job420Enumeration 2 NodetextNoEnter enumeration 2 node of the Job430Enumeration 2 Fieldsfields_listNoEnter enumeration 2 fields of the Job440Enumeration 3 TypeselectNoNoneEnter enumeration level 3 type450Enumeration 3 ETL JoblookupNoSelect ETL job for the enumeration 3 values460Enumeration 3 Data Typedata_typeNoSelect the data type and fields for enumeration 3 values470Enumeration 3 Keys End PointtextNoEnter enumeration 3 keys end point of the Job480Enumeration 3 NodetextNoEnter enumeration 3 node of the Job490Enumeration 3 Fieldsfields_listNoEnter enumeration 3 fields of the Job500Pause EnumerationtextNoEnter values for pausing enumeration every X calls for Y seconds510Kill Enumeration on ErrorradioNoNoChoose to stop the enumeration loop on an error or continue processing the loop520Additional Fieldsfields_listNoEnter list of additional fields to add to staging data550Retry PausetextNoEnter values for retrying a failed API connection. Retry X times, waiting Y seconds between each try, with an API timeout of Z seconds.560OrdertextYesEnter order of the Job

Outbound Job Fields Enabled (13)

The outbound job form carries the fields that make the action templates work: the outbound field list that supplies identifiers into the endpoint path, the raw JSON outbound template that carries the request body, and the return data field list that captures the appliance’s response.

OrderLabelTypeRequiredDefaultTooltip10Job DescriptiontextYesEnter description of the Job30EnabledradioYesYesChoose if Job is enabled50Log Raw API CallsradioYesNoChoose if raw API calls are logged170Method TypeselectYesGETSelect method type of the Job180Data Sending MethodselectYesJSON Encoded DataSelect method for sending the outbound data190API End PointtextNoEnter API end point of the Job200API Data Parametersfields_listNoEnter API data parameters of the Job210Body Data Sending MethodselectYesJSON Encoded DataSelect method for sending the body data260Return Data Fields Listfields_listYesEnter return data fields of the Job530Outbound Fields Listfields_listYesEnter outbound fields of the Job540Ignore Empty Outbound FieldsradioNoYesIgnore, and do not include, any outbound fields that are empty and have no data550Raw JSON Outbound TemplatetextareaNoEnter the raw JSON outbound template to send. This will replace any automated structures defined in the outbound fields.560OrdertextYesEnter order of the Job

Inbound Job Templates (9)

Nine inbound templates ship. Five are working read jobs covering plans, providers, workloads, provider inventory and appliance configuration. The other four are identifier feeder jobs, shipped disabled, whose purpose is to supply the plan and provider identifiers that the plan-scoped and provider-scoped jobs need.

#Job DescriptionDestination TableAPI End PointEnabledWhat It Pulls1GET Migration Plansmove_mig_plans/move/v2/plans/%enum_id_1%YesThe full definition of a single migration plan from /move/v2/plans/{uuid}: the source and target providers, the plan settings, the network and storage mapping, the schedule and the current plan state.2GET Migration Plans UUIDmove_mig_plans_uuid/move/v2/plans/listNoA list call to /move/v2/plans/list that reads the Entities.MetaData node, giving the identifier, name and creation timestamp of every migration plan on the appliance. Shipped disabled, as a source of plan identifiers for the plan-scoped jobs.3GET Providers UUID – Enum 1move_providers_uuid_enum_1/move/v2/providers/listNoA list call to /move/v2/providers/list reading the Entities.MetaData node, giving the identifier and name of every registered provider. Shipped disabled, as a source of provider identifiers.4GET Providers UUID – Enum 2move_providers_uuid_enum_2/move/v2/providers/listNoIdentical in every respect to GET Providers UUID - Enum 1 apart from its destination table. A second copy of the provider identifier feeder, shipped disabled.5GET Providersmove_providers/move/v2/providers/listYesA list call to /move/v2/providers/list reading the Entities node, which returns the full record rather than just the metadata: every source and target environment registered with the appliance, with its type, connection details, version and health state.6GET Workloadsmove_workloads/move/v2/plans/%enum_id_1%/workloads/listYesFor each migration plan, the VMs inside that plan from /move/v2/plans/{uuid}/workloads/list, reading the Status node. This is the per-VM migration state: which stage each VM has reached, its data seeding progress, and any error it has hit. It is the only shipped inbound job with its enumeration fully wired up, enumerating plan identifiers from /move/v2/plans/list.7GET Providers Infomove_providers_info/move/v2/providers/%enum_id_1%YesThe configuration of a single registered provider from /move/v2/providers/{uuid}, reading the Spec node: the provider type, its endpoint, the credential reference and the environment version.8GET Providers Inventorymove_providers_vm/move/v2/providers/%enum_id_1%/workloads/listYesFor a given provider, every VM visible in that source environment from /move/v2/providers/{uuid}/workloads/list. This is the full inventory of a source environment rather than the subset already added to a plan, which is what lets you find VMs that belong in a wave but are not yet in any migration plan. It also sends RefreshInventory as true, so the appliance re-scans the source before answering.9GET Appliance Infomove_app_info/move/v2/configurations/applianceYesThe Move appliance’s own configuration from /move/v2/configurations/appliance, reading the Spec node: appliance version, network configuration and service settings. A small, cheap job, useful for recording which appliance version a programme ran on.

Job Template Configuration

Settings Common to All Nine Templates

SettingValueJob ScheduleDaily (15 1 * * *)Allow Empty TableYesAppend Files to Same Destination TableNoAppend New Data to Existing TablesNoUse Unparsed DataNoIgnore XML AttributesNoLog Raw API CallsNoBody Data Sending MethodJSON Encoded DataRetry Pause5,5,300

Settings That Vary by Template

TemplateIDOrderEnabledDestination TableData IdentityMethod TypeAPI End PointGET Migration Plans11140000Yesmove_mig_plansmove_mig_plansGET/move/v2/plans/%enum_id_1%GET Migration Plans UUID11240000Nomove_mig_plans_uuidmove_mig_plans_uuidPOST/move/v2/plans/listGET Providers UUID – Enum 111340000Nomove_providers_uuid_enum_1move_providers_uuid_enum_1POST/move/v2/providers/listGET Providers UUID – Enum 211440000Nomove_providers_uuid_enum_2move_providers_uuid_enum_2POST/move/v2/providers/listGET Providers11540001Yesmove_providersmove_providersPOST/move/v2/providers/listGET Workloads11640002Yesmove_workloadsmove_workloadsPOST/move/v2/plans/%enum_id_1%/workloads/listGET Providers Info11740003Yesmove_providers_infomove_providers_infoGET/move/v2/providers/%enum_id_1%GET Providers Inventory11840004Yesmove_providers_vmmove_providers_vmPOST/move/v2/providers/%enum_id_1%/workloads/listGET Appliance Info11940005Yesmove_app_infomove_app_infoGET/move/v2/configurations/appliance

Settings That Vary by Template (continued)

TemplateIDAPI Return Data NodeConvert UUID-Keyed Objects to Rowsenumeration_typeenumeration_pathenumeration_nodeGET Migration Plans111Not setNoNot setNot setNot setGET Migration Plans UUID112Entities.MetaDataNoNot setNot setNot setGET Providers UUID – Enum 1113Entities.MetaDataNoNot setNot setNot setGET Providers UUID – Enum 2114Entities.MetaDataNoNot setNot setNot setGET Providers115EntitiesNoNot setNot setNot setGET Workloads116StatusNoAPI End Point/move/v2/plans/listMetaDataGET Providers Info117SpecNoNot setNot setNot setGET Providers Inventory118Not setYesNot setNot setNot setGET Appliance Info119SpecNoNot setNot setNot set

Job Parameters and Enumeration

GET Migration Plans UUID

API data parameters:

KeyValueTypeIn BodyIncludeEntityDetails1IncludeVMDetails1EntityTypeVMStringon

GET Workloads

Enumeration 1 fields:

NameValueenum_id_1UUID

GET Providers Info

Enumeration 1 fields:

NameValueenum_id_1uuid

GET Providers Inventory

API data parameters:

KeyValueIn BodyTypeFilter.SomethingNothingonRefreshInventorytrueonBoolean

Enumeration 1 fields:

NameValueenum_id_1UUID

NOTE: None of the inbound jobs set a Pagination Type. The appliance-scoped jobs return small collections, but GET Providers Inventory returns every VM in a source environment, which on a large vSphere estate is a substantial single response.

NOTE: The four feeder templates (GET Migration Plans UUID, GET Providers UUID - Enum 1, GET Providers UUID - Enum 2) ship disabled and stage nothing on their own. They exist to be pointed at by the enumeration configuration of the plan-scoped and provider-scoped jobs.

Outbound Job Templates (8)

Eight outbound templates ship, and unlike most connectors in this library they do not write records back into the source system. They drive the Move migration lifecycle: create a plan, check its readiness, prepare the guests, start it, act on individual VMs and delete the plan when it is done. Seven of the eight take a plan identifier from the outbound field list and substitute it into the endpoint path, and six carry a raw JSON body supplied from the ReadyWorks record.

#Job DescriptionMethodAPI End PointEnabledWhat It Does1Create Migration PlanPOST/move/v2/plans/YesPOSTs to /move/v2/plans/ to create a new migration plan on the appliance. The entire plan specification (source and target providers, VM list, network mapping, settings) is passed through as raw JSON from the outbound_data field, so the record in ReadyWorks has to carry a complete, valid Move plan body.2Delete Migration PlanDELETE/move/v2/plans/%plan_id%/YesSends a DELETE to /move/v2/plans/{plan_id}/, removing the named migration plan from the appliance. It takes only a plan identifier and carries no body.3Start Migration PlanPOST/move/v2/plans/%plan_id%/startYesPOSTs to /move/v2/plans/{plan_id}/start to begin the plan, which puts Move into the data seeding phase for every VM in it. The body passed through outbound_data carries the start options.4Get Migration PlanGET/move/v2/plans/%plan_id%/YesA GET to /move/v2/plans/{plan_id}/ that reads one plan back through the outbound job path, for use where you want to check a plan immediately after acting on it rather than waiting for the next inbound run.5Migration Plan WorkloadsPOST/move/v2/plans/%plan_id%/workloads/listYesPOSTs to /move/v2/plans/{plan_id}/workloads/list to list the VMs in a plan and their current state. This is the outbound-path equivalent of the GET Workloads inbound job, scoped to one plan.6Migration Plan ReadinessPOST/move/v2/plans/%plan_id%/readinessYesPOSTs to /move/v2/plans/{plan_id}/readiness to run the appliance’s pre-flight validation over the plan, which checks source access, guest preparation requirements, target capacity and network mapping. Safe to run repeatedly and the natural gate before starting a wave.7Prepare VM’sPOST/move/v2/plans/%plan_id%/prepareYesPOSTs to /move/v2/plans/{plan_id}/prepare to run guest preparation across the plan, which is the step where Move readies the guest operating systems for the target hypervisor. The body passed through outbound_data carries the preparation options, including the guest credentials where Move needs them.8Perform Workload ActionPOST/move/v2/plans/%plan_id%/workloads/%workload_id%/actionYesPOSTs to /move/v2/plans/{plan_id}/workloads/{workload_id}/action to act on one VM inside a plan. The action itself is supplied in the raw JSON body, which is what makes this the per-VM control point for a wave, including cutover.

Job Template Configuration

Settings Common to All Eight Templates

SettingValueOrder10EnabledYesLog Raw API CallsNoBody Data Sending MethodJSON Encoded DataData Sending MethodJSON Encoded DataIgnore Empty Outbound FieldsYes

Settings That Vary by Template

TemplateIDMethod TypeAPI End PointCreate Migration Plan120POST/move/v2/plans/Delete Migration Plan121DELETE/move/v2/plans/%plan_id%/Start Migration Plan122POST/move/v2/plans/%plan_id%/startGet Migration Plan123GET/move/v2/plans/%plan_id%/Migration Plan Workloads124POST/move/v2/plans/%plan_id%/workloads/listMigration Plan Readiness125POST/move/v2/plans/%plan_id%/readinessPrepare VM’s126POST/move/v2/plans/%plan_id%/preparePerform Workload Action127POST/move/v2/plans/%plan_id%/workloads/%workload_id%/action

Job Parameters and Enumeration

Create Migration Plan

Outbound fields list:

LabelNameTypePatternoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

Delete Migration Plan

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringonon

Return data fields:

LabelNameResponse

Start Migration Plan

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringononoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

Get Migration Plan

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringonon

Return data fields:

LabelNameResponse

Migration Plan Workloads

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringononoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

Migration Plan Readiness

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringononoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

Prepare VM’s

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringononoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

Perform Workload Action

Outbound fields list:

LabelNameTypeRequiredPassed InPatternplan_idplan_idStringononworkload_idplan_idStringononoutbound_dataoutbound_dataString

Return data fields:

LabelNameResponse

Raw request body: %outbound_data%

NOTE: Six of these eight templates ship with Enabled set to Yes. Because they act on the appliance rather than write records to it, review the whole list and disable what you do not intend to run before the connection goes near production data.

NOTE: Seven templates place a plan_id in the endpoint path through the outbound field list. The plan identifier has to come from the ReadyWorks record driving the job, which normally means running GET Migration Plans UUID inbound first so the identifiers exist in the estate.

NOTE: Every template maps its response to a single return field labelled Response with no data object name set, so the appliance’s reply is not currently captured into a named field.

Last updated on 11/4/2026

Attachments