Search Knowledge Base by Keyword

Nutanix Move

< Back

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

Property Value
Identifier NUTANIX MOVE
Name Nutanix Move
Description Nutanix Move (Move) is a cross-hypervisor mobility solution to migrate VMs and files with minimal downtime.
Job Types Both Inbound and Outbound
Order 50
Enabled Yes
Locked Yes
Block Update No
Single Authentication No
Windows Only No
Connector Version 2026-07-06
Hooks None
Additional Job Fields None
Image

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.

Method Identifier Base Method Script Order Enabled Config Fields
Nutanix Move: User/Pass to JWT Token NUTANIX MOVE_bd1bfbc15b NUTANIX MOVE_bd1bfbc15b json_rest_api.php 10 Yes 7

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)

Order Label Type Required Default Max Len Tooltip
10 API Domain text Yes https://MOVE_FQDN_REPLACE 255 Enter API domain of the Connection
30 Server Temporary Working Path text Yes storage/etl5 255 Enter path where temporary files are stored during data processing (exclude starting and ending backslash)
40 Username text No 1024 Tooltip for Username
50 Password password No 64000 Tooltip for Password
190 Authentication Token End Point text Yes https://MOVE_FQDN_REPLACE/move/v2/users/login 500 Tooltip for Authentication End Point
200 Authentication Token JSON Node text Yes Status.Token 255 Tooltip for Authentication Data Node
250 Additional Job Fields fields_list No Enter list of additional fields to add to staging data for all jobs

Authentication Configuration

Headers sent on the authentication call:

Header Value Base64
Content-Type: application/json Off

Headers sent on the data calls:

Header Value Base64
Authorization:Bearer %auth_data% Off

Authentication request body:

Key Value
spec.username %user_name%
spec.password %user_pass%

cURL options:

Option Authentication Call Data Calls
USERAGENT Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 Same
SSL_VERIFYHOST false Same
SSL_VERIFYPEER false Same
RETURNTRANSFER true Same
FOLLOWLOCATION true Same
FAILONERROR true Same

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.

Order Label Type Required Default Tooltip
10 Job Description text Yes Enter description of the Job
20 Job Schedule lookup Yes Daily Select frequency Job should run
30 Enabled radio Yes Yes Choose if Job is enabled
40 Use Unparsed Data radio No No Choose if you wish to parse the incoming data, or leave it in its raw format
50 Log Raw API Calls radio Yes No Choose if raw API calls are logged
60 Convert UUID-Keyed Objects to Rows radio No No When 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 UUID
70 Destination Table text Yes Enter name of the destination table
80 Data Identity text No Enter identity of the Job
120 Append New Data to Existing Tables radio No No Choose if new data will append to the existing destination table, or will create a new destination table
130 Fields to Index text No Enter fields to index
170 Method Type select Yes GET Select method type of the Job
190 API End Point text No Enter API end point of the Job
200 API Data Parameters fields_list No Enter API data parameters of the Job
210 Body Data Sending Method select Yes JSON Encoded Data Select method for sending the body data
220 Raw JSON Body Data textarea No Enter the raw JSON body to send. Do not use body selections in the API Parameters if this is used.
230 API Return Data Node text No Enter API return data node of the Job
250 Pagination Type select No None Select request paging type of the Job
270 API Pagination Node text No Enter API pagination node of the Job
280 Pagination Offset Start text No Enter request paging offset start of the Job
290 Pagination Limit text No Enter request pagination limit of the Job
300 Pagination Termination Node text No Enter request paging termination node and value of the Job
310 Maximum API Calls text No Enter maximum number of API calls for the Job to make
320 Enumeration 1 Type select No None Enter enumeration level 1 type
330 Enumeration 1 ETL Job lookup No Select ETL job for the enumeration values
340 Enumeration 1 Data Type data_type No Select the data type and fields for enumeration 1 values
350 Enumeration 1 Keys End Point text No Enter enumeration 1 keys end point of the Job
360 Enumeration 1 Node text No Enter enumeration 1 node of the Job
370 Enumeration 1 Fields fields_list No Enter enumeration 1 fields of the Job
380 Enumeration 2 Type select No None Enter enumeration level 2 type
390 Enumeration 2 ETL Job lookup No Select ETL job for the enumeration 2 values
400 Enumeration 2 Data Type data_type No Select the data type and fields for enumeration 2 values
410 Enumeration 2 Keys End Point text No Enter enumeration 2 keys end point of the Job
420 Enumeration 2 Node text No Enter enumeration 2 node of the Job
430 Enumeration 2 Fields fields_list No Enter enumeration 2 fields of the Job
440 Enumeration 3 Type select No None Enter enumeration level 3 type
450 Enumeration 3 ETL Job lookup No Select ETL job for the enumeration 3 values
460 Enumeration 3 Data Type data_type No Select the data type and fields for enumeration 3 values
470 Enumeration 3 Keys End Point text No Enter enumeration 3 keys end point of the Job
480 Enumeration 3 Node text No Enter enumeration 3 node of the Job
490 Enumeration 3 Fields fields_list No Enter enumeration 3 fields of the Job
500 Pause Enumeration text No Enter values for pausing enumeration every X calls for Y seconds
510 Kill Enumeration on Error radio No No Choose to stop the enumeration loop on an error or continue processing the loop
520 Additional Fields fields_list No Enter list of additional fields to add to staging data
550 Retry Pause text No Enter values for retrying a failed API connection. Retry X times, waiting Y seconds between each try, with an API timeout of Z seconds.
560 Order text Yes Enter 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.

Order Label Type Required Default Tooltip
10 Job Description text Yes Enter description of the Job
30 Enabled radio Yes Yes Choose if Job is enabled
50 Log Raw API Calls radio Yes No Choose if raw API calls are logged
170 Method Type select Yes GET Select method type of the Job
180 Data Sending Method select Yes JSON Encoded Data Select method for sending the outbound data
190 API End Point text No Enter API end point of the Job
200 API Data Parameters fields_list No Enter API data parameters of the Job
210 Body Data Sending Method select Yes JSON Encoded Data Select method for sending the body data
260 Return Data Fields List fields_list Yes Enter return data fields of the Job
530 Outbound Fields List fields_list Yes Enter outbound fields of the Job
540 Ignore Empty Outbound Fields radio No Yes Ignore, and do not include, any outbound fields that are empty and have no data
550 Raw JSON Outbound Template textarea No Enter the raw JSON outbound template to send. This will replace any automated structures defined in the outbound fields.
560 Order text Yes Enter 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 Description Destination Table API End Point Enabled What It Pulls
1 GET Migration Plans move_mig_plans /move/v2/plans/%enum_id_1% Yes The 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.
2 GET Migration Plans UUID move_mig_plans_uuid /move/v2/plans/list No A 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.
3 GET Providers UUID – Enum 1 move_providers_uuid_enum_1 /move/v2/providers/list No A 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.
4 GET Providers UUID – Enum 2 move_providers_uuid_enum_2 /move/v2/providers/list No Identical in every respect to GET Providers UUID - Enum 1 apart from its destination table. A second copy of the provider identifier feeder, shipped disabled.
5 GET Providers move_providers /move/v2/providers/list Yes A 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.
6 GET Workloads move_workloads /move/v2/plans/%enum_id_1%/workloads/list Yes For 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.
7 GET Providers Info move_providers_info /move/v2/providers/%enum_id_1% Yes The 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.
8 GET Providers Inventory move_providers_vm /move/v2/providers/%enum_id_1%/workloads/list Yes For 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.
9 GET Appliance Info move_app_info /move/v2/configurations/appliance Yes The 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

Setting Value
Job Schedule Daily (15 1 * * *)
Allow Empty Table Yes
Append Files to Same Destination Table No
Append New Data to Existing Tables No
Use Unparsed Data No
Ignore XML Attributes No
Log Raw API Calls No
Body Data Sending Method JSON Encoded Data
Retry Pause 5,5,300

Settings That Vary by Template

Template ID Order Enabled Destination Table Data Identity Method Type API End Point
GET Migration Plans 111 40000 Yes move_mig_plans move_mig_plans GET /move/v2/plans/%enum_id_1%
GET Migration Plans UUID 112 40000 No move_mig_plans_uuid move_mig_plans_uuid POST /move/v2/plans/list
GET Providers UUID – Enum 1 113 40000 No move_providers_uuid_enum_1 move_providers_uuid_enum_1 POST /move/v2/providers/list
GET Providers UUID – Enum 2 114 40000 No move_providers_uuid_enum_2 move_providers_uuid_enum_2 POST /move/v2/providers/list
GET Providers 115 40001 Yes move_providers move_providers POST /move/v2/providers/list
GET Workloads 116 40002 Yes move_workloads move_workloads POST /move/v2/plans/%enum_id_1%/workloads/list
GET Providers Info 117 40003 Yes move_providers_info move_providers_info GET /move/v2/providers/%enum_id_1%
GET Providers Inventory 118 40004 Yes move_providers_vm move_providers_vm POST /move/v2/providers/%enum_id_1%/workloads/list
GET Appliance Info 119 40005 Yes move_app_info move_app_info GET /move/v2/configurations/appliance

Settings That Vary by Template (continued)

Template ID API Return Data Node Convert UUID-Keyed Objects to Rows enumeration_type enumeration_path enumeration_node
GET Migration Plans 111 Not set No Not set Not set Not set
GET Migration Plans UUID 112 Entities.MetaData No Not set Not set Not set
GET Providers UUID – Enum 1 113 Entities.MetaData No Not set Not set Not set
GET Providers UUID – Enum 2 114 Entities.MetaData No Not set Not set Not set
GET Providers 115 Entities No Not set Not set Not set
GET Workloads 116 Status No API End Point /move/v2/plans/list MetaData
GET Providers Info 117 Spec No Not set Not set Not set
GET Providers Inventory 118 Not set Yes Not set Not set Not set
GET Appliance Info 119 Spec No Not set Not set Not set

Job Parameters and Enumeration

GET Migration Plans UUID

API data parameters:

Key Value Type In Body
IncludeEntityDetails 1
IncludeVMDetails 1
EntityType VM String on

GET Workloads

Enumeration 1 fields:

Name Value
enum_id_1 UUID

GET Providers Info

Enumeration 1 fields:

Name Value
enum_id_1 uuid

GET Providers Inventory

API data parameters:

Key Value In Body Type
Filter.Something Nothing on
RefreshInventory true on Boolean

Enumeration 1 fields:

Name Value
enum_id_1 UUID

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 Description Method API End Point Enabled What It Does
1 Create Migration Plan POST /move/v2/plans/ Yes POSTs 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.
2 Delete Migration Plan DELETE /move/v2/plans/%plan_id%/ Yes Sends 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.
3 Start Migration Plan POST /move/v2/plans/%plan_id%/start Yes POSTs 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.
4 Get Migration Plan GET /move/v2/plans/%plan_id%/ Yes A 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.
5 Migration Plan Workloads POST /move/v2/plans/%plan_id%/workloads/list Yes POSTs 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.
6 Migration Plan Readiness POST /move/v2/plans/%plan_id%/readiness Yes POSTs 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.
7 Prepare VM’s POST /move/v2/plans/%plan_id%/prepare Yes POSTs 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.
8 Perform Workload Action POST /move/v2/plans/%plan_id%/workloads/%workload_id%/action Yes POSTs 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

Setting Value
Order 10
Enabled Yes
Log Raw API Calls No
Body Data Sending Method JSON Encoded Data
Data Sending Method JSON Encoded Data
Ignore Empty Outbound Fields Yes

Settings That Vary by Template

Template ID Method Type API End Point
Create Migration Plan 120 POST /move/v2/plans/
Delete Migration Plan 121 DELETE /move/v2/plans/%plan_id%/
Start Migration Plan 122 POST /move/v2/plans/%plan_id%/start
Get Migration Plan 123 GET /move/v2/plans/%plan_id%/
Migration Plan Workloads 124 POST /move/v2/plans/%plan_id%/workloads/list
Migration Plan Readiness 125 POST /move/v2/plans/%plan_id%/readiness
Prepare VM’s 126 POST /move/v2/plans/%plan_id%/prepare
Perform Workload Action 127 POST /move/v2/plans/%plan_id%/workloads/%workload_id%/action

Job Parameters and Enumeration

Create Migration Plan

Outbound fields list:

Label Name Type Pattern
outbound_data outbound_data String

Return data fields:

Label Name
Response

Raw request body: %outbound_data%

Delete Migration Plan

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on

Return data fields:

Label Name
Response

Start Migration Plan

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on
outbound_data outbound_data String

Return data fields:

Label Name
Response

Raw request body: %outbound_data%

Get Migration Plan

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on

Return data fields:

Label Name
Response

Migration Plan Workloads

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on
outbound_data outbound_data String

Return data fields:

Label Name
Response

Raw request body: %outbound_data%

Migration Plan Readiness

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on
outbound_data outbound_data String

Return data fields:

Label Name
Response

Raw request body: %outbound_data%

Prepare VM’s

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on
outbound_data outbound_data String

Return data fields:

Label Name
Response

Raw request body: %outbound_data%

Perform Workload Action

Outbound fields list:

Label Name Type Required Passed In Pattern
plan_id plan_id String on on
workload_id plan_id String on on
outbound_data outbound_data String

Return data fields:

Label Name
Response

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.