> For the complete documentation index, see [llms.txt](https://cortex-docs.paloaltonetworks.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cortex-docs.paloaltonetworks.com/data-security-documentation/onboard-and-configure/csp-onboarding/outpost-onboarding/outpost-troubleshooting.md).

# Outpost troubleshooting

This document provides solutions for issues that might occur while deploying, configuring, and operating Cortex Cloud outposts. These troubleshooters can help identify symptoms, locate errors, and suggest how you can remediate.

## General troubleshooting

These general troubleshooters apply to all cloud service providers and outpost deployment modes.

**Terraform executes successfully but no outpost appears in Cortex**

After a successful Terraform run, your cloud environment sends a notification to Cortex to register the new outpost. If the outpost doesn't appear in the Cortex console, verify that outbound internet connectivity is available from the environment where Terraform was executed. The notification requires an active connection to reach Cortex. If connectivity is confirmed and the outpost still doesn't appear, contact customer support for a manual workaround.

**Terraform template execution fails on a non-approved tenant, such as after changing the target tenant mid-deployment**

If Terraform execution fails on a non-approved tenant, such as if you change an Azure target tenant after starting outpost creation. Terraform execution fails because the outpost is bound to the originally-approved tenant. Delete the partially-created outpost from the Cortex console, revert to the approved tenant, and re-run the Terraform template.

## Standard outpost troubleshooting

Standard outposts handle most of the infrastructure and identity provisioning automatically. Issues in this deployment mode might stem, for example, from broad permission gaps, restrictive policy definitions, or quota limits that prevent Cortex from deploying necessary resources.

## Custom outpost troubleshooting

Custom outposts require specific infrastructure configurations tailored to your environment. Troubleshooting these deployments might involve, for example, validating custom network routing, verifying the availability of specific scanner images, and ensuring modified Terraform variables align with your cloud provider's network topology.

### Setup fails silently: Tenant has disabled user registration

The setup fails silently if `Users can register applications = No` is set at the tenant level. See the `README.md` for this common failure mode.

## Bring your own app (BYOA) troubleshooting - Azure

This section details common deployment and runtime errors that occur when a Bring Your Own App (BYOA) Azure outpost is configured. These errors might appear, for example, if the app registration, service principal, and user-assigned managed identities (UAMIs) were created manually via the Azure portal instead of using the provided helper script.&#x20;

Use the following table to identify symptoms and apply the appropriate resolutions.

| Symptom / error message                                                                                                                                                                         | Terraform deployment phase | Detection method         | Resolution                                                                                                                                                                                                                                                                                                                                                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><strong>Single-tenant app registration</strong><br><br><em>Error:</em> <code>... sign\_in\_audience must be 'AzureADMultipleOrgs' ...</code></p>                                             | Plan                       | Terraform console output | <p>Recreate the app registration as a multi-tenant application.<br><br>The Azure portal defaults to single-tenant ("this org only").<br><br>Run this command:<br><br><code>az ad app create --display-name \<name> --sign-in-audience AzureADMultipleOrgs</code></p>                                                                                                                               |
| <p><strong>Incorrect service principal ID</strong><br><br><em>Error:</em> <code>... customer\_sp\_object\_id ... is the SP of a different AppReg ...</code></p>                                 | Plan                       | Terraform console output | <p>An incorrect service principal object ID was provided.<br><br>Retrieve the correct ID by running:<br><br><code>az ad sp show --id \<CUSTOMER\_APP\_CLIENT\_ID> --query id -o tsv</code><br><br>Update the <code>customer\_sp\_object\_id</code> variable in your <code>tfvars</code> file.</p>                                                                                                  |
| <p><strong>Missing Terraform runner ownership</strong><br><br><em>Error:</em> <code>Warning: The Terraform runner ... is NOT listed as an owner of the BYO App Registration ...</code></p>      | Plan                       | Terraform console output | <p>The Terraform runner must be added as an owner of the app registration.<br><br>Without this, the deployment fails with an "Insufficient privileges" error when attempting to create the first federated identity credential (FIC).<br><br>Run:<br><br><code>az ad app owner add --id \<APP\_ID> --owner-object-id \<TF\_RUNNER\_OBJ\_ID></code></p>                                             |
| <p><strong>Disabled service principal</strong><br><br><em>Error:</em> <code>... Customer SP ... is disabled in Entra ...</code></p>                                                             | Plan                       | Terraform console output | <p>The service principal is disabled.<br><br>Re-enable it by running:<br><br><code>az ad sp update --id \<SP\_OBJ\_ID> --set accountEnabled=true</code><br><br>Alternatively, toggle it in the Azure portal under <strong>Enterprise applications</strong> > <strong>\[Your SP]</strong> > <strong>Properties</strong>.</p>                                                                        |
| <p><strong>Cross-subscription UAMI</strong><br><br><em>Error:</em> <code>... Customer UAMI ... lives in subscription \<X> but the outpost is being deployed to \<Y> ...</code></p>              | Plan                       | Terraform console output | <p>Cross-subscription UAMIs are not supported because the Azure Instance Metadata Service (IMDS) only returns tokens for local identities.<br><br>Recreate the UAMI in the outpost's subscription and update <code>customer\_uami\_\*\_id</code> in your <code>tfvars</code> file.</p>                                                                                                             |
| <p><strong>Cross-tenant UAMI</strong><br><br><em>Error:</em> <code>... Customer UAMI ... lives in tenant \<X> but the outpost subscription is in tenant \<Y> ...</code></p>                     | Plan                       | Terraform console output | <p>Cross-tenant UAMIs are not supported.<br><br>Recreate the UAMI in the correct Entra ID tenant to match the outpost subscription.</p>                                                                                                                                                                                                                                                            |
| <p><strong>Duplicate UAMI IDs</strong><br><br><em>Error:</em> <code>... All 5 customer UAMI IDs must be distinct ...</code></p>                                                                 | Plan                       | Terraform console output | <p>Duplicate UAMI IDs were provided.<br><br>The error message lists all 5 IDs.<br><br>Replace the duplicates with the correct, distinct UAMI IDs and rerun Terraform.</p>                                                                                                                                                                                                                          |
| <p><strong>Insufficient privileges for FIC</strong><br><br><em>Error:</em> <code>Error: creating Federated Identity Credential ... Insufficient privileges to complete the operation</code></p> | Apply                      | Terraform console output | <p>App registration owner permissions are missing for the Terraform runner.<br><br>Verify ownership by running <code>az ad app owner list --id \<APP\_ID></code>.<br><br>Add the owner by running:<br><br><code>az ad app owner add --id \<APP\_ID> --owner-object-id \<TF\_RUNNER></code></p>                                                                                                     |
| <p><strong>Stale federated credential</strong><br><br><em>Error:</em> <code>Another object with the same value for property federatedIdentityCredentials/\<name> already exists</code></p>      | Apply                      | Terraform console output | <p>A stale FIC exists from a previous deployment attempt or manual portal entry.<br><br>List existing credentials using <code>az ad app federated-credential list --id \<APP\_ID> -o table</code>.<br><br>Delete the conflicting one with <code>az ad app federated-credential delete --id \<APP\_ID> --federated-credential-id \<NAME></code>.<br><br>Rerun the deployment.</p>                   |
| <p><strong>Subject does not exist (replication lag)</strong><br><br><em>Error:</em> <code>400 BadRequest: Subject does not exist in directory.</code></p>                                       | Apply                      | Terraform console output | <p>The UAMI was created very recently, and it has not yet replicated across Entra ID.<br><br>Wait 30 to 60 seconds and rerun <code>terraform apply</code>.<br><br>Verify the subject exists with <code>az ad sp show --id \<UAMI\_PRINCIPAL\_ID></code>.</p>                                                                                                                                       |
| <p><strong>Account disabled at runtime</strong><br><br><em>Error:</em> <code>AADSTS50057: The user account is disabled.</code></p>                                                              | Runtime                    | Scanner pod logs         | <p>The service principal was disabled after onboarding.<br><br>Re-enable it by running:<br><br><code>az ad sp update --id \<SP\_OBJ\_ID> --set accountEnabled=true</code></p>                                                                                                                                                                                                                      |
| <p><strong>Missing federated identity record</strong><br><br><em>Error:</em> <code>AADSTS70021: No matching federated identity record found</code></p>                                          | Runtime                    | Scanner pod logs         | <p>A FIC is missing or has the wrong subject.<br><br>List the FICs on the app registration (<code>az ad app federated-credential list --id \<APP\_ID></code>) and on the UAMI (<code>az identity federated-credential list --name \<UAMI\_NAME> -g \<UAMI\_RG></code>).<br><br>Rerun <code>terraform apply</code> to allow Terraform to automatically reconcile and recreate the missing FICs.</p> |
| <p><strong>Missing admin consent</strong><br><br><em>Error:</em> <code>AADSTS650056</code> or <code>AADSTS50020</code></p>                                                                      | Runtime                    | Cortex consent URL       | <p>The app registration is configured as single-tenant, or admin consent is missing on the monitored tenant.<br><br>Verify <code>sign\_in\_audience</code> is set correctly and retry the admin consent flow.</p>                                                                                                                                                                                  |
| <p><strong>Accidental UAMI deletion</strong><br><br><em>Error:</em> <code>terraform destroy deleted my customer-created UAMIs!</code></p>                                                       | Destroy                    | Azure portal / CLI       | <p>The UAMIs were incorrectly placed inside the outpost's Cortex-managed resource group.<br><br>Terraform deletes UAMIs placed inside the outpost's Cortex-managed resource group during a destroy operation.<br><br>Recreate the UAMIs in a customer-owned resource group outside of the outpost boundaries and re-onboard.</p>                                                                   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://cortex-docs.paloaltonetworks.com/data-security-documentation/onboard-and-configure/csp-onboarding/outpost-onboarding/outpost-troubleshooting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
