Sample report. Every name, address and server in it is made up.All samplesGet early access

Microsoft 365 readiness check

Example Dental Group (sample)
As of November 2, 2026 · Prepared by Your company name
28
Significant work needed
Score out of 100
7 High 3 Medium 2 Low

Microsoft deadlines

DateWhat changesFindings affected
Nov 7, 2026 (5 days)Self-service password reset accepts only registered methods (profile phone numbers and emails stop working; rollout to mid-November)1
Dec 31, 2026 (59 days)SMTP AUTH with basic authentication turned off by default (final removal date to be announced, second half of 2027)2
Feb 1, 2027 (91 days)SMS and voice call MFA methods retired for users (no opt-out)2
Apr 1, 2027 (150 days)Exchange Web Services (EWS) permanently disabled in Exchange Online1
Apr 7, 2027 (156 days)Entra Connect Sync must be version 2.6.84.0 or later with application-based authentication, or directory sync stops1
Jul 1, 2027 (241 days)SMS and voice MFA retired for Global Administrators and external usersnone

Identity

High

Devices or apps still sign in with older mail protocols

Deadline Dec 31, 2026
Why it matters
These sign-ins (SMTP, IMAP, POP, ActiveSync and similar) are typically scanners, copiers, line-of-business apps or old phones. Several are being switched off, starting with SMTP AUTH basic authentication at the end of December 2026.
What to do
For each line, find the device or app and move it to modern authentication (OAuth), Microsoft's High Volume Email or SMTP relay with a connector, or a supported mail client.
Evidence
  • scanner@dental.example.com via Authenticated SMTP - 412 successful, last 2026-10-31
  • billing@dental.example.com via Authenticated SMTP (Practice management system) - 96 successful, last 2026-11-01
  • mchen@dental.example.com via IMAP4 - 38 successful, last 2026-10-30
How to fix it (about 30-90 minutes per device or app)
  1. For each line, find the device or app from the user and IP address in Entra admin center > Sign-in logs.
  2. Phones and mail apps: switch to Outlook or a mail app that uses modern sign-in. Scanners and apps: see the SMTP AUTH guide (relay connector or OAuth).
  3. When nothing legacy remains, block it with Conditional Access ("Client apps: Exchange ActiveSync clients, Other clients" > Block).
Check it worked

No new legacy sign-ins appear in the next 30-day scan.

Undo

Not applicable.

High

Users whose only MFA method is a text message or phone call

Deadline Feb 1, 2027
Why it matters
Microsoft retires SMS and voice MFA on February 1, 2027 (July 1, 2027 for Global Administrators). With no other method registered, these people will be unable to complete sign-in.
What to do
Have each person register the Microsoft Authenticator app or a passkey now (aka.ms/mysecurityinfo), then remove the phone method. A Temporary Access Pass helps anyone without a smartphone.
Evidence
  • kdominguez@dental.example.com (Global Administrator)
  • rsantos@dental.example.com
  • jwhite@dental.example.com
  • lnguyen@dental.example.com
  • bharris@dental.example.com
  • gflores@dental.example.com
How to fix it (about 10 minutes per user, or one 20-minute group session)
  1. Tell each person (email below) to install Microsoft Authenticator on their phone before the session.
  2. Each person goes to https://aka.ms/mysecurityinfo, chooses "Add sign-in method" > "Microsoft Authenticator" and follows the QR code. For anyone without a smartphone, issue a FIDO2 security key, or a Temporary Access Pass to register one.
  3. Once Authenticator shows in their methods, remove the phone method (commands below) so nobody falls back to SMS.
  4. When everyone is moved, turn SMS and voice off for the tenant: Entra admin center > Protection > Authentication methods > Policies > SMS / Voice call > disable.
Commands (run with your own admin sign-in)
# Microsoft Graph PowerShell: Connect-MgGraph -Scopes UserAuthenticationMethod.ReadWrite.All
# Optional: one-time pass (8 hours) for someone registering a security key
New-MgUserAuthenticationTemporaryAccessPassMethod -UserId "<user>" -BodyParameter @{ lifetimeInMinutes = 480; isUsableOnce = $false }
# Remove the mobile phone method after Authenticator is registered (3179e48a... is Microsoft's fixed id for the mobile number)
Remove-MgUserAuthenticationPhoneMethod -UserId "kdominguez@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "rsantos@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "jwhite@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "lnguyen@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "bharris@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "gflores@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Check it worked

Get-MgUserAuthenticationMethod -UserId <user> lists a microsoftAuthenticator (or fido2) method and no phone method; the next Attestry scan closes the finding.

Undo

Re-add a number if someone is locked out: New-MgUserAuthenticationPhoneMethod -UserId <user> -PhoneNumber "+1 ..." -PhoneType mobile (stops working on February 1, 2027).

Email to the client (edit before sending)
Subject: 10-minute sign-in update before February 1

Microsoft is retiring text-message sign-in codes on February 1. 6 people at your office use them today and would be locked out of email. Please ask them to install the free Microsoft Authenticator app before [DATE]; we'll walk everyone through the rest in about 10 minutes each.
High

Entra Connect Sync still uses the old sign-in method; sync stops April 7, 2027

Deadline Apr 7, 2027
Why it matters
Microsoft retires the old sync account sign-in on April 7, 2027. Servers that haven't moved to version 2.6.84.0 or later with application-based authentication stop syncing: new starters, leavers and password changes on-site no longer reach Microsoft 365.
What to do
Upgrade each sync server to the latest Entra Connect Sync (download from the Entra admin center), then run the wizard and choose "Configure application-based authentication to Microsoft Entra ID".
Evidence
  • DC01 - signs in with the old sync account Sync_DC01_4f2a9c81b7e0@exampledental.onmicrosoft.com
How to fix it (about 45-90 minutes per sync server; plan a maintenance window)
  1. On the sync server, check the version and sign-in type (commands below). Take a backup or snapshot of the server first.
  2. Download the latest Entra Connect Sync from the Entra admin center (Identity > Hybrid management > Microsoft Entra Connect > Connect Sync; it is no longer on the Download Center). The server needs .NET Framework 4.7.2 and TLS 1.2.
  3. Run the installer to upgrade in place. For very old versions (1.x, DirSync, Azure AD Sync), build a new server and use a swing migration instead.
  4. Open the Entra Connect wizard > Configure > "Configure application-based authentication to Microsoft Entra ID" and sign in as a Hybrid Identity or Global Administrator. Upgrading alone no longer switches existing servers.
  5. Run a delta sync and confirm in the Entra admin center that the last sync time updates.
Commands (run with your own admin sign-in)
# On the sync server, in an elevated PowerShell window
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Azure AD Connect").Version   # needs 2.6.84.0 or later
Import-Module ADSync
Get-ADSyncEntraConnectorCredential   # ConnectorIdentityType should say Application, not ServiceAccount
Start-ADSyncSyncCycle -PolicyType Delta
Check it worked

Get-ADSyncEntraConnectorCredential shows Application; the Entra admin center lists an app named ConnectSyncProvisioning_<server>_...; the next Attestry scan closes the finding.

Undo

Microsoft documents a revert to the sync account (Add-ADSyncAADServiceAccount), but it only works until April 7, 2027. Restore the snapshot if the upgrade itself fails.

Email to the client (edit before sending)
Subject: Planned maintenance on your directory sync server

Microsoft is retiring the way your on-site accounts sync to Microsoft 365 on April 7, 2027. After that, new starters, leavers and password changes would stop syncing. We'll upgrade the sync server during a short maintenance window on [DATE]; sign-ins are not affected while we work.
High

Admin accounts with no MFA method registered

Why it matters
An admin role with only a password is the fastest way to lose the whole tenant. Emergency ("break glass") accounts are often left like this by accident.
What to do
Register a phishing-resistant method (a FIDO2 security key or passkey) on every admin account today; for emergency accounts store the key in a safe.
Evidence
  • breakglass@dental.example.com
How to fix it (about 15 minutes per account)
  1. For a normal admin: sign in as that admin at https://aka.ms/mysecurityinfo and register a passkey or FIDO2 security key (Microsoft Authenticator as a second method).
  2. For an emergency ("break glass") account: register two FIDO2 security keys, store them in separate safes, store the long password with them, and record where in your documentation.
  3. Set an alert on any sign-in by the emergency account (Entra admin center > Monitoring > Diagnostic settings, or your SIEM).
Commands (run with your own admin sign-in)
# Optional: one-time pass so the key can be registered without a password prompt
New-MgUserAuthenticationTemporaryAccessPassMethod -UserId "breakglass@dental.example.com" -BodyParameter @{ lifetimeInMinutes = 60; isUsableOnce = $true }
Check it worked

Get-MgUserAuthenticationMethod -UserId <admin> lists a fido2 method; the next scan closes the finding.

Undo

Not applicable.

Medium

Users who can't reset their own password after the November 7 change

Deadline Nov 7, 2026
Why it matters
From November 7, 2026, self-service password reset only accepts methods a person registered themselves. Phone numbers and email addresses typed into their user profile no longer count, so these people get stuck at the reset screen and call the helpdesk.
What to do
Turn on "Require users to register when signing in" for password reset and have each person register Microsoft Authenticator or a phone number at aka.ms/mysecurityinfo.
Evidence
  • kdominguez@dental.example.com (admin)
  • rsantos@dental.example.com
  • jwhite@dental.example.com
  • lnguyen@dental.example.com
  • bharris@dental.example.com
  • gflores@dental.example.com
How to fix it (about 5 minutes per user, or one 15-minute group session)
  1. Entra admin center > Protection > Password reset > Registration: set "Require users to register when signing in" to Yes, so people are prompted at their next sign-in.
  2. Check Password reset > Authentication methods: the methods people actually have (for example Microsoft Authenticator) must be allowed for reset, or they still show as not capable.
  3. Send the email below. Each person registers at https://aka.ms/mysecurityinfo.
  4. For anyone who can't register themselves, the helpdesk can add a phone method for them (command below) after verifying who they are.
Commands (run with your own admin sign-in)
# Microsoft Graph PowerShell: Connect-MgGraph -Scopes UserAuthenticationMethod.ReadWrite.All
New-MgUserAuthenticationPhoneMethod -UserId "kdominguez@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
New-MgUserAuthenticationPhoneMethod -UserId "rsantos@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
New-MgUserAuthenticationPhoneMethod -UserId "jwhite@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
New-MgUserAuthenticationPhoneMethod -UserId "lnguyen@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
New-MgUserAuthenticationPhoneMethod -UserId "bharris@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
New-MgUserAuthenticationPhoneMethod -UserId "gflores@dental.example.com" -PhoneNumber "+1 <their mobile>" -PhoneType mobile
Check it worked

Entra admin center > Protection > Authentication methods > User registration details: filter "SSPR capable" = Not capable; the list should be empty. The next Attestry scan closes the finding.

Undo

Not needed; registering a method changes nothing else.

Email to the client (edit before sending)
Subject: 2 minutes now saves a locked-out morning later

From November 7, Microsoft only lets people reset their own password using a sign-in method they registered themselves. 6 people at your office haven't registered one. Please ask them to visit aka.ms/mysecurityinfo and add the Microsoft Authenticator app or their mobile number. It takes about two minutes.
Medium

Licensed users with no MFA method registered

Why it matters
No MFA method is registered yet. Security defaults or Conditional Access will force registration at the next sign-in, but until then the account is password-only, and an attacker who has the password can register their own method.
What to do
Get each user registered with Microsoft Authenticator or a passkey this week. For accounts that aren't people (shared mailboxes, scanners), block sign-in instead.
Evidence
  • cmorales@dental.example.com
  • hlopez@dental.example.com
  • scanner@dental.example.com
  • oldlab@dental.example.com
How to fix it (about 5-10 minutes per user)
  1. Send each person the instructions: go to https://aka.ms/mysecurityinfo and add Microsoft Authenticator.
  2. For shared mailboxes or device accounts listed here that nobody signs in to, block sign-in instead (command below).
Commands (run with your own admin sign-in)
# Only for accounts that are not people
Update-MgUser -UserId "<account>" -AccountEnabled:$false
Check it worked

The next Attestry scan shows a method for each person.

Undo

Update-MgUser -UserId "<account>" -AccountEnabled:$true

Low

Users who still have a phone method as a backup

Deadline Feb 1, 2027
Why it matters
They have a stronger method already, so sign-in keeps working, but the phone method will stop working and helpdesk calls follow when people try it.
What to do
Remove the phone methods, or disable SMS and voice in the Authentication methods policy once everyone has a replacement.
Evidence
  • tbaker@dental.example.com
  • sortiz@dental.example.com
  • pwalker@dental.example.com
How to fix it (about 2 minutes per user)
  1. These users already have a stronger method. Remove the phone method so they stop using it, or disable SMS and voice in the Authentication methods policy once everyone is ready.
Commands (run with your own admin sign-in)
Remove-MgUserAuthenticationPhoneMethod -UserId "tbaker@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "sortiz@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Remove-MgUserAuthenticationPhoneMethod -UserId "pwalker@dental.example.com" -PhoneAuthenticationMethodId 3179e48a-750b-4051-897c-87b9720928f7
Check it worked

The next Attestry scan no longer lists them.

Undo

New-MgUserAuthenticationPhoneMethod -UserId <user> -PhoneNumber "+1 ..." -PhoneType mobile

Mail

High

Mailboxes allow SMTP AUTH (usually a copier, scanner or app sending mail)

Deadline Dec 31, 2026
Why it matters
SMTP AUTH with basic authentication is turned off by default at the end of December 2026. Scan-to-email and app notifications that use these mailboxes stop sending, usually without anyone noticing until a customer asks.
What to do
Find what sends through each mailbox, then move it to OAuth, Microsoft's High Volume Email, or an SMTP relay through a connector. Switch SMTP AUTH off on the mailbox afterwards.
Evidence
  • billing@dental.example.com - SMTP AUTH switched on for this mailbox
  • scanner@dental.example.com - SMTP AUTH switched on for this mailbox
How to fix it (about 30-90 minutes per device)
  1. Find what sends through each mailbox: Entra admin center > Sign-in logs > add filter "Client app" = "Authenticated SMTP"; note the IP address and time. Match the IP to a copier, scanner, server or app.
  2. Choose a replacement for each sender: (a) a newer firmware or app version that supports OAuth (modern authentication); (b) an SMTP relay: Exchange admin center > Mail flow > Connectors > "Your organization's email server" to "Office 365", restricted to the site's static public IP, with the device sending to <your-domain>-<tld>.mail.protection.outlook.com on port 25; or (c) Microsoft's High Volume Email service where available to the tenant.
  3. Change the device or app to the new method and send a test message.
  4. Switch SMTP AUTH off on the mailbox (command below), then watch the sign-in log for a day for failures.
Commands (run with your own admin sign-in)
# Run in Exchange Online PowerShell (Connect-ExchangeOnline)
Set-CASMailbox -Identity "billing@dental.example.com" -SmtpClientAuthenticationDisabled $true
Set-CASMailbox -Identity "scanner@dental.example.com" -SmtpClientAuthenticationDisabled $true
Check it worked

Get-CASMailbox -Identity <mailbox> | Select-Object SmtpClientAuthenticationDisabled (should say True); the next Attestry scan closes the finding.

Undo

Set-CASMailbox -Identity <mailbox> -SmtpClientAuthenticationDisabled $false (only works until Microsoft's default-off date).

Email to the client (edit before sending)
Subject: Action needed before December 31: scan-to-email and app notifications

Microsoft is switching off an older way devices send email at the end of December. We found 2 device(s) or app(s) at your office still using it. We'll move each one to a supported method so nothing stops sending. Expect a short visit or remote session; no action is needed from your staff.
High

Apps use Exchange Web Services (EWS), which stops working April 1, 2027

Deadline Apr 1, 2027
Why it matters
Typical EWS users: backup tools, CRM and email-archiving add-ons, room booking, older Mac mail apps and in-house scripts. Microsoft disables EWS permanently and they stop syncing.
What to do
Ask each vendor for their Microsoft Graph version and its release date, upgrade before April 2027, then remove the EWS permission.
Evidence
  • Mailbox backup service - Application permission (full mailbox access via EWS)
  • frontdesk@dental.example.com signed in via EWS (Mailbox backup service)
How to fix it (depends on the vendor)
  1. For each app, ask the vendor: "Do you have a Microsoft Graph version, and when do we need to upgrade before April 1, 2027?" (email below).
  2. Schedule the upgrade, then remove the app's EWS permission in Entra admin center > Enterprise applications > the app > Permissions.
  3. Optional early test: switch EWS off for a pilot mailbox and confirm the app still works.
Commands (run with your own admin sign-in)
# Exchange Online PowerShell: pilot test on one mailbox
Set-CASMailbox -Identity "<pilot mailbox>" -EwsEnabled $false
Check it worked

The app keeps working with EWS off for the pilot mailbox; the next scan no longer lists its EWS permission.

Undo

Set-CASMailbox -Identity "<pilot mailbox>" -EwsEnabled $true

Email to the client (edit before sending)
Subject: Software that stops working April 1, 2027

Microsoft is switching off a connection method (EWS) that 2 of your applications use. We are contacting the vendors for their upgrade plans and will schedule the updates well before April.
High

Mailboxes are set to forward mail outside the company

Why it matters
Forwarding to personal addresses leaks client data and is a classic sign of a compromised mailbox. External forwarding is allowed by the outbound policy, so this mail is leaving the company now.
What to do
Confirm each one with the person and their manager. Remove forwarding that isn't approved, and if any is unexplained, treat the account as compromised (reset password, revoke sessions, review inbox rules).
Evidence
  • apatel@dental.example.com forwards to anita.personal@example.net (keeps a copy)
How to fix it (about 15 minutes per mailbox; 1-2 hours if compromise is suspected)
  1. Ask the mailbox owner and their manager whether the forwarding is approved (email below). Keep the reply in the finding.
  2. If not approved: remove the forwarding and check for inbox rules that forward or redirect.
  3. If nobody can explain it: treat the account as compromised. Reset the password, revoke sessions, check sign-in logs for unfamiliar locations, and review mailbox audit logs.
Commands (run with your own admin sign-in)
# Exchange Online PowerShell
Set-Mailbox -Identity "apatel@dental.example.com" -ForwardingSmtpAddress $null -DeliverToMailboxAndForward $false
Get-InboxRule -Mailbox "apatel@dental.example.com" | Where-Object { $_.ForwardTo -or $_.ForwardAsAttachmentTo -or $_.RedirectTo } | Format-List Name, ForwardTo, RedirectTo
# If compromise is suspected (Microsoft Graph PowerShell)
Revoke-MgUserSignInSession -UserId "<user>"
Check it worked

Get-Mailbox -Identity <mailbox> | Select-Object ForwardingSmtpAddress (should be empty).

Undo

If later approved: Set-Mailbox -Identity <mailbox> -ForwardingSmtpAddress "smtp:<address>" -DeliverToMailboxAndForward $true

Email to the client (edit before sending)
Subject: Is this email forwarding approved?

We found 1 mailbox(es) set to forward company email to outside addresses. This is a common way client information leaks. Please reply to confirm whether each one is approved; anything not approved we'll switch off the same day.

Admin and licensing

Medium

Disabled accounts still hold paid licences

Why it matters
Usually leavers. Each one is a monthly licence being paid for nobody.
What to do
Convert the mailbox to a shared mailbox if the mail is needed (no licence required under 50 GB), then remove the licence.
Evidence
  • jmurphy@dental.example.com
  • avega@dental.example.com
How to fix it (about 5 minutes per account)
  1. Confirm the person has left and whether their mail must be kept.
  2. If the mail is needed, convert the mailbox to a shared mailbox (no licence needed under 50 GB) and give the right people access.
  3. Remove the licence. Then reduce the subscription count at the next renewal so the saving is real.
Commands (run with your own admin sign-in)
# Exchange Online PowerShell: convert to shared (keeps the mail)
Set-Mailbox -Identity "jmurphy@dental.example.com" -Type Shared
Set-Mailbox -Identity "avega@dental.example.com" -Type Shared
# Microsoft Graph PowerShell: remove all licences
$u = Get-MgUser -UserId "jmurphy@dental.example.com" -Property AssignedLicenses; Set-MgUserLicense -UserId "jmurphy@dental.example.com" -AddLicenses @() -RemoveLicenses @($u.AssignedLicenses.SkuId)
$u = Get-MgUser -UserId "avega@dental.example.com" -Property AssignedLicenses; Set-MgUserLicense -UserId "avega@dental.example.com" -AddLicenses @() -RemoveLicenses @($u.AssignedLicenses.SkuId)
Check it worked

The licence count drops in Microsoft 365 admin center > Billing > Licenses; the next scan closes the finding.

Undo

Assign the licence again in the admin center.

Email to the client (edit before sending)
Subject: Licences you are paying for but not using

We found 2 former staff account(s) still holding paid Microsoft 365 licences. We'll keep their email as shared mailboxes where needed and remove the licences, which lowers your monthly bill from the next renewal.
Low

Licensed users with no sign-in in 90 days

Why it matters
Unused accounts cost licences and are easy targets because nobody notices activity on them.
What to do
Confirm with the business, then block sign-in, convert to shared mailboxes or remove the licence.
Evidence
  • oldlab@dental.example.com
How to fix it (about 5 minutes per account)
  1. Confirm with the client whether each account is still needed (email below). Block sign-in or convert to a shared mailbox for the rest, then remove the licence.
Commands (run with your own admin sign-in)
Update-MgUser -UserId "oldlab@dental.example.com" -AccountEnabled:$false
Check it worked

The next scan no longer lists them.

Undo

Update-MgUser -UserId <user> -AccountEnabled:$true

Email to the client (edit before sending)
Subject: Are these accounts still needed?

1 accounts haven't signed in for over 90 days but are still licensed. Please confirm which are still needed; we'll close the rest and stop paying for them.

What was read

AreaResult
TenantRead
Security defaultsRead
Conditional AccessRead
LicencesRead
Users and last sign-inRead
MFA registration reportRead
MFA methods per userRead
Admin rolesRead
Apps using Exchange Web ServicesRead
Legacy and EWS sign-insRead
Exchange organization settingsRead
MailboxesRead

Read-only check of Microsoft Entra ID and Exchange Online. Sign-in history covers the last 30 days. Attestry 0.2.0.