Deployment errors
import { Aside } from “@astrojs/starlight/components”;
The wizard deploy fails for one of a small number of reasons. Each one has a clean fix.
”AuthorizationFailed: … does not have permission to create role assignment”
Cause: you have Contributor on the subscription but not User Access Administrator. The bicep creates three role assignments (Cosmos DB Data Contributor, KV Secrets Officer, SignalR Service Owner) on the customer Function App’s MI, which requires UAA.
Fix:
# Either add UAA to your account:az role assignment create \ --role "User Access Administrator" \ --assignee $(az account show --query user.name -o tsv) \ --scope /subscriptions/{your-sub-id}
# OR ask your subscription Owner to deploy on your behalf.After the role assignment propagates (~30s), delete the failed Managed Application from the Azure portal (a failed deploy holds no data) and deploy again from the Marketplace listing.
”ServiceModelDeprecated: gpt-X is not available for new deployments”
Cause: Azure has stopped accepting new deployments of the AI model we depend on (gpt-5-mini). Microsoft typically gives 6-12 months notice.
Fix: this requires us to ship an updated package with a newer model. Contact support — we monitor model deprecation and ship updates ahead of cutoffs, but if you hit this, it means your install was triggered AFTER cutoff but BEFORE our update propagated.
”InvalidQuota: No quota for X in region Y”
Cause: your subscription has no gpt-5-mini GlobalStandard quota in the region you picked.
Fix: two options.
-
Request quota in the portal: Azure AI Foundry → Quotas → Request quota for
gpt-5-miniin your chosen region. Approval typically takes minutes for small asks. -
Pick a different region with available quota:
westus3,eastus2, andswedencentralare typically reliable. Delete the failed Managed Application, then deploy again from the Marketplace listing with the new region.
”Storage account name already exists”
Cause: your stack name (the suffix used in resource names) collides with an existing globally-unique resource. This is extremely rare with our uniqueString() derivation but theoretically possible.
Fix: pick a different stack name. Stack names use 3-12 lowercase alphanumeric chars; avoid common words.
Deploy succeeds, but /api/health returns 404 or 500
Cause: the customer-runtime publish (the step where we push the function code into your Function App) failed or hasn’t completed yet. The template finished but the Function App has no functions.
What you can check yourself (the Managed RG is read-only for your tenant, so diagnosis is read-only too):
- Retry
https://pocai-fa-{stack-hash}.azurewebsites.net/api/healthafter 10-15 minutes — the publish step can lag the ARM deploy. - In the portal, open the Function App inside the Managed RG → Functions. An empty list confirms the package never mounted.
Fix: contact support with your stack name. Re-publishing the runtime package and re-syncing the Functions host are publisher-side actions — the storage and az rest commands they involve are denied for your account under the Managed RG’s deny assignment.
”Sign-in failed” in the Teams tab right after install
Cause: the deploy wizard does not create the AAD app for Teams SSO. It’s a one-time post-install step, and it hasn’t been done yet on this stack.
Fix: run the setup script from a checkout of the PointOfContactAI repo:
git clone https://github.com/innovations24/pocai.gitcd pocainode scripts/create-aad-app.mjs --stack-name {your-stack-id}Then have the three non-secret values it prints set on your Function App via support. Full procedure in Teams app setup.