Edit

Register disconnected operations for Azure Local

This article explains how to register disconnected operations for Azure Local after deploying your management cluster with the control plane. Learn how to ensure compliance with Azure Local requirements through proper registration.

Registration using self-attestation flow

On a machine with internet access, ensure that Azure CLI and Azure PowerShell are installed.

Copy the provided function from PowerShell.

function New-AzureLocalDisconnectedOperationsSelfAttestation {
    <#
    .SYNOPSIS
    Registers your disconnected operations resource using a self-attestation flow.
    #>
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [ValidateSet('AzureCloud', 'AzureUSGovernment')]
        [string]$Cloud,

[Parameter(Mandatory)]
        [string]$SubscriptionId,

[Parameter(Mandatory)]
        [string]$ResourceGroup,

[Parameter(Mandatory)]
        [string]$ResourceName,

[Parameter(Mandatory)]
        [int]$TotalCores,

[Parameter(Mandatory)]
        [int]$DiskSpaceInGb,

[Parameter(Mandatory)]
        [int]$MemoryInGb,

[Parameter(Mandatory)]
        [string]$Oem,

[Parameter(Mandatory)]
        [string]$HardwareSku,

[Parameter(Mandatory)]
        [int]$Nodes,

[Parameter(Mandatory)]
        [string]$VersionAtRegistration,

[Parameter(Mandatory)]
        [string]$SolutionBuilderExtension,

[Parameter(Mandatory)]
        [string]$DeviceId,

[string]$ApiVersion = '2026-03-01-preview',

[switch]$SkipLogin
    )

if (-not $SkipLogin) {
                Connect-AzAccount -EnvironmentName $Cloud -ErrorAction Stop | Out-Null
}

Select-AzSubscription -SubscriptionId $SubscriptionId -ErrorAction Stop | Out-Null

function Get-BearerToken {
                param(
                        [Parameter(Mandatory)]
                        [ValidateSet('AzureCloud', 'AzureUSGovernment')]
                        [string]$CloudEnvironment
                )

$resource = switch ($CloudEnvironment) {
                        'AzureCloud'        { 'https://management.azure.com/' }
                        'AzureUSGovernment' { 'https://management.usgovcloudapi.net/' }
                }

$tokenResponse = Get-AzAccessToken -ResourceUrl $resource -ErrorAction Stop
                $token = $tokenResponse.Token
                if ($token -is [System.Security.SecureString]) {
                        $plainTextToken = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($token))
                } else {
                        $plainTextToken = $token
                }
                return "Bearer $plainTextToken"
        }

$baseEndpoint = switch ($Cloud) {
        'AzureCloud'         { 'management.azure.com' }
        'AzureUSGovernment'  { 'management.usgovcloudapi.net' }
    }

$token = Get-BearerToken -CloudEnvironment $Cloud
Write-host "Obtained authorization token $token." -ForegroundColor Green
$uri = "https://$baseEndpoint/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroup/providers/Microsoft.Edge/disconnectedOperations/$ResourceName/hardwareSettings/default?api-version=$ApiVersion"

$body = @{
        properties = @{
            totalCores               = $TotalCores
            diskSpaceInGb            = $DiskSpaceInGb
            memoryInGb               = $MemoryInGb
            oem                      = $Oem
            hardwareSku              = $HardwareSku
            nodes                    = $Nodes
            versionAtRegistration    = $VersionAtRegistration
            solutionBuilderExtension = $SolutionBuilderExtension
            deviceId                 = $DeviceId
        }
    } | ConvertTo-Json -Depth 5

Write-Host "Creating HardwareSetting for '$ResourceName'..." -ForegroundColor Cyan
    Write-Host "  PUT $uri" -ForegroundColor DarkGray

$response = Invoke-RestMethod -Method Put -Uri $uri -Headers @{
        'Authorization' = $token
        'Content-Type' = 'application/json'
    } -Body $body

Write-Host "HardwareSetting created successfully." -ForegroundColor Green
    $response | ConvertTo-Json -Depth 10
}

Register your Azure Local disconnected operations

# Modify these to fit your disconnected operations resource. You can find the DeviceId by running the Get-ApplianceInstanceConfiguration on your deployed environment. This should be a guid.
$params = @{
    Cloud                      = 'AzureCloud'
    SubscriptionId             = ''
    ResourceGroup              = ''
    ResourceName               = ''
    TotalCores                 = 320  # Total cores managed by Azure Local disconnected operations
    DiskSpaceInGb              = 2000 # Management cluster total disk capacity
    MemoryInGb                 = 2000 # Total memory
    Oem                        = ''   # E.g. Dell / Lenovo / HPE etc.
    HardwareSku                = ''   # E.g. AX-760 / MX 655
    Nodes                      = 10   # Total number of nodes managed
    VersionAtRegistration      = '2602.2.32510'
    SolutionBuilderExtension   = 'x.y.z'
    DeviceId                   = ''   # Copy your device id from portal
    ApiVersion                 = '2026-03-01-preview'
}

New-AzureLocalDisconnectedOperationsSelfAttestation @params

After successful registration, the message 'Hardware setting created successfully' appears. The banner in the Azure portal also disappears, and the hardware properties for your Azure Local disconnected operations populate with the registered information.

This feature is available only in Azure Local 2602 or later.