Azure Virtual Desktop Hybrid extension fails with InvalidTemplate on Arc-enabled Firestorm2

Prince Amor 0 Reputation points
2026-08-01T04:07:35.7433333+00:00

I am trying to deploy Azure Virtual Desktop Hybrid to an Azure Arc-enabled on-premises VM.

Arc machine:

Firestorm2

Resource group:

Robocamp

Host pool:

VDI-Hybrid-GPU

Subscription:

2d1e3e16-e035-4b32-8b70-2ea1a6ce117d

Machine status:

  • Azure Arc Agent Status: Connected
  • AzureAdJoined: YES
  • AzureAdPrt: YES
  • HostNameUpdated: SUCCESS
  • Device Name: Firestorm2
  • GPU-P is working and NVIDIA RTX 4500 Ada is visible inside the VM

The Azure Virtual Desktop Hybrid extension deployment fails before the extension reaches the machine.

Failed deployment:

Firestorm2-SHProxy

Error:

DeploymentFailed / InvalidTemplate

Exact error:

Deployment template validation failed:

"The template resource '[concat(parameters('vmName'), '/AzureVirtualDesktop')]' at line '1' and column '2338' is not valid. The type property cannot be an expression."

No local extension logs are created under:

C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureVirtualDesktop.CloudDeviceExtension

This appears to fail during Azure ARM template validation before guest extension execution.

Azure Virtual Desktop
Azure Virtual Desktop

A Microsoft desktop and app virtualization service that runs on Azure. Previously known as Windows Virtual Desktop.


1 answer

Sort by: Most helpful
  1. Rakesh Agrawal 5 Reputation points
    2026-08-11T15:07:18.34+00:00

    Root Cause Analysis

    The error DeploymentFailed / InvalidTemplate occurs because the ARM template or Bicep module initiating the extension deployment evaluates the type field using a template function/expression (e.g., [parameters('extensionType')] or [concat(...)]). ARM template engine rules strictly forbid expressions in the resource type field.

    Because template validation fails at the Azure Resource Manager (ARM) plane, the deployment aborts before generating a API payload to the guest, explaining why no local execution logs exist under C:\ProgramData\GuestConfig\extension_logs\.

    Resolution Steps

    Hardcode the Resource Type in the Template Ensure the type property in your deployment template is hardcoded as a literal string rather than an expression.

    For Azure Arc-enabled Servers (Hybrid/On-Premises):

    JSON

       "type"
    
      __For Standard Azure VMs:__
      
      JSON
      
      ```yaml
      "type"
      ```
      
      __Fix Resource Naming & Parent Structure__ Separate the parent machine name from the extension name instead of dynamically concatenating them inside `type`:
      
      JSON
      
      ```json
      {
    
      ```
      
    
    1. Deploy via Direct Az CLI / PowerShell Workaround If deploying through the Azure Portal UI or a pre-packaged template triggers this, bypass ARM template processing by issuing a direct Arc extension CLI command: Code snippet
         az connectedmachine extension create \
      

    --resource-group "Robocamp"
    --machine-name "Firestorm2"
    --name "AzureVirtualDesktop"
    --publisher "Microsoft.AzureVirtualDesktop"
    --type "CloudDeviceExtension"
    --location "<your-region>"

       
    

    Was this answer helpful?

    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.