@@ -108,4 +108,50 @@ if (-not $result.properties.outputs) {
108108
109109Write-Host " ✅ Target APIM deployed successfully: $ ( Protect-ApimName - Value $result.properties.outputs.apimServiceName.value ) "
110110
111+ # APIM may auto-create default user subscriptions (for built-in products like
112+ # starter/unlimited). Remove non-system subscriptions so publish starts from a
113+ # clean target with no user subscriptions.
114+ $targetApimName = $result.properties.outputs.apimServiceName.value
115+ Write-Host " Pruning non-system subscriptions from target APIM..."
116+
117+ $listArgs = @ (
118+ ' apim' , ' subscription' , ' list' ,
119+ ' --resource-group' , $ResourceGroupName ,
120+ ' --service-name' , $targetApimName ,
121+ ' --output' , ' json'
122+ )
123+
124+ $subsRaw = Invoke-MaskedAzCommand - Replacements $azReplacements - Arguments $listArgs
125+ if ($LASTEXITCODE -ne 0 ) {
126+ throw " Failed to list target APIM subscriptions"
127+ }
128+
129+ $subscriptions = $subsRaw | ConvertFrom-Json
130+ $deletedCount = 0
131+
132+ foreach ($sub in @ ($subscriptions )) {
133+ $sid = $sub.name
134+ if (-not $sid -or $sid -eq ' master' ) {
135+ continue
136+ }
137+
138+ $deleteArgs = @ (
139+ ' apim' , ' subscription' , ' delete' ,
140+ ' --resource-group' , $ResourceGroupName ,
141+ ' --service-name' , $targetApimName ,
142+ ' --sid' , $sid ,
143+ ' --yes' ,
144+ ' --output' , ' none'
145+ )
146+
147+ Invoke-MaskedAzCommand - Replacements $azReplacements - Arguments $deleteArgs | Out-Null
148+ if ($LASTEXITCODE -eq 0 ) {
149+ $deletedCount ++
150+ } else {
151+ throw " Failed to delete target APIM subscription '$sid '"
152+ }
153+ }
154+
155+ Write-Host " ✅ Pruned $deletedCount non-system subscriptions from target APIM"
156+
111157return $result.properties.outputs
0 commit comments