Connecting Microsoft 365

This page is for an organization's administrators. Connecting lets Empeiro bring in everyone in your Microsoft 365 directory with their name, job title, department and photo, keep them up to date, decide who answers tickets from a security group, and let people sign in with their work account. It reads the directory only. It never has access to anyone's email, and your tickets stay in Empeiro.

You connect with an app registration you make in your own Microsoft 365. Empeiro has no app of its own in your tenant and never registers anything there; you create it, you can see everything it may do, and you can delete it at any time.

Before you start

Step 1: create the app registration in Microsoft

This gives Empeiro an identity in your Microsoft 365 and tells Microsoft what it may read.

  1. Sign in to the Microsoft Entra admin center at https://entra.microsoft.com as a Global Administrator.

  2. In the left menu go to Entra ID → App registrations and click New registration. (In older menus the path is Identity → Applications → App registrations.)

  3. Fill in the form:

    • Name: Empeiro
    • Supported account types: Single tenant only (older wording: Accounts in this organizational directory only).
    • Redirect URI: leave empty for now. (You add one later only if you want people to sign in with Microsoft; see Sign in with a work account.)
    • Click Register.
  4. You land on the app's Overview page. Two values here go into Empeiro; copy them somewhere safe:

    • Application (client) ID, a value like aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
    • Directory (tenant) ID, the same shape
  5. In the left menu of the app, open API permissions. The list already shows one row, User.Read of type Delegated: Microsoft adds that to every new registration. Leave it there. Now click Add a permission, choose Microsoft Graph, then the Application permissions box (the one on the right, not Delegated). In the search box find and tick:

    • User.Read.All: reads people's profiles and photos.
    • GroupMember.Read.All: reads which security groups people are in, so you can choose a group whose members are agents. Harmless if you mark agents by hand.
    • Optionally Organization.Read.All, which lets Empeiro show your organization's name and tell a meeting room's license from a person's. Not required.

    Click Add permissions.

  6. Still on API permissions, click Grant admin consent for (your organization) and confirm. The Status column should show a green tick and Granted for … on every row, the delegated one included. Without this step Empeiro is refused.

  7. Open Certificates & secrets, then Client secrets → New client secret. Give it a description such as Empeiro and an expiry. Microsoft recommends 12 months or less; 24 months is the maximum. Click Add.

  8. Copy the secret's Value immediately. It is shown only once. Do not copy the Secret ID beside it; that is a different thing and will not work.

Step 2: enter the details in Empeiro

  1. In Empeiro, open Microsoft 365 in the menu on the left (administrators only).
  2. Paste the three values:
    • Directory (tenant) ID → from the Overview page
    • Application (client) ID → from the Overview page
    • Client secret → the Value from step 8
  3. Click Save and test.

Settings → Microsoft 365 before connecting: what connecting does, the three boxes for the Directory (tenant) ID, Application (client) ID and client secret, Save and test, and the steps to create the app registration

The steps sit right under the form; Full guide opens this page.

Empeiro stores the secret encrypted and never shows it again, only its last four characters. The form checks the two IDs look right before sending anything, then signs in to Microsoft with your registration and reads one person to prove the permissions work.

If the light turns green ("Test passed"), the first sync starts automatically. If it turns red, the message says what is wrong in plain words; see the table below, fix it, and the form stays open for corrections.

Microsoft 365 connected: the green light with the organization's name, how many people, when it last synced, the accounts left out with Include, Test and Sync now, and the app registration line with Change details

Connected: everything about the connection on one page.

What syncing does

Every save, test and sync is written to the Recent activity list at the bottom of the page, with who did it; the whole log is Activity.

Who answers tickets

Beside the sync, Who answers tickets chooses a security group whose members are agents (an IT team, say), with anyone you mark as Agent by hand in the people list. Everyone else from the directory is a requester. Change the group's members in Microsoft 365 and Empeiro follows on the next sync. "Only people marked by hand" uses no group at all.

Groups that aren't security groups (a Microsoft 365 group for a team's mail, say) aren't offered.

Who can sign in

Connecting doesn't open Empeiro to your whole staff. Until you say so, only the people you list can sign in with their work account, and you are always on the list. People invited by name on Accounts can always sign in.

Taking someone off the list ends their sign-ins at once.

Who can sign in beside the sync: Only these people with the count, Everyone in the directory, Save who can sign in, and the people list with Can sign in and Agent beside each person

The pilot: start with a few people, then everyone.

Keeping it working

The red light after a secret expired, with Microsoft's reason in plain words

When something is wrong, the light says what.

Messages and what to do

Message Cause What to do
This should look like 00000000-0000-… An ID was pasted incompletely or with extra text. Copy the ID again from the app's Overview page.
Enter the client secret (the Value from Certificates & secrets) The secret box was empty on a first save. Paste the secret's Value.
Microsoft rejected Empeiro's app secret. It may have expired. Wrong secret, or the Secret ID instead of the Value. Make a new client secret and paste its Value.
Microsoft rejected Empeiro's app secret: it has expired. The secret's expiry date has passed. Make a new client secret, Change details, paste its Value.
Empeiro's app isn't known in this organization. Check the Application (client) ID, and that an administrator has granted consent. The client ID is wrong, or the registration is in a different tenant. Check the Application (client) ID and the Directory (tenant) ID come from the same app's Overview page.
Microsoft doesn't recognize this organization (tenant). Check the Directory (tenant) ID. The tenant ID is wrong. Copy the Directory (tenant) ID from the Overview page.
Empeiro isn't allowed to read the directory. An administrator needs to grant consent. Permissions were added but Grant admin consent was not clicked, or Delegated permissions were chosen instead of Application. On API permissions, check the type says Application and click Grant admin consent.
Security groups couldn't be read (the GroupMember.Read.All permission isn't granted)… Only User.Read.All was granted. People and photos still sync. Add GroupMember.Read.All, grant consent, Sync now. Only matters if agents follow a security group.
Group membership couldn't be read for N people and was left as it was. Microsoft throttled or had a passing error. Nothing; the next sync retries. Known groups were kept.
N photo(s) couldn't be read and were left as they were. A passing error, or a mailbox on an on-premises server. Nothing; the next sync retries.
A stored secret couldn't be read with this server's key (the server may have been restored or moved). Enter the client secret again. The server's encryption key changed, usually after a restore onto a new server. Click Change details, paste the client secret's Value again, Save and test.
This server can't store a client secret… A fault on Empeiro's side. Contact support; nothing on your side needs changing.
The directory couldn't be reached: … A network problem between the server and Microsoft. Try Test again in a few minutes.
That Microsoft 365 tenant is already connected to another organization on Empeiro. One tenant connects to one organization. Contact support if this tenant should move.
← Adding an organization