TL;DR - Executive Summary
- Timeline: 16-24 weeks for 15K users (3 weeks assessment, 4 weeks planning, 3 weeks pilot, 10-14 weeks phased rollout)
- Zero Downtime: Achieved through staged rollout with dual SSO - users access apps via Entra ID while Okta remains active backup
- Cost Savings: $450K-$900K annually by eliminating redundant Okta licensing (most M365 E3/E5 licenses include Entra ID P1/P2)
- Biggest Challenge: Reconfiguring 200+ SaaS apps from SAML/OIDC with Okta to Entra ID - budget 2-4 hours per app
- Critical Success Factor: Linked SSO approach allows users to see apps in MyApps portal while still authenticating via Okta during transition
- Rollback Strategy: Staged rollout enables instant revert to Okta if issues arise - keep both IdPs active until 100% validated
Interactive Migration Timeline Calculator
Calculate Your Migration Timeline
Estimate project duration based on your environment complexity
Estimated Migration Timeline
Total Duration: weeks ( months)
Assessment Phase: weeks
Planning Phase: weeks
Pilot Phase: weeks
Production Rollout: weeks
Note: Timeline assumes dedicated team and executive support. Add 30-50% buffer for part-time resources or organizational delays.
Current State Documentation
You cannot migrate what you don't understand. Thorough documentation is the foundation of a successful migration.
Assessment Checklist
Okta API Discovery Script
Use this PowerShell script to export your complete Okta application catalog:
Application Categorization
Categorize apps by migration complexity to prioritize efforts:
| Category | Characteristics | Migration Effort | Risk Level |
|---|---|---|---|
| Easy | SaaS apps in Entra ID Gallery with SSO + provisioning support | 1-2 hours per app | Low |
| Medium | SaaS apps with SAML/OIDC but manual provisioning | 2-4 hours per app | Medium |
| Hard | Custom apps with vendor-managed SSO configs | 4-8 hours + vendor coordination | Medium-High |
| Complex | Legacy apps using Okta Access Gateway, header auth, Kerberos | 8-40 hours + Entra App Proxy setup | High |
Critical Assessment Finding
If you have 20+ apps in the "Complex" category (header-based auth, Okta Access Gateway), your migration timeline will increase 30-50%. Consider Entra Application Proxy or third-party solutions like Datawiza for these apps.
Licensing Analysis
Cost Savings Opportunity
Most organizations with M365 E3 or E5 licenses are already paying for Entra ID P1 or P2, making Okta redundant:
- M365 E3: Includes Entra ID P1 (Conditional Access, MFA, SSO)
- M365 E5: Includes Entra ID P2 (Identity Protection, PIM, Access Reviews)
- Okta Workforce Identity: $3-6/user/month ($45K-$90K annually for 15K users)
- Annual Savings: $540K-$1.08M by eliminating Okta
Entra ID Architecture Design
Design your Entra ID tenant structure before migrating a single user:
| Design Decision | Recommended Approach | Why |
|---|---|---|
| User Provisioning | Entra Cloud Provisioning (not AD Connect) | Lighter, more familiar to Okta users, easier rollback |
| Conditional Access | Start with Okta-equivalent policies, refine later | Maintain security posture during transition |
| MFA Registration | Combined Security Info (not legacy per-user MFA) | Modern approach, better UX, required for passwordless |
| App Integration Method | Start with Linked SSO, migrate to federated SSO by wave | Zero downtime - users see apps before auth cutover |
| Group Strategy | Dynamic groups where possible, synced security groups for apps | Reduces manual maintenance, scales better |
Migration Wave Planning
Don't migrate all 15K users at once. Plan waves based on business units, locations, or risk tolerance:
Sample Wave Structure for 15K Users
- Pilot (Week 1-3): 100 IT team members + 200 volunteers (300 total)
- Wave 1 (Week 4-5): 1,000 users - Low-risk departments (HR, Finance)
- Wave 2 (Week 6-8): 2,500 users - Sales, Marketing
- Wave 3 (Week 9-11): 3,500 users - Product, Engineering
- Wave 4 (Week 12-14): 4,200 users - Customer Support, Operations
- Wave 5 (Week 15-17): 3,400 users - Remaining users + stragglers
Gap Time: 1 week between waves to address issues and tune configurations
Communication Plan
User communication is as important as technical execution. Plan for:
| Timeline | Communication | Audience |
|---|---|---|
| 4 weeks before migration | Project announcement, timeline, benefits | All users |
| 2 weeks before wave | What's changing, new login URL, MFA re-enrollment | Wave-specific users |
| 1 week before wave | Step-by-step migration instructions with screenshots | Wave-specific users |
| Day of migration | Migration complete, new login portal link, helpdesk info | Wave-specific users |
| 1 week after wave | Survey feedback, known issues, tips & tricks | Wave-specific users |
Rollback Plan
Hope for the best, plan for the worst. Your rollback procedure must be tested and documented:
Plan for Vendor Delays
20-30% of your apps will require vendor involvement to update SSO configurations. Vendors take 1-4 weeks to respond. Action: Open tickets with all vendors 6 weeks before their wave, not when users are migrating.
Pilot Group Selection
Your pilot group makes or breaks the migration. Choose wisely:
Ideal Pilot Composition (300 users)
- 100 IT Staff: Technical users who can provide detailed feedback and troubleshoot
- 100 Power Users: Heavy app users who touch most integrations
- 100 Regular Users: Representative of average user experience
- Coverage: Include users from each department, location, and device type (Windows, Mac, mobile)
Pilot Success Criteria
Define clear success metrics before starting the pilot:
| Metric | Target | Red Flag |
|---|---|---|
| User Login Success Rate | >98% | <95% |
| App Access Success Rate | >95% | <90% |
| MFA Enrollment Completion | >90% within 3 days | <80% |
| Help Desk Tickets per 100 Users | <5 tickets | >10 tickets |
| User Satisfaction Score | >4.0/5.0 | <3.5/5.0 |
| P1 Incidents | 0 | >0 |
Pilot Application Selection
Don't migrate all 150 apps in the pilot. Start with 10-15 strategic apps:
Must-Have Apps (5)
M365 (Email, Teams, SharePoint), Company Intranet, HR System
High-Usage Apps (5)
Salesforce, Slack, Jira, Zoom, DocuSign
Complex Apps (3-5)
Custom SAML apps, legacy apps, vendor-managed SSO
Pilot Week-by-Week Timeline
Real Pilot Experience - Financial Services Company
15,000 users, 180 applications
- Pilot group: 250 users across 12 departments
- Duration: 4 weeks (extended 1 week due to MFA issues)
- Issues found: 8 apps required vendor updates, 2 apps unsupported in Entra ID Gallery
- Help desk tickets: 12 (4.8% of users) - mostly MFA re-enrollment questions
- Outcome: Refined procedures saved 30+ hours in later waves
Common Pilot Issues
| Issue | Frequency | Resolution |
|---|---|---|
| Users can't find apps in MyApps portal | High | Add apps to Entra ID, assign users, train on myapps.microsoft.com |
| MFA prompts every login instead of Remember Device | High | Configure Session Controls in Conditional Access policies |
| App SSO fails with "AADSTS50011" error | Medium | Reply URL mismatch - verify app configuration |
| Mobile users can't authenticate | Medium | Ensure Authenticator app enrolled, not just SMS |
| Specific app vendor says SSO change requires downtime | Low | Coordinate maintenance window, notify users in advance |
Linked SSO Strategy (Zero Downtime Secret)
The Linked SSO approach is how you achieve true zero-downtime migration:
How Linked SSO Works
- Phase 1: Add all apps to Entra ID as "Linked" SSO type
- Result: Apps appear in users' MyApps portal at myapps.microsoft.com
- Authentication: When user clicks app, they're redirected to Okta for authentication
- User Experience: Seamless - users access apps from MyApps but Okta still handles SSO
- Phase 2: Migrate apps from Linked to Federated SSO in waves
- Cutover: Individual apps cut over to Entra ID auth without user disruption
SAML App Migration Steps
For each SAML 2.0 application (the most common SSO type):
OIDC / OAuth App Migration
Modern apps using OpenID Connect are easier to migrate:
| Step | Okta | Entra ID |
|---|---|---|
| Application Type | OIDC Web App or SPA | App Registrations โ New Registration |
| Client ID | Provided by Okta | Application (client) ID (auto-generated) |
| Client Secret | Generate in Okta | Certificates & Secrets โ New Secret |
| Redirect URIs | Configured in Okta | Authentication โ Redirect URIs |
| Token Endpoint | https://{okta-domain}/oauth2/v1/token | https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token |
| Authorization Endpoint | https://{okta-domain}/oauth2/v1/authorize | https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize |
Legacy Application Challenges
Apps That Require Special Handling
- Header-Based Authentication: Apps using Okta Access Gateway โ Migrate to Entra Application Proxy or Datawiza
- Kerberos/Windows Integrated Auth: Configure Entra Application Proxy with Kerberos Constrained Delegation
- Form-Based Auth: Limited support in Entra ID โ Consider password vaulting or custom app integration
- RADIUS/LDAP: Use Azure MFA NPS Extension or third-party RADIUS proxy
- No SSO Support: ~10-15% of apps don't support federation โ Document for future replacement
Application Migration Priorities
Migrate apps in this order to minimize risk:
- M365 Apps First: Email, Teams, SharePoint (usually already on Entra ID)
- High-Usage, Low-Complexity: Salesforce, Slack, Zoom - well-documented migrations
- Medium-Usage Gallery Apps: Apps with native Entra ID support
- Custom SAML Apps: Internal apps with IT-controlled configuration
- Vendor-Managed Apps Last: Apps requiring vendor updates (longest lead time)
- Legacy Apps Never: Header-based, Kerberos apps - migrate only if necessary
Provisioning Options Comparison
| Method | Use Case | Setup Complexity | Sync Speed |
|---|---|---|---|
| Entra Cloud Provisioning | Most Okta customers - lightweight, cloud-based | Low | 20-40 min |
| Azure AD Connect | Complex hybrid environments, extensive customization | Medium | 30 min |
| Entra ID Direct Provisioning | Cloud-only, no on-prem AD | Very Low | Real-time |
Recommended: Entra Cloud Provisioning
For organizations migrating from Okta, Entra Cloud Provisioning is the best choice:
- Lightweight agents installed near domain controllers (like Okta Directory Sync)
- No complex server infrastructure (unlike AD Connect)
- Faster deployment (2-3 days vs 1-2 weeks)
- Easier rollback if needed
- Cloud-managed configuration
User Attribute Mapping
Map Okta attributes to Entra ID equivalents:
| Okta Attribute | Entra ID Attribute | Notes |
|---|---|---|
| login | userPrincipalName | Primary identifier |
| Email address | ||
| firstName | givenName | - |
| lastName | surname | - |
| displayName | displayName | - |
| department | department | - |
| manager | manager | Requires DN in Entra ID |
| groups (Okta) | memberOf (Entra ID) | Group membership |
| Custom attributes | extensionAttribute1-15 | Limited to 15 custom attrs |
Group Migration Strategy
Don't manually recreate 500+ groups. Use automation:
Group Migration Best Practices
- Migrate groups before apps (apps assign to groups, not individual users)
- Use dynamic groups in Entra ID where Okta used profile-based rules
- Document group naming conventions to maintain consistency
- Audit group memberships post-migration (compare Okta vs Entra ID)
MFA Re-enrollment Reality
Bad news: Users must re-enroll MFA in Entra ID. Okta MFA factors don't transfer.
User Impact
Every user will need to:
- Enroll Microsoft Authenticator app (or SMS/voice as backup)
- Scan QR code to set up TOTP
- Complete MFA challenge to verify enrollment
- Time required: 3-5 minutes per user
- Help desk impact: 5-10% of users need assistance
Recommended MFA Methods
| MFA Method | Security | User Experience | Recommendation |
|---|---|---|---|
| Microsoft Authenticator (push) | High | Excellent (one tap) | โ Primary |
| Microsoft Authenticator (passwordless) | Very High | Excellent (no password) | โ Future state |
| FIDO2 Security Key | Highest | Good (requires hardware) | โ ๏ธ High-risk users |
| SMS / Voice | Low | Fair (SIM swap risk) | โ ๏ธ Backup only |
| Legacy per-user MFA | Medium | Poor | โ Avoid |
MFA Enrollment Strategy
Phased Enrollment Approach
- Pre-Migration (2 weeks before): Send users instructions to enroll Microsoft Authenticator proactively
- Incentivize: "Enroll now for smoother experience" with IT support office hours
- Migration Day: Require MFA enrollment at first Entra ID login
- Grace Period: Allow 3-5 days for enrollment before enforcing
- Helpdesk Prep: Double staffing for first 3 days post-migration
Result: 60-70% of users pre-enroll, reducing migration day impact
Conditional Access Policies
Replicate Okta sign-on policies in Entra ID Conditional Access:
Migration from Okta Verify to Microsoft Authenticator
Create side-by-side comparison guide for users:
| Task | Okta Verify | Microsoft Authenticator |
|---|---|---|
| Download App | App Store: "Okta Verify" | App Store: "Microsoft Authenticator" |
| Setup | Scan QR from Okta portal | Scan QR from myapps.microsoft.com |
| Approve Login | Tap notification โ Approve | Tap notification โ Approve |
| Number Matching | Not supported | Enter number shown on screen (extra security) |
Capitalize on MFA Opportunity
Many organizations have messy Entra ID MFA configs (legacy per-user MFA mixed with modern Conditional Access). Use this migration to clean up and modernize:
- Disable all legacy per-user MFA
- Implement Conditional Access policies
- Enable Combined Security Info registration
- Plan for passwordless authentication rollout
When to Execute Rollback
Rollback Triggers
Execute immediate rollback if:
- >5% of wave users cannot login to Entra ID
- >10% of critical apps are inaccessible
- P1 incident affecting business operations
- Security vulnerability discovered in new configuration
- Executive decision to pause migration
Decision Window: Must decide within 2 hours of issue detection
Staged Rollout - Your Safety Net
Microsoft's staged rollout feature is the key to safe, reversible migration:
How Staged Rollout Works
- Create Entra ID group: "Entra-ID-Migrated-Users"
- Enable staged rollout for managed authentication
- Add pilot users to group โ They authenticate via Entra ID
- Users NOT in group โ Still authenticate via Okta
- Rollback: Remove users from group โ Instant revert to Okta
Rollback Time: 15-30 minutes from decision to users back on Okta
Rollback Procedure Step-by-Step
Partial Rollback vs Full Rollback
| Scenario | Rollback Type | Action |
|---|---|---|
| Single app not working | Partial (app-level) | Re-enable app in Okta, remove from Entra ID assignments |
| 10-20% of users impacted | Partial (user-level) | Remove specific users from staged rollout group |
| >20% of users impacted | Full wave rollback | Remove entire wave from staged rollout |
| Security incident | Full migration rollback | Rollback all waves, pause migration indefinitely |
Testing Rollback Before Production
Rollback Dry Run During Pilot
Practice rollback with pilot group before production waves:
- Day 10 of pilot: Announce planned rollback test
- Execute rollback: Follow procedure, time each step
- Validate: Confirm users can login via Okta
- Re-migrate: Add users back to staged rollout
- Document: Actual time vs expected, refine procedure
Benefit: Team gains confidence, finds gaps in procedure, validates 1-hour rollback window
Post-Rollback: Attempt #2
If you execute a rollback, here's how to prepare for second attempt:
- Root Cause Analysis: Document exact failure, not symptoms
- Fix Duration: Allow 1-2 weeks minimum to resolve issue properly
- Re-test: Validate fix with 5-10 users before full wave retry
- Communication: Be transparent with users about what was fixed
- Confidence Check: If team isn't confident, extend testing period
Top 10 Migration Gotchas
1. Azure AD Doesn't Support External IdP with Custom Domains
You CANNOT configure Okta as a federated IdP for custom domains in Entra ID. This breaks certain hybrid scenarios. Workaround: Use Azure AD B2B for external federation, not primary tenant domains.
2. Not All Gallery Apps Support Both SSO and Provisioning
An app may be in the Entra ID gallery for SSO but NOT support SCIM provisioning (or vice versa). Action: Check each app's documentation, plan for manual provisioning where needed.
3. Vendors Take 1-4 Weeks to Update SSO Configs
20-30% of apps require vendor to update SSO on their side. Vendors are slow. Action: Open tickets 6-8 weeks before migration, not during.
4. M365 Mail Routing Can Break
By default, M365 tries to route email internally for registered domains. If you have custom domain in Entra ID AND external email, mail routing breaks. Fix: Configure mail flow connectors properly before migration.
5. Hybrid Join Devices Stay with Okta Until Defederation
Azure AD Hybrid Joined devices will continue authenticating to Okta even after users migrate. Action: Keep Okta sign-on policy for hybrid join until domain fully defederated.
6. Legacy MFA Configurations Cause Conflicts
If you have old per-user MFA enabled in Entra ID AND modern Conditional Access, users get double-prompted. Fix: Disable ALL per-user MFA before migration, use only CA policies.
7. On-Prem AD Cleanup Required
Stale accounts, duplicate UPNs, invalid email addresses in on-prem AD will block cloud sync. Action: Run AD cleanup 4 weeks before migration: remove disabled users, fix UPN conflicts.
8. Group Membership Explosion in Entra ID
Okta group rules don't translate to Entra ID dynamic groups directly. Manual group assignments can explode. Fix: Convert to dynamic groups where possible, document group logic.
9. Mobile Device Management (MDM) Re-enrollment
Devices enrolled via Okta-managed MDM may require re-enrollment when switching to Entra ID. Impact: Users must wipe and re-provision mobile devices. Plan accordingly.
10. Certificate Expiration Tracking
Okta automatically rotates SAML certificates. Entra ID does NOT auto-rotate by default. Action: Set up certificate expiration monitoring (90-day alerts) or enable auto-rollover.
Lessons from Failed Migrations
| Failure Reason | % of Failures | Prevention |
|---|---|---|
| Inadequate testing in pilot | 35% | Extend pilot from 2 weeks to 3-4 weeks, test ALL app categories |
| Underestimated vendor response time | 25% | Open vendor tickets 6-8 weeks early, escalate non-responders |
| Poor user communication | 20% | Multi-channel comms (email, Slack, Teams, townhalls), 3+ weeks notice |
| No rollback plan | 10% | Document and TEST rollback during pilot, practice dry run |
| Legacy auth not addressed | 10% | Identify and disable legacy auth protocols 4 weeks before migration |
Success Factors from Completed Migrations
What Made Migrations Succeed
- Executive Sponsorship: VP-level sponsor who unblocks vendor delays and approves extended timelines
- Dedicated Team: 3-5 people working 50%+ time for 4-6 months (not "squeeze it in" project)
- Weekly Syncs: Status meetings with all stakeholders (IT, Security, Business Unit leaders)
- Robust Testing: 100% of app categories tested in pilot, not just "top 10 apps"
- User Feedback Loop: Survey after each wave, act on feedback before next wave
- Help Desk Prep: 2x staffing for 3 days post-wave, pre-written KB articles
- Timeline Buffer: Plan 20-30% buffer for unexpected delays
Essential PowerShell Scripts
1. Bulk User Migration Status Report
2. App Assignment Comparison (Okta vs Entra ID)
3. MFA Enrollment Checker
4. Certificate Expiration Monitor
Automation Opportunities
Save 100+ Hours with Automation
- User Provisioning: Use Microsoft Graph API to bulk-create users (saves 20-30 hours)
- Group Migration: Script group creation and membership (saves 40-50 hours)
- App Configuration: Terraform/PowerShell for app registration (saves 30-40 hours)
- Monitoring: Automated daily reports on migration status (saves 10-15 hours)
Final Recommendations
Okta to Entra ID migration is achievable with zero downtime if you follow a disciplined, phased approach with robust rollback procedures.
Key success factors: Thorough planning (4-5 weeks), comprehensive pilot testing (3-4 weeks), phased production rollout (10-14 weeks), and keeping Okta active as backup until 100% validated.
For 15,000 users with 150+ applications, expect 16-24 weeks total duration with a dedicated 3-5 person team.
Cost savings: $540K-$1.08M annually by eliminating redundant Okta licensing, plus reduced operational overhead.
Migration Checklist Summary
- โ Document current Okta environment (apps, users, groups, policies)
- โ Design Entra ID architecture (provisioning method, CA policies)
- โ Create migration wave plan (pilot + 4-5 production waves)
- โ Build communication plan (4 weeks notice, user guides)
- โ Test rollback procedure during pilot
- โ Open vendor tickets 6-8 weeks before migration
- โ Prepare help desk (2x staffing, KB articles)
- โ Execute pilot with 100-300 users for 3-4 weeks
- โ Roll out production waves with 1-week gaps
- โ Keep Okta active for 90 days post-migration