public static void EmitModuleScopeProperties(ResourceScopeType targetScope, ScopeData scopeData, ExpressionEmitter expressionEmitter) { switch (scopeData.RequestedScope) { case ResourceScopeType.TenantScope: expressionEmitter.EmitProperty("scope", new JTokenExpression("/")); return; case ResourceScopeType.ManagementGroupScope: if (scopeData.ManagementGroupNameProperty != null) { // The template engine expects an unqualified resourceId for the management group scope if deploying at tenant scope var useFullyQualifiedResourceId = targetScope != ResourceScopeType.TenantScope; expressionEmitter.EmitProperty("scope", expressionEmitter.GetManagementGroupResourceId(scopeData.ManagementGroupNameProperty, useFullyQualifiedResourceId)); } return; case ResourceScopeType.SubscriptionScope: case ResourceScopeType.ResourceGroupScope: if (scopeData.SubscriptionIdProperty != null) { expressionEmitter.EmitProperty("subscriptionId", scopeData.SubscriptionIdProperty); } if (scopeData.ResourceGroupProperty != null) { expressionEmitter.EmitProperty("resourceGroup", scopeData.ResourceGroupProperty); } return; default: throw new NotImplementedException($"Cannot format resourceId for scope {scopeData.RequestedScope}"); } }