Demystifying Cloud Readiness: Your Azure Migrate Assessment Guide for SMBs

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
- Azure Subscription: An active Azure subscription. For creating projects and registering appliances, the Azure user account requires both
ContributorandAzure Migrate Contributorbuilt-in roles on the subscription or resource group. - Azure CLI / PowerShell: Ensure you have the latest Azure CLI (version 2.x or later) or Azure PowerShell Az module (version 5.x or later) installed and configured on your workstation.
- VMware vCenter Server: vCenter Server version 5.5, 6.0, 6.5, 6.7, 7.0, or 8.0. Your servers must be hosted on an ESXi host running version 5.5 or later.
- vCenter Server Account: A vCenter Server read-only account is required for the Azure Migrate appliance to discover servers. For application discovery and agentless dependency analysis, this account must also have permissions for VM guest operations.
- VMware Tools: VMware Tools (version 10.2.1 or later) must be installed and running on all Windows and Linux VMs you intend to discover for comprehensive data collection.
- Windows Server Prerequisites: For Windows servers, PowerShell version 2.0 or later is required for application discovery and agentless dependency analysis.
- Linux Server Prerequisites: For Linux servers, SSH key-based authentication is recommended for configuration and performance data, installed applications, and agentless dependency analysis.
- Network Connectivity: The Azure Migrate appliance requires outbound internet access (either directly or via an HTTPS proxy) to connect to Azure.
- Appliance Resources: Your vCenter Server must be able to allocate 8 vCPUs, 32 GB RAM, and approximately 80 GB of disk storage for the Azure Migrate appliance VM.
- Estimated Cost: The Azure Migrate service itself is free for discovery and assessment. You only incur costs when you actually migrate and provision resources in Azure. The assessment phase is designed to help you *estimate* those future costs.
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_REGION: Specifies the Azure region where your resource group and Azure Migrate project will reside. For SMBs in Montreal,canadacentralis an excellent choice for data residency and proximity.RESOURCE_GROUP_NAME: A logical container for your Azure resources. Using a dedicated resource group for migration assets simplifies management and cleanup.MIGRATE_PROJECT_NAME: The unique name for your Azure Migrate project.--scope: Defines the scope of the project, typically your entire subscription for SMBs to ensure all relevant resources can be discovered.
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"
$AzureRegion: Similar to CLI, defines the Azure region for your resources.$ResourceGroupName: Name of the resource group.$MigrateProjectName: Name of your Azure Migrate project.-Scope: Specifies the scope of the project, linking it to your Azure subscription.
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.
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.
-
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 allDatacenter>Host>Network>Assign networkDatacenter>Host>Inventory>Edit configurationDatacenter>VM>Configuration>Read allDatacenter>VM>Interaction>Guest operation modifications(critical for agentless dependency analysis and application discovery)Datacenter>VM>Inventory>Read allDatacenter>VM>Provisioning>Allow disk accessDatacenter>Folder>Read allDatacenter>Datastore>Allocate spaceDatacenter>Datastore>Browse datastoreDatacenter>Network>Assign networkDatacenter>Resource>Assign VM to resource pool
Assign this role at the vCenter Server instance level, and propagate it to all child objects.
-
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.
-
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.
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
--name: The name of your Azure Migrate project.--resource-group: The resource group where your Azure Migrate project resides.- This command outputs a project key, which you'll use during the appliance configuration.
Portal alternative (Primary Method for SMBs):
- Navigate to the Azure portal, search for "Azure Migrate", and select your project.
- Under Discovery and assessment, select Discover.
- Choose Discover servers > Are your servers virtualized? and select Yes, with VMware vSphere hypervisor.
- Under 1. Prepare appliance, provide a name for the Azure Migrate appliance (e.g.,
SkyCore-Migrate-Appliance). - Click Generate key. Copy this key – you'll need it later to register the appliance.
- Click Download to download the OVA file.
- Import the OVA file into your vCenter Server to create a new VM. Power on the VM.
- Access the appliance's console to set up its network configuration (static IP recommended for SMBs).
- Open a browser to the appliance's configuration manager (
https://<ApplianceIP>:44368). - 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):
- Open the appliance's web-based configuration manager (
https://<ApplianceIP>:44368) in your browser. - Navigate to the Specify vCenter Server details section.
- 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.
- 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.
- 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.
- 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.
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"
ASSESSMENT_NAME: A descriptive name for your assessment.GROUP_NAME: The name of the group of discovered servers you want to assess. The appliance usually creates a default group.--assessment-type "AzureVM": Specifies that this is an assessment for migrating to Azure Virtual Machines.--azure-hybrid-benefit "Yes": SMB Recommendation: Set toYesif you have active Software Assurance for your Windows Server licenses. This significantly reduces VM costs by letting you use your existing licenses.--azure-storage-type "Premium": SMB Recommendation: For most business-critical workloads, Premium SSDs offer excellent performance and reliability.--confidence-threshold "High": Only includes VMs in the assessment that have a high confidence rating for performance data.--currency "CAD": Sets the currency for cost estimation, crucial for Montreal-based SMBs.--optimization-preference "MinimizeCost": SMB Recommendation: Focuses the assessment on finding the most cost-effective Azure VM sizes while meeting performance requirements.--perf-data-start-time&--perf-data-end-time: Specifies the time window for performance data analysis.Last30Daysis generally preferred for comprehensive data.--percentile 95: Uses the 95th percentile of performance data. This means the assessment will size VMs to handle 95% of peak loads, avoiding over-provisioning for rare spikes.--reserved-instance "None": SMB Recommendation: Start withNonefor the initial assessment. Once workloads are stable, consider 1-year Reserved Instances (set toOneYear) for predictable VMs to achieve significant savings.--sizing-criterion "PerformanceBased": SMB Recommendation: This is crucial. Performance-based sizing uses collected utilization data (CPU, RAM, disk I/O) to recommend the right-sized Azure VMs, avoiding costly 'lift and shift' of oversized on-premises VMs.--target-location "canadacentral": The target Azure region for your VMs.--vm-uptime "24x7": Assumes VMs run continuously. Adjust if you have scheduled shutdowns.
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:
- In your Azure Migrate project, navigate to Servers, databases and web apps > Discovery and assessment.
- Click Assess and select Azure VM.
- In Basics, select the Azure Migrate project, assessment name, and choose to create a new group or use an existing one.
- In Specify assessment details, configure the settings. For SMBs, ensure Sizing criterion is
Performance-based, Time range isLast 30 days, and Target location is set to your preferred region (e.g., Canada Central). Enable Azure Hybrid Benefit if applicable. - 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.
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:
- Complex Application Dependencies: If your environment involves intricate, multi-tier applications with complex interdependencies, a consultant can help map these out precisely to ensure a smooth migration order and minimal downtime.
- Hybrid Identity and Directory Services: Integrating on-premises Active Directory with Azure Active Directory (now Microsoft Entra ID) and configuring hybrid identity solutions can be challenging.
- Advanced Networking: Designing secure and optimized network architectures, including VPNs, ExpressRoute, and VNet peering, for your cloud environment.
- Large-Scale or Mission-Critical Migrations: For businesses with hundreds of VMs or workloads that demand near-zero downtime, a phased, expertly managed migration plan is essential.
- Security Hardening and Compliance: Ensuring your Azure environment meets industry-specific compliance standards and is hardened against modern threats.
- Database Modernization: Migrating complex SQL Server or other database instances to Azure SQL Database or Azure SQL Managed Instance, optimizing for performance and cost.
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