Help & Support
Summary
This section provides information about AVM’s support.
This section provides information about AVM’s support.
This section provides information about the issue triage process and its automation, implemented across various AVM repositories.
This page provides guidance for members of the AVM Core Team on how to triage module proposals and generic issues filed in the AVM repository, as well as how to manage these GitHub issues throughout their lifecycle.
During the AVM Core Team Triage step, the following will be checked, completed and actioned by the AVM Core Team during their triage calls (which are currently twice per week).
Every module needs a module proposal to be created in the AVM repository.
During the triage process, the AVM Core Team should also check the status of following queries:
An issue is considered to be a module proposal if
Follow these steps to triage a module proposal:
Add the ย Status: In Triage ๐ย label to indicate you’re in the process of triaging the issue.
Check module proposal issue/form:
Proposed” column on the AVM - Modules Triage GitHub project board.avm/res/sql/managed-instance for a Bicep module, or avm-res-compute-virtualmachine for a Terraform module.avm/res/sql/managed-instance”avm-res-sql-managedinstance”Apply relevant labels
As part of the triage of pattern modules, the following points need to be considered/clarified with the module requestor:
If requestor is interested in becoming a module owner, but is not a Microsoft FTE, the AVM core team will try to find a Microsoft FTE to be the module owner whom the requestor can collaborate with.
Looking for owners” column on the AVM - Modules Triage GitHub project board.#RFRC tag to indicate that the repository should be created. Keep the proposal issue available to the community and potential module owners.If the requestor indicated they want to become the module owner, the GitHub Policy Service Bot will add the ย Status: Owners Identified ๐คย label and will assign the issue to the requestor.
You MUST still confirm that the requestor is a Microsoft FTE and that they understand the implications of becoming the owner! If any of these conditions aren’t met, remove the ย Status: Owners Identified ๐คย label and unassign the issue from the requestor.
In development” column on the AVM - Modules Triage GitHub Project board.#RFRC tag to indicate that the repository should be created.Proposed until it is published.Although, it’s not directly part of the module proposal triage process, to begin development, module owners and contributors might need additional help from the AVM core team, such as:
metadata.json determines reviewer notifications; BRM has no per-module CODEOWNERS entries.Once module is developed and v0.1.0 has been published to the relevant registry
Done” column in AVM - Modules Triage GitHub Project.In case of Bicep modules - Close the module proposal issue with the following message:
In case of Terraform modules - Close the issue.
There can be several reasons why a module owner change is needed, e.g., the current owner is leaving the company, changing team, or is no longer able to maintain the module. In such cases, the module ownership needs to be transferred to a new owner. While in most cases the module needs to be marked as orphaned until it’s taken over by a new module owner, sometimes, the ownership can be transferred through a “hot swap”, where the current owner directly hands over ownership to another person without the module becoming orphaned first.
The original Module Proposal issue related to the module in question MUST remain closed and intact.
Instead, a new Orphaned Module issue must be opened that MUST remain open until the ownership is fully confirmed!
Once the Orphaned Module issue was closed, it MUST remain closed. If the module will subsequently become orphaned again, a new Orphaned Module issue must be opened.
Agree changes with the current owners and the AVM core team. Confirm each incoming owner’s eligibility, written acceptance of the role, and separate access approval. Submit the agreed handle changes to the owners array in the module’s root metadata.json, following the metadata review process. Use bare handles for individuals and qualified handles for approved existing teams. Keep every continuing individual or team owner; children inherit the root’s ownership.
Use the hot-swap process for a handover. If no owners remain, follow the orphaning process instead.
If a module meets the criteria described in the “Orphaned Modules” chapter, the module is considered to be orphaned and the below steps must be performed.
Orphaned” column on the AVM - Modules Triage GitHub Project board.metadata.json, linked to the orphaned module issue. Set "owners": [], removing all individual and team handles, following the metadata review process. Do not edit child ownership or set a status field. A published, non-deprecated module with no owners is shown as Orphaned; see how module status is calculated.```For both Bicep and Terraform, the root metadata change is the only module-file change required. No ORPHANED.md file, manual README.md notice, or README regeneration is required. The scheduled catalog sync publishes the new status; do not edit generated indexes or create a module release.
To look for Orphaned Modules:
Orphaned swim lane on the Module Triage board.owners array in the module’s root metadata.json, linked to the orphaned module issue. Obtain approval from either metadata code-owner team and merge the change through the metadata review process.Done” on the AVM - Modules Triage board. The module index updates automatically at the next four-hourly catalog sync.When the module owner needs to be changed without the module becoming orphaned, the overall process described in the Orphaned modules chapter needs to be followed, with a few differences.
Orphaned” column of this board as it will be automatically moved to the “Done” column, once the issue is closed.owners array in the same metadata change, retaining every continuing individual or team owner. Remove team handles only if they no longer apply. Obtain approval from either metadata code-owner team and merge through the metadata review process. Confirm every incoming owner has approved access as described in SNFR20 before finalizing the handover.If a module meets the criteria described in the “Deprecated Modules” chapter, the module is considered to be deprecated and the below steps must be performed.
Language agnostic steps
metadata.json.Bicep specific steps
DEPRECATED.md file, in the module’s root.utilities/tools/Set-AVMModule.ps1 utility with the module path & -SkipBuild switch as an input. This re-generates the module’s README.md file, so that the README.md file will also contain the same notice in its header. For more instructions on how to use the script, please refer to the corresponding section in the Contribution Guide.DEPRECATED.md file is displayed in the README.md in its header (right after the title).NOTE: This is the last published version and the module has since been deprecated. to the top-most ### Changes section of the module’s CHANGELOG.md fileworkflows folder.regenIndexFromBRM flag set. This will de-list the module so that it won’t show up in the VS-Code Bicep extension going forward.Deprecating a module does not require editing CODEOWNERS or deleting a GitHub team. BRM has no per-module code-owner entries; /avm/ intentionally has no owners, while metadata.json remains protected by its own code-owner rule.
Terraform specific steps
README.md file, in the module’s root.Catalog publication
The catalog derives Deprecated from Bicep’s DEPRECATED.md or Terraform’s repository archived flag. Complete the retirement steps; the four-hourly catalog sync then publishes the change.
A Bicep marker applies to that module and all its descendants. A root marker therefore covers every child; a child marker leaves its parent and siblings unaffected. Terraform archival applies to all module entries in the repository.
A module deprecated before it was ever published to the registry is removed from the indexes rather than listed as Deprecated.
Catalog publication does not perform the required notices, Bicep workflow removal and registry-index update, or Terraform repository archival. After a top-level Bicep deprecation is published, verify that module list sync removes it from the issue-template dropdown instead of editing the list by hand.
Deprecation information notice (to be place in the module’s repository as described above)
An issue is a “General Question/Feedback โ” if it was opened through the “General Question/Feedback โ” issue template, and has the labels of ย Type: Question/Feedback ๐โโ๏ธย and ย Needs: Triage ๐ย applied to it.
An issue is a “AVM Documentation Update ๐” if it was opened through the “AVM Documentation Update ๐” issue template, and has the labels of ย Type: Documentation ๐ย and ย Needs: Triage ๐ย applied to it.
An issue is considered to be a “standard issue” or “blank issue” if it was opened without using an issue template, and hence it does NOT have any labels assigned, OR only has the ย Needs: Triage ๐ย label assigned.
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “General Question/Feedback โ” or other standard issue, and hence, it doesn’t have the ย Type: New Module Proposal ๐กย label associated to it, a new issue MUST be created using the “New AVM Module Proposal ๐” issue template. The mistakenly created “General Question/Feedback โ” or other standard issue MUST be closed.
The Azure Verified Modules GitHub App is represented as a GitHub App. This app automates various repository management tasks across the Azure Verified Modules program’s repositories, including issue triage, pull request labeling, team validation, and documentation updates.
The AVM repository’s team linter and AzAdvertizer workflows use the GitHub App credentials (TEAM_LINTER_APP_ID and TEAM_LINTER_PRIVATE_KEY). Retain these credentials when retiring the team linter: the active AzAdvertizer issue automation also uses them. Bicep repository maintenance workflows run from the AVM tools repository using separately scoped GitHub App tokens.
The team linter below still validates legacy per-module GitHub teams and requires separate cleanup. Do not recreate those teams to satisfy the automation; module owners must follow SNFR20 instead. Legacy CSV team columns remain for compatibility with existing shared-repository consumers.
The following scripts are leveraged by the Azure Verified Modules GitHub App in the AVM repository:
Purpose: Validates GitHub team configurations against module ownership data from CSV indexes.
Description: This script compares the module indexes with existing GitHub Teams configuration to ensure proper team setup. It can validate Bicep parent team configurations, Terraform team permissions, and generate GitHub issues for any discrepancies found. The script supports filtering by module type (Resource/Pattern/Utility) and language (Bicep/Terraform), and can validate -owner- teams.
Key Functionality:
Workflow: github-teams-check-existence.yml (currently disabled; when enabled, runs Monday-Friday at 15:00 UTC and on-demand). Update its legacy team checks before re-enabling it; unchanged, it would raise issues asking owners to recreate retired teams, not recreate the teams itself.
Source Code: Invoke-AvmGitHubTeamLinter.ps1
Purpose: Monitors AzAdvertizer data changes and creates tracking issues.
Description: This script creates GitHub issues when data in AzAdvertizer (including PSRule, APRL, and Advisor) changes compared to the last workflow run. It downloads artifacts from previous workflow runs, compares the data to identify changes, and automatically creates issues with detailed diff information when new policy rules, advisories, or recommendations are detected.
Key Functionality:
Workflow: platform.new-AzAdvertizer-diff-issue.yml (runs weekly on Sundays at 3:00 AM and on-demand)
Source Code: New-AzAdvertizerDiffIssue.ps1
The AVM tools repository hosts the workflows for BRM. Owner routing uses the published module catalog and reads a module’s root metadata.json when the catalog has not yet caught up or the pull request changes that metadata. Child modules inherit root ownership. The CSV indexes show only the first two individual owners and are not the routing source; submit owner changes through the metadata review process.
@Azure/azure-verified-modules-module-owners for ownerless modules. Review requests and labels do not impose a module-owner approval requirement for ordinary Bicep code changes.Available and Orphaned Bicep entries in the published catalog. When it changes, a verified bot-generated pull request updates the dropdown and is auto-merged rather than opening a drift-report issue.These workflows support manual dispatch. Their schedules are enabled separately; the presence of a workflow alone does not mean periodic routing is running.
The AVM repository workflows and the tools-repository workflows support issue triage, reviewer notifications, and module maintenance. Review and merge requirements come from repository rules and the protected metadata CODEOWNERS rule, not from reviewer requests or triage labels.
This page provides guidance for Bicep module owners on how to triage AVM module issues and AVM question/feedback items filed in the BRM repository (Bicep Registry Modules repository - where all Bicep AVM modules are published), as well as how to manage these GitHub issues throughout their lifecycle.
As such, the following issues are to be filed in the BRM repository:
Do NOT file the following types of issues in the BRM repository, as they MUST be tracked in the AVM repo:
Every module needs a module proposal to be created in the AVM repository.
During the triage process, module owners are expected to check, complete and follow up on the items described in the sections below.
Module owners MUST follow the Module Support statement. Automation supports issue triage, but module owners MUST check for new issues regularly.
The BRM repository includes other, non-AVM modules and related GitHub issues. As a module owner, make sure you’re only triaging, managing or otherwise working on issues that are related to AVM modules!
An issue is considered to be an “AVM module issue” if
Module issues can only be opened for existing AVM modules. Module issues MUST NOT be used to file a module proposal.
If the issue was opened as a misplaced module proposal, mention the @Azure/azure-verified-modules-tooling-contributors team in the comment section and ask them to move the issue to the AVM repository.
metadata.json for the full owner list. Make sure the owners are assigned/mentioned/informed. Submit corrections through the metadata review process.metadata.json when available. An eligible BRM repository team member may approve and merge ordinary module code changes; a module owner’s approval is not mandatory. If the author is the sole owner, request another eligible reviewer rather than the author.metadata.json changes, obtain approval from an eligible member of either metadata code-owner team through the metadata review process.fix: or feat: is the most common for module related changes.For ordinary Bicep module code changes, any eligible repository team member may approve and merge under BRM rules. Reviewer routing requests module owners and applies triage labels, but does not impose a module-owner approval requirement. The metadata.json code-owner rule and other protected-path rules still apply.
An issue is considered to be an “AVM Question/Feedback” if
An issue is considered to be a “standard issue” or “blank issue” if it was opened without using an issue template, and hence it does NOT have any labels assigned, OR only has the ย Needs: Triage ๐ย label assigned.
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “AVM Question/Feedback โ” or other standard issue, a new issue MUST be created in the AVM repo using the “New AVM Module Proposal ๐” issue template. The mistakenly created “AVM Question/Feedback โ” or other standard issue MUST be closed.
This page details the automation that is in place to help with the triage of issues and PRs raised against the AVM modules.
Some of these automation rules are currently disabled or reduced. A number of the comment-based automations โ the recurring “chase” scheduled searches, and the per-issue/PR triage comment previously posted by ITA06 โ have been disabled, or had their commenting removed, to avoid notification fatigue for everyone involved. In their current form they are too noisy, are largely filtered out and ignored by most, and are not having the desired impact.
This section details all automation rules that are based on a schedule.
When calculating the number of business days in the issue/triage automation, the built-in logic considers Monday-Friday as business days. The logic doesn’t consider any holidays.
This rule is currently disabled in all AVM repositories.
If an issue/PR has been labeled with ย Needs: Author Feedback ๐ย and hasn’t had a response in 4 days, label with ย Status: No Recent Activity ๐คย and add a comment.
Schedule:
Trigger criteria:
Action(s):
To prevent further actions to take effect, one of the following conditions must be met:
This rule is currently disabled in the AVM Core and BRM repositories, and is not present in the Terraform repositories.
If an issue/PR has been labeled with ย Status: No Recent Activity ๐คย and hasn’t had any update in 3 days from that point, automatically close it and comment, unless the issue/PR has a ย Status: Long Term โณย - in which case, do not close it.
Schedule:
Trigger criteria:
Action(s):
This rule is currently disabled in the AVM Core repository.
Remind module owner(s) to start or continue working on this module if there was no activity on the Module Proposal issue for more than 3 weeks. Add ย Needs: Attention ๐ย label.
Schedule:
Trigger criteria:
Action(s):
This chapter details all automation rules that are based on an event.
When a new issue or PR of any type is created add the ย Needs: Triage ๐ย label.
The comment (reply) previously posted by this rule has been removed to reduce notification fatigue; the rule now only applies the label. See the note at the top of this page.
Trigger criteria:
Action(s):
If AVM or “Azure Verified Modules” is mentioned in an uncategorized issue (i.e., one not using any template), apply the label of ย Type: AVM ๐ ฐ๏ธ โ๏ธ โ๏ธย on the issue.
Trigger criteria:
Action(s):
When #RR is used in an issue, add the label of ย Needs: Author Feedback ๐ย .
Trigger criteria:
Action(s):
When #wontfix is used in an issue, mark it by using the label of ย Status: Won’t Fix ๐ย and close the issue.
Trigger criteria:
Action(s):
When the author replies, remove the ย Needs: Author Feedback ๐ย label and label with ย Needs: Attention ๐ย .
Trigger criteria:
Action(s):
Clean up e-mail replies to GitHub Issues for readability.
Trigger criteria:
Action(s):
If the language is set to Bicep in the Module proposal, add the ย Language: Bicep ๐ชย label on the issue.
Trigger criteria:
### Bicep or Terraform?
BicepAction(s):
If the language is set to Terraform in the Module proposal, add the ย Language: Terraform ๐ย label on the issue.
Trigger criteria:
### Bicep or Terraform?
TerraformAction(s):
Remove the ย Needs: Triage ๐ย label from a PR, if it already has a “Type: XYZย label added and is assigned to someone at the time of creating it.
Trigger criteria:
Action(s):
Add the ย Status: Owners Identified ๐คย label when someone is assigned to a Module Proposal.
Trigger criteria:
Action(s):
If the issue author says they want to be the module owner, assign the issue to the author and respond to them.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Do you want to be the owner of this module?
YesAction(s):
Assign the issue to the author.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for volunteering to be a module owner!
**Please don't start the development just yet!**
The AVM core team will review this module proposal and respond to you first. Thank you!Send automatic response to the issue author if they don’t want to be module owner and don’t have any candidate in mind. Add the ย Needs: Module Owner ๐ฃย label.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Do you want to be the owner of this module?
No
### Module Owner's GitHub Username (handle)
_No response_Action(s):
Add the ย Needs: Module Owner ๐ฃย label.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for submitting this module proposal!
The AVM core team will review it and will try to find a module owner.Send automatic response to the issue author if they don’t want to be module owner but have a candidate in mind. Add the ย Status: Owners Identified ๐คย label.
Trigger criteria:
An issue is opened with its body matching the below pattern…
### Do you want to be the owner of this module?
No…AND NOT matching the below pattern.
### Module Owner's GitHub Username (handle)
_No response_Action(s):
Add the ย Status: Owners Identified ๐คย label.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for submitting this module proposal with a module owner in mind!
**Please don't start the development just yet!**
The AVM core team will review this module proposal and respond to you and/or the module owner first. Thank you!If the issue type is feature request, add the ย Type: Feature Request โย label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
Feature RequestAction(s):
If the issue type is bug, add the ย Type: Bug ๐ย label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
BugAction(s):
If the issue type is security bug, add the ย Type: Security Bug ๐ย label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
Security BugAction(s):
Remove the ย Status: In PR ๐ย label from an issue when it’s closed.
Trigger criteria:
Action(s):
This legacy Bicep rule prompts a sole module owner to apply the ย Needs: Core Team ๐งย label for triage visibility. The label does not require core-team approval: ordinary Bicep code changes may be approved by any eligible BRM repository team member other than the author. Changes to metadata.json still require metadata code-owner review.
Trigger criteria:
Action(s):
Add a label for the AVM Core Team to query called ย Status: Ready For Repository Creation ๐ย when a module owner adds a comment to the issue to tell them.
Trigger criteria:
#RFRC tag.Action(s):
The below table details which repositories the above rules are applied to.
| ID | AVM Core repository | BRM repository | TF repositories |
|---|---|---|---|
| ITA04 | [โ๏ธ] | [โ๏ธ] | [โ๏ธ] |
| ITA05 | [โ๏ธ] | [โ๏ธ] | |
| ITA24 | [โ๏ธ] |
A check mark in brackets (e.g., [โ๏ธ]) indicates that the rule exists in that repository but is currently disabled. The following schedule-based rules are currently disabled: ITA04 (in all the repositories it applies to), ITA05 (in the AVM Core and BRM repositories), and ITA24 (in the AVM Core repository).
| ID | AVM Core repository | BRM repository | TF repositories |
|---|---|---|---|
| ITA06 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA08BCP | โ๏ธ | ||
| ITA09 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA10 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA11 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA12 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA13 | โ๏ธ | ||
| ITA14 | โ๏ธ | ||
| ITA15 | โ๏ธ | โ๏ธ | โ๏ธ |
| ITA16 | โ๏ธ | ||
| ITA17 | โ๏ธ | ||
| ITA18 | โ๏ธ | ||
| ITA19 | โ๏ธ | ||
| ITA20 | โ๏ธ | โ๏ธ | |
| ITA21 | โ๏ธ | โ๏ธ | |
| ITA22 | โ๏ธ | โ๏ธ | |
| ITA23 | โ๏ธ | โ๏ธ | |
| ITA25 | โ๏ธ | ||
| ITA26 | โ๏ธ |
This page provides guidance for Terraform Module owners on how to triage AVM module issues and AVM question/feedback items filed in their Terraform Module Repo(s), as well as how to manage these GitHub issues throughout their lifecycle.
The following issues can be filed in a Terraform repository:
Do NOT file the following types of issues in a Terraform repository, as they MUST be tracked in the AVM repo:
Every module needs a module proposal to be created in the AVM repository.
During the triage process, module owners are expected to check, complete and follow up on the items described in the sections below.
Module owners MUST follow the Module Support statement. Automation supports issue triage, but module owners MUST check for new issues regularly.
An issue is considered to be an “AVM module issue” if
Module issues can only be opened for existing AVM modules. Module issues MUST NOT be used to file a module proposal.
If the issue was opened as a misplaced module proposal, mention the @Azure/azure-verified-modules-engineering-owners team in the comment section and ask them to move the issue to the AVM repository.
metadata.json for the full owner list. Make sure the owners are assigned/mentioned/informed. Submit corrections through the metadata review process.PR approvals are enforced on all AVM Terraform module repositories. The following rules apply to who must approve:
Changes to metadata.json require approval from an eligible member of either @Azure/azure-verified-modules-engineering-owners or @Azure/azure-verified-modules-module-owners, as described in the metadata review process. Approval from both teams is not required, and being named in owners alone does not qualify a reviewer. The code-review requirements below apply to other changes in the same pull request.
azure-verified-modules-module-contributors Entra group and request a review.@Azure/azure-verified-modules-engineering-owners GitHub team as a reviewer and apply the ย Needs: Core Team ๐งย label so the AVM core team picks it up during triage.fix: or feat: is the most common for module related changes.An issue is considered to be an “AVM Question/Feedback” if
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “AVM Question/Feedback โ” or other standard issue, a new issue MUST be created in the AVM repo using the “New AVM Module Proposal ๐” issue template. The mistakenly created “AVM Question/Feedback โ” or other standard issue MUST be closed.
Unfortunately, there will be times where issues are out of the AVM core team and module owners/contributor’s control and the issue may be something that has to be lived with for a longer than ideal duration - for example, in case of changes that are due to the way the Azure platform, or a resource behaves, or because of an IaC language issue.
This page will detail any of the known issues that consumers may come across when using AVM modules and provide links to learn more about them and where to get involved in discussions on these known issues with the rest of the community.
Issues related to an AVM module must be raised on the repo they are hosted on, not the AVM Central (Azure/Azure-Verified-Modules) repo!
Although, if you think a known issue is missing from this page please create an issue on the AVM Central Azure/Azure-Verified-Modules repo.
If you accidentally raise an issue in the wrong place, we will transfer it to its correct home. ๐
Bicep/ARM What-If has a known issue today where it short-circuits whenever a runtime function is used in a nested template. And due to the way Bicep modules work, all module declarations in a Bicep file end up as a resulting nested template deployment in the underlying generated ARM template, thereby invoking this known issue.
The ARM/Bicep Product Group has recently announced on the issue that they are making progress in this space and are aiming provide a closer ETA in the near future; see the comment here.
While this isn’t an AVM issue, we understand that consumers of AVM Bicep modules may want to use what-if and are running into this known issue. Please keep adding your support to the issue mentioned above (Azure/arm-template-whatif #157), as the Product Group are actively engaging in the discussion there. ๐
A well-known limitation of ARM, and in extension Bicep, is its compiled ARM template size constraint of 4MB. While there is not anything one can do to change this limit there are actions you can take to reduce your template’s size and make it less likely to run into this issue.
In the following we provide you with a list of options you should be aware of:
Currently there are no known issues for AVM Terraform modules. ๐ฅณ
On 13 October 2026, AVM moved into the Azure Deployments team within Microsoft’s Azure engineering organization.
This move adds dedicated engineering resources to AVM. It also replaces the previous day-based response targets with the support model described below.
For more information, read Azure Verified Modules (AVM) is now owned by Azure engineering.
AVM is an open-source Microsoft project with dedicated engineers and distributed module ownership. The AVM Core Team maintains modules directly and improves the shared specifications, tooling, automation, and framework. For who owns which modules, see Module Ownership Tiers.
AVM follows the support model used by Azure CLI, Azure PowerShell, Bicep, AzAPI, and the AzureRM Terraform provider.
Dedicated engineers maintain modules and improve the framework used by all module owners. This commitment replaces the previous day-based targets, which AVM could not meet consistently.
Do not report security vulnerabilities through public GitHub issues. Report them privately to the Microsoft Security Response Center, as described in the repository security policy.
AVM is open-source, therefore, contributions are welcome via Pull Requests or comments in Issues from anyone in the world at any time on any Pull Request or Issues to assist AVM module ownersย ๐
Review the contribution guidance to get involved!
Issues that are likely related to an AVM module should be directly submitted on the module’s GitHub repository as an “AVM - Module Issue”. To identify the correct code repository, see the AVM module indexes.
If an issue is likely related to the Azure platform, its APIs or configuration, script or programming languages, etc., you need to raise a ticket with Microsoft CSS (Microsoft Customer Services & Support) where your ticket will be triaged for any platform issues. If deemed a platform issue, the ticket will be addressed accordingly. In case it’s deemed not a platform but a module issue, you will be redirected to submit a module issue on GitHub.
A module becomes orphaned when it has no active module owner. See Module Lifecycle for more information.
If a module is orphaned, the AVM Core Team will provide essential maintenance and try to find a new owner by:
To raise attention to an orphaned module and allow the AVM team to better prioritize actions, customers can leave a comment on the “orphaned module” issue, explaining their use case and why they would like to see the module supported. This will help the AVM team to prioritize the module for a new owner.
Microsoft uses the approach detailed in this section to identify the deployments of the AVM Modules. Microsoft collects this information to provide the best experiences with their products and to operate their business. Telemetry data is captured through the built-in mechanisms of the Azure platform; therefore, it never leaves the platform, providing only Microsoft with access. Deployments are identified by an AVM-specific prefix in their names. The data is collected and governed by Microsoft’s privacy policies, located at the Trust Center.
Telemetry collected as described here does not provide Microsoft with insights into the resources deployed, their configuration or any customer data stored in or processed by Azure resources deployed by using code from AVM. Microsoft does not track the usage/consumption of individual resources using telemetry described here.
Telemetry gathered as described here is only accessible by Microsoft. Bicep customers can view the deployment in the Azure portal under Deployments at its corresponding scope (resource group, subscription, etc.). Terraform customers can view the generated deployment at the active subscription scope and inspect the exact values sent in main.telemetry.tf.
See View deployment history with Azure Resource Manager for further information on how.
As detailed in SFR3, an instrumented Bicep module creates an avmTelemetry deployment named <telemetryIdPrefix>.<version>.<uniqueness>, using its current metadata prefix. An instrumented Terraform module creates an empty, subscription-scoped deployment through the generated azapi_resource.telemetry. Its name contains the fixed 46d3xtrf metadata prefix, the full installed version (or 0-0-0), a one-letter source type (t, o, g, or x), and a stable four-character instance suffix. The name, not resource tags, carries the reporting data. A changing empty-template output causes a deployment write on each normal apply without changing the name; no raw source path or tier is sent.
Terraform module roots require a location input, except utility modules that deploy no Azure resources. Local child modules that deploy Azure resources require it as well. Pass a region available in your cloud, including sovereign clouds: telemetry creates a subscription-scoped deployment there even when the module’s other resources are global or scope-based. Child and example calls forward the parent’s location when no per-resource location is already supplied. Pattern modules may offer optional per-resource locations; each child uses its specific value when supplied, or the shared location otherwise. With telemetry enabled, the identity needs Microsoft.Resources/deployments/read, Microsoft.Resources/deployments/write, and Microsoft.Resources/deployments/delete at the subscription scope.
Albeit telemetry described in this section is optional, the implementation follows an opt-out logic, as most commercial software solutions, this project also requires continuously demonstrating evidence of usage, hence the AVM core team recommends leaving the telemetry setting on its default, enabled configuration.
This resource enables the AVM core team to query the number of deployments of a given module from Azure - and as such, get insights into its adoption.
To opt out you can set the parameters/variables listed below to false in the AVM module:
enableTelemetryenable_telemetryThough similar in principles, this approach is not to be confused and does not conflict with the usage of CUA IDs that are used to track Azure customer usage attribution of Azure marketplace solutions (partner solutions). AVM deployment telemetry can coexist with CUA IDs. If you have any partner or customer scenarios that require the addition of CUA IDs, you can customize the AVM modules by adding the required CUA ID deployment while keeping the built-in telemetry solution.
If you’re a partner and want to build a solution that tracks customer usage attribution (using a CUA ID), we recommend implementing it on the consuming template’s level (i.e., the multi-module solution, such as workload/application) and apply the required naming format 'pid-' (without the suffix).