Downgrading Azure ExpressRoute from Standard/Premium to Local with PowerShell

TL;DR: You can flip an existing ExpressRoute circuit from Standard (or Premium) to Local in minutes, but you’ll need to hop out of the Azure portal and run a couple of Az PowerShell commands. Here’s how we did it.


Why bother with the Local SKU?

  • Cost-effective egress: Local includes unlimited data egress to one or two nearby Azure regions, with the data fees baked into the circuit price. For bulk, regional traffic it’s a tidy saving. Microsoft Learn
  • Same feature set, slimmer scope: You keep the Standard feature set, minus Global Reach and the ability to stretch into distant regions – perfect when your workloads live close to the peering site. Microsoft Learn

If that sounds like your use-case, read on.


The official word

Microsoft’s docs spell it out: you can’t make this change in the portal. Use PowerShell or the Azure CLI instead. Microsoft Learn


Before you start

  1. Unlimited data plan only. Local circuits are always Unlimited. Make sure your current circuit is on Unlimited; if it’s Metered, you may not want to do anything.
  2. Provider heads-up. Some carriers still like to be told – give your telco a courtesy call.
  3. Maintenance window. We saw no drop (the update is in-place), but schedule a window just in case.

Running this first to check current SKU:

# Interactive device login keeps the creds flow simple
Connect-AzAccount -UseDeviceAuthentication

# Substitute your own details
$Subscription       = "Subscription_Name"
$ResourceGroupName  = "ResourceGroup_Name"
$CircuitName        = "Circuit_Name"

Select-AzSubscription -Subscription $Subscription

(Get-AzExpressRouteCircuit -ResourceGroupName $ResourceGroupName -Name $CircuitName).Sku | fl *

The output would look something like this:

To change the SKU – here’s the PowerShell recipe:

# Interactive device login keeps the creds flow simple
Connect-AzAccount -UseDeviceAuthentication

# Substitute your own details
$Subscription       = "Subscription_Name"
$ResourceGroupName  = "ResourceGroup_Name"
$CircuitName        = "Circuit_Name"

Select-AzSubscription -Subscription $Subscription

# Pull the circuit object
$circuit = Get-AzExpressRouteCircuit -ResourceGroupName $ResourceGroupName -Name $CircuitName

# Downgrade the SKU
$circuit.Sku.Tier = "Local"

# Commit the change
Set-AzExpressRouteCircuit -ExpressRouteCircuit $circuit

What happens:

  • The cmdlet updates the SKU tier in place.
  • Azure’s back-end validates that you’re already on the Unlimited data family (required).
  • Provisioning state flips to Updating for a minute or two, then back to Succeeded.

We saw the billing tier change within minutes and traffic kept flowing.

Verifying the downgrade

(Get-AzExpressRouteCircuit -ResourceGroupName $ResourceGroupName -Name $CircuitName).Sku | fl *

For belt-and-braces reassurance, open the circuit in the portal – the SKU field will now show Local (though you still can’t edit it there).


Gotchas & tips

IssueFix / Work-around
Circuit on Metered dataSwitch to UnlimitedData first; meter-to-unlimited is allowed, the reverse isn’t. Microsoft Learn
Need Global Reach laterYou’ll have to upgrade back to Standard or Premium – the lifecycle isn’t blocked, but upgrades may attract a new 12-month term with your provider.
Multiple regions requiredStick with Standard or bump to Premium; Local limits you to one metro pair. Microsoft Learn
Portal still says StandardHard-refresh the blade or wait a few minutes for the cache to clear.

Wrapping up

Switching an ExpressRoute circuit from Standard/Premium to Local is a quick win when your workloads live in the same metro and you’d rather not pay per-gig egress. With a single PowerShell tweak, we shaved our monthly bill and kept the change transparent to the business.

Give it a crack in your next maintenance window and let me know how you go.

Leave a comment