Azure Citadel
  • Blogs

  • Azure Arc
    • Overview
    • Azure Arc-enabled Kubernetes
      • Prereqs
      • Background
      • Deploy Cluster
      • Connect to Arc
      • Enable GitOps
      • Deploy Application
      • Enable Azure AD
      • Enforce Policy
      • Enable Monitoring
      • Enable Azure Defender
      • Enable Data Services
      • Enable Application Delivery
    • Azure Arc-enabled Servers
      • Prereqs
      • Scenario
      • Hack Overview
      • Azure Landing Zone
      • Arc Pilot resource group
      • Azure Monitoring Agent
      • Additional policy assignments
      • Access your on prem VMs
      • Create onboarding scripts
      • Onboarding using scripts
      • Inventory
      • Monitoring
      • SSH
      • Windows Admin Center
      • Governance
      • Custom Script Extension
      • Key Vault Extension
      • Managed Identity
    • Useful Links
  • Azure CLI
    • Install
    • Get started
    • JMESPATH queries
    • Integrate with Bash
  • Azure landing zone
    • Overview
    • Run the ALZ Accelerator
      • Prereqs
      • Elevate
      • Bootstrap
      • Demote
      • Browse the deployed resources
    • Deploy an Azure landing zone
      • What is the Azure landing zone?
      • Create an initial ALZ config
      • Add a local override library
      • Test locally
      • Run through the CI/CD workflow
    • Understanding libraries
      • What is a library?
      • Policies, Assignments and Roles
      • Archetypes, Overrides and Architecture
      • Metadata and Policy Default Values
      • Custom libraries
    • Reference configs
      • Azure landing zone library
      • Azure landing zone library with overrides
  • Azure Lighthouse
    • Minimal Lighthouse definition
    • Using service principals
    • Privileged Identity Management
  • Azure Policy
    • Azure Policy Basics
      • Policy Basics in the Azure Portal
      • Creating Policy via the CLI
      • Deploy If Not Exists
      • Management Groups and Initiatives
    • Creating Custom Policies
      • Customer scenario
      • Policy Aliases
      • Determine the logic
      • Create the custom policy
      • Define, assign and test
  • Customer Managed Keys
    • Sovereignty scenarios
    • Key management options
    • 🧪 Azure Key Vault Premium
    • L2: Encryption at rest with CMK
    • 🧪 CMK for Storage
    • 🧪 CMK for VM Disks and AKS
  • Marketplace
    • Introduction
      • Terminology
      • Offer Types
    • Partner Center
    • Offer Type
    • Publish a VM Offer HOL
      • Getting Started
      • Create VM Image
      • Test VM Image
      • VM Offer with SIG
      • VM Offer with SAS
      • Publish Offer
      • Other VM Resources
    • Publish a Solution Template HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Publish a Managed App HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Managed Apps with AKS HOL
    • Other Managed App Resources
    • SaaS Offer HOLs
    • SaaS Offer Video Series
      • Video 1 - SaaS Offer Overview
      • Video 2 - Purchasing a SaaS Offer
      • Video 3 - Purchasing a Private SaaS Plan
      • Video 4 - Publishing a SaaS Offer
      • Video 5 - Publishing a Private SaaS Plan
      • Video 6 - SaaS Offer Technical Overview
      • Video 7 - Azure AD Application Registrations
      • Video 8 - Using the SaaS Offer REST Fulfillment API
      • Video 9 - The SaaS Client Library for .NET
      • Video 10 - Building a Simple SaaS Landing Page in .NET
      • Video 11 - Building a Simple SaaS Publisher Portal in .NET
      • Video 12 - SaaS Webhook Overview
      • Video 13 - Implementing a Simple SaaS Webhook in .NET
      • Video 14 - Securing a Simple SaaS Webhook in .NET
      • Video 15 - SaaS Metered Billing Overview
      • Video 16 - The SaaS Metered Billing API with REST
  • Microsoft Fabric
    • Theory
    • Prereqs
    • Fabric Capacity
    • Set up a Remote State
    • Create a repo from a GitHub template
    • Configure an app reg for development
    • Initial Terraform workflow
    • Expanding your config
    • Configure a workload identity
    • GitHub Actions for Microsoft Fabric
    • GitLab pipeline for Microsoft Fabric
  • Packer & Ansible
    • Packer
    • Ansible
    • Dynamic Inventories
    • Playbooks & Roles
    • Custom Roles
    • Shared Image Gallery
  • Partner Admin Link
    • Understanding PAL
    • Quick reference page
    • User and guest IDs
    • Service principals with credentials
    • Workflows and pipelines
    • Using AzAPI in Terraform
    • PAL tagging with a service principal
    • Azure Lighthouse & PAL
    • PAL FAQ
  • REST API
    • REST API theory
    • Using az rest
  • Setup
  • Sovereign landing zone
    • Overview
    • Run the ALZ Accelerator
      • Prereqs
      • Elevate
      • Bootstrap
      • Demote
      • Components
    • Deploy Sovereign landing zone
      • Create an initial SLZ config
      • Add a local override library
      • Test locally
      • Run through the CI/CD workflow
    • Understanding libraries
      • What is a library?
      • Policies, Assignments and Roles
      • Archetypes, Overrides and Architecture
      • Metadata and Policy Default Values
      • Custom libraries
    • Reference configs
      • Sovereign landing zone
      • Sovereign landing zone library with overrides
      • SLZ extended with a country pack
  • Terraform
    • Fundamentals
      • Initialise
      • Format
      • Validate
      • Plan
      • Apply
      • Adding resources
      • Locals and outputs
      • Managing state
      • Importing resources
      • Destroy
    • Get set up for Terraform
      • Cloud Shell
      • macOS
      • Windows with PowerShell
      • Windows with Ubuntu in WSL2
    • Using AzAPI
      • Using the REST API
      • azapi_resource
      • Removing azapi_resource
      • azapi_update_resource
      • Data sources and outputs
      • Removing azapi_update_resource
  • Virtual Machines
    • Azure Bastion with native tools & AAD
    • Managed Identities

  • About
  • Archive
  1. Home
  2. Partner Admin Link
  3. Quick reference page
Quick reference page
Quick reference page
Partner Admin Link
Understanding PAL
Quick reference page
User and guest IDs
Service principals with credentials
Workflows and pipelines
Using AzAPI in Terraform
PAL tagging with a service principal
Azure Lighthouse & PAL
PAL FAQ
  • Introduction
  • REST API Operations
    • Create
    • Get
    • Update
    • Delete
  • Additional install notes
    • Azure CLI
    • PowerShell
  • Next

Quick reference page

Once you have authenticated then how do you create a Partner Admin Link? This quick reference page includes a selection of methods and their CLI equivalents. The following pages after this one then run through a few scenarios.

Table of Contents

  • Introduction
  • REST API Operations
    • Create
    • Get
    • Update
    • Delete
  • Additional install notes
    • Azure CLI
    • PowerShell
  • Next

Introduction

Process:

  1. Authenticate as a user, guest, service principal or managed identity in the customer’s tenant.
  2. Link your security principal to the Partner ID using the REST API, CLI, or PowerShell cmdlet.

Reminders:

  • Each security principal can only be connected to one Partner ID in each tenant.
  • You cannot create a PAL for another security principal.
  • Authenticate as that security principal, check the context and create the PAL.
  • ACR telemetry attribution for that security principal is based on its RBAC role assignments.

Security principal is the collective name for users, guests, service principals and managed identities on the Entra ID platform.

The partner ID used throughout these examples will be 314159. This is not a valid Partner ID and will error. Use your own Partner ID.

Note that the Microsoft.ManagementPartner REST API does not have the first-class REST documentation found for most Azure resource provider.

The API has separate Create and Update methods. There is no combined and idempotent Create or Update method as we commonly see for more recent REST APIs. Therefore the safest method in automation is to get and then create or update as applicable.

REST API Operations

Create

REST API

Create a Partner Admin Link.

PUT https://management.azure.com/providers/Microsoft.ManagementPartner/partners/{partnerId}?api-version=2018-02-01
Example with body
PUT https://management.azure.com/providers/Microsoft.ManagementPartner/partners/314159?api-version=2018-02-01

{
  "partnerId": "314159"
}

CLI commands

az rest --method put \
  --url "https://management.azure.com/providers/microsoft.managementpartner/partners/${partnerId}?api-version=2018-02-01" \
  --body "{\"partnerId\": \"${partnerId}\"}"
Example output:
{
  "etag": 1,
  "id": "/providers/microsoft.managementpartner/partners/314159",
  "name": "314159",
  "properties": {
    "createdTime": "2026-09-15T14:25:52.6156742Z",
    "objectId": "142d2492-a132-4acb-a9bd-78b709298fd2",
    "partnerId": "314159",
    "partnerName": "Azure Citadel",
    "state": "Active",
    "tenantId": "05a64f04-2b2a-4d47-9b12-9b448065bb06",
    "updatedTime": "2026-09-15T14:25:52.6156742Z",
    "version": 1
  },
  "type": "Microsoft.ManagementPartner/partners"
}
az managementpartner create --partner-id "${partnerId}"
Example output:
{
  "createdTime": "2026-09-15T14:25:52.6156742Z",
  "etag": 1,
  "id": "/providers/microsoft.managementpartner/partners/314159",
  "name": "314159",
  "objectId": "142d2492-a132-4acb-a9bd-78b709298fd2",
  "partnerId": "314159",
  "partnerName": "Azure Citadel",
  "state": "Active",
  "tenantId": "05a64f04-2b2a-4d47-9b12-9b448065bb06",
  "type": "Microsoft.ManagementPartner/partners",
  "updatedTime": "2026-09-15T14:58:32.7777762Z",
  "version": 1
}
New-AzManagementPartner -PartnerId $partnerId
Example output:

PartnerId   : 314159
PartnerName : Azure Citadel
TenantId    : 05a64f04-2b2a-4d47-9b12-9b448065bb06
ObjectId    : 142d2492-a132-4acb-a9bd-78b709298fd2
State       : Active

Create will fail if the user or service principal is already linked.

Get

REST API

Get with no Partner ID specified.

GET https://management.azure.com/providers/Microsoft.ManagementPartner/partners?api-version=2018-02-01

Returns the same JSON object as PUT if set. Errors if there is no Partner Admin Link.

Get for a specific partner ID.

GET https://management.azure.com/providers/Microsoft.ManagementPartner/partners/{partnerId}?api-version=2018-02-01

Returns the JSON object if PAL exists and is set to the partner ID. Errors if a) there is no Partner Admin Link or b) a PAL exists but is set to another partner’s Partner ID.

CLI commands

az rest --method get \
  --url "https://management.azure.com/providers/microsoft.managementpartner/partners/${partnerId}?api-version=2018-02-01"

The /${partnerId} section of the URI can be removed for the first variant.

az managementpartner show --partner-id "${partnerId}"

Remove the --partner-id switch for the first variant.

Get-AzManagementPartner -PartnerId $partnerId

Remove the --PartnerId switch for the first variant.

Update

REST API

PATCH https://management.azure.com/providers/Microsoft.ManagementPartner/partners/{partnerId}?api-version=2018-02-01
Example with body
PATCH https://management.azure.com/providers/Microsoft.ManagementPartner/partners/314159?api-version=2018-02-01

{
  "partnerId": "314159"
}

CLI commands

az rest --method patch \
  --url "https://management.azure.com/providers/microsoft.managementpartner/partners/${partnerId}?api-version=2018-02-01" \
  --body "{\"partnerId\": \"${partnerId}\"}"
az managementpartner update --partner-id "${partnerId}"
Update-AzManagementPartner -PartnerId $partnerId

Update will fail if the user or service principal is not already linked.

Delete

REST API

DELETE https://management.azure.com/providers/Microsoft.ManagementPartner/partners/{partnerId}?api-version=2018-02-01

CLI commands

az rest --method delete \
  --url "https://management.azure.com/providers/microsoft.managementpartner/partners/${partnerId}?api-version=2018-02-01"
az managementpartner delete --partner-id "${partnerId}"
Remove-AzManagementPartner -PartnerId $partnerId

Additional install notes

Azure CLI

The Azure CLI’s managementpartner commands require the extension to be installed.

  1. Install the Azure CLI’s managementpartner extension.

    az extension add --name "managementpartner"
    

PowerShell

Install the Az.ManagementPartner PowerShell module for the cmdlets shown above.

  1. Register the default PowerShell repository.

    Register-PSRepository -Default
    
  2. Set the PSGallery installation policy to trusted.

    Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
    
  3. Install the Az.ManagementPartner module.

    Install-Module -Name Az.ManagementPartner -Repository PSGallery -Force
    

Next

We’ll focus on standard user and guest IDs, including using the Portal once you have logged in as a user and switched to the customer’s directory. This is all covered in the next page.

After that we will move through a set of scenarios for service principals and managed identities.

Source: https://www.azurecitadel.com/pal/reference/
Published: 14 Sep 2026
Printed:
Understanding PAL Quick reference page User and guest IDs