Test Conditional Access safely with report-only mode and What If
Most Conditional Access outages come from a policy that did something nobody expected. Two built-in tools let you see exactly what a policy would do before it does it.
On this page
Conditional Access is powerful precisely because it can block anyone from anything. That's also why a careless change can lock out a whole organisation. Two tools take most of the risk away.
- 01Create policy in report-only
- 02Collect a week of sign-ins
- 03Review reportOnlyFailure results
- 04Pilot group
- 05Enforce for everyone
Report-only mode
Set a policy's state to Report-only and Entra evaluates it on every sign-in without enforcing it. The result is recorded in the sign-in logs on the Report-only tab: would it have applied, and would the user have passed or failed?
Run new policies in report-only for at least a week, so you see a full working cycle including remote work, mobile devices and service accounts.
Off
- Not evaluated at all
- Safe place to draft a policy
Report-only
- Evaluated on every sign-in
- Result logged, never enforced
- Use for at least a week
On
- Enforced
- Users can be blocked or prompted
- Keep break-glass excluded
Reviewing the impact
The Conditional Access insights and reporting workbook summarises report-only results across all sign-ins. With logs in Log Analytics, you can also query it directly:
SigninLogs
| where TimeGenerated > ago(7d)
| mv-expand ConditionalAccessPolicies
| where ConditionalAccessPolicies.displayName == "Require compliant device"
| where ConditionalAccessPolicies.result == "reportOnlyFailure"
| summarize Failures = count() by UserPrincipalName, AppDisplayName
| order by Failures descEvery reportOnlyFailure is someone who would have been blocked. Work through the list before you switch the policy on.
The What If tool
What If answers a specific question: if this user signed in to this app, from this platform and location, which policies would apply? You'll find it on the Conditional Access Policies page. It's ideal for troubleshooting a single user's ticket and for checking your exclusions are doing what you expect.
Reading report-only results
| Result | What it means |
|---|---|
| reportOnlySuccess | The user would have met the policy's requirements |
| reportOnlyFailure | The user would have been blocked. Investigate before enforcing |
| reportOnlyInterrupted | The user would have been prompted, for example for MFA |
| reportOnlyNotApplied | The policy's conditions didn't match this sign-in |
One known quirk: Microsoft notes that report-only policies requiring a compliant device can still prompt users on macOS, iOS and Android to pick a device certificate. Test on those platforms before a wide report-only rollout.
A safe rollout pattern
- Create the policy in report-only.
- Review the results after a week and fix the gaps.
- Enable it for a pilot group, then everyone.
- Keep break-glass accounts excluded throughout.
- Policy created in report-only
- Review failures, fix gaps
- On for pilot group
- On for everyone
Try the sign-in log explainer when reviewing individual sign-ins: paste the exported JSON to see which policies applied and why.
This post was last checked against Microsoft's documentation over six months ago. The approach should still hold, but check the linked sources for anything that has changed before you act on it.
Next in Conditional Access from zero · part 3 of 7Authentication strengths: requiring the right kind of MFA →