output/20260723_081532/govviz/ALZ_20260723_081601/Enterprise-Scale/eslzArm/managementGroupTemplates/mgmtGroupStructure/mgmtGroups.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "topLevelManagementGroupPrefix": {
            "type": "string",
            "metadata": {
                "description": "Provide prefix for the management group structure."
            }
        },
        "platformMgs": {
            "type": "array",
            "defaultValue": [
                "management",
                "connectivity",
                "identity",
                "security"
            ],
            "metadata": {
                "description": "Management groups for platform specific purposes, such as management, networking, identity, security etc."
            }
        },
        "landingZoneMgs": {
            "type": "array",
            "defaultValue": [
                "online",
                "corp",
                "local"
            ],
            "metadata": {
                "description": "These are the landing zone management groups."
            }
        }
    },
    "variables": {
        "enterpriseScaleManagementGroups": {
            "platform": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'platform')]",
            "landingZone": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'landingzones')]",
            "decommissioned": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'decommissioned')]",
            "sandboxes": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'sandboxes')]"
        }
    },
    "resources": [
        {
            // Create top level management group under tenant root
            "type": "Microsoft.Management/managementGroups",
            "scope": "/",
            "apiVersion": "2023-04-01",
            "name": "[parameters('topLevelManagementGroupPrefix')]",
            "properties": {}
        },
        {
            // Create management group for platform management groups
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[variables('enterpriseScaleManagementGroups').platform]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
            ],
            "properties": {
                "displayName": "[variables('enterpriseScaleManagementGroups').platform]",
                "details": {
                    "parent": {
                    "id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
                    }
                }
            }
        },
        {
            // Create management group for landing zones
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[variables('enterpriseScaleManagementGroups').landingZone]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
            ],
            "properties": {
                "displayName": "[variables('enterpriseScaleManagementGroups').landingZone]",
                "details": {
                    "parent": {
                    "id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
                    }
                }
            }
        },
        {
            // Create management group for sandbox subscriptions
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[variables('enterpriseScaleManagementGroups').sandboxes]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
            ],
            "properties": {
                "displayName": "[variables('enterpriseScaleManagementGroups').sandboxes]",
                "details": {
                    "parent": {
                    "id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
                    }
                }
            }
        },
        {
            // Create management group for decommissioned subscriptions
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[variables('enterpriseScaleManagementGroups').decommissioned]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
            ],
            "properties": {
                "displayName": "[variables('enterpriseScaleManagementGroups').decommissioned]",
                "details": {
                    "parent": {
                    "id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
                    }
                }
            }
        },
        {
            // Create child management groups for platform resources
            "condition": "[not(empty(parameters('platformMgs')))]",
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('platformMgs')[copyIndex()])]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups', variables('enterpriseScaleManagementGroups').platform)]"
            ],
            "copy": {
                "name": "platformMgCopy",
                "count": "[length(parameters('platformMgs'))]"
            },
            "properties": {
                "displayName": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('platformMgs')[copyIndex()])]",
                "details": {
                    "parent": {
                        "id": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').platform)]"
                    }
                }
            }
        },
        {
            // Create child management groups for landing zones
            "condition": "[not(empty(parameters('landingZoneMgs')))]",
            "type": "Microsoft.Management/managementGroups",
            "apiVersion": "2023-04-01",
            "scope": "/",
            "name": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
            "dependsOn": [
                "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
            ],
            "copy": {
                "name": "lzMgCopy",
                "count": "[length(parameters('landingZoneMgs'))]"
            },
            "properties": {
                "displayName": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
                "details": {
                    "parent": {
                        "id": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
                    }
                }
            }
        }
    ],
    "outputs": {}
}