Skip to content

Microsoft 365 Integration

Connect your Microsoft 365 tenant to automatically collect user accounts, license information, email security posture, MFA enrollment, and Teams/Exchange activity data.

Microsoft 365 provides critical evidence for identity management, email security, and collaboration controls:

  • User Accounts - Complete directory of all M365 users
  • Account Status - Active, disabled, guest users, mailbox status
  • User Details - Display name, email, department, job title
  • Account Creation - When created, last modified, last sign-in
  • License Assignment - Which licenses assigned per user
  • MFA Enrollment Status - Enabled, enforced, or disabled per user
  • MFA Methods - Phone, authenticator app, FIDO2 keys
  • MFA Coverage - Percentage of users with MFA enabled
  • Conditional Access - Policy enforcement, device compliance
  • Authentication Methods - Registered methods per user
  • License Types - E3, E5, Business Premium, etc.
  • License Counts - Total purchased vs. assigned
  • License Utilization - Unused licenses (cost optimization)
  • Per-User Licensing - Which users have which licenses
  • Subscription Status - Active, trial, expired
  • Email Protection - Exchange Online Protection (EOP) status
  • Advanced Threat Protection - Defender for Office 365 features
  • Mailbox Audit - Audit logging enabled/disabled per mailbox
  • Retention Policies - Email retention and archiving
  • Anti-Spam/Malware - Protection policies in place
  • DMARC/SPF/DKIM - Email authentication status (if PowerDMARC integrated)
  • Microsoft 365 Groups - Group membership, owners
  • Teams - Active teams, members, channels
  • Distribution Lists - Email groups and memberships
  • Security Groups - Access control groups
  • Enrolled Devices - Intune-managed devices
  • Device Compliance - Compliant vs. non-compliant devices
  • Device Types - Windows, iOS, Android, macOS
  • Device Policies - Conditional access policies applied
  • Exchange Email Analysis - Work extraction from sent emails
  • Teams Message Analysis - Work done via Teams conversations
  • Communication Patterns - Customer touchpoints, response times
  • Sentiment Analysis - Communication tone and quality

Microsoft 365 data automatically satisfies these compliance controls:

Compliance FrameworkControls SatisfiedEvidence Provided
CIS Controls v8.15.1, 5.2, 5.3, 5.4, 6.1, 6.2, 16.1, 16.11Account management, access control, MFA, email security
NIST CSF 2.0ID.AM-2, PR.AC-1, PR.AC-7, PR.DS-5, DE.CM-1Software inventory, identity management, authentication, malware protection, monitoring
CMMC Level 2AC.1.001, AC.2.007, IA.1.076, IA.2.078, SC.2.179Access control, MFA, account management, external connections
HIPAA Security Rule164.308(a)(3), 164.308(a)(4), 164.312(a)(1), 164.312(d)Access management, workforce clearance, authentication, email encryption
SOC 2CC6.1, CC6.2, CC6.6, CC6.7, CC7.2User access controls, authentication, MFA, system monitoring
PCI DSS v4.07.1, 8.3, 8.4, 8.5Access control, MFA, authentication management

Control Requirement:

“Require multi-factor authentication for all administrative access”

Microsoft 365 Evidence:

✅ MFA Enrollment: 94% of users (47 of 50 users)
✅ Last Sync: 1 hour ago
✅ MFA Details:
- Admins with MFA: 5 of 5 (100%)
- Standard Users with MFA: 42 of 45 (93.3%)
- Users Without MFA: 3 (flagged for remediation)
- MFA Methods: Authenticator App (40), Phone (7)
- Conditional Access: Enforced for admin roles
✅ Gap Identified: 3 users need MFA enrollment
Status: PARTIALLY SATISFIED (94% coverage, 100% for admins)
Recommendation: Enroll remaining 3 users in MFA
  1. Log in to Azure Portal (https://portal.azure.com)
  2. Navigate to Azure Active DirectoryApp registrations
  3. Click New registration
  4. Configure application:
    • Name: “LanternOps Integration”
    • Supported account types: “Accounts in this organizational directory only”
    • Redirect URI: Web → https://app.lanternops.com/integrations/microsoft/callback
  5. Click Register
  6. Copy Application (client) ID (you’ll need this)
  7. Copy Directory (tenant) ID (you’ll need this)
  1. In your app registration, navigate to Certificates & secrets
  2. Click New client secret
  3. Configure secret:
    • Description: “LanternOps Integration Secret”
    • Expires: 24 months (recommended)
  4. Click Add
  5. Copy secret value immediately (shown only once!)
  1. In your app registration, navigate to API permissions
  2. Click Add a permission
  3. Select Microsoft Graph
  4. Select Application permissions (not delegated)
  5. Add these permissions:

Required Permissions:

User.Read.All - Read user profiles
Group.Read.All - Read groups and memberships
Directory.Read.All - Read directory data
Organization.Read.All - Read organization info
AuditLog.Read.All - Read audit logs
Policy.Read.All - Read conditional access policies
UserAuthenticationMethod.Read.All - Read MFA methods
Mail.Read - Read mailboxes (for communication intelligence)
MailboxSettings.Read - Read mailbox settings
Calendars.Read - Read calendar (for communication intelligence)
Team.ReadBasic.All - Read Teams metadata
  1. Click Add permissions
  2. Click Grant admin consent for [Your Organization]
  3. Verify all permissions show green checkmark
  1. Log in to LanternOps
  2. Navigate to IntegrationsMicrosoft 365
  3. Click Configure Integration
  4. Enter credentials:
    • Name: “Primary M365 Tenant”
    • Tenant ID: [Paste from Step 1]
    • Client ID: [Paste from Step 1]
    • Client Secret: [Paste from Step 2]
  5. Click Save & Test Connection
  6. Click Authorize in OAuth popup
  7. Sign in with Global Administrator account
  8. Grant permissions when prompted
  9. Verify “Connection Successful” message

Default Settings (Recommended):

  • Sync Enabled: ON
  • Sync Frequency: Every 1 hour (M365 data changes frequently)
  • Sync Users: ON
  • Sync Groups: ON
  • Sync Devices: ON
  • Sync Licenses: ON
  • Communication Intelligence: ON (if enabled in your plan)

Advanced Options:

  • MFA Reporting: ON (track MFA enrollment)
  • License Optimization: ON (find unused licenses)
  • Guest User Tracking: ON (security visibility)

Click Save Settings

  1. Click Sync Now button
  2. First sync takes 20-40 minutes (imports all users, groups, devices, licenses)
  3. Monitor progress in ETL Health Dashboard (/platform/etl/)
  4. Verify data appears:
    • Navigate to IdentityUsers
    • Should see all M365 users listed
    • Check Licenses and MFA Status tabs

Granular Delegated Admin Privileges (GDAP) is supported for MSP partners.

  1. Establish GDAP Relationship in Partner Center
  2. Ensure GDAP includes these roles:
    • Directory Readers (minimum)
    • Global Reader (recommended)
    • Reports Reader (for analytics)
  3. In LanternOps, configure integration with Customer Tenant ID
  4. Use MSP application credentials (not customer credentials)

Benefits:

  • ✅ Least-privilege access (more secure than DAP)
  • ✅ Time-limited delegated access
  • ✅ Audit trail of partner access
  • ✅ Granular role assignment

For MSPs managing multiple M365 tenants:

Setup Multiple Integrations:

  1. Navigate to IntegrationsMicrosoft 365
  2. Click Add Another Tenant
  3. Enter tenant-specific credentials (Tenant ID, Client ID, Secret)
  4. Map to specific LanternOps customer

Auto-Mapping:

  • LanternOps matches M365 tenant domain to customer domain
  • Example: acme.onmicrosoft.com → Customer “Acme Corporation”

Manual Mapping:

  • If auto-match fails, manually select customer from dropdown
  • Saved for future syncs

Default Frequency: Every 1 hour

Why Hourly?

  • User changes happen frequently (new hires, terminations)
  • Security events need fast detection (MFA disabled, new admin)
  • License changes require quick updates
  • Email security posture can shift rapidly

What Gets Synced Each Cycle:

Data TypeSync MethodRecords Updated
UsersIncremental (delta query)Only new/changed users
GroupsIncremental (delta query)Only new/changed groups
DevicesIncrementalOnly new/changed devices
LicensesFullAll subscriptions (lightweight)
MFA StatusIncrementalOnly changed enrollment status
MailboxesIncremental (delta query)Only new/modified mailboxes
Teams MessagesIncremental (delta query)Last 7 days only
Exchange EmailsIncremental (delta query)Last 7 days only

First Sync vs. Subsequent Syncs:

  • First Sync: 20-40 minutes (full tenant import)
  • Incremental Sync: 3-8 minutes (delta changes only)

Delta Query Optimization: Microsoft Graph delta queries ensure we only fetch changed data, reducing API calls by 90%+

Advanced feature for service delivery tracking.

Analyzes Exchange emails and Teams messages to automatically detect:

Work Extraction:

  • Customer support provided via email/Teams
  • Project work discussed in communications
  • Incidents handled through messaging
  • Time spent on customer communications

Pattern Detection:

  • Customer touchpoints per week
  • Response time to customer requests
  • Communication volume trends
  • Escalation patterns

Sentiment Analysis:

  • Positive/negative communication tone
  • Customer satisfaction signals
  • Relationship health indicators

Prerequisites:

  1. Microsoft 365 integration configured
  2. Communication Intelligence feature enabled in LanternOps plan
  3. Additional API permissions granted (see Step 3 above):
    • Mail.Read
    • Calendars.Read
    • Team.ReadBasic.All

Configuration:

  1. Navigate to Communication IntelligenceSettings
  2. Enable Exchange Email Harvesting
  3. Enable Teams Message Harvesting
  4. Set Harvest Frequency: Every 15 minutes (for real-time analysis)
  5. Configure Target Accounts: Select user mailboxes to monitor (e.g., support@, team leads)

Privacy Note: Only analyzes emails/messages sent to/from customers. Internal communications are excluded.

Webhook Support:

  • Microsoft Graph change notifications provide <5 minute latency
  • New customer emails trigger immediate analysis
  • Critical messages prioritized for AI analysis

Use Cases:

  • Prove customer support delivery in QBRs
  • Track work done that wasn’t ticketed (hidden revenue)
  • Identify customers needing attention (low communication = risk)
  • Demonstrate response time SLA compliance

Navigate to ETL Health Dashboard (/platform/etl/):

Healthy Sync Indicators:

  • 🟢 Status: Healthy
  • Failure Rate: <4%
  • ⏱️ Last Sync: Within last 1 hour
  • 📊 Records Synced: >0 users per sync

Cause: Invalid credentials or expired client secret

Solution:

  1. Verify Tenant ID, Client ID, and Client Secret are correct
  2. Check if Client Secret expired (Azure Portal → App Registration → Certificates & secrets)
  3. If expired, generate new secret and update in LanternOps
  4. Ensure Admin Consent granted for API permissions
  5. Try Re-authorize button in LanternOps

Cause: Missing API permissions or admin consent not granted

Solution:

  1. Navigate to Azure PortalApp RegistrationsAPI Permissions
  2. Verify all required permissions are listed (see Step 3 above)
  3. Click Grant admin consent button
  4. Verify all permissions show green checkmark (not gray)
  5. Wait 5 minutes for permissions to propagate
  6. Try sync again

Cause: Permissions issue or wrong tenant ID

Solution:

  1. Verify Tenant ID is correct (Azure Portal → Azure AD → Overview)
  2. Check API permission User.Read.All is granted
  3. Ensure Admin Consent granted (not just “Granted” but “Granted for [Org]”)
  4. Test with Microsoft Graph Explorer (https://developer.microsoft.com/graph/graph-explorer):
    • Sign in with admin account
    • Try query: GET https://graph.microsoft.com/v1.0/users
    • Should return user list
  5. If Graph Explorer works but LanternOps doesn’t, contact support

Cause: Client secret expired or app registration deleted

Solution:

  1. Check Azure PortalApp Registrations → verify app still exists
  2. Check Certificates & secrets → verify secret hasn’t expired
  3. If expired, generate new secret and update in LanternOps
  4. Click Re-authorize to refresh tokens

Cause: Too many API requests to Microsoft Graph (rare with delta queries)

Solution:

  • Automatic recovery: ETL system retries after 15 minutes
  • If persistent: Reduce sync frequency to every 2 hours (not recommended)
  • Best practice: Keep hourly sync but reduce scope (disable Teams/Exchange if not needed)

After first sync, verify:

  1. User Count Matches

    • Azure AD: Count active users
    • LanternOps: Navigate to IdentityUsers
    • Counts should match exactly
  2. MFA Status Accurate

    • Select several users in LanternOps
    • Check their MFA status
    • Verify matches Azure AD (Azure Portal → Users → MFA Status)
  3. License Data Present

    • Navigate to LicensingOverview
    • Should see all M365 subscriptions (E3, E5, etc.)
    • License counts should match Microsoft 365 Admin Center
  4. Groups Synced

    • Navigate to IdentityGroups
    • Verify groups appear
    • Check group memberships are correct

MFA Enrollment Tracking:

  • Real-time visibility into MFA coverage
  • Identify users without MFA (security risk)
  • Track MFA adoption over time
  • Prove access control for compliance

Example Customer Value:

“94% of your users have MFA enabled, protecting against 99.9% of account compromise attacks. We’ve identified 3 users who still need MFA - we’ll enroll them this week to achieve 100% coverage and full CMMC compliance.”

License Utilization:

  • Find unused licenses (assigned but never used)
  • Identify over-licensed users (E5 when E3 would suffice)
  • Calculate cost savings opportunity

Example:

License Audit Results:
✅ Total Licenses: 50
❌ Unused Licenses: 7 (never signed in)
💰 Cost: 7 × $23/month = $161/month wasted
💰 Annual Savings: $1,932 if licenses removed
Recommendation: Remove 7 unused licenses

Frameworks Covered:

  • CIS Controls (8 controls satisfied)
  • NIST CSF (5 controls satisfied)
  • CMMC Level 2 (5 controls satisfied)
  • HIPAA (4 controls satisfied)
  • SOC 2 (5 controls satisfied)
  • PCI DSS (4 controls satisfied)

Audit Package Includes:

  • User account inventory
  • MFA enrollment evidence
  • Access control policies
  • Email security configuration
  • Audit logging status
  • Evidence timestamps

Microsoft 365 data powers automatic opportunity detection:

MFA Gaps:

  • Find users without MFA
  • Upsell: “MFA enrollment service - $500 one-time”

License Optimization:

  • Unused licenses → Cost savings proposal
  • Under-licensed users → Upgrade recommendation
  • Missing features → Upsell E3 to E5

Security Gaps:

  • No Advanced Threat Protection → Upsell Defender for Office 365
  • No email encryption → Recommend compliance add-ons
  • Guest user sprawl → Identity governance service

Communication Intelligence:

  • Prove hidden work delivered (not in tickets)
  • Demonstrate value in QBRs
  • Find customers needing attention (low communication = churn risk)

Average Revenue Found: $2,000-$5,000 per customer

  • ✅ Use Application permissions (not delegated) for background sync
  • ✅ Grant all required permissions before first sync
  • ✅ Use long-lived client secret (24 months) to avoid frequent rotation
  • ✅ For MSPs: Use GDAP instead of legacy DAP
  • ✅ Review MFA Dashboard weekly
  • ✅ Check license utilization monthly
  • ✅ Monitor ETL Health Dashboard for sync issues
  • ✅ Rotate client secret before expiration (set calendar reminder)
  • ✅ Credentials are encrypted at rest (AES-256)
  • ✅ Never shared across MSP tenants
  • ✅ Use read-only permissions (LanternOps never writes to M365)
  • ✅ Enable conditional access for admin accounts in Azure AD
  • ✅ Keep sync frequency at 1 hour for fresh data
  • ✅ Use delta queries to minimize API calls (enabled by default)
  • ✅ First sync during off-hours (takes 20-40 minutes)
  • ✅ Monitor failure rate (should be <4%)

Core Identity & Access:

  • User.Read.All - Read all users
  • Group.Read.All - Read all groups
  • Directory.Read.All - Read directory data
  • Organization.Read.All - Read org settings

Security & Compliance:

  • AuditLog.Read.All - Read audit logs
  • Policy.Read.All - Read conditional access
  • UserAuthenticationMethod.Read.All - Read MFA status

Communication Intelligence (Optional):

  • Mail.Read - Read mailboxes
  • MailboxSettings.Read - Read mailbox settings
  • Calendars.Read - Read calendars
  • Team.ReadBasic.All - Read Teams metadata

Permission Type: Application (not Delegated)

Admin Consent Required: Yes (Global Administrator)

  1. Verify User Data

    • Check IdentityUsers
    • Confirm user counts and MFA status
    • Review license assignments
  2. Set Up MFA Monitoring

    • Navigate to SecurityMFA Dashboard
    • Review coverage percentage
    • Identify users needing MFA enrollment
  3. Enable Communication Intelligence (Optional)

  4. Generate Compliance Evidence

    • Navigate to ComplianceAudit Packages
    • Select framework (e.g., CMMC, HIPAA)
    • See M365 evidence for identity/access controls