As an indirect Microsoft partner, you don’t automatically receive access to your customer’s Azure subscriptions through Partner Center.
However, you can still gain access by adding your partner tenant’s Admin Agent group (Or your GDAP security group) to their subscription. This allows you to manage it using your partner login, similar to delegated permissions in Microsoft Admin Center.
To use Sync 365’s automated Azure billing feature as an indirect provider, you must have access to your customers’ Azure subscriptions. Completing the steps below will enable automated billing to run correctly.
Get the AdminAgents (Or Security group used for GDAP) Object ID from your tenant (The MSP Tenant)
Log into your MSP tenant via https://portal.azure.com using an account with group admin privileges.
Go to Microsoft Entra> Groups.
Search for the group named "AdminAgents".
Copy the Object ID of that group — you’ll need this for the access script.
This Object ID allows us to grant your tenant access to customer subscriptions for billing automation.

There are 2 easy ways to give your partner tenant access to the customers azure subscription.
Choose one of these methods to complete
This powershell script requires Az.Resources, Az.Reservations and Az.Accounts. These will be installed if needed.
# Define required modules
$requiredModules = @("Az.Resources", "Az.Reservations", "Az.Accounts")
foreach ($module in $requiredModules) {
if (-not (Get-Module -ListAvailable -Name $module)) {
Write-Host "$module not found. Installing..."
try {
Install-Module -Name $module -Scope CurrentUser -Repository PSGallery -Force
Write-Host "$module installed successfully."
Import-Module $module -ErrorAction Stop
} catch {
Write-Error "Failed to install $module. Error: $_"
}
} else {
Write-Host "$module is already installed."
}
}
Write-Output "This script assigns 'Owner' role to your AdminAgents group for all customer Azure CSP Subscriptions and Reservations."
Write-Output "Please log in with the tenant's Global Admin."
Connect-AzAccount
$partnerId = Read-Host -Prompt "Enter the objectId of your AdminAgents group"
$subscriptions = Get-AzSubscription | Where-Object { $_.State -eq "Enabled" }
Write-Output "Found $($subscriptions.Count) enabled subscriptions."
foreach ($sub in $subscriptions) {
$scope = "/subscriptions/$($sub.Id)"
New-AzRoleAssignment -ObjectId $partnerId -ObjectType ForeignGroup -RoleDefinitionName Owner -Scope $scope
Write-Output "Access granted on subscription: $($sub.Name)"
}
$reservations = Get-AzReservation
Write-Output "Found $($reservations.Count) reservations."
foreach ($res in $reservations) {
New-AzRoleAssignment -ObjectId $partnerId -ObjectType ForeignGroup -RoleDefinitionName Owner -Scope $res.Id
Write-Output "Access granted on reservation: $($res.DisplayName)"
}
Write-Output "`nDelegated permissions successfully added to all available subscriptions and reservations."
Pause

# Define required modules
$requiredModules = @("Az.Resources", "Az.Reservations", "Az.Accounts")
foreach ($module in $requiredModules) {
if (-not (Get-Module -ListAvailable -Name $module)) {
Write-Host "$module not found. Installing..."
try {
Install-Module -Name $module -Scope CurrentUser -Repository PSGallery -Force
Write-Host "$module installed successfully."
Import-Module $module -ErrorAction Stop
} catch {
Write-Error "Failed to install $module. Error: $_"
}
} else {
Write-Host "$module is already installed."
}
}
Write-Output "This script assigns 'Owner' role to your AdminAgents group for all customer Azure CSP Subscriptions and Reservations."
az login
az account show > $null 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Output "You must log in first using 'az login'."
exit 1
}
$partnerId = Read-Host -Prompt "Enter the objectId of your AdminAgents group"
$currentTenantId = (az account show --query tenantId -o tsv)
$subscriptions = az account list --query "[?state=='Enabled' && tenantId=='$currentTenantId'].{id:id, name:name}" -o json | ConvertFrom-Json
Write-Output "Found $($subscriptions.Count) enabled subscriptions."
foreach ($sub in $subscriptions) {
$scope = "/subscriptions/$($sub.id)"
az role assignment create `
--assignee-object-id $partnerId `
--assignee-principal-type ForeignGroup `
--role "Owner" `
--scope $scope | Out-Null
Write-Output "Access granted on subscription: $($sub.name)"
}
$reservations = Get-AzReservation
Write-Output "Found $($reservations.Count) reservations."
foreach ($res in $reservations) {
az role assignment create `
--assignee-object-id $partnerId `
--assignee-principal-type ForeignGroup `
--role "Owner" `
--scope $res.id | Out-Null
Write-Output "Access granted on reservation: $($res.name)"
}
Write-Output "`nDelegated permissions successfully added to all available subscriptions and reservations."
Pause