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.During setup, you give nOps the Reader role on a management group, so every subscription under it is covered, including subscriptions you add later.
Why does nOps require admin consent?
Why does nOps require admin consent?
nOps uses a multi-tenant Azure application called nOps.io. When you grant admin consent, Microsoft adds the nOps.io enterprise application (a service principal) to your Microsoft Entra ID tenant. This is the identity nOps uses to connect to Azure. You don’t give nOps any passwords or keys.Consent by itself gives nOps no access to your subscriptions, billing, or storage. nOps only gets access from the roles you assign during setup.
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
Setup needs three kinds of roles. Different people on your team often hold them.- Microsoft Entra ID: Global Administrator or Privileged Role Administrator — to grant admin consent for the nOps.io app
- Azure RBAC: Owner or User Access Administrator on the management group and on the export subscription — to assign roles to nOps.io. To create the export storage account, you also need Owner or Contributor on the export subscription
- Billing role (Savings Analysis):
- MCA (default): Billing account owner on the MCA billing account — to assign the Billing account reader role to nOps.io and create the FOCUS export. Find who holds this role in Cost Management + Billing → select billing account → Access control (IAM).
- MCA, billing profiles option: if your organization only gives access to specific billing profiles, you can connect those instead. You need a Billing profile owner on each profile — to assign the Billing profile reader role to nOps.io and create a FOCUS export on each profile. Find who holds this role in Cost Management + Billing → select billing account → Billing profiles → select profile → Access control (IAM).
- EA: Enterprise Administrator on the EA enrollment — to assign the EnrollmentReader role to nOps.io and create the FOCUS export. Microsoft only lets an Enterprise Administrator with write access assign EA billing roles; Enterprise Administrator (read only), Department Administrator, and Account Owner cannot. Microsoft only supports assigning EA billing roles to a service principal through the REST API, not the Azure Portal. Find who holds this role in Cost Management + Billing → select your EA billing account → Access control (IAM).
- Your Management Group ID — determines the scope of nOps visibility
- An Azure Subscription — to hold the storage account for the FOCUS cost export. You create these resources yourself during setup
- 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
- EA: Enterprise Administrator on the EA enrollment — to assign the EA Purchaser role to nOps.io
- MCA: Billing profile owner on the relevant MCA billing profile — to assign the Billing profile contributor role to nOps.io
Enabling Azure RBAC Access for Global Admins
Azure has three separate permission systems that are commonly confused:
The nOps setup requires Azure RBAC permissions (Owner or User Access Administrator) to assign roles to nOps.io. If you are a Global Administrator without Azure RBAC roles, you’ll need to enable elevated access. The steps below cover Azure RBAC only. For billing roles, see the warning above.
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. - Where to find it: Go to Cost Management + Billing in the Azure Portal, select your Enterprise Agreement billing account, then open Settings > Properties and copy the Billing account ID. For an EA, the billing account ID is your enrollment number.
- Billing hierarchy: Enrollment → Departments → Accounts → Subscriptions. nOps always connects at the enrollment (billing account) scope, for both the billing role and the FOCUS export. EA has no billing profile option.
- 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. By default, nOps connects at your billing account (recommended), which covers every billing profile in it.
- Billing profiles option: If your organization only gives access to specific billing profiles, you can connect those instead. You’ll enter your billing account ID and each billing profile ID in the nOps wizard, and you’ll need a Billing profile owner for each profile. Billing profiles you don’t add aren’t included in Savings Analysis.
- Where to find it: Go to Cost Management + Billing in the Azure Portal and select your Microsoft Customer Agreement billing account. The billing account ID is under Properties. For a billing profile ID, open Billing profiles → select the profile → Properties. 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
During setup, you give nOps the Reader role on a management group. This gives nOps 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. In the nOps wizard, the Use tenant root button fills it in for you.
- 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 to hold the storage account for the FOCUS cost export. Choose the subscription with the most spend.During setup, you create a resource group and a storage account in this subscription. The FOCUS export itself lives at your billing scope (billing account, enrollment, or billing profile) and writes its files to that storage account. nOps doesn’t create these resources. They cost only storage for the export files.
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.For Commitment Management Only: Lighthouse (on the dedicated subscription)
Savings Analysis doesn’t use Azure Lighthouse. If you set up Commitment Management, Lighthouse requiresMicrosoft.ManagedServices to be registered on the dedicated subscription where you deploy it:
- 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 nOps data ingestion service reads the exported cost data from outside Azure. If your organization enforces storage account firewalls via Azure Policy, allow the nOps IP addresses (44.246.45.84, 52.11.53.164, and 52.39.155.200) on the storage account after creation, and check “Allow Azure services on the trusted services list”.
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)
These two roles, plus one billing role below, are the complete list for Savings Analysis.
The Storage Blob Data Owner role is granted only on the storage account you create for the FOCUS export (
nopsfocus<tenant-prefix>) — it does not grant access to any other resources in your environment. Savings Analysis does not need the Azure RBAC Owner role on the storage account. Owner is a management-plane role and cannot read blob data, so it does not replace Storage Blob Data Owner.Billing Access Roles
Savings Analysis uses one of these billing roles:Commitment Management Roles (Additional)
These roles are added on top of Savings Analysis roles when you upgrade to Commitment Management. Savings Analysis doesn’t use any of them: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, have a subscription ready for FOCUS exports, and know who on your team holds each required role, 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.