@@ -167,15 +167,15 @@ var resourceGroupTagsValue = union(
167167)
168168
169169// ========== Resource Group Tag ========== //
170- resource resourceGroupTags 'Microsoft.Resources/tags@2021 -04-01' = {
170+ resource resourceGroupTags 'Microsoft.Resources/tags@2025 -04-01' = {
171171 name : 'default'
172172 properties : {
173173 tags : resourceGroupTagsValue
174174 }
175175}
176176
177177#disable-next-line no-deployments-resources
178- resource avmTelemetry 'Microsoft.Resources/deployments@2024-03 -01' = if (enableTelemetry ) {
178+ resource avmTelemetry 'Microsoft.Resources/deployments@2025-04 -01' = if (enableTelemetry ) {
179179 name : take (
180180 '46d3xbcp.ptn.sa-modernizeyourcode.${replace ('-..--..-' , '.' , '-' )}.${substring (uniqueString (deployment ().name , location ), 0 , 4 )}' ,
181181 64
@@ -196,7 +196,7 @@ resource avmTelemetry 'Microsoft.Resources/deployments@2024-03-01' = if (enableT
196196 }
197197}
198198
199- module appIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.4.2 ' = {
199+ module appIdentity 'br/public:avm/res/managed-identity/user-assigned-identity:0.5.0 ' = {
200200 name : take ('avm.res.managed-identity.user-assigned-identity.${solutionSuffix }' , 64 )
201201 params : {
202202 name : 'id-${solutionSuffix }'
@@ -212,13 +212,13 @@ var existingLawSubscription = useExistingLogAnalytics ? split(existingLogAnalyti
212212var existingLawResourceGroup = useExistingLogAnalytics ? split (existingLogAnalyticsWorkspaceId , '/' )[4 ] : ''
213213var existingLawName = useExistingLogAnalytics ? split (existingLogAnalyticsWorkspaceId , '/' )[8 ] : ''
214214
215- resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08 -01' existing = if (useExistingLogAnalytics ) {
215+ resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2025-07 -01' existing = if (useExistingLogAnalytics ) {
216216 name : existingLawName
217217 scope : resourceGroup (existingLawSubscription , existingLawResourceGroup )
218218}
219219
220220// Deploy new Log Analytics workspace only if required and not using existing
221- module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.12 .0' = if ((enableMonitoring || enablePrivateNetworking ) && !useExistingLogAnalytics ) {
221+ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0.15 .0' = if ((enableMonitoring || enablePrivateNetworking ) && !useExistingLogAnalytics ) {
222222 name : take ('avm.res.operational-insights.workspace.${solutionSuffix }' , 64 )
223223 params : {
224224 name : 'log-${solutionSuffix }'
@@ -229,7 +229,7 @@ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0
229229 tags : allTags
230230 enableTelemetry : enableTelemetry
231231 // WAF aligned configuration for Redundancy
232- dailyQuotaGb : enableRedundancy ? 10 : null //WAF recommendation: 10 GB per day is a good starting point for most workloads
232+ dailyQuotaGb : enableRedundancy ? '10' : null //WAF recommendation: 10 GB per day is a good starting point for most workloads
233233 replication : enableRedundancy
234234 ? {
235235 enabled : true
@@ -278,11 +278,9 @@ module logAnalyticsWorkspace 'br/public:avm/res/operational-insights/workspace:0
278278
279279// Log Analytics workspace ID, customer ID, and shared key (existing or new)
280280var logAnalyticsWorkspaceResourceId = useExistingLogAnalytics ? existingLogAnalyticsWorkspaceId : logAnalyticsWorkspace !.outputs .resourceId
281- var LogAnalyticsPrimarySharedKey string = useExistingLogAnalytics ? existingLogAnalyticsWorkspace .listKeys ().primarySharedKey : logAnalyticsWorkspace .outputs .primarySharedKey
282- var LogAnalyticsWorkspaceId = useExistingLogAnalytics ? existingLogAnalyticsWorkspace .properties .customerId : logAnalyticsWorkspace !.outputs .logAnalyticsWorkspaceId
283281var logAnalyticsWorkspaceName = useExistingLogAnalytics ? existingLawName : logAnalyticsWorkspace !.outputs .name
284282
285- module applicationInsights 'br/public:avm/res/insights/component:0.7.0 ' = if (enableMonitoring ) {
283+ module applicationInsights 'br/public:avm/res/insights/component:0.7.1 ' = if (enableMonitoring ) {
286284 name : take ('avm.res.insights.component.${solutionSuffix }' , 64 )
287285 params : {
288286 name : 'appi-${solutionSuffix }'
@@ -341,7 +339,7 @@ var dnsZoneIndex = {
341339// - Excludes AI-related zones when using with an existing Foundry project
342340// ===================================================
343341@batchSize (5 )
344- module avmPrivateDnsZones 'br/public:avm/res/network/private-dns-zone:0.8.0 ' = [
342+ module avmPrivateDnsZones 'br/public:avm/res/network/private-dns-zone:0.8.1 ' = [
345343 for (zone , i ) in privateDnsZones : if (enablePrivateNetworking ) {
346344 name : take ('avm.res.network.private-dns-zone.${split (zone , '.' )[1 ]}.${solutionSuffix }' , 64 )
347345 params : {
@@ -360,7 +358,7 @@ module avmPrivateDnsZones 'br/public:avm/res/network/private-dns-zone:0.8.0' = [
360358
361359// Azure Bastion Host
362360var bastionHostName = 'bas-${solutionSuffix }'
363- module bastionHost 'br/public:avm/res/network/bastion-host:0.8.0 ' = if (enablePrivateNetworking ) {
361+ module bastionHost 'br/public:avm/res/network/bastion-host:0.8.2 ' = if (enablePrivateNetworking ) {
364362 name : take ('avm.res.network.bastion-host.${bastionHostName }' , 64 )
365363 params : {
366364 name : bastionHostName
@@ -383,14 +381,14 @@ module bastionHost 'br/public:avm/res/network/bastion-host:0.8.0' = if (enablePr
383381 enableTelemetry : enableTelemetry
384382 publicIPAddressObject : {
385383 name : 'pip-${bastionHostName }'
386- zones : []
384+ availabilityZones : []
387385 }
388386 }
389387}
390388
391389// ========== Jumpbox Virtual machine ========== //
392390var maintenanceConfigurationResourceName = 'mc-${solutionSuffix }'
393- module maintenanceConfiguration 'br/public:avm/res/maintenance/maintenance-configuration:0.3.2 ' = if (enablePrivateNetworking ) {
391+ module maintenanceConfiguration 'br/public:avm/res/maintenance/maintenance-configuration:0.4.0 ' = if (enablePrivateNetworking ) {
394392 name : take ('avm.res.compute.virtual-machine.${maintenanceConfigurationResourceName }' , 64 )
395393 params : {
396394 name : maintenanceConfigurationResourceName
@@ -430,7 +428,7 @@ var dataCollectionRulesResourceName = 'dcr-${solutionSuffix}'
430428var dataCollectionRulesLocation = useExistingLogAnalytics
431429 ? existingLogAnalyticsWorkspace !.location
432430 : logAnalyticsWorkspace !.outputs .location
433- module windowsVmDataCollectionRules 'br/public:avm/res/insights/data-collection-rule:0.8 .0' = if (enablePrivateNetworking && enableMonitoring ) {
431+ module windowsVmDataCollectionRules 'br/public:avm/res/insights/data-collection-rule:0.11 .0' = if (enablePrivateNetworking && enableMonitoring ) {
434432 name : take ('avm.res.insights.data-collection-rule.${dataCollectionRulesResourceName }' , 64 )
435433 params : {
436434 name : dataCollectionRulesResourceName
@@ -503,15 +501,6 @@ module windowsVmDataCollectionRules 'br/public:avm/res/insights/data-collection-
503501 streams : [
504502 'Microsoft-WindowsEvent'
505503 ]
506- eventLogName : 'Security'
507- eventTypes : [
508- {
509- eventType : 'Audit Success'
510- }
511- {
512- eventType : 'Audit Failure'
513- }
514- ]
515504 xPathQueries : [
516505 'Security!*[System[(EventID=4624 or EventID=4625)]]'
517506 ]
@@ -556,7 +545,7 @@ module proximityPlacementGroup 'br/public:avm/res/compute/proximity-placement-gr
556545
557546
558547var virtualMachineResourceName = take ('vm-jumpbox-${solutionSuffix }' , 15 )
559- module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.20 .0' = if (enablePrivateNetworking ) {
548+ module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.22 .0' = if (enablePrivateNetworking ) {
560549 name : take ('avm.res.compute.virtual-machine.${virtualMachineResourceName }' , 64 )
561550 params : {
562551 name : virtualMachineResourceName
@@ -565,18 +554,18 @@ module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.20.0' = if (e
565554 enableTelemetry : enableTelemetry
566555 computerName : take (virtualMachineResourceName , 15 )
567556 osType : 'Windows'
568- vmSize : !empty (vmSize ) ? vmSize : 'Standard_D2s_v5'
557+ vmSize : !empty (vmSize ) ? vmSize ! : 'Standard_D2s_v5'
569558 adminUsername : !empty (vmAdminUsername ) ? vmAdminUsername : 'JumpboxAdminUser'
570559 adminPassword : !empty (vmAdminPassword ) ? vmAdminPassword : 'JumpboxAdminP@ssw0rd1234!'
571560 managedIdentities : {
572561 systemAssigned : true
573562 }
574563 patchMode : 'AutomaticByPlatform'
575564 bypassPlatformSafetyChecksOnUserSchedule : true
576- maintenanceConfigurationResourceId : maintenanceConfiguration .outputs .resourceId
565+ maintenanceConfigurationResourceId : maintenanceConfiguration ! .outputs .resourceId
577566 enableAutomaticUpdates : true
578567 encryptionAtHost : false
579- proximityPlacementGroupResourceId : proximityPlacementGroup .outputs .resourceId
568+ proximityPlacementGroupResourceId : proximityPlacementGroup ! .outputs .resourceId
580569 availabilityZone : enableRedundancy ? 1 : -1
581570 imageReference : {
582571 publisher : 'microsoft-dsvm'
@@ -642,7 +631,7 @@ module virtualMachine 'br/public:avm/res/compute/virtual-machine:0.20.0' = if (e
642631 ? {
643632 dataCollectionRuleAssociations : [
644633 {
645- dataCollectionRuleResourceId : windowsVmDataCollectionRules .outputs .resourceId
634+ dataCollectionRuleResourceId : windowsVmDataCollectionRules ! .outputs .resourceId
646635 name : 'send-${logAnalyticsWorkspaceName }'
647636 }
648637 ]
@@ -673,11 +662,9 @@ module aiServices 'modules/ai-foundry/aifoundry.bicep' = {
673662 privateNetworking : null // Private endpoint is handled by the standalone aiFoundryPrivateEndpoint module
674663 existingFoundryProjectResourceId : existingFoundryProjectResourceId
675664 disableLocalAuth : true //Should be set to true for WAF aligned configuration
676- customSubDomainName : 'aif-${solutionSuffix }'
677665 apiProperties : {
678666 //staticsEnabled: false
679667 }
680- allowProjectManagement : true
681668 managedIdentities : {
682669 systemAssigned : true
683670 }
@@ -712,7 +699,7 @@ module aiServices 'modules/ai-foundry/aifoundry.bicep' = {
712699var aiFoundryAiServicesResourceName = 'aif-${solutionSuffix }'
713700var useExistingAiFoundryAiProject = !empty (existingFoundryProjectResourceId )
714701
715- module aiFoundryPrivateEndpoint 'br/public:avm/res/network/private-endpoint:0.8.1 ' = if (enablePrivateNetworking && !useExistingAiFoundryAiProject ) {
702+ module aiFoundryPrivateEndpoint 'br/public:avm/res/network/private-endpoint:0.12.0 ' = if (enablePrivateNetworking && !useExistingAiFoundryAiProject ) {
716703 name : take ('pep-${aiFoundryAiServicesResourceName }-deployment' , 64 )
717704 params : {
718705 name : 'pep-${aiFoundryAiServicesResourceName }'
@@ -788,7 +775,7 @@ module storageAccount 'modules/storageAccount.bicep' = {
788775}
789776
790777// Azure Container Registry for azd container deployments
791- resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-07 -01' = {
778+ resource containerRegistry 'Microsoft.ContainerRegistry/registries@2025-11 -01' = {
792779 name : take ('acrreg${solutionSuffix }' , 50 )
793780 location : location
794781 sku : {
@@ -863,7 +850,7 @@ module cosmosDb 'modules/cosmosDb.bicep' = {
863850
864851var containerAppsEnvironmentName = 'cae-${solutionSuffix }'
865852
866- module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.11.3 ' = {
853+ module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.13.1 ' = {
867854 name : take ('avm.res.app.managed-environment.${solutionSuffix }' , 64 )
868855 #disable-next-line no-unnecessary-dependson
869856 dependsOn : [applicationInsights , logAnalyticsWorkspace , virtualNetwork ] // required due to optional flags that could change dependency
@@ -879,16 +866,17 @@ module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.11.
879866 appIdentity .outputs .resourceId
880867 ]
881868 }
882- appInsightsConnectionString : enableMonitoring ? applicationInsights .outputs .connectionString : null
869+ appInsightsConnectionString : enableMonitoring ? applicationInsights ! .outputs .connectionString : null
883870 appLogsConfiguration : enableMonitoring
884871 ? {
885872 destination : 'log-analytics'
886873 logAnalyticsConfiguration : {
887- customerId : LogAnalyticsWorkspaceId
888- sharedKey : LogAnalyticsPrimarySharedKey
874+ customerId : useExistingLogAnalytics ? existingLogAnalyticsWorkspace . properties . customerId : logAnalyticsWorkspace . outputs . logAnalyticsWorkspaceId
875+ sharedKey : useExistingLogAnalytics ? existingLogAnalyticsWorkspace . listKeys (). primarySharedKey : logAnalyticsWorkspace . outputs . primarySharedKey
889876 }
877+ logAnalyticsWorkspaceResourceId : logAnalyticsWorkspaceResourceId
890878 }
891- : {}
879+ : null
892880 workloadProfiles : enablePrivateNetworking
893881 ? [
894882 // NOTE: workload profiles are required for private networking
@@ -903,7 +891,7 @@ module containerAppsEnvironment 'br/public:avm/res/app/managed-environment:0.11.
903891 }
904892}
905893
906- module containerAppBackend 'br/public:avm/res/app/container-app:0.19 .0' = {
894+ module containerAppBackend 'br/public:avm/res/app/container-app:0.22 .0' = {
907895 name : take ('avm.res.app.container-app.backend.${solutionSuffix }' , 64 )
908896 #disable-next-line no-unnecessary-dependson
909897 dependsOn : [applicationInsights ] // required due to optional flags that could change dependency
@@ -1034,11 +1022,11 @@ module containerAppBackend 'br/public:avm/res/app/container-app:0.19.0' = {
10341022 ? [
10351023 {
10361024 name : 'APPLICATIONINSIGHTS_INSTRUMENTATION_KEY'
1037- value : applicationInsights .outputs .instrumentationKey
1025+ value : applicationInsights ! .outputs .instrumentationKey
10381026 }
10391027 {
10401028 name : 'APPLICATIONINSIGHTS_CONNECTION_STRING'
1041- value : applicationInsights .outputs .connectionString
1029+ value : applicationInsights ! .outputs .connectionString
10421030 }
10431031 ]
10441032 : []
@@ -1088,7 +1076,7 @@ module containerAppBackend 'br/public:avm/res/app/container-app:0.19.0' = {
10881076 }
10891077}
10901078
1091- module containerAppFrontend 'br/public:avm/res/app/container-app:0.19 .0' = {
1079+ module containerAppFrontend 'br/public:avm/res/app/container-app:0.22 .0' = {
10921080 name : take ('avm.res.app.container-app.frontend.${solutionSuffix }' , 64 )
10931081 params : {
10941082 name : take ('ca-frontend-${solutionSuffix }' , 32 )
@@ -1155,7 +1143,7 @@ output resourceGroupName string = resourceGroup().name
11551143output WEB_APP_URL string = 'https://${containerAppFrontend .outputs .fqdn }'
11561144output COSMOSDB_ENDPOINT string = cosmosDb .outputs .endpoint
11571145output AZURE_BLOB_ACCOUNT_NAME string = storageAccount .outputs .name
1158- output AZURE_BLOB_ENDPOINT string = 'https://${storageAccount .outputs .name }.blob.core.windows.net /'
1146+ output AZURE_BLOB_ENDPOINT string = 'https://${storageAccount .outputs .name }.blob.${ environment (). suffixes . storage } /'
11591147output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerRegistry .properties .loginServer
11601148output AZURE_AI_AGENT_PROJECT_NAME string = aiServices .outputs .aiProjectInfo .name
11611149output AZURE_AI_AGENT_ENDPOINT string = aiServices .outputs .aiProjectInfo .apiEndpoint
@@ -1169,7 +1157,7 @@ output COSMOSDB_DATABASE string = cosmosDb.outputs.databaseName
11691157output COSMOSDB_BATCH_CONTAINER string = cosmosDb .outputs .containerNames .batch
11701158output COSMOSDB_FILE_CONTAINER string = cosmosDb .outputs .containerNames .file
11711159output COSMOSDB_LOG_CONTAINER string = cosmosDb .outputs .containerNames .log
1172- output APPLICATIONINSIGHTS_CONNECTION_STRING string = enableMonitoring ? applicationInsights .outputs .connectionString : ''
1160+ output APPLICATIONINSIGHTS_CONNECTION_STRING string = enableMonitoring ? applicationInsights ! .outputs .connectionString : ''
11731161output MIGRATOR_AGENT_MODEL_DEPLOY string = modelDeployment .name
11741162output PICKER_AGENT_MODEL_DEPLOY string = modelDeployment .name
11751163output FIXER_AGENT_MODEL_DEPLOY string = modelDeployment .name
0 commit comments