Awesome Reviewers

When a template needs configuration that varies by environment/cloud/region or depends on real resource identifiers, do not hardcode endpoints/locations or fabricate subscription/RG paths. Instead:

Example (cloud endpoints):

{
  "parameters": {
    "cloudEnvironment": {
      "type": "string",
      "defaultValue": "Public",
      "allowedValues": ["Public","USGovernment","China"]
    }
  },
  "variables": {
    "cloudConfig": {
      "Public": { "graph": "https://graph.microsoft.com" },
      "USGovernment": { "graph": "https://graph.microsoft.us" },
      "China": { "graph": "https://microsoftgraph.chinacloudapi.cn" }
    },
    "cloud": "[variables('cloudConfig')[parameters('cloudEnvironment')]]"
  },
  "resources": [
    {
      "type": "Microsoft.Logic/workflows",
      "properties": {
        "definition": {
          "parameters": {
            "graphEndpoint": {
              "type": "String",
              "defaultValue": "[variables('cloud').graph]"
            }
          }
        }
      }
    }
  ]
}

Example (resource IDs/paths): if a parameter is expected to be a full resource path, document it as a prerequisite and accept it as-is; do not attempt to construct subscription/RG IDs randomly in parameters—use ARM functions like resourceId() inside the template when you need IDs from context.