How to recover failed upgrade of basic LBs with shared backend pools

Fung, Terence 25 Reputation points
2025-09-30T04:30:04.8833333+00:00

I need to upgrade two Basic SKU load balancers with shared backend pools to Standard SKU. I put the two basic LBs in $multiLBConfig and ran the following command but it failed.

$multiLBConfig = @(

@{

    # 'standardLoadBalancerName' = 'myStandardInternalLB01'

    'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName prod-rg -Name avi-external-alb-brbla)

},

@{

    # 'standardLoadBalancerName' = 'myStandardExternalLB02'

    'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName prod-rg -Name avi-alb-ujjwp)

}

)

Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig -FollowLog

...

2025-09-29T14:34:34.71-05 [Error] - [PrivateFEMigration] The private IP address '10.232.1.16' in VNET 'thryv-vnet', resource group 'prod-rg' is not available for allocation; another new device may have claimed it. To recover, remove the device that claimed the IP '10.232.1.16' from the VNET, then follow the steps at https://aka.ms/basiclbupgradefailure to retry the migration.

// After fixing the problem and re-ran the upgrade with the following command.

Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB ./State_LB_avi-alb-ujjwp_prod-rg_20250929T1430012147.json -FollowLog

...

2025-09-29T14:59:19.73-05 [Error] - [Test-SupportedMigrationScenario] A VM NIC IP configuration in the backend pool of the basic load balancer(s) to be migrated is associated with backend pool ID '/subscriptions/a0683114-414e-484c-bcf8-9d0ea00a598d/resourceGroups/prod-rg/providers/Microsoft.Network/loadBalancers/avi-external-alb-brbla/backendAddressPools/pool-10.232.1.13', which does not belong to the Basic Load Balancer(s) to be migrated. To migrate this scenario, use the -MultiLBConfig parameter to specify multiple Basic Load Balancers to migrate at the same time.

// Tried to ran the command with -MultiLBConfig and -FailedMigrationRetryFilePathLB but it did not work.

Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB ./State_LB_avi-alb-ujjwp_prod-rg_20250929T1430012147.json -MultiLBConfig $multiLBConfig -FollowLog

Start-AzBasicLoadBalancerUpgrade : Parameter set cannot be resolved using the specified named parameters.

At line:1 char:1

  • Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB ./St ...
  • 
        + CategoryInfo          : InvalidArgument: (:) [Start-AzBasicLoadBalancerUpgrade], ParameterBindingException
    
        + FullyQualifiedErrorId : AmbiguousParameterSet,Start-AzBasicLoadBalancerUpgrade
    
    
Azure Load Balancer
Azure Load Balancer
An Azure service that delivers high availability and network performance to applications.
0 comments No comments
{count} votes

Answer accepted by question author
  1. Alex Burlachenko 18,575 Reputation points Volunteer Moderator
    2025-09-30T07:15:45.7333333+00:00

    Fung, Terence hi,

    the core problem is that your virtual machines have their network interfaces linked to backend pools on both of your basic load balancers. the upgrade tool is smart enough to know it needs to upgrade them together, but the retry process got confused after the first failure with the ip address conflict.

    that error about the parameter set is because you cannot use the retry file and the multi lb config together. they are two separate ways to call the command. since you already fixed the ip conflict, you should not need the retry file.

    go back to your original approach but be more specific. recreate your $multiLBConfig variable, but this time, include the names for the new standard load balancers you want to create. the commented out lines in your script are the key. uncomment them and give your new standard load balancers distinct names.

    $multiLBConfig = @( @{ 'standardLoadBalancerName' = 'myNewStandardLB-01' 'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName prod-rg -Name avi-external-alb-brbla) }, @{ 'standardLoadBalancerName' = 'myNewStandardLB-02' 'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName prod-rg -Name avi-alb-ujjwp) } )

    then, run the command again with just the multi config.

    Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig -FollowLog

    by explicitly naming the new standard load balancers, you give the migration script a clear target and might avoid the ambiguity it is complaining about.

    if that still fails with the same backend pool error, the nuclear option is to manually dissociate the vms from the backend pools of the basic load balancers, create new standard load balancers from scratch, and then reassociate the vms. it is more work, but it gives you full control.

    try your original multi lb command again, but this time with the 'standardLoadBalancerName' fields filled in. if the automated tool continues to struggle, be prepared to do a manual migration for full control.

    good luck & rgds,

    Alex

    1 person found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. Priya ranjan Jena 2,295 Reputation points Microsoft External Staff Moderator
    2025-09-30T08:04:52.1233333+00:00

    Hi Fung, Terence,

    You are encountering an error :Start-AzBasicLoadBalancerUpgrade-Parameter set cannot be resolved using the specified named parameters.

    This typically happens when PowerShell cannot determine which parameter set to use because multiple sets overlap or conflict.

    It Indicates that you're using parameters that belong to different parameter sets, and PowerShell can't resolve which one to apply. Specifically, combining FailedMigrationRetryFilePathLB with -MultiLBConfig in the same command is not supported as per the module's design.

    So you can try running below commands as provided.

    Retry Migration for a Single Load Balancer

    If you're recovering from a failed migration, use only the -FailedMigrationRetryFilePathLB parameter

    Do not include -MultiLBConfig in this command & try to recover must with per load balancer, not as a batch.

    Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB ./State_LB_avi-alb-ujjwp_prod-rg_20250929T1430012147.json -FollowLog
    
    
    

    Retry Migration for Multiple Load Balancers

    If you're migrating multiple Basic LBs simultaneously, use only the -MultiLBConfig parameter

    Dont use -FailedMigrationRetryFilePathLB in this case.

    Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig -FollowLog
    
    
    

    Additionally you can Run this to check for blocking issues: Start-AzBasicLoadBalancerUpgrade -ValidateScenarioOnly

    Please ensure as well:

    All IPs (public/private) must be static.

    Backend VMs must be running.

    NSG rules and outbound/NAT configurations must align with Standard SKU requirements.

    If you find this comment helpful, please “up-vote” for the information provided , this can be beneficial to community members.

    Kindly let us know if you have any additional questions.

    Thanks

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.