FAQs
What is the difference between EA and MCA billing accounts?
What is the difference between EA and MCA billing accounts?
- Enterprise Agreement (EA): A contract between your organization and Microsoft for large-scale Azure usage. EA billing accounts use numeric enrollment numbers (e.g.,
12345678). - Microsoft Customer Agreement (MCA): A newer billing model available through Microsoft sales representatives or the Azure portal. MCA billing accounts use GUID-based IDs (e.g.,
5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_2019-05-31).
What is a Management Group?
What is a Management Group?
A Management Group is a container in Azure that helps you manage access, policies, and compliance across multiple subscriptions. All subscriptions within a management group automatically inherit the conditions applied to the management group, including RBAC role assignments.nOps assigns roles at the management group scope so that all subscriptions underneath are automatically covered.
Why does nOps require admin consent?
Why does nOps require admin consent?
nOps uses a multi-tenant Azure application. When you grant admin consent, Microsoft creates a service principal in your Azure tenant. This service principal is the identity that nOps uses to access your Azure resources. No credentials are stored — the service principal is managed entirely by Azure AD.
Can I use the root management group?
Can I use the root management group?
Yes. If you want nOps to have visibility across all subscriptions in your tenant, use your Tenant ID as the Management Group ID. The root management group in Azure always matches the Tenant ID.
Overview
Integrate your Microsoft Azure environment with the nOps platform for comprehensive cost tracking, optimization recommendations, and commitment management. This integration uses Azure’s native RBAC system and FOCUS cost exports to provide full visibility into your Azure spending. nOps supports two onboarding tiers:- Savings Analysis — Read-only cost visibility, resource inventory, and optimization recommendations
- Commitment Management — Automated purchasing and management of Azure Reservations and Savings Plans (requires Savings Analysis first)
What You’ll Need
- Azure AD Global Administrator or Privileged Role Administrator access — to grant admin consent for the nOps application
- Azure RBAC Owner or User Access Administrator role on the target management group or subscription — to assign roles to nOps (via Portal or Terraform)
- MCA only — Savings Analysis: Billing Account Owner on the MCA billing account — to assign the Billing Account Reader role to the nOps service principal. This is a billing-scope role, separate from Entra ID and Azure RBAC. Find who holds this role in Cost Management + Billing → select billing account → Access control (IAM).
- MCA only — Commitment Management: Billing Profile Owner on the relevant MCA billing profile — to assign the Billing Profile Contributor role to the nOps service principal. This is a billing-scope role, separate from Entra ID and Azure RBAC. Find who holds this role in Cost Management + Billing → select billing account → Billing profiles → select profile → Access control (IAM).
- Your Management Group ID — determines the scope of nOps visibility
- An Azure Subscription — nOps will create a storage account and FOCUS cost export in this subscription
- Knowledge of your Billing Account Type — Enterprise Agreement (EA) or Microsoft Customer Agreement (MCA)
- A dedicated Azure subscription for nOps reservation and savings plan purchases
Enabling Azure RBAC Access for Global Admins
Azure has two separate permission systems that are commonly confused:
The nOps setup requires Azure RBAC permissions (Owner or User Access Administrator) to assign roles to the nOps service principal. If you are a Global Administrator without Azure RBAC roles, you’ll need to enable elevated access.
1
Enable Elevated Access
- Go to Microsoft Entra ID > Properties in the Azure Portal
- Find “Access management for Azure resources”
- Toggle to Yes and click Save
User Access Administrator role at the root scope, which cascades to all management groups and subscriptions.2
Sign Out and Sign Back In
You must sign out of the Azure Portal and sign back in to pick up the new
User Access Administrator role:- Click your profile picture in the top-right corner of the Azure Portal
- Click Sign out
- Navigate back to portal.azure.com and sign in again
Azure uses Continuous Access Evaluation (CAE) which may invalidate cached tokens when permissions change. After signing back in, if you still see permission errors, wait 2-3 minutes for the role to fully propagate.
3
Assign Yourself Owner on the Subscription
The
User Access Administrator role only allows managing role assignments. You also need Owner to register resource providers and manage resources:- Go to Subscriptions in the Azure Portal
- Select the subscription where you’ll run the nOps setup
- Click Access control (IAM) in the left menu
- Click Add > Add role assignment
- In the Role tab, search for and select Owner
- In the Members tab, click + Select members
- Search for your email address and select your user account
- Click Select, then Review + assign
4
Verify Access
To confirm you now have the necessary permissions:
- Go to the subscription you just assigned Owner to
- Click Access control (IAM) in the left menu
- Click View my access (top button)
- You should see both User Access Administrator (inherited from root) and Owner (subscription-level) listed
The first time you access Management Groups or run certain operations, Azure may automatically register resource providers like
Microsoft.Management. This one-time operation can take 30-60 seconds.For more details, see Microsoft’s documentation on Elevating access to manage all Azure subscriptions.
1. Understanding Billing Account Types
Your billing account type determines how nOps configures billing access. You must select the correct type during onboarding. Follow only the path that matches your agreement — EA and MCA are two separate setup paths.Supported Billing Account Types: nOps supports Enterprise Agreement (EA) and Microsoft Customer Agreement (MCA) billing accounts only. If you have a Pay-As-You-Go (MOSP) subscription, please contact your Microsoft account representative to upgrade to an EA or MCA billing account before proceeding.
Path A: If you have an Enterprise Agreement (EA)
Use this path if your organization has a direct Enterprise Agreement with Microsoft. What you need:- EA Enrollment Number — A numeric ID (e.g.,
12345678) that identifies your EA billing account. You will enter this in the nOps wizard in Get Started (and can edit it later in Configure). - Where to find it: Go to Cost Management + Billing in the Azure Portal, select your EA billing account, and copy the enrollment number shown at the top.
- Billing hierarchy: Enrollment → Departments → Accounts → Subscriptions. nOps uses the enrollment (billing account) scope for role assignment and FOCUS exports.
- How to confirm: In Cost Management + Billing, open your billing account → Settings > Properties. The Agreement type field must show “Enterprise Agreement”.
Path B: If you have a Microsoft Customer Agreement (MCA)
Use this path if your organization has a Microsoft Customer Agreement (the newer billing model, often via Microsoft sales or the Azure portal). What you need:- Billing Account — Your MCA billing account (GUID-style ID). You do not need to enter a numeric enrollment number; the nOps wizard will use your billing account and profiles.
- Where to find it: Go to Cost Management + Billing in the Azure Portal and select your Microsoft Customer Agreement billing account. For Commitment Management, you will assign roles at the Billing Profile level.
- Billing hierarchy: Billing Account → Billing Profiles → Invoice Sections → Subscriptions.
- How to confirm: In Cost Management + Billing, open your billing account → Settings > Properties. The Agreement type field must show “Microsoft Customer Agreement”.
Quick reference: EA vs MCA
2. Verifying You Do NOT Have a CSP Subscription
A Cloud Solution Provider (CSP) is a Microsoft partner who resells Azure services. CSP subscriptions are billed through the partner, not directly by Microsoft. This creates a different billing structure that nOps does not currently support.Recommended: run the nOps onboarding qualifier
The fastest way to confirm eligibility is the nOps onboarding qualifier, a read-only script that groups your subscriptions by billing account, classifies each as EA / MCA / Reseller / CSP, shows month-to-date spend, and prints an overall verdict. What it does, and does not do- It is completely read-only. It does not create, modify, deploy, or configure anything in your environment, and it does not grant nOps any access.
- It reads only billing metadata (the billing account, profile, and agreement type each subscription belongs to) and month-to-date spend per subscription.
- Nothing is transmitted anywhere. The script prints its results to your screen, and you decide what to share.
For spend figures, the account you sign in with needs Cost Management Reader (or Reader) at subscription scope. Without it, those subscriptions show
n/a instead of a number, and the EA / MCA / CSP classification still works.jq installed and is signed in as you, so there is nothing to install and no separate login.
1
Sign in, then open Cloud Shell
Sign in to the Azure portal with an account that can view your billing (ideally whoever manages billing for your organization), confirm your organization’s directory is selected (top right), then open Cloud Shell with the
>_ icon in the top toolbar. Choose Bash if prompted.2
Add the script
Upload
nops-onboarding-qualifier.sh (Manage files → Upload), or copy the script below and paste it into Cloud Shell.3
Run it
Run
bash nops-onboarding-qualifier.sh. It finishes in a few seconds. Add --csv results.csv to also write a CSV, --last-month for the previous month’s spend, or --help for all options.nops-onboarding-qualifier.sh (click to expand)
nops-onboarding-qualifier.sh (click to expand)
Each billing account is also flagged ✓ onboard, ✗ not supported, or ⚠ review in the output.
If you are working with an nOps contact, you can share the output (or the CSV written by
--csv results.csv) so they can confirm your billing scope. The easiest way is to copy everything the script printed, top to bottom, and paste it into your reply.
Prefer not to run a script? You can check in the Azure Portal instead (below).
How to Check for CSP Subscriptions
The easiest way to verify you don’t have CSP subscriptions is through the Azure Marketplace eligibility checker:1
Go to Private Offer Management
2
Click Check Eligibility
Click the Check Eligibility button on the right-hand side
3
Review the Results
Look for the eligibility check results. You should see:
- ✅ Green checkmark: “No Cloud Solution Provider (CSP) subscription found” — You can use nOps
- ❌ Red X: “Cloud Solution Provider (CSP) subscription found” — You cannot use nOps
If you find that you have CSP subscriptions, please contact your CSP reseller/partner for cost optimization solutions. You may need to migrate to a direct EA or MCA agreement with Microsoft if you want to use nOps in the future.
3. Finding Your Management Group ID
nOps assigns RBAC roles at the management group scope to provide visibility across all subscriptions in that group.- Go to Management Groups in the Azure Portal.
- If you want nOps to see all subscriptions, use the Tenant Root Group — its ID matches your Tenant ID.
- If you want to limit nOps to a subset of subscriptions, find the appropriate management group and note its ID.
4. Preparing a Subscription for FOCUS Exports
You will need an Azure subscription where nOps can create resources for cost data exports. Choose the subscription with the most spend.The setup will create a resource group, storage account, and FOCUS export in this subscription. These resources incur minimal cost (storage fees only).
Required Resource Providers
For FOCUS Exports (on the export subscription)
These must be registered on the subscription where the storage account will be created:- Portal
- CLI
- Go to Subscriptions > select your export subscription > Settings > Resource providers
- Search for each provider above and click Register
- Wait for all three to show Registered (1-2 minutes)
Most subscriptions already have
Microsoft.Storage and Microsoft.CostManagement registered. Microsoft.CostManagementExports is the one most likely to require manual registration, especially on newer subscriptions. The Terraform setup method handles this automatically.For Lighthouse (on the deployment subscription)
Lighthouse requiresMicrosoft.ManagedServices to be registered on the subscription where you deploy:
- Portal
- CLI
- Go to Subscriptions > select the subscription > Settings > Resource providers
- Search for
Microsoft.ManagedServices, click Register
Most subscriptions already have this registered. If it already shows “Registered”, no action is needed.
Storage Account Network Access
The FOCUS export storage account must allow public network access so that the nOps data ingestion service can read the exported cost data. If your organization enforces storage account firewalls via Azure Policy, you may need to whitelist the nOps IP addresses (44.246.45.84, 52.11.53.164, and 52.39.155.200) on the storage account after creation. The Terraform setup method detects this automatically and prompts you to add the IPs.
5. Understanding RBAC Roles for nOps
nOps requires specific Azure RBAC roles to operate. These roles are assigned at different scopes depending on the integration tier.Savings Analysis Roles (Read-Only)
The Owner role is granted exclusively on the storage account created by nOps for FOCUS exports (
nopsfocus<tenant-prefix>) — it does not grant Owner access to any other resources in your environment.582fc458-8989-419f-a480-75249bc5db7e | Read all reservations in the tenant |
| Tenant (Savings Plans) | Savings Plan Reader | d534ad90-4ac5-4815-a178-b2e47397baab | Read all savings plans in the tenant |
Billing Access Roles
Commitment Management Roles (Additional)
These roles are added on top of Savings Analysis roles when you upgrade to Commitment Management:6. Purchase Policies (Commitment Management Only)
If you plan to use Commitment Management for reservation and savings plan purchases, your billing account must have purchase policies enabled. Without these, only billing administrators can make purchases — users with the Reservations Purchaser RBAC role (including those delegated via Azure Lighthouse) will be blocked.For MCA, only the billing profile associated with the dedicated subscription needs these policies enabled. You do not need to change policies on other billing profiles.
Next Steps
Once you have your Management Group ID, know your billing account type, and have a subscription ready for FOCUS exports, you are ready to connect Azure to nOps. nOps offers two onboarding tiers. Start with Savings Analysis, then upgrade to Commitment Management when ready:Savings Analysis Setup
Read-only cost visibility, resource inventory, optimization recommendations, and daily FOCUS cost exports.
Commitment Management Setup
Automated purchasing and management of Azure Reservations and Savings Plans. Requires Savings Analysis first.