Overview
The Microsoft 365 integration uses a multi-tenant app registration in your MSP’s partner tenant to manage customer tenants via GDAP. Once connected, the agent can perform user lifecycle operations, password resets, security checks, group management, and Exchange mailbox operations.All operations respect your configured tool policies. Write operations (password reset, user creation, group changes) require approval by default.
Phase 1: Configure the MSP’s Partner Tenant
These steps are performed once in the MSP’s own Entra tenant.1. Create an App Registration
- Sign in to entra.microsoft.com with your partner tenant admin account
- Navigate to Applications → App registrations → + New registration
- Fill in:
- Name — e.g.
Rallied Integration(this display name appears in role pickers across all customer tenants — make it recognizable) - Supported account types — select “Accounts in any organizational directory (Multitenant)”
- Redirect URI — leave blank
- Name — e.g.
- Click Register
2. Generate a Client Secret
- In the app registration, go to Certificates & secrets → + New client secret
- Set a description (e.g.
Rallied production) and expiration (24 months recommended) - Click Add
3. Add API Permissions
Navigate to API permissions → + Add a permission and add all of the following as Application permissions: Microsoft Graph (under Microsoft APIs → Microsoft Graph):| Permission | Purpose |
|---|---|
User.ReadWrite.All | User management, password resets |
Group.ReadWrite.All | Entra group management |
Directory.Read.All | Read licenses, SKUs, organization info |
UserAuthenticationMethod.Read.All | MFA status checks |
IdentityRiskyUser.Read.All | Risky user detection |
| Permission | Purpose |
|---|---|
Exchange.ManageAsApp | Distribution groups, shared mailboxes, mailbox permissions |
4. Grant Admin Consent
Still on the API permissions page:- Click Grant admin consent for [your organization] at the top
- Confirm in the dialog
- Verify the Status column shows a green checkmark (“Granted”) for every permission
Granting consent requires Global Administrator or Privileged Role Administrator in the partner tenant. Cloud Application Administrator is not sufficient for Microsoft Graph application permissions.
5. Add to Admin Agents Group (Partner Center)
- Sign in to partner.microsoft.com
- Navigate to Settings → Account settings → User management
- Select the Admin Agents security group
- Click + Add member (or “Assign to role” depending on UI version)
- Search for the app’s service principal by display name (e.g.
Rallied Integration) - Add it
This step enables the app to act on behalf of GDAP-delegated customer tenants via Partner Center.
Phase 2: Connect in Rallied
- In the Rallied dashboard, go to the MSP’s page → Integrations → Microsoft 365
- Click Connect
- Enter:
- Application (Client) ID — from Phase 1, Step 1
- Client Secret — from Phase 1, Step 2
- Partner Tenant ID — from Phase 1, Step 1
- Click Submit
Phase 3: Onboard Customer Tenants

Who can perform these steps
- A Global Administrator (or Privileged Role Administrator) of the customer tenant, OR
- The MSP acting via GDAP, if the relationship includes Global Administrator or Privileged Role Administrator
Cloud Application Administrator and Application Administrator are not sufficient — Microsoft restricts consent for Graph application permissions to Global Admin or PRA (source).
Step 1: Sync from Microsoft
Click Sync in the Companies tab to discover all customer tenants in your GDAP relationships. New tenants appear in the table with status Pending.Step 2: Grant Admin Consent
For each tenant where Consent shows Pending:- Click Grant admin consent on that row
- Sign in as a Global Administrator (or PRA) of the customer tenant — or use GDAP if your relationship includes those roles
- Approve the permissions in the Microsoft consent dialog
Step 3: Assign the Exchange Administrator Role
For each tenant where Exchange shows Pending:- Click Assign Exchange Admin role on that row (opens Entra for that tenant)
- In Entra, go to Identity → Roles & admins
- Click the Exchange Administrator role
- Click Add assignment and add the Rallied app’s service principal
This step is only required if you want the agent to manage distribution groups, shared mailboxes, and mailbox permissions. Graph-only operations (user management, groups, password reset) work without it.
Step 4: Wait for Propagation
Microsoft caches role permissions for 30 minutes to 2 hours. Tools may return 403 during this window even when the setup is correct.Step 5: Re-verify
Click Re-verify on the row to refresh status. When both badges turn green, the tenant is ready — confirm by asking the agent to list users or distribution groups for that company.Done! The tenant is fully onboarded. The agent can now manage users, groups, passwords, and mailboxes for this customer.
Phase 4 (optional): Connect CIPP
If your MSP already runs CIPP, connecting it to Rallied is the fastest way to get every customer tenant ready. You’ll save two big chunks of work:- Grant admin consent across all your tenants at once. No more clicking Grant admin consent on each row in Phase 3. Per-row consent still works for any tenant CIPP can’t reach.
- Use Exchange tools without assigning the Exchange Administrator role per tenant. The agent picks up distribution groups and shared mailboxes through CIPP automatically, so you can skip Phase 3, Step 3 for those tenants. They show Exchange: working (cipp) on the Companies tab.
Step 1: Get credentials from CIPP
In your CIPP instance, go to Application Settings → API Integration → + Add Application. Name it something likeRallied and give it the admin role.
CIPP gives you four values to copy:
- CIPP base URL — where your CIPP UI lives (e.g.
https://cipp-xxxxx.azurestaticapps.net, or your custom domain) - Tenant ID — your partner tenant. Find it in Entra ID → Overview if CIPP doesn’t display it.
- Application (Client) ID — shown in CIPP’s API Integration row
- Application Secret — shown by CIPP once, right after you create the integration
Step 2: Paste them into Rallied
On the Microsoft 365 integration page, find the CIPP integration section, click Connect, paste in all four values, and click Connect again. Rallied checks the credentials with CIPP before saving — if anything’s wrong, you’ll see an inline error.Step 3: Refresh your tenants
For any customer tenant where you haven’t manually assigned the Exchange Administrator role, click Re-verify on the row in the Companies tab. The Exchange badge flips to working (cipp) and the agent can now use distribution groups and shared mailboxes for that tenant — no further setup needed.Editing or disconnecting
Edit any field from the same section. Leave Application Secret blank to keep the existing one; type a new value to rotate it. To disconnect, click Disconnect. Bulk consent goes away and tenants that were using CIPP for Exchange drop back to pending — you’ll need to assign the Exchange Administrator role to them manually (Phase 3, Step 3) if you still want Exchange tools to work there. Everything else — the user, password, and group management features — keeps working exactly as before.Required Permissions Summary
| Phase | Who | Required Role |
|---|---|---|
| 1.1–1.3 — App registration & permissions | Partner tenant admin | Application Developer (minimum), Application Administrator, or Global Administrator |
| 1.4 — Grant consent in partner tenant | Partner tenant admin | Global Administrator or Privileged Role Administrator |
| 1.5 — Partner Center Admin Agents | Partner Center admin | Partner Center admin access |
| 2 — Connect in Rallied | MSP admin in Rallied | Rallied MSP integration access |
| 3.2 — Customer admin consent | Customer admin or MSP via GDAP | Global Administrator of the customer tenant |
| 3.3 — Exchange role assignment | Customer admin or MSP via GDAP | Privileged Role Administrator of the customer tenant |
| 4 — Connect CIPP (optional) | MSP admin in Rallied + CIPP admin | Rallied MSP integration access + CIPP admin role on the API integration |
Troubleshooting
Cloud App Admin / App Admin can't grant consent
Cloud App Admin / App Admin can't grant consent
When the app declares Microsoft Graph application permissions, only Global Administrator or Privileged Role Administrator can grant consent — Cloud Application Administrator and Application Administrator are insufficient.
Role assignments don't propagate between tenants
Role assignments don't propagate between tenants
Assigning the Exchange Administrator role in the partner tenant does not grant that role in customer tenants. Each customer tenant requires its own assignment.
GDAP template missing required roles
GDAP template missing required roles
To perform consent + role assignment via GDAP (without a customer admin), the GDAP relationship must include Global Administrator or Privileged Role Administrator. Verify your GDAP template before attempting.
Tools returning 403 after setup
Tools returning 403 after setup
Microsoft caches role permissions for 30 minutes to 2 hours after assignment. Wait and re-verify — this is expected behavior.
App not appearing in role assignment picker
App not appearing in role assignment picker
The display name set during app registration (Phase 1, Step 1) is what appears in role pickers across all tenants. If you can’t find it, search by the Application (client) ID instead.
CIPP: 'Invalid client secret' when connecting
CIPP: 'Invalid client secret' when connecting
The secret CIPP gave you has likely expired or been rotated. Generate a fresh one in Entra ID → App registrations → [your CIPP API app] → Certificates & secrets, paste it into the CIPP integration section, and click Save changes.
CIPP: 'Grant all pending via CIPP' button is missing
CIPP: 'Grant all pending via CIPP' button is missing
CIPP: tenant still shows Exchange pending after Re-verify
CIPP: tenant still shows Exchange pending after Re-verify
CIPP itself needs to be able to manage that tenant. Check that the tenant appears in CIPP’s Tenants list and is healthy. If CIPP can’t manage it either, assign the Exchange Administrator role to the Rallied app directly (Phase 3, Step 3).