Outlook Connector Setup
Index Outlook emails and events by creating a dedicated App Registration with the appropriate permissions.
Setup Checklist
Before starting, ensure you have:
- Azure Global Administrator or Cloud Application Administrator role
- Microsoft 365 licensing for Outlook content
- Certificate generated (see Certificate Generation Guide)
- Active Atolio deployment
Required API Permissions
Step 1: Create App Registration
- Navigate to Azure Portal > App Registrations
- Click “New registration”
- Enter name:
Atolio Outlook - Select “Accounts in this organizational directory only”
- Click “Register”
Step 2: Add API Permissions
⚠️ Important: Only add Application permissions, not Delegated permissions
- In your App Registration, click “API permissions” in the left menu
- Click “Add a permission”
- Select “Microsoft Graph”
- Click “Application permissions” (not Delegated permissions)
Add these Microsoft Graph permissions:
Identity & Directory Permissions (Required for ACL mapping)
Application.Read.AllGroup.Read.AllGroupMember.Read.AllUser.Read.AllDirectory.Read.All(optional)
Outlook Content Permissions
Mail.ReadCalendars.ReadMailboxSettings.ReadDomain.Read.All
Step 3: Grant Admin Consent
- After adding all permissions, click “Grant admin consent for [your tenant name]” at the top of the API permissions page
- Confirm by clicking “Yes”
- Verify all permissions show “Granted for [your tenant name]” with green checkmarks
Step 4: Upload Certificate
- Click “Certificates & secrets” in the left menu
- Click “Upload certificate”
- Select your
.cerfile (not the.pfxfile) - Add description:
Atolio Outlook Authentication - Click “Add”
Step 5: Collect Configuration Values
From the “Overview” page, copy:
- Application (client) ID
- Directory (tenant) ID
You’ll provide these, along with your base64-encoded .pfx certificate and its password, as listed in Required Configuration Values.
Required Configuration Values
Enter these values in the Atolio Admin console (v4.24 and later), or send them to Atolio Support (your Deployment Engineer).
| Value | Where to find it | Example / format | Secret |
|---|---|---|---|
| Directory (tenant) ID | Step 5, App Registration Overview page | GUID, e.g. 00000000-0000-0000-0000-000000000000 | No |
| Application (client) ID | Step 5, App Registration Overview page | GUID, e.g. 00000000-0000-0000-0000-000000000000 | No |
Certificate (base64-encoded .PFX) | Certificate Generation, the base64 output of the .PFX file whose .cer you uploaded in Step 4 | Long base64 string | Yes |
| Certificate password | Certificate Generation, the password set on the .PFX file | Your chosen password | Yes |
Known email domains (only if your domains aren’t returned by the Microsoft Graph /domains query) | Manually Specify Email Address Domains | example.com, contoso.com | No |
Keep secrets secure: Share values marked “Yes” in the Secret column only through a password-manager share (e.g. 1Password) or another secure channel agreed with Atolio Support. Never send them in plain email, chat, or support tickets.
Configuration Example
Add this block to connector-values.yaml. Replace each <PLACEHOLDER> with the matching value from the table above, and remove any line marked “Only if” that doesn’t apply.
connectors:
microsoft:
default:
outlook:
connector: microsoft
instance: default
source: outlook
common:
enabled: true
identity-provider: false
secrets:
client_cert:
value: "<BASE64_PFX_CERTIFICATE>"
client_cert_password:
value: "<PFX_PASSWORD>"
configuration:
tenant-id: "<DIRECTORY_TENANT_ID>"
client-id: "<APPLICATION_CLIENT_ID>"
known-domains: # Only if your domains aren't returned by the Microsoft Graph /domains query
- "<KNOWN_EMAIL_DOMAIN>"
Resource Filtering
Limit indexing scope using resource filters. Outlook supports multiple filter types:
User Filtering
Index mailboxes for specific user accounts:
resources:
user:
included:
- arthur.dent@example.com
- ford.prefect@example.com
excluded:
- galactic-president@example.com
LDAP Group Filtering
Index mailboxes for members of Entra ID security/distribution groups:
resources:
ldap:
included:
- f47ed439-7c7d-430d-aff3-0acecdec2cae # Engineering Security Group (ObjectId)
LDAP Group Filter Notes:
- Accepts Entra ID group ObjectIds (GUIDs) or distinguished names
- Filters based on transitive group membership
- Only indexes mailboxes of group members
- Only a single LDAP group filter is supported at a time
- Use Azure AD PowerShell or Graph Explorer to find group ObjectIds
Manually Specify Email Address Domains
If email address domains of your organization are already listed in MS Graph API /domains query, you can skip this step.
For Atolio to identify contributors of Outlook resources correctly, a list of email address domains must be known. If users in your organization have email addresses like user1@example.com and user2@contoso.com, this list should consist of example.com, and contoso.com.
You can manually specify an email address domain list as part of your configuration in the following format:
known-domains:
- example.com
- contoso.com
Optional Settings Example
These optional settings go in the same block as the Configuration Example, under common: and configuration:. This example shows optional settings for Outlook, including a sync schedule and resource filters:
common:
cron-spec: "20 */1 * * *"
configuration:
disable-attachments: true # Set to false to index email attachments
backfill-start-time: "2025-01-01T00:00:00Z" # Index emails from this date
resources:
user:
included:
- arthur.dent@example.com
- ford.prefect@example.com
ldap:
included:
- f47ed439-7c7d-430d-aff3-0acecdec2cae # Atolio Users Group
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
401 Unauthorized | Missing admin consent | Click “Grant admin consent” in API permissions |
403 Forbidden | Wrong permission type | Ensure you added Application permissions, not Delegated |
invalid_client | Certificate not found/expired | Verify certificate is uploaded and valid |
| Mailboxes not appearing | Missing mail permissions | Verify Mail.Read and Calendars.Read permissions |
| LDAP filtering not working | Invalid group ObjectId | Use Azure AD PowerShell to verify group ID |
| Contributor identification issues | Missing known-domains | Add all organization email domains to configuration |