Skip to content

CIPP Setup ​

CIPP (CyberDrain Improved Partner Portal) is an open-source Microsoft 365 management platform for MSPs. Once connected, Junto can manage users, reset passwords, configure MFA, manage mailboxes, monitor security alerts, handle devices, and much more across your M365 tenants, all through the single CIPP connection you already have.

CIPP or Microsoft 365 Direct? ​

Junto can reach your clients' Microsoft 365 tenants two ways, and the agent's capabilities are the same on both paths:

  • CIPP -- One connection covers every tenant CIPP manages. Recommended if you run CIPP, because you avoid completing a separate Microsoft OAuth consent for every client tenant and adding a Junto enterprise app to each one.
  • Microsoft 365 direct -- Junto connects to each tenant individually through Microsoft Graph, with a Global Administrator consenting per tenant. Junto does not have its own partner-level (GDAP) access, so this is done tenant by tenant.

Which to choose:

Your situationRecommendation
You run CIPP and it is actively used and maintainedCIPP. One connection, no per-tenant consent.
Your CIPP instance is neglected, self-hosted on under-sized resources, or only used occasionallyMicrosoft 365 direct. It will be more reliable than a struggling CIPP instance.
You don't run CIPPMicrosoft 365 direct.

If both are connected for a company, the agent uses CIPP by default rather than the direct Microsoft tools.

TIP

The trickiest part of CIPP setup is getting the API credentials out of CIPP, and it varies by CIPP version. If you'd like help, this is a good one to do on a call with Junto support.

Prerequisites ​

  • A CIPP instance you can sign in to as an admin. Hosted CIPP works without extra setup. Self-hosted deployments on versions before 7.1 must first assign the Contributor role to the CIPP Function App in the Azure portal; see the CIPP-API documentation.
  • Admin or Owner role in Junto.

Step 1: Create an API Client in CIPP ​

CIPP creates the app registration for you. Follow the CIPP-API documentation for your version; the current flow is:

  1. In CIPP, go to Integrations and select CIPP-API.
  2. Click Actions > Create New Client and give it a name such as Junto.
  3. Turn the client on. Leave Allowed IP Ranges empty, since Junto's requests come from Junto's cloud, not from your office network.
  4. Submit the form, and copy the Application (client) ID and the Application secret. The secret is shown once.
  5. Click Actions > Save to Azure so the Function App picks up the new client.

The page also shows the Tenant ID of the tenant where your CIPP service account lives and the API URL. Note both; you'll need the tenant ID in the next step.

Older CIPP versions

On CIPP versions without the CIPP-API integration page, you create the app registration yourself in Entra ID (Azure AD): create an app registration for Junto, add a client secret under Certificates & secrets, and copy the Application (client) ID, Directory (tenant) ID, and secret value. Then follow the CIPP docs for your version to authorize that app against the CIPP API.

Step 2: Configure in Junto ​

  1. In Junto, go to Settings > Integrations > CIPP.
  2. Click Add Configuration and fill in:
FieldValue
CIPP URLYour CIPP instance URL, for example https://your-cipp.azurewebsites.net. Use the instance URL, not the /api URL.
Azure AD Tenant IDThe tenant ID where your CIPP app registration lives (shown on the CIPP-API page). This is your MSP tenant, not a client's.
Application (Client) IDFrom Step 1.
Application SecretFrom Step 1. Encrypted on save.
ActiveTurn off to pause the integration without deleting it.
  1. Click Create.
  2. On the configuration card, click Test connection. Junto authenticates and lists the tenants CIPP manages.

Step 3: Map Companies to Tenants ​

  1. On the configuration card, click Tenant Mapping.
  2. In the Map Companies to CIPP Tenants dialog, for each Junto company, select its M365 tenant. Click Auto-map to match by name: exact matches are applied automatically, and close matches are shown as suggestions to confirm or dismiss.
  3. Save mappings.

Only mapped tenants are available to the agent.

Tenant Health ​

The Tenant health card on the CIPP settings page shows the state of each mapped tenant as CIPP sees it. Click refresh to re-check.

StatusMeaningWhat to do
HealthyCIPP can reach the tenant.Nothing.
DegradedA recent call to the tenant failed with a transient error.Informational. Refresh later; it usually clears on its own.
StaleThe health data needs a refresh.Click refresh.
BlockedA persistent authentication or consent failure. Tools for this tenant fail immediately until it's fixed.Re-run the consent for that tenant in CIPP (the CIPP-SAM / tenant onboarding wizard).
ExcludedThe tenant is excluded in CIPP.Remove the exclusion in CIPP, or unmap the company.
Not foundThe mapped tenant is no longer in CIPP's tenant list.The tenant was offboarded from CIPP or the mapping is wrong. Re-map the company.

Known Gotchas ​

  • Write actions are slow. CIPP write operations route through Azure and can take 30 to 120 seconds (offboarding is the slowest). The agent knows this and tells the technician the action is in progress before invoking it. This is normal.
  • Self-hosted performance. If your CIPP instance runs on under-sized resources, you'll see this latency compound and occasional timeouts. Partners in that position have moved to Microsoft 365 direct; hosted CIPP customers have generally been happy staying on CIPP.
  • Don't IP-restrict the API client. Junto's requests do not come from your network. If you set Allowed IP Ranges on the CIPP-API client, the connection will fail.
  • Save to Azure. After creating or changing the API client in CIPP, the change doesn't take effect until you click Actions > Save to Azure. The tenant ID shown on the page can also take 5 to 15 minutes to update.
  • The tenant ID is your tenant, not the client's. The Azure AD Tenant ID field is the tenant your CIPP service account and app registration live in. Client tenants are handled through mapping.
  • AD-synced users and groups. For tenants with Entra Connect, password resets and group membership changes have to be made in on-premises AD. The agent checks for this and will tell you rather than attempt the change.
  • Distribution lists. Microsoft Graph cannot modify distribution list membership. When both paths are connected, the agent uses CIPP's offboarding tool for bulk group removal because it handles all group types through Exchange.

What the Agent Can Do ​

User Management ​

ToolDescriptionRisk LevelApproval
List UsersList all M365 users with UPN, display name, status, and licensesLowNone
Get User DetailsView detailed information about a specific userLowNone
Add UserCreate a new M365 user accountHighAlways
Edit UserUpdate user properties (name, job title, department, phone, address)MediumOnce
Disable UserDisable a user accountHighAlways
Enable UserRe-enable a previously disabled user accountMediumOnce
Remove UserDelete an M365 user accountHighAlways
Reset PasswordReset a user's passwordHighAlways
Offboard UserFull offboarding: disable sign-in, reset password, revoke sessions, remove groups and licensesHighAlways
Dismiss Risky UserDismiss risk flag from Azure AD Identity ProtectionMediumOnce

MFA & Authentication ​

ToolDescriptionRisk LevelApproval
List MFA StatusView MFA registration status and Conditional Access coverage for all usersLowNone
Reset MFARe-require MFA registration for a userHighAlways
Set Per-User MFASet per-user MFA state (enabled, enforced, or disabled)HighAlways
Revoke SessionsRevoke all active sign-in sessions for a userHighAlways

Mailbox & Exchange ​

ToolDescriptionRisk LevelApproval
List MailboxesList all Exchange mailboxes for the tenantLowNone
Get Mailbox DetailsView detailed mailbox informationLowNone
Convert MailboxConvert between shared and regular mailbox typesMediumOnce
Enable ArchiveEnable the online archive mailbox for a userMediumOnce
Set Email ForwardingConfigure email forwarding for a mailboxMediumOnce
Set Out of OfficeEnable or disable out-of-office auto-reply with custom messageMediumOnce
List Mailbox RulesList all inbox rules across the tenantLowNone
Get Shared Mailbox StatsView statistics for shared mailboxes (size, item count, last logon)LowNone
Get Mailbox Client AccessView client access settings (OWA, ActiveSync, IMAP, POP)LowNone
List ContactsList Exchange mail contacts for the tenantLowNone
Trace MessagesTrace email messages to track delivery statusLowNone
List Shared Mailboxes with Sign-InIdentify shared mailboxes with sign-in enabled (security risk)LowNone
List Deleted ItemsList recently deleted M365 objects that can be restoredLowNone

Email Security ​

ToolDescriptionRisk LevelApproval
List Blocked SendersView tenant allow/block list entriesLowNone
Block SenderAdd a sender or domain to the tenant block listMediumOnce
Unblock SenderRemove a sender or domain from the block listMediumOnce

Security Monitoring ​

ToolDescriptionRisk LevelApproval
List Security AlertsView Microsoft Defender security alertsLowNone
Update Security AlertUpdate the status or assignment of a security alertMediumOnce
List Security IncidentsView Microsoft Defender security incidentsLowNone
Update Security IncidentUpdate the status or assignment of a security incidentMediumOnce
List Audit LogsView M365 audit logs (admin and user activity)LowNone
List Defender StatusView Defender protection status per deviceLowNone

Sign-In & Activity Monitoring ​

ToolDescriptionRisk LevelApproval
List Sign-InsView recent sign-in events with optional filtering for failed sign-insLowNone
Get AD Connect StatusCheck Azure AD Connect synchronization statusLowNone
List Inactive AccountsList accounts inactive for 6+ monthsLowNone

Device Management ​

ToolDescriptionRisk LevelApproval
List DevicesList Intune-managed devices with name, OS, compliance, and user infoLowNone
Get BitLocker KeyRetrieve the BitLocker recovery key for a deviceHighAlways
Sync DeviceTrigger an Intune sync to pull latest policiesMediumOnce
Reboot DeviceRemotely reboot a managed deviceMediumOnce
Retire DeviceRetire a device from Intune management (removes company data)HighAlways
Wipe DeviceFactory reset a device (erases all data -- cannot be undone)HighAlways
List Autopilot DevicesList Windows Autopilot enrolled devicesLowNone

Groups & Teams ​

ToolDescriptionRisk LevelApproval
List GroupsList all M365 groups (security, distribution, M365, mail-enabled)LowNone
Get Group MembersList all members of a groupLowNone
Get Group OwnersList all owners of a groupLowNone
Add GroupCreate a new M365 groupMediumOnce
Edit GroupUpdate group properties (name, description, visibility)MediumOnce
Edit Group MembersAdd or remove members and ownersMediumOnce
Delete GroupDelete an M365 group (permanently removes group and content)HighAlways
Hide Group from GALHide or unhide a group from the Global Address ListMediumOnce

Licensing & Tenant Admin ​

ToolDescriptionRisk LevelApproval
List LicensesView all M365 license subscriptions with usage countsLowNone
List TenantsList all managed tenants from CIPPLowNone
List DomainsList all domains registered in the M365 tenantLowNone
List RolesList Azure AD directory rolesLowNone
List Conditional Access PoliciesView all Conditional Access policiesLowNone
Add CA ExclusionAdd a user exclusion to a Conditional Access policyHighAlways
List Named LocationsView named locations used in Conditional Access policiesLowNone
List OAuth AppsList OAuth/enterprise applications registered in the tenantLowNone
List Service HealthCheck M365 service health and availability statusLowNone

Teams & SharePoint ​

ToolDescriptionRisk LevelApproval
List TeamsList all Microsoft TeamsLowNone
List Teams ActivityView Teams user activity (meetings, calls, chat counts)LowNone
List SharePoint SitesList SharePoint sites or OneDrive accounts with usage statisticsLowNone
Provision OneDrivePre-provision OneDrive for a user before their first loginMediumOnce

High-impact actions like user deletion, device wipes, and password resets always require explicit technician approval.

Troubleshooting ​

  • Connection fails -- Check the CIPP URL (instance URL, no /api), the Application ID and Secret, and that the Tenant ID is your MSP tenant. Confirm the API client is enabled in CIPP, has no IP restrictions, and that you clicked Save to Azure. On self-hosted CIPP before 7.1, confirm the Function App has the Contributor role.
  • No tenants listed -- Confirm your CIPP instance is configured with access to the expected M365 tenants, and that they aren't excluded in CIPP.
  • Actions time out or feel slow -- Expected for writes (30 to 120 seconds). If reads are also slow, your CIPP instance may be under-resourced; see CIPP or Microsoft 365 Direct?.
  • A tenant shows Blocked -- Re-consent the tenant in CIPP. See Tenant Health.
  • User not found -- Check that the company mapping is correct for the target tenant.
  • Permission denied on action -- Some actions require specific Azure AD permissions. Verify the app registration has the necessary API permissions granted.
  • Device wipe or retire fails -- Ensure the device is enrolled in Intune and the app registration has device management permissions.