#1 Global Leader in Data Resilience

Guidelines for Mass Instant Recovery to Azure

KB ID: 4764
Product: Veeam Backup & Replication | 13
Published: 2025-09-11
Last Modified: 2025-09-16
mailbox
Get weekly article updates
By subscribing, you are agreeing to have your personal information managed in accordance with the terms of Veeam's Privacy Notice.

Cheers for trusting us with the spot in your mailbox!

Now you’re less likely to miss what’s been brewing in our knowledge base with this weekly digest

error icon

Oops! Something went wrong.

Please, try again later.

Challenge

When attempting to perform mass recovery using Instant Recovery to Azure, the restore fails with the following error messages, which may be found within the UI and logs:

Specific error messages:

  • TooManyPendingCreatAccountOperations
    
  • TooManyRequests
    

Generic error messages:

  • The request failed due to an internal error
    
  • The request wasn't completed in time. Cannot validate argument on parameter 'parameter_name'. The argument is null", If the restore was started using PowerShell cmdlets
    

Cause

When this occurs, the restore settings and Veeam Backup & Replication configuration must be adjusted for mass recovery.

The following factors may cause a mass restore to fail:

  • Many Azure resources are created during the restore process, which may lead to Azure API throttling and subsequent restore failures.
  • By default, restore jobs create temporary Azure storage accounts.
    The rate at which storage accounts can be created is limited, which may result in restore job failures.
  • Mass recovery generates additional peak load on the backup server.
  • Both restored VMs and temporary helper appliance VMs require sufficient CPU quotas and available IP addresses.

Solution

Mass Restore Preparation and Considerations

Start preparations for mass restore by checking the latest version of these documents:

Note: Up to 50 simultaneously running restores are currently supported. If you need to restore more than 50 items, restore in batches: start 50 restores, wait for migration and switchover to complete, and then start the next batch of 50.
VBR Server Resource Consumption

Each restore workload starts a separate veeam.backup.manager process on the backup server. Each process requires up to 500 MB of RAM and additional CPU resources. (50 restores running in parallel can consume up to 25 GB of RAM.)

It is generally recommended to assign 16 CPUs and 48 GB of RAM to the backup server for 50 simultaneous restores.

Azure Resources Created During Restore

To reduce the number of Azure resources created during each restore, select existing resources whenever possible. This helps prevent Azure API throttling, which may cause restore failures.

Avoid creating temporary storage accounts during restore, as the rate at which storage accounts can be created is additionally limited.

CPU Quotas and IP Addresses

Each restore workload requires a temporary helper appliance VM, which runs until the restored workload completes the switchover phase and becomes a regular Azure VM.

Each helper appliance requires:

Ensure that the target Azure subscription's CPU quotas are sufficient for both:

  • Restored workloads
  • Helper appliances

Ensure that the selected subnets have enough available IP addresses in the:

  • Production subnet for restored workloads
  • Appliance subnet for helper appliances

Overview of Restore Wizard Recommended Settings

  1. On the Resource Group tab of the restore wizard, select an existing resource group.
  1. On the Network tab of the restore wizard, select the following options to reduce the number of Azure resources consumed:
    • Select an existing network security group. Using the default option ("Empty") will cause a new network security group with default settings for each restored workload.
    • Do not assign public IP addresses. Each public IP is an additional Azure resource.
A screenshot of the Virtual Network dialog options when selected from the Network tab of the Instant Recover to Microsoft Azure wizard.
  1. On the Helper Appliance tab of the wizard, select an existing storage account.

    By default, a new temporary storage account will be created for convenience. However, this is not optimal for parallel restores, as Azure limits the rate at which storage accounts can be created. It is not recommended to use this storage account for purposes other than Instant Recovery to Azure. The same storage account can be used for multiple restored workloads.

    Although not related to Azure API load, it is highly recommended to select a separate subnet for appliance traffic, as some workloads may fail to boot after restore if this is not configured. Production subnet is selected on the previous page ("Network") of the restore wizard.
Screenshot of storage account selection window from the Helper Appliance tab of the Instant Restore to Microsoft Azure wizard.

Example Start-VBRAzureInstantRecovery PowerShell Script

# Customer must update all variable values below
$vbrserverhostname = "vbrserver.domain.local"
$vbruser = "veeamadmin"
$vbrpassword = "P@ssw0rd"
$azurecomputeaccountname = "azcomputeaccount01"
$subscriptionid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
$locationname = "westeurope"
$targetrgname = "demo-parallel-restores-target"
$appliancestorageaccountname = "demoparallelrestoresstor"
$virtualnetworkname = "demo-parallel-restores-prod-vnet"
$prodsubnetname = "prod-subnet"
$appliancesubnetname = "appliances-subnet"
$nsgname = "demo-parallel-restores-nsg"
$vmsizename = "Standard_F4s_v2"
$wait = 5

# Make no changes below this line.

# Loading PowerShell Module and Connect to VBR Server
function Import-VBRPSModule {
$veeamPSModuleName = "Veeam.Backup.PowerShell"
$path = [Environment]::GetEnvironmentVariable('PSModulePath', 'Machine')
$env:PSModulePath +="$([System.IO.Path]::PathSeparator)$path"
$veeamPSModule = Get-Module -ListAvailable | Where-Object{$_.Name -match $veeamPSModuleName}
Import-Module $veeamPSModule.Path -DisableNameChecking
break
}

Import-VBRPSModule
Connect-VBRServer -Server $vbrserverhostname -User $vbruser -Password $vbrpassword -ForceAcceptTlsCertificate

# Set variables based on customer set values
$azurecomputeaccount = Get-VBRAzureAccount -Name $azurecomputeaccountname
$subscription = Get-VBRAzureSubscription -Account $azurecomputeaccount | Where-Object SubscriptionId -eq $subscriptionid
$location = Get-VBRAzureLocation -Subscription $subscription -Name $locationname
$targetrg = Get-VBRAzureResourceGroup -Subscription $subscription -Name $targetrgname
$appliancestorageaccount = Get-VBRAzureStorageAccount -Subscription $subscription -Name $appliancestorageaccountname
$virtualnetwork = Get-VBRAzureVirtualNetwork -Subscription $subscription -Name $virtualnetworkname
$virtualsubnet = Get-VBRAzureVirtualNetworkSubnet -Network $virtualnetwork -Name $prodsubnetname
$appliancesubnet = Get-VBRAzureVirtualNetworkSubnet -Network $virtualnetwork -Name $appliancesubnetname
$networksecuritygroup = Get-VBRAzureNetworkSecurityGroup -Subscription $subscription -Name $nsgname
$vmsize = Get-VBRAzureVMSize -Subscription $subscription -Location $location -Name $vmsizename

# Perform mass recovery
#$restorepoints is an array of restore points that must be prepared using Get-VBRRestorePoint
#https://helpcenter.veeam.com/docs/vbr/powershell/get-vbrrestorepoint.html

foreach ($restorepoint in $restorepoints) {
Start-VBRAzureInstantRecovery -RestorePoint $restorepoint -Subscription $subscription -Location $location -ResourceGroup $targetrg -VirtualNetwork $virtualnetwork -VirtualSubnet $virtualsubnet -ApplianceSubnet $appliancesubnet -ApplianceStorageAccount $appliancestorageaccount -VmSize $vmsize -NetworkSecurityGroup $networksecuritygroup -VerifyVMBoot -RunAsync
Start-Sleep $wait
}

If this KB article did not resolve your issue or you need further assistance with Veeam software, please create a Veeam Support Case.

To submit feedback regarding this article, please click this link: Send Article Feedback
To report a typo on this page, highlight the typo with your mouse and press CTRL + Enter.

Spelling error in text

Thank you!

Thank you!

Your feedback has been received and will be reviewed.

Oops! Something went wrong.

Please, try again later.

You have selected too large block!

Please try select less.

KB Feedback/Suggestion

This form is only for KB Feedback/Suggestions, if you need help with the software open a support case

By submitting, you are agreeing to have your personal information managed in accordance with the terms of Veeam's Privacy Notice.
Verify your email to continue your product download
We've sent a verification code to:
  • Incorrect verification code. Please try again.
An email with a verification code was just sent to
Didn't receive the code? Click to resend in sec
Didn't receive the code? Click to resend
Thank you!

Thank you!

Your feedback has been received and will be reviewed.

error icon

Oops! Something went wrong.

Please, try again later.