2026-08-05 · 18 min read · Cloud Migration

Demystifying Cloud Readiness: Your Azure Migrate Assessment Guide for SMBs

Diagram illustrating cloud migration assessment with data points and a cloud icon, relevant for Azure Migrate assessment guide SMB

For many small and medium-sized businesses (SMBs) in Montreal and beyond, the prospect of migrating existing on-premises infrastructure to the cloud can seem daunting. Concerns about cost, complexity, and potential downtime often overshadow the undeniable benefits of Azure's scalability, security, and operational efficiency. That's where Azure Migrate comes in. This powerful, free Microsoft service provides a unified platform to discover, assess, and plan your cloud migration with confidence.

This authoritative Azure Migrate assessment guide for SMBs from SkyCore Solutions will walk you through the essential steps to accurately evaluate your current VMware environment, understand its cloud readiness, estimate costs, and identify the optimal Azure targets. By the end of this guide, you will have a clear, data-driven assessment report detailing your path to Azure, making informed decisions easier than ever.

Prerequisites

Step 1: Prepare Your Azure Environment and Create an Azure Migrate Project

The first step in any Azure migration journey is to establish a foundational environment. This involves setting up a dedicated resource group to logically organize your migration assets and then provisioning the Azure Migrate project itself. This project acts as your central console for all discovery, assessment, and migration activities, providing a unified view of your journey.

First, log in to Azure CLI or PowerShell. For CLI, use az login. For PowerShell, use Connect-AzAccount.

Azure CLI:

# Set your desired Azure region (e.g., canadacentral for Montreal businesses)
AZURE_REGION="canadacentral"

# Define resource group and Azure Migrate project names
RESOURCE_GROUP_NAME="SkyCore-Migrate-RG"
MIGRATE_PROJECT_NAME="SkyCore-AzureMigrate-Project"

# Create a resource group for your Azure Migrate project
az group create --name "$RESOURCE_GROUP_NAME" --location "$AZURE_REGION"

# Create the Azure Migrate project
az migrate project create --name "$MIGRATE_PROJECT_NAME" \
    --resource-group "$RESOURCE_GROUP_NAME" \
    --location "$AZURE_REGION" \
    --scope "/subscriptions/$(az account show --query id -o tsv)"

Azure PowerShell:

# Set your desired Azure region
$AzureRegion = "canadacentral"

# Define resource group and Azure Migrate project names
$ResourceGroupName = "SkyCore-Migrate-RG"
$MigrateProjectName = "SkyCore-AzureMigrate-Project"

# Create a resource group for your Azure Migrate project
New-AzResourceGroup -Name $ResourceGroupName -Location $AzureRegion

# Get your current subscription ID
$SubscriptionId = (Get-AzContext).Subscription.Id

# Create the Azure Migrate project
New-AzMigrateProject -Name $MigrateProjectName -ResourceGroupName $ResourceGroupName `
    -Location $AzureRegion -Scope "/subscriptions/$SubscriptionId"

Portal alternative: Navigate to the Azure portal, search for "Azure Migrate", and click "Create project". Fill in the subscription, resource group, and project details, then click "Create".

Run this to verify:

az migrate project show --name "$MIGRATE_PROJECT_NAME" --resource-group "$RESOURCE_GROUP_NAME" --query "properties.provisioningState" -o tsv
(Get-AzMigrateProject -Name $MigrateProjectName -ResourceGroupName $ResourceGroupName).ProvisioningState

The output should show Succeeded.

Pro tip: For SMBs, consistency is key. Always use the same Azure region for your Azure Migrate project as you intend for your target Azure VM deployments. This reduces latency during data collection and simplifies resource management.

Step 2: Prepare Your VMware Environment for Discovery

Before the Azure Migrate appliance can begin collecting data, your on-premises VMware environment needs a few configurations. The most critical aspect is ensuring the Azure Migrate appliance has appropriate permissions to communicate with your vCenter Server and access your virtual machines. This step focuses on establishing a secure, read-only connection that allows for comprehensive discovery without granting excessive privileges.

This step is primarily an on-premises configuration within your vCenter Server. There are no direct Azure CLI or PowerShell commands for this part, as it involves your local VMware infrastructure.

  1. Create a vCenter Server User Account:

    Within your vCenter Server, create a new user account (e.g., AzureMigrateUser) and assign it a role with the following read-only permissions:

    • Datacenter > Host > Configuration > Read all
    • Datacenter > Host > Network > Assign network
    • Datacenter > Host > Inventory > Edit configuration
    • Datacenter > VM > Configuration > Read all
    • Datacenter > VM > Interaction > Guest operation modifications (critical for agentless dependency analysis and application discovery)
    • Datacenter > VM > Inventory > Read all
    • Datacenter > VM > Provisioning > Allow disk access
    • Datacenter > Folder > Read all
    • Datacenter > Datastore > Allocate space
    • Datacenter > Datastore > Browse datastore
    • Datacenter > Network > Assign network
    • Datacenter > Resource > Assign VM to resource pool

    Assign this role at the vCenter Server instance level, and propagate it to all child objects.

  2. Install VMware Tools:

    Ensure VMware Tools (version 10.2.1 or later) is installed and running on all Windows and Linux VMs you intend to discover. This is crucial for collecting comprehensive performance data and enabling agentless dependency analysis.

  3. PowerShell for Windows VMs / SSH for Linux VMs:

    For Windows VMs, verify PowerShell 2.0 or later is installed. For Linux VMs, configure SSH key-based authentication (recommended for secure and efficient discovery).

Portal alternative: This step is managed directly within your vCenter Server client. Log in, navigate to "Administration" > "Users and Groups" > "Roles" to create a custom role, and then assign it to a new user account. Ensure the permissions listed above are included.

Common pitfall: Insufficient vCenter user permissions are the most common cause of discovery failures. Double-check that the read-only account has 'Guest operation modifications' enabled, especially if you plan to utilize agentless dependency analysis or application discovery, which are invaluable for SMBs optimizing their migration.

Step 3: Deploy the Azure Migrate Discovery and Assessment Appliance

The Azure Migrate appliance is a lightweight virtual machine that you deploy in your VMware environment. Its primary role is to discover your on-premises servers, collect their configuration data, and continuously gather performance metrics. For SMBs, deploying this appliance is straightforward and provides the critical data needed for an accurate assessment without requiring agents on every VM.

This step involves downloading an OVA file from the Azure portal and deploying it in your vCenter Server. While you generate the project key in Azure, the core deployment is a VMware operation.

Azure CLI: (Used to generate the project key for appliance registration)

# Generate a new key for the appliance to register with the Azure Migrate project
az migrate project generate-key --name "$MIGRATE_PROJECT_NAME" --resource-group "$RESOURCE_GROUP_NAME" --query "properties.key" -o tsv

Portal alternative (Primary Method for SMBs):

  1. Navigate to the Azure portal, search for "Azure Migrate", and select your project.
  2. Under Discovery and assessment, select Discover.
  3. Choose Discover servers > Are your servers virtualized? and select Yes, with VMware vSphere hypervisor.
  4. Under 1. Prepare appliance, provide a name for the Azure Migrate appliance (e.g., SkyCore-Migrate-Appliance).
  5. Click Generate key. Copy this key – you'll need it later to register the appliance.
  6. Click Download to download the OVA file.
  7. Import the OVA file into your vCenter Server to create a new VM. Power on the VM.
  8. Access the appliance's console to set up its network configuration (static IP recommended for SMBs).
  9. Open a browser to the appliance's configuration manager (https://<ApplianceIP>:44368).
  10. Follow the on-screen instructions to set up prerequisites, provide the generated project key, and connect to Azure.

Run this to verify: After the appliance configuration completes, check the Azure portal.

Portal Verification: In your Azure Migrate project, under Discovery and assessment > Discover servers, you should see your appliance listed with a status of "Connected". This confirms successful registration.

Step 4: Start Continuous Discovery and Collect Performance Data

With the Azure Migrate appliance successfully deployed and connected, the next critical step is to configure it to connect to your vCenter Server and initiate the continuous discovery process. This is where the appliance starts collecting detailed inventory data, configuration specifics, and most importantly, performance metrics over a configurable period. This data is the backbone of an accurate and optimized assessment for your SMB.

Similar to Step 3, the configuration for discovery is primarily done through the appliance's web-based configuration manager.

Portal/Appliance Configuration Manager (Primary Method):

  1. Open the appliance's web-based configuration manager (https://<ApplianceIP>:44368) in your browser.
  2. Navigate to the Specify vCenter Server details section.
  3. Enter the vCenter Server FQDN or IP address and the credentials for the read-only vCenter user account you created in Step 2. Click Add vCenter Server.
  4. In the Specify server credentials section, provide the credentials for your Windows and Linux servers. This is crucial for application discovery and agentless dependency analysis.
    • For Windows servers: Enter domain/local administrator credentials or user accounts with local administrator privileges.
    • For Linux servers: Enter username and password or SSH private key.

    SkyCore recommends providing credentials for both OS types to get the richest assessment data.

  5. In the Start discovery section, specify the discovery scope (e.g., all VMs, specific folders, or resource pools). For SMBs, starting with all VMs is often the most straightforward approach.
  6. Click Start discovery.

Discovery begins immediately. It takes some time for discovered servers to appear in the Azure portal (typically 15-30 minutes for initial inventory, longer for performance data). Performance data collection continues for up to 30 days, providing a robust dataset for your assessment.

Run this to verify:

az migrate discovered-machine list --project-name "$MIGRATE_PROJECT_NAME" --resource-group "$RESOURCE_GROUP_NAME" --query "[].properties.displayName" -o tsv
Get-AzMigrateDiscoveredMachine -ProjectName $MigrateProjectName -ResourceGroupName $ResourceGroupName | Select-Object DisplayName

This command lists the display names of servers discovered by the appliance. You should see a growing list of your on-premises VMs.

Pro tip: Let the appliance collect performance data for at least 7 days, ideally 30 days. This period captures weekly and monthly peak utilization, leading to a much more accurate and cost-effective right-sizing assessment for your Azure VMs, preventing both under-provisioning and overspending.

Step 5: Create and Analyze Your Azure VM Assessment

This is the culmination of your discovery efforts. Once the Azure Migrate appliance has collected sufficient configuration and performance data, you can create a detailed assessment report. This report will provide crucial insights for your Azure Migrate assessment guide SMB strategy, including Azure readiness, estimated monthly costs, VM sizing recommendations, and potential cost savings through Azure Hybrid Benefit and Reserved Instances. This step focuses on optimizing for cost and performance for typical SMB workloads.

Azure CLI:

# Define assessment name and other parameters
ASSESSMENT_NAME="SkyCore-VMware-AzureVM-Assessment"
GROUP_NAME="SkyCore-VMware-Group" # Default group created by appliance if not specified

# Create an assessment group (if not already created by appliance)
az migrate group create --name "$GROUP_NAME" --project-name "$MIGRATE_PROJECT_NAME" --resource-group "$RESOURCE_GROUP_NAME"

# Create the Azure VM assessment
az migrate assessment create --name "$ASSESSMENT_NAME" \
    --group-name "$GROUP_NAME" \
    --project-name "$MIGRATE_PROJECT_NAME" \
    --resource-group "$RESOURCE_GROUP_NAME" \
    --assessment-type "AzureVM" \
    --azure-hybrid-benefit "Yes" \
    --azure-storage-type "Premium" \
    --confidence-threshold "High" \
    --currency "CAD" \
    --discount-percentage 0 \
    --do-not-auto-resolve-vm-series "No" \
    --ea-csp-discount-percentage 0 \
    --environment-type "Standard" \
    --optimization-preference "MinimizeCost" \
    --perf-data-start-time "$(date -v-30d '+%Y-%m-%dT%H:%M:%SZ')" \
    --perf-data-end-time "$(date '+%Y-%m-%dT%H:%M:%SZ')" \
    --percentile 95 \
    --pricing-tier "Standard" \
    --reserved-instance "None" \
    --right-sizing-factor 1.0 \
    --sizing-criterion "PerformanceBased" \
    --target-location "canadacentral" \
    --time-range "Last30Days" \
    --vm-uptime "24x7"

Azure PowerShell:

# Define assessment name and other parameters
$AssessmentName = "SkyCore-VMware-AzureVM-Assessment"
$GroupName = "SkyCore-VMware-Group"

# Create an assessment group (if not already created by appliance)
New-AzMigrateGroup -Name $GroupName -ProjectName $MigrateProjectName -ResourceGroupName $ResourceGroupName

# Calculate performance data start and end times for the last 30 days
$PerfDataEndTime = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$PerfDataStartTime = (Get-Date).AddDays(-30).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

# Create the Azure VM assessment
New-AzMigrateAssessment -Name $AssessmentName -GroupName $GroupName `
    -ProjectName $MigrateProjectName -ResourceGroupName $ResourceGroupName `
    -AssessmentType "AzureVM" `
    -AzureHybridBenefit "Yes" `
    -AzureStorageType "Premium" `
    -ConfidenceThreshold "High" `
    -Currency "CAD" `
    -DiscountPercentage 0 `
    -DoNotAutoResolveVmSeries "No" `
    -EaCspDiscountPercentage 0 `
    -EnvironmentType "Standard" `
    -OptimizationPreference "MinimizeCost" `
    -PerfDataStartTime $PerfDataStartTime `
    -PerfDataEndTime $PerfDataEndTime `
    -Percentile 95 `
    -PricingTier "Standard" `
    -ReservedInstance "None" `
    -RightSizingFactor 1.0 `
    -SizingCriterion "PerformanceBased" `
    -TargetLocation "canadacentral" `
    -TimeRange "Last30Days" `
    -VmUptime "24x7"

Portal alternative:

  1. In your Azure Migrate project, navigate to Servers, databases and web apps > Discovery and assessment.
  2. Click Assess and select Azure VM.
  3. In Basics, select the Azure Migrate project, assessment name, and choose to create a new group or use an existing one.
  4. In Specify assessment details, configure the settings. For SMBs, ensure Sizing criterion is Performance-based, Time range is Last 30 days, and Target location is set to your preferred region (e.g., Canada Central). Enable Azure Hybrid Benefit if applicable.
  5. Click Create assessment.

Run this to verify: After a few minutes, the assessment should be created and ready for review.

Portal Verification: In your Azure Migrate project, go to Servers, databases and web apps > Discovery and assessment > Assessments. Click on your newly created assessment to view the summary, estimated monthly costs, readiness, and VM sizing recommendations. Pay close attention to the Confidence rating – a higher rating indicates more reliable data was used for the assessment.

Common pitfall: Relying solely on 'As-is' sizing (configuration-based) for your assessment. While quicker, it often leads to oversized, more expensive Azure VMs because on-premises VMs are frequently over-provisioned. Always opt for 'Performance-based' sizing with sufficient data collection for an accurate, cost-optimized assessment.

When to bring in a consultant

While this guide provides a solid framework for SMBs to conduct their Azure Migrate assessment, certain scenarios can benefit significantly from professional expertise. SkyCore Solutions routinely assists clients with:

For these situations, or if you simply prefer expert guidance to accelerate your cloud journey and minimize risk, don't hesitate to reach out. We're here to ensure your cloud migration is a success.

Book a free consultation

References