delivered for clients · names withheldmigration Identity and access

AD FS federation to Entra ID authentication

Cohash moves sign-in from AD FS to Microsoft Entra ID. We document federation settings and claim rules, replace AD FS access policies with Conditional Access, test password hash sync with staged rollout groups, convert domains one at a time, then move each relying party to Entra ID as a gallery or custom app. The farm is retired only when Connect Health shows no traffic.

  1. 01Inventory relying parties
  2. 02Record and back up federation settings
  3. 03Replace access policies
  4. 04Staged rollout and domain conversion
  5. 05Move the remaining apps
  6. 06Decommission
case-study / adfs-to-entra-id delivered
beforeAD FS farm and WAP servers afterMicrosoft Entra ID cloud authentication
01 · DIRECTORY 02 · AUTHENTICATION 03 · APPLICATIONS Active Directory: users · groups Active Directory users · groups Entra Connect: password hash sync Entra Connect password hash sync Microsoft Entra ID: managed domains Microsoft Entra ID managed domains Conditional Access: MFA · legacy auth blocked Conditional Access MFA · legacy authblocked ID Protection: leaked-credential detection ID Protection leaked-credentialdetection Microsoft 365: cloud authentication Microsoft 365 cloudauthentication SaaS apps: gallery SAML apps SaaS apps gallery SAMLapps Line-of-business apps: app registrations Line-of-business apps appregistrations Application Proxy: older protocol apps ApplicationProxy older protocolapps
case file

The story

Told without the client's name or anything that could identify them.

what happened

A healthcare group's identity team ran an AD FS farm and Web Application Proxy servers on Windows Server 2016, and every token-signing certificate renewal turned into a scramble. Users saw a branded AD FS page for some apps and the Microsoft sign-in page for others, and MFA was enforced in two places. We used the AD FS application activity report and Connect Health to find which relying party trusts still got traffic, backed up the federation settings, and rebuilt access policies as Conditional Access in report-only mode. After staged rollout pilots on password hash sync, domains converted one at a time and the remaining apps moved in waves. The farm was shut down once Connect Health showed no new requests.

why it was urgent

Windows Server 2016 leaves extended support in January 2027, and many AD FS farms and Web Application Proxy servers still run on it. Rebuilding the farm on a newer Windows release is real work, so teams ask whether to rebuild or move sign-in to Entra ID, where Microsoft recommends password hash sync for cloud authentication.

problem statement
  • openAD FS and WAP servers run Windows Server 2016 and the token-signing certificate renewal is always a scramble.
  • recurringDozens of relying party trusts exist and nobody knows which ones still get sign-ins.
  • blockedSign in to one app and you get a branded AD FS page. Sign in to the next and it's the Microsoft page.
  • openMFA is enforced in AD FS for some apps and in Conditional Access for others.
architecture

The estate, before and after

before
before

Before: AD FS federated sign-in for every domain

Sign-in for Microsoft 365 and line-of-business apps went through Web Application Proxy to the AD FS farm. MFA was split between AD FS access policies and Conditional Access, and nobody knew which relying parties still had traffic.

Before: AD FS federated sign-in for every domain Sign-in for Microsoft 365 and line-of-business apps went through Web Application Proxy to the AD FS farm. MFA was split between AD FS access policies and Conditional Access, and nobody knew which relying parties still had traffic. 01 · USERS 02 · FEDERATION 03 · RELYING PARTIES sign-in WS-Trust proxy LDAP lookup SAML token SAML token claims Workforce users branded AD FS sign-in page Legacy clients WS-Trust · basic auth Web Application Proxy Windows Server 2016 AD FS farm claim rules · accesspolicies Active Directory users · groups Ex Microsoft 365 federated domain trust Sf SaaS apps SAML trusts Line-of-business apps WS-Fed · custom claims
Read the diagram as text
  1. Workforce users → Web Application Proxy: sign-in
  2. Legacy clients → Web Application Proxy: WS-Trust
  3. Web Application Proxy → AD FS farm: proxy
  4. AD FS farm → Active Directory: LDAP lookup
  5. AD FS farm → Microsoft 365: SAML token
  6. AD FS farm → SaaS apps: SAML token
  7. AD FS farm → Line-of-business apps: claims
after
after

After: Entra ID handles sign-in for every app

Entra ID gets the synced password hashes, authenticates users and applies Conditional Access. Apps that relied on AD FS trusts have moved to gallery or custom SAML apps and app registrations, and the older protocol apps sit behind Application Proxy.

After: Entra ID handles sign-in for every app Entra ID gets the synced password hashes, authenticates users and applies Conditional Access. Apps that relied on AD FS trusts have moved to gallery or custom SAML apps and app registrations, and the older protocol apps sit behind Application Proxy. 01 · DIRECTORY 02 · AUTHENTICATION 03 · APPLICATIONS hashes sync policy check sign-in risk token SAML assertion OIDC token pre-auth Active Directory users · groups Entra Connect password hash sync Ex Microsoft Entra ID managed domains Conditional Access MFA · legacy auth blocked ID Protection leaked-credential detection Microsoft 365 cloud authentication Sf SaaS apps gallery SAML apps Line-of-business apps app registrations Application Proxy older protocol apps
Read the diagram as text
  1. Active Directory → Entra Connect: hashes
  2. Entra Connect → Microsoft Entra ID: sync
  3. Microsoft Entra ID → Conditional Access: policy check
  4. Microsoft Entra ID → ID Protection: sign-in risk
  5. Microsoft Entra ID → Microsoft 365: token
  6. Microsoft Entra ID → SaaS apps: SAML assertion
  7. Microsoft Entra ID → Line-of-business apps: OIDC token
  8. Microsoft Entra ID → Application Proxy: pre-auth
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. result 01

    Sign-in runs on Entra ID cloud authentication

    We converted federated domains to managed authentication with password hash sync. That also turned on leaked-credential detection, something AD FS never had.

  2. result 02

    One set of MFA and access rules

    AD FS access control policies were rebuilt as Conditional Access policies, legacy authentication is blocked, and federatedIdpMfaBehavior was set explicitly so MFA wasn't skipped during the switch.

  3. result 03

    Every relying party has an owner and a target

    We moved each trust to a gallery app, a custom SAML app or an app registration. Some we simply retired. Nothing went live in a wave until its claims matched the old tokens one for one.

  4. result 04

    A rollback path that was written down

    We exported each domain's federation settings and the Microsoft 365 relying party trust, and wrote down the commands to convert a domain back if a cut-over went wrong.

  5. result 05

    The AD FS and WAP servers are gone

    We removed the relying party trusts and decommissioned the farm following Microsoft's guide. No more certificate renewals on Windows Server 2016 hosts.

what can go wrong

Risks we plan for

  1. Claim rules with no direct mapping

    Custom claim transforms, attribute stores and issuance rules don't always map to Entra claims mapping. Each one is rebuilt and compared against a real token before cut-over.

  2. Lost sign-in customization

    Microsoft notes onload.js customizations can't be duplicated in Entra ID. Sign-in also needs a UPN or email, so users who sign in with a short name need a heads-up and help desk notes.

  3. MFA bypass or double prompts

    Leave federatedIdpMfaBehavior at its default during the switch and MFA can get skipped, or asked for twice. We set it explicitly for each domain before conversion.

  4. Hidden legacy clients

    Old Office clients, scripts and devices using WS-Trust or basic auth fail once the domain converts. Sign-in logs are checked for them weeks in advance.

ai in this move

Where AI helps, and where it needs guardrails

Once sign-in goes through Entra ID, Entra ID Protection can apply leaked-credential and sign-in risk detection that AD FS never had. AI assistants are useful for reading exported claim rule XML and drafting equivalent claims mappings, but every draft is tested against a captured token. No agent gets write access to domain federation settings; those changes run as reviewed scripts in a change window.

forward deployed engineers →
you keep

What you're left with

We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • inventory01

    Relying party inventory with usage, owner, claims and target per trust

    yours to keep
  • document02

    Federation settings backup and documented rollback commands

    yours to keep
  • guide03

    Conditional Access policy set replacing AD FS access policies

    yours to keep
  • runbook04

    Domain conversion runbook and communication plan for users

    yours to keep
  • document05

    AD FS and WAP decommission checklist

    yours to keep
field notes

Learn the background

Terms from this page in plain English. If you want the why, the field note behind it is right there.

01Conditional access
Rules evaluated at each sign-in that look at conditions such as user, device or location, and then allow, block or demand more proof.in context →
02Report-only mode
A setting where the policy runs against real sign-ins and logs what it would have done. Nobody actually gets blocked.in context →
A full business cycle Report-only Pilot ringenforces Staged rings Change in git All users
field note · 6 min · 3-question check Conditional access is a policy, not a prayer the ideaChange access policies the way you'd ship code: report-only, then rings, rollback at hand. read the note
talent and delivery · microsoft entra id cloud authentication

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
01Password hash sync or pass-through authentication?

Password hash sync is Microsoft's recommendation for cloud authentication, and it gives you leaked-credential detection too. If you can't allow password hashes in the cloud, pass-through authentication fits, at the cost of running agents on-premises. Either way we document the choice and why.

02Can we roll back if the domain conversion goes wrong?

Yes. As long as the federation settings are recorded and the farm is still running, New-MgDomainFederationConfiguration converts the domain back to federated. We schedule conversions outside business hours so a rollback doesn't land on users.

03Do all apps have to move at once?

No. Domains convert one at a time and relying parties move in waves. AD FS can keep serving some apps after Microsoft 365 sign-in has moved, until the last trust is migrated.

04Are we moving to Okta or Ping instead?

That works too. We do the same inventory, claim mapping and wave plan, and only the target changes. If Okta or Ping is already your primary identity provider, we plan the move there.

sources 3 sources linked last checked 2026-10-20 content fingerprint 7b3f4dff
  1. 01Microsoft Learn: Migrate from federation to cloud authentication in Microsoft Entra IDlearn.microsoft.com ↗
  2. 02Microsoft Learn: Stages of migrating application authentication from AD FS to Entra IDlearn.microsoft.com ↗
  3. 03Microsoft Lifecycle: Windows Server 2016learn.microsoft.com ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it