---
title: "Relocate to STACKIT: Migrate VMware with Coriolis"
description: "Migrate VMware VMs to STACKIT with Coriolis: prepare endpoints, synchronize target disks, deploy and validate a new VM, then complete cutover and operating handoff."
scfTrail:
  tags: ["relocate", "vmware", "coriolis", "technical", "cutover"]
  maintainers:
    - user: "lukas.weberruss"
      role: true
      website: true
  steps:
    - style: "compass"
      id: "migration-model"
      title: "Understand Transfer and Deployment"
      trailContext: "Separate the disk pipeline from server creation: Executions populate destination volumes; Deployments create new STACKIT VMs from those volumes. Use the source configuration to define the target mapping."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#separate-disk-transfer-from-vm-deployment"

    - style: "compass"
      id: "migration-objects"
      title: "Identify the Migration Objects"
      trailContext: "Name the appliance, providers, endpoint and project scopes, worker regions, Transfers, Executions and Deployments before assigning credentials or resource identifiers."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#migration-objects-and-roles"

    - style: "shield"
      id: "prerequisites"
      title: "Prepare Access and Permissions"
      trailContext: "Prepare a licensed appliance, supported source guests, dedicated platform credentials, destination quotas and an approved maintenance plan. Enable the project Agent Service for Agent-based validation."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#prerequisites-and-safety-boundaries"

    - style: "hut"
      id: "connectivity"
      title: "Connect the Migration Networks"
      trailContext: "Establish management, disk-export and private worker connectivity. Keep the Coriolis control plane, temporary workers and final application network distinct."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#architecture-and-network-connections"

    - style: "stairs"
      id: "source-and-target"
      title: "Prepare the VM and Destination"
      trailContext: "Inventory source CPU, RAM, firmware, disks and application data, then reserve target capacity and capture the baseline. The example retains Spring Boot and PostgreSQL inside the relocated Ubuntu VM."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#prepare-vmware-and-stackit"

    - style: "compass"
      id: "operator-inputs"
      title: "Set the Operator Inputs"
      trailContext: "Fill the documented appliance, credential, project, network, image and machine-type inputs. Use protected files for secrets and derive resource IDs from the API responses."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#prepare-the-workspace"

    - style: "shield"
      id: "authentication"
      title: "Authenticate to Coriolis"
      trailContext: "Discover the identity and migration API paths, obtain a Keystone token and scope it to the authorized Coriolis project. Keep this scope separate from the STACKIT destination project."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#authenticate-to-the-coriolis-api"

    - style: "compass"
      id: "provider-settings"
      title: "Select Providers and Workers"
      trailContext: "Read the installed connection and environment schemas and select a reachable worker region. Distinguish temporary-worker sizing from final application-server sizing."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#read-provider-schemas-and-select-workers"

    - style: "hut"
      id: "endpoints"
      title: "Configure Platform Endpoints"
      trailContext: "Create and validate VMware and STACKIT connections, refresh source inventory and select the exact VM IDs. Map every source network to its approved destination network."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#create-and-validate-platform-endpoints"

    - style: "gondola"
      id: "target-disks"
      title: "Build and Synchronize Target Disks"
      trailContext: "Create a Transfer and execute the initial disk copy with integrity verification. Require completed replication and cleanup; transferred volumes do not yet represent a running application VM."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#build-and-synchronize-target-disks"

    - style: "rocket"
      id: "test-deployment"
      title: "Create a New STACKIT VM"
      trailContext: "Deploy cloned disks as a new server with the approved machine type, firmware, NICs and security groups. Complete OS morphing and match actual server/NIC/volume IDs before guest acceptance."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#create-a-new-target-vm"

    - style: "shield"
      id: "target-acceptance"
      title: "Validate the Rehearsal VM"
      trailContext: "Compare guest drivers, boot, mounts, users, access and application data against the source baseline. A completed Deployment is not application acceptance."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#validate-the-target-vm"

    - style: "gondola"
      id: "delta-synchronization"
      title: "Synchronize Source Changes"
      trailContext: "Execute the same Transfer again and validate updated data using a fresh cloned Deployment. An existing rehearsal VM does not receive subsequent disk synchronization automatically."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#synchronize-source-changes"

    - style: "rocket"
      id: "final-cutover"
      title: "Freeze, Synchronize and Cut Over"
      trailContext: "Stop source writes and the guest, synchronize the final disks, create and accept the final VM, then switch approved traffic and enable target writes. Retain the source for the recovery period."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#final-cutover-and-recovery-gates"

    - style: "summit"
      id: "operating-handoff"
      title: "Hand Over the Migrated Workload"
      trailContext: "Deliver exact resource/job IDs, acceptance records, access policy, monitoring, backups and retention decisions. Reconcile temporary resources before authorized cleanup."
      assetId: "migration/assetcontainer/stackit/relocate-automation-vmware-coriolis#evidence-and-operating-handoff"

  presentations:
    - id: "coriolis-technical-walkthrough"
      label: "Coriolis technical guide"
      description: "The same chronological implementation sequence as the technical Trail, from disk transfer to a new VM and controlled cutover."
      default: true
      launch: true
      preset: "focus"
      fullscreen: true
      steps:
        - "migration-model"
        - "migration-objects"
        - "prerequisites"
        - "connectivity"
        - "source-and-target"
        - "operator-inputs"
        - "authentication"
        - "provider-settings"
        - "endpoints"
        - "target-disks"
        - "test-deployment"
        - "target-acceptance"
        - "delta-synchronization"
        - "final-cutover"
        - "operating-handoff"
source_url: "https://framework.stackit.cloud/migration/trails/stackit/vmware-to-stackit-with-coriolis/"
source_file: "docs/migration/trails/stackit/vmware-to-stackit-with-coriolis.mdx"
---

## Steps

### 1. Understand Transfer and Deployment

Stage: `compass`

Separate the disk pipeline from server creation: Executions populate destination volumes; Deployments create new STACKIT VMs from those volumes. Use the source configuration to define the target mapping.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#separate-disk-transfer-from-vm-deployment](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#separate-disk-transfer-from-vm-deployment) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#separate-disk-transfer-from-vm-deployment`

### 2. Identify the Migration Objects

Stage: `compass`

Name the appliance, providers, endpoint and project scopes, worker regions, Transfers, Executions and Deployments before assigning credentials or resource identifiers.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#migration-objects-and-roles](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#migration-objects-and-roles) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#migration-objects-and-roles`

### 3. Prepare Access and Permissions

Stage: `shield`

Prepare a licensed appliance, supported source guests, dedicated platform credentials, destination quotas and an approved maintenance plan. Enable the project Agent Service for Agent-based validation.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prerequisites-and-safety-boundaries](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prerequisites-and-safety-boundaries) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#prerequisites-and-safety-boundaries`

### 4. Connect the Migration Networks

Stage: `hut`

Establish management, disk-export and private worker connectivity. Keep the Coriolis control plane, temporary workers and final application network distinct.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#architecture-and-network-connections](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#architecture-and-network-connections) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#architecture-and-network-connections`

### 5. Prepare the VM and Destination

Stage: `stairs`

Inventory source CPU, RAM, firmware, disks and application data, then reserve target capacity and capture the baseline. The example retains Spring Boot and PostgreSQL inside the relocated Ubuntu VM.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prepare-vmware-and-stackit](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prepare-vmware-and-stackit) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#prepare-vmware-and-stackit`

### 6. Set the Operator Inputs

Stage: `compass`

Fill the documented appliance, credential, project, network, image and machine-type inputs. Use protected files for secrets and derive resource IDs from the API responses.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prepare-the-workspace](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#prepare-the-workspace) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#prepare-the-workspace`

### 7. Authenticate to Coriolis

Stage: `shield`

Discover the identity and migration API paths, obtain a Keystone token and scope it to the authorized Coriolis project. Keep this scope separate from the STACKIT destination project.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#authenticate-to-the-coriolis-api](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#authenticate-to-the-coriolis-api) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#authenticate-to-the-coriolis-api`

### 8. Select Providers and Workers

Stage: `compass`

Read the installed connection and environment schemas and select a reachable worker region. Distinguish temporary-worker sizing from final application-server sizing.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#read-provider-schemas-and-select-workers](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#read-provider-schemas-and-select-workers) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#read-provider-schemas-and-select-workers`

### 9. Configure Platform Endpoints

Stage: `hut`

Create and validate VMware and STACKIT connections, refresh source inventory and select the exact VM IDs. Map every source network to its approved destination network.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#create-and-validate-platform-endpoints](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#create-and-validate-platform-endpoints) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#create-and-validate-platform-endpoints`

### 10. Build and Synchronize Target Disks

Stage: `gondola`

Create a Transfer and execute the initial disk copy with integrity verification. Require completed replication and cleanup; transferred volumes do not yet represent a running application VM.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#build-and-synchronize-target-disks](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#build-and-synchronize-target-disks) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#build-and-synchronize-target-disks`

### 11. Create a New STACKIT VM

Stage: `rocket`

Deploy cloned disks as a new server with the approved machine type, firmware, NICs and security groups. Complete OS morphing and match actual server/NIC/volume IDs before guest acceptance.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#create-a-new-target-vm](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#create-a-new-target-vm) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#create-a-new-target-vm`

### 12. Validate the Rehearsal VM

Stage: `shield`

Compare guest drivers, boot, mounts, users, access and application data against the source baseline. A completed Deployment is not application acceptance.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#validate-the-target-vm](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#validate-the-target-vm) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#validate-the-target-vm`

### 13. Synchronize Source Changes

Stage: `gondola`

Execute the same Transfer again and validate updated data using a fresh cloned Deployment. An existing rehearsal VM does not receive subsequent disk synchronization automatically.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#synchronize-source-changes](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#synchronize-source-changes) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#synchronize-source-changes`

### 14. Freeze, Synchronize and Cut Over

Stage: `rocket`

Stop source writes and the guest, synchronize the final disks, create and accept the final VM, then switch approved traffic and enable target writes. Retain the source for the recovery period.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#final-cutover-and-recovery-gates](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#final-cutover-and-recovery-gates) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#final-cutover-and-recovery-gates`

### 15. Hand Over the Migrated Workload

Stage: `summit`

Deliver exact resource/job IDs, acceptance records, access policy, monitoring, backups and retention decisions. Reconcile temporary resources before authorized cleanup.

Asset: [/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#evidence-and-operating-handoff](/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis/#evidence-and-operating-handoff) — source: [/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md](/raw/migration/assetcontainer/stackit/relocate-automation-vmware-coriolis.md), section `#evidence-and-operating-handoff`

