Your Entra-to-Salesforce provisioning breaks on December 1. One permission fixes it
Entra ID signs in to Salesforce through SOAP API login() to create and disable your users. From December 1, 2026, Salesforce turns that sign-in away unless the account has Use Any API Auth. The fix takes minutes, but more dates follow it, and you'll want to test before joiners and leavers stop syncing.
part 10 of 10 · Identity security, from the ground upthe ideaNo Use Any API Auth, no sign-in, no joiners or leavers
after reading, you can- Spot whether Entra ID provisions your Salesforce orgs, and find the account it signs in as
- Grant Use Any API Auth on the integration profile, then prove it works with Test Connection
- Plan for idle sandboxes and token resets now, and for the SOAP login() retirement in Summer '27
Entra ID creates and switches off Salesforce users by signing in as one Salesforce account, with a password, through an old Salesforce API. From December 1 that sign-in fails unless the account holds one more permission. It takes minutes to add. Do it this month, test it, and then start thinking about Summer '27, when Salesforce retires that API.
Your Salesforce joiners and leavers run through one account, and it's about to get locked out
Plenty of companies let Microsoft Entra ID, their company directory, look after Salesforce accounts. A new hire gets a Salesforce login the same day, and when someone leaves, the account gets switched off. Behind that sits one Salesforce account, usually an admin, signing in with a username, a password and a security token. From December 1, 2026, Salesforce only lets that kind of sign-in through if the account holds a permission called Use Any API Auth. People can still use the account in a browser, but Entra gets turned away. New starters don't show up in Salesforce, and leavers keep their accounts until someone notices.
It's like the building's night porter who lets new staff in and takes keys back from people who've left. The landlord now wants porters to carry a specific pass. Your porter still has the uniform and the keys, but the gate won't open without the pass, and nobody's handing back keys in the meantime.
- Teams provisioning Salesforce from Entra ID
- Salesforce admins who own integration users
- Anyone with Salesforce sandboxes wired to Entra
- IT providers who set up Entra for a client
Why it matters to you
The error is easy to fix. The trouble is everything that quietly stops while it's there. Entra's provisioning job is what switches off a leaver's Salesforce account, and once its sign-in fails, nobody's account gets switched off. Someone who can still log in to Salesforce directly with a password keeps your customer data at their fingertips. Even when they can't, the licence is still assigned to them and the account turns up as active in the next access review.
It also fails quietly. Microsoft's own tutorial warns that Salesforce Login History can show successful sign-ins for the integration account while Entra's Test Connection still fails. So the Salesforce admin looks, sees green, and closes the ticket. Behind Entra's "credentials are invalid" message, the underlying error is INSUFFICIENT_ACCESS.
Entra doesn't keep trying forever, either. When credentials stop working, the provisioning service puts the app in quarantinedefinitionWhat Entra does with a provisioning job that keeps failing. It runs less and less often, and after four weeks it's switched off., cuts its runs back to once a day, and disables the job altogether after about four weeks. A failure on December 1 that nobody spots turns into a switched-off provisioning job around the end of December or early January, and switching it back on with Restart provisioning means a full initial cycle.
-
01 Entra signs in to Salesforce
Each cycle, the provisioning service calls SOAP API login() as the Admin Username account, with its password and security token.
-
02 Salesforce checks the permission
From December 1, login() only works for users who hold Use Any API Auth. The integration account doesn't have it.
-
03 Sign-in is rejected
Entra tells you your Salesforce.com credentials are invalid, which sends people off to reset a password that was fine. Salesforce's real answer is INSUFFICIENT_ACCESS.
-
04 The app goes into quarantine
Runs drop to once a day. Nobody new gets a Salesforce account, and nobody who's left loses one.
-
05 Four weeks later, the job stops
If nobody fixes the credentials, Entra disables the provisioning job. Unless someone set a notification address, nobody gets told.
-
06 Grant the permission first
Add Use Any API Auth to the integration account's profile before December 1 and run Test Connection. The job carries on and nobody downstream notices.
For engineers: the Entra gallery connector for Salesforce and Salesforce Sandbox authenticates through SOAP API logindefinitionAn old Salesforce sign-in call that takes a username and a password (often with a security token) and hands back a session. Salesforce is retiring it.() with the Admin Username, Admin Password and Secret Token fields. Salesforce says login() doesn't exist from API 65.0 on, and the older versions lose it in Summer '27. So whichever version the connector calls, its way in has an end date. That's why this post has two deadlines, one urgent and one coming later.
What changed, and what's coming after it
What Salesforce changed about SOAP login(), and where Entra gets caught
Salesforce enforces it in all orgs and environments, sandboxes included. A user without it gets rejected. Entra's integration account is exactly that kind of user.
Orgs created in Winter '26 or later start with login() disabled. An admin has to switch it on in Setup under User Interface, and that page won't let you switch it back off.
Sandboxes from 15 December 2026, production from 31 January 2027. Logins from a trusted range wider than /8 for IPv4 or /29 for IPv6 need a token or mTLS. Entra already sends the token.
The dates match the token rule. In a one-time check, Salesforce turns login() off in any org with no SOAP login() call in the previous six months. One call keeps it on, so busy orgs won't feel it.
Salesforce says login() doesn't exist from API 65.0, and the older versions lose it in the Summer '27 release. It wants integrations on External Client Apps and OAuth. For Entra's connector that's Microsoft's job, and its tutorial doesn't say how yet.
Both the Salesforce and Salesforce Sandbox tutorials now list Use Any API Auth and SOAP login() as things you need before you start. They also cover INSUFFICIENT_ACCESS under common issues, and that's the error you'll actually see.
Only the first item has to be done this month, and for most tenants it's a few minutes in Salesforce Setup. The second matters if your Salesforce org is newer, or if someone has already switched login() off to get ahead of the retirement. In either case, Entra's connection fails today, December or no December.
The idle check is the one people tend to miss. Production provisioning runs all day, so it keeps login() alive. A sandbox that's wired to Entra but hasn't synced since spring is a different story. If nothing in that sandbox has called login() in six months, Salesforce turns it off on December 15, and the next time someone tests a provisioning change there, it fails for reasons that have nothing to do with their change.
| Rule | Starts | Applies to | Effect on Entra provisioning |
|---|---|---|---|
| Use Any API Auth required for login() | 1 Dec 2026 | All orgs, including sandboxes | Sign-in fails unless the Admin Username account has the permission |
| SOAP login() disabled by default | Winter '26 orgs onward | Orgs created in Winter '26 or later | Fails until an admin enables SOAP API login() under User Interface |
| Token or mTLS from broad IP ranges | 15 Dec 2026 / 31 Jan 2027 | Sandboxes / production | Entra sends the security token, so it should pass. Keep the token current |
| Idle orgs lose login() | 15 Dec 2026 / 31 Jan 2027 | Sandboxes / production with no login() calls in six months | Idle sandboxes stop accepting Entra's sign-in |
| SOAP login() retired | Summer '27 | API versions 31.0 to 64.0 | Microsoft hasn't said in its tutorial what the connector will use instead |
The dates for Salesforce provisioning from Entra
- Winter '26New orgs start with login() off
Orgs created from this release on start with SOAP API login() off. Someone has to switch it on before Entra can connect at all.
- 30 Oct 2026Microsoft updates its tutorials
Microsoft adds Use Any API Auth to the prerequisites in both tutorials, which also list SOAP login(). Runbooks copied from older versions of the tutorial may not mention either.
- 1 Dec 2026Use Any API Auth enforced
It applies in every org and sandbox. An account without it can't sign in through SOAP login() any more.
- 15 Dec 2026Sandbox token rule and idle check
Broad IP ranges need a token, and idle sandboxes lose login().
- 31 Jan 2027Production token rule and idle check
The same two rules reach production orgs.
- Summer '27SOAP login() retired
API versions 31.0 to 64.0 lose login(). Watch for Microsoft's plan for the connector before then.
Your options, side by side
There are really only two choices for December, and one of them is a trap. The third choice, getting off SOAP login() altogether, isn't yours to make for the gallery connector. Salesforce says to move custom code to External Client Apps with OAuth, using the JWT bearer or client credentials flow for server-to-server work. For a vendor's connector, its advice is to ask the vendor for a version that supports that.
- Provisioning sign-in fails on 1 December
- Salesforce Login History may still look fine, so whoever checks it closes the ticket
- New joiners wait for Salesforce access while someone works out why
- Leavers keep active Salesforce accounts, and nobody takes their licences back
- Four weeks in quarantine and Entra turns the job off. Someone then has to restart it by hand
- A profile change on one integration account
- Test Connection tells you it works while there's still time to fix it
- Joiners and leavers keep syncing through December
- You'll turn up old sandboxes and stale tokens while they're still cheap to deal with
- That leaves months before Summer '27, so the bigger move doesn't have to be rushed
Microsoft's tutorial asks for an account with Manage Users, and Manage Users switches on a long list of other admin permissions. The account was already powerful. Use Any API Auth doesn't change that much. What it does do is make this account visible again, because you're touching it, and that's a good moment to check who knows its password and where the token is kept.
Find every login() caller before Salesforce does
Entra may not be the only thing still signing in this way. Data loaders, older middleware and scheduled scripts can do it too, and they all hit the same wall on December 1. Salesforce points at two places to look, and you won't need new tools for either.
Inventory the SOAP login() users in each org
- 01Find the Entra account first
In the Entra admin center, open Enterprise apps, then your Salesforce app, then Provisioning. Note the Admin Username. Do it for every Salesforce and Salesforce Sandbox app, since each one can use a different account.
- 02Read Login History
In Salesforce, filter Login History for login type Other Apex API or Partner Product, with login subtype SOAP API. The API type shows as SOAP Enterprise, SOAP Partner or SOAP Tooling. Each user there needs the permission or a new way in.
- 03Pull the API Total Usage event log
If you have event log files, the API Total Usage log shows SOAP calls by user. Check how far back your logs go before you rely on them, because a job that runs once a year can hide outside that window.
- 04Match users to owners
Write down who owns each integration user and which system uses it. Anything nobody claims is a candidate to switch off, in a change window, after you check what calls it.
- 05Grant the permission
Add Use Any API Auth to each account that still needs SOAP login(). For the Entra account, follow Microsoft's tutorial and set it on the profile itself.
- 06Test from Entra
Go back to the Provisioning page and run Test Connection. Then provision one test user on demand and read what the provisioning log says about it.
What to do now, by role
Who does what before 1 December
- Ask your IT lead whether Entra ID creates and switches off your Salesforce accounts. If it does, find out who owns that setup.
- Get it in writing that the integration account has Use Any API Auth and that Test Connection passed afterwards. A screenshot will do.
- If an IT provider runs it, put both questions to them in writing with a date.
- Filter Login History on SOAP API logins. Every user that turns up there is an integration someone depends on.
- Add Use Any API Auth to the Entra integration account's profile, in production and every sandbox.
- Newer org? Look in User Interface settings and switch on SOAP API login(). Orgs from Winter '26 on start with it off.
- Run Test Connection on every Salesforce and Salesforce Sandbox provisioning app. Each one can sign in as a different account.
- Put a shared inbox in each app's notification email. Otherwise a quarantine alert goes to nobody.
- Provision one test user on demand and read its log entry. If that user lands in Salesforce with the right profile, the whole path works.
- Put the integration account in your access reviews. If nobody owns it, that's the first finding.
- Ask what happens in Summer '27, when Salesforce retires SOAP login(). Someone should own that answer now.
- Check Entra audit logs for quarantine events on Salesforce apps after 1 December.
Make the next Salesforce change boring
This change is small, but it points at a weak spot. A powerful Salesforce account signs in with a password and a token that only change when someone remembers. When the password is reset, Salesforce issues a new token, and provisioning breaks until someone pastes it into Entra. The fixes below make that account easier to see and harder to lose track of.
Today: one admin account nobody watches
A setup we'd worry about. Entra signs in as a System Administrator with a token last set at go-live, and quarantine emails go nowhere.
After: an owned integration account
Same connector, own account. The token sits in a vault with a date on it, and when the job fails, a team hears about it.
Durable fixes, each tied to this change
- 01Use one dedicated integration account
Give Entra its own Salesforce user, not a person's admin login. When that person leaves, provisioning shouldn't leave with them.
- 02Keep the password and token in a vault
Keep both in a vault with an owner and a rotation date. Resetting the password gets you a new token, so treat the reset and the Entra update as one change.
- 03Point quarantine alerts at a team
Point the notification email at a shared inbox someone actually reads. Entra sends one email when an app goes into quarantine and another if the reason changes, and that's all you get.
- 04Retire sandbox apps you don't use
An idle sandbox connection breaks on 15 December anyway. Delete the ones nobody needs, and run the rest at least once a quarter.
- 05Track the Summer '27 retirement
Put a review date in your calendar for Microsoft's Salesforce tutorial and Salesforce's retirement article. If the connector changes, you want months of warning, not days.
If it goes wrong
If Salesforce users stop syncing, fix the sign-in first, then go back for the leavers
Usually it's one permission or one token. The bigger job is cleaning up what didn't sync while it was broken.
- 01Confirm the causefirst hour
- Run Test Connection on the Entra Salesforce app. If it says the credentials are invalid, check for INSUFFICIENT_ACCESS in the error detail.
- Don't close the ticket because Salesforce Login History looks clean. Microsoft says it can show success while the connection is still failing.
- 02Fix the sign-infirst hour
- Add Use Any API Auth to the Admin Username account's profile, then run Test Connection again. If the error was INSUFFICIENT_ACCESS, that should be the whole fix.
- Newer orgs, from Winter '26 on, start with SOAP API login() off. If yours is one, switch it on in User Interface settings and test again.
- Was the password reset lately? Salesforce sends a new token when that happens, and Entra still has the old one in Secret Token.
- 03Get out of quarantinefirst day
- Filter Entra's Audit Logs on the Quarantine activity. That shows when the job went into quarantine, which you'll need for the clean-up.
- Once the connection works, the job leaves quarantine on its next good cycle. If you use Restart provisioning in the portal instead, expect a full initial cycle, which takes longer.
- 04Clean up the gapfirst day
- Pull the list of people who left while it was down. Check each of their Salesforce accounts is actually disabled.
- Check that people who joined in the same window now have Salesforce accounts with the right profile. Some of them have been waiting.
- If a leaver's account was still live, look at what it did after they left. Usually it's nothing, but you want to know.
- 05Record and preventfirst week
- Write down when it failed, when it was noticed and what slipped through. Auditors will ask.
- Set the notification email and put the account in your access reviews. Next time it fails, someone hears about it the same day.
What this looks like in practice
The three companies below are made up. Each one is a setup you could easily find in a tenant that provisions Salesforce from Entra, so use them as a checklist for your own.
Three Salesforce setups you might recognise
- the setup
- A mid-size distributor provisions Salesforce from Entra ID. The Admin Username is the Salesforce admin's own System Administrator login, set up three years ago.
- what happens
- On 1 December Test Connection fails and the job slips into quarantine. Two people leave that month and keep their Salesforce accounts. Nobody sees the quarantine email, because nobody ever set a notification address.
- what to do
- Move provisioning to a dedicated integration user with Use Any API Auth on its profile, set the notification email, and test before December.
- the setup
- A software company has one production org and four sandboxes, each wired to its own Entra Salesforce Sandbox app. Two of the sandboxes haven't synced since spring.
- what happens
- Production gets the permission and keeps going. On 15 December the idle check turns off SOAP login() in the two quiet sandboxes. When someone later tests a new attribute mapping there, it fails for a reason that has nothing to do with the mapping.
- what to do
- Grant the permission in every sandbox, not only production. Delete the sandbox apps nobody uses and run the rest on a schedule.
- the setup
- A business unit stood up a new Salesforce org this year and wants Entra to provision it. The admin follows an older internal runbook.
- what happens
- Test Connection fails from day one. The org was created after Winter '26, so SOAP API login() is off, and the runbook doesn't mention Use Any API Auth.
- what to do
- Switch on SOAP API login() under User Interface and grant Use Any API Auth on the integration profile. Then fix the runbook so the next person follows Microsoft's current tutorial.
How Cohash helps
We go app by app through your Entra tenant and user by user through Login History, and make the permission and token changes with your Salesforce admins. Each integration account ends up in your access reviews with an owner, and you get a written plan for Summer '27. The Microsoft Entra ID page and Salesforce page cover the wider work. You can bring in identity engineers for the clean-up, or ask for an assessment if you'd rather someone looked first.
What to take from this
- 01
From 1 December 2026, any user without Use Any API Auth gets turned away at SOAP API login(). Sandboxes are no exception.
- 02
That's how Entra's Salesforce connector gets in. Give the Admin Username account the permission and run Test Connection while there's time.
- 03
Don't rely on Salesforce Login History. Check the error on the Entra side.
- 04
Set a quarantine notification email. Entra switches off a job that sits in quarantine for four weeks, and without the email nobody hears about it.
- 05
With Summer '27, Salesforce removes SOAP login() from API 31.0 to 64.0. Ask Microsoft what the connector will use, well before then.
01Do I need to do anything if Entra ID provisions our Salesforce users?
Yes, one thing. Give the Salesforce account in Admin Username the Use Any API Auth permission before 1 December 2026, then run Test Connection. Entra signs in through SOAP API login(), and after that date Salesforce won't let an account without it in.
02What is Use Any API Auth in Salesforce?
It's a Salesforce user permission. From 1 December 2026, you need it to sign in through SOAP API login(). Salesforce says it can come from a profile or a permission set, but for the Entra account Microsoft's tutorial says to put it on the profile.
03Does this affect Salesforce single sign-on through Entra?
Not the way people sign in. SAML single sign-on is set up separately from provisioning. This change hits the provisioning job that creates and disables accounts, because that job signs in to Salesforce with a username, password and token.
04Does it apply to sandboxes?
Yes, sandboxes too. Salesforce checks for Use Any API Auth everywhere, and Microsoft's Sandbox tutorial says the same. Sandboxes also get the token and idle checks about seven weeks before production does, so start there.
05Our password and token are right, so why does Test Connection still fail?
After 1 December, it's usually a missing Use Any API Auth permission. Look for INSUFFICIENT_ACCESS in the error detail. If your org was created in Winter '26 or later, SOAP API login() might also be switched off under User Interface.
06Will Entra's Salesforce connector keep working once Salesforce retires SOAP login() in Summer '27?
Salesforce retires login() in API versions 31.0 to 64.0 with the Summer '27 release. Microsoft's tutorial doesn't yet say what the connector will use after that. Keep an eye on it, and ask Microsoft support if you need an answer for planning.
07Someone else set up Entra for us. What do we ask them?
Ask whether Entra provisions your Salesforce orgs, which account it uses, whether that account has Use Any API Auth, and whether Test Connection passed after the change. Ask where quarantine alerts go.
Three questions, about a minute
Pick an answer and we'll tell you if it's right, and why it is or isn't. The score stays in this browser.
-
Q1It's 2 December. Entra says the Salesforce credentials are invalid, yet Login History shows the integration account signing in. What do you check first?
show the answer
B. Whether the account has Use Any API Auth Microsoft's tutorial warns about exactly this. Login History can look fine while the connection fails with INSUFFICIENT_ACCESS, and after 1 December a missing permission is the likely reason.
-
Q2You've granted the permission and production works. Then a sandbox app that hasn't run since spring fails in late December. What's going on?
show the answer
C. Salesforce's idle check switched SOAP login() off in that sandbox on 15 December From 15 December, sandboxes with no SOAP login() calls in the past six months lose login(). An idle sandbox connection is exactly that case.
-
Q3Your provisioning job sat in quarantine all December and nobody noticed. Which setting would have told someone on the first day?
show the answer
A. Setting a notification email in the app's provisioning properties Entra sends one email when an app goes into quarantine, and only to the notification address in the provisioning properties. Without that, the job drops to once a day and stops after four weeks.