Salesforce rescue

US · Global

Connected apps that sign in as a person stop 20 Feb 2027: move, rebuild or retire

By Shivanath DevinarayananPublished 6 min read
Written forThe Salesforce owner with an org that isn't working“Our Salesforce org is stuck.”

The short answer

Which Salesforce connected app integrations stop working on 20 February 2027, and what do we do with each one?

Only the OAuth username-password flow stops. Salesforce enforces it on 20 February 2027 with no opt-out. Filter Login History for the subtype OAuth Username-Password, list each integration with an owner and what stops in the business, then give each a call: move, rebuild or retire. At Mindcat, we start a rescue week from that list.

A calendar page for 20 February with a gold login badge hanging by a string over a row of grey integration plugs

Takeaways

  1. 01Salesforce ends the OAuth username-password flow on 20 February 2027. Those integrations then cannot get tokens. There is no opt-out.
  2. 02Existing connected apps are not switched off. Only the sign-in method is.
  3. 03Login History, filtered to the subtype OAuth Username-Password, lists the integrations that sign in as a person.
  4. 04Client credentials runs as one Run As user. An integration that uses several usernames in one org needs the JWT bearer flow.
  5. 05Give every integration one call: move, rebuild or retire. One with no answer to what stops in the business is the rescue week.

If an integration in your Salesforce org signs in with a person's username and password, this is for you. On 20 February 2027 Salesforce stops that sign-in method, and Setup does not hand you a list of what uses it. You can build the list in an afternoon. This is not for you if every integration in your org is a vendor's managed package and the vendor has already confirmed its update.

What happens on 20 February 2027?

Salesforce stops one sign-in method for connected apps: the OAuth 2.0 username-password flow. Salesforce Help says it enforces the change on 20 February 2027, about 16 weeks from this post. After that date, "integrations that use the username-password flow can't obtain access tokens and stop working."

The failure is plain when it comes. The token request returns invalid_grant with the description "authentication failure". Login History shows the status "OAuth Username-Password Flow Disabled". Salesforce also says there is no opt-out, and that switching the flow back on is not a supported fix.

Nothing else is switched off. Salesforce says existing connected apps keep working. A connected app that signs in another way is not touched by this change.

Some orgs see it early. If the release update "Retirement of OAuth 2.0 Username-Password Flow for Connected Apps" is missing from Setup, then Release Updates, Salesforce says the flow is already blocked in your OAuth and OpenID Connect settings. A Trailblazer Community question from December 2025 is titled "Unable to Enable OAuth Username-Password Flow in Developer Org (Winter '26)". Its failure reason in Login History reads "Username-Password Flow Disabled".

Timeline: before the date check Setup, 20 Feb 2027 Salesforce enforces with no opt-out, after that token requests fail
What changes on the day.
ItemWhat it says
Enforcement date20 February 2027
AffectedConnected app integrations that use the OAuth 2.0 username-password flow
After the dateNo access tokens; token request fails with invalid_grant
Opt-outNone
Not affected by this changeExisting connected apps that sign in another way

How do you find the integrations that sign in as a person?

Ask Login History. In Setup, search for Login History, show the Login Subtype column, and look for the subtype "OAuth Username-Password". Salesforce gives the same check as a query:

SELECT Application FROM LoginHistory WHERE LoginSubType = 'OAuth Username-Password'

That returns the application names. It does not tell you who owns each one, who built it, or what the business loses when it stops. That part is your work, and it is the useful part.

An integration that runs once a quarter will not show in a short window. Pull the longest period you can, then ask whoever runs month-end and quarter-end jobs which ones they trigger.

Login History subtype OAuth Username-Password feeds five columns: application, signs in as, owner, vendor, what stops
Five columns for every integration.
  1. 01Filter Login History to the subtype OAuth Username-Password and list each application once.
  2. 02Next to each, write the username it signs in as. A person who has left, or a shared mailbox, is a flag.
  3. 03Write the owner: the one person who can say yes to a change.
  4. 04Write the vendor, or 'built in-house', or 'nobody knows'.
  5. 05Write one line: what stops in the business if this fails.
If three or more rows end in "nobody knows" or have no owner, our rescue and optimize work starts with exactly this list.

Which flow replaces it, and where does the move stick?

Salesforce names two replacements. For sign-in by a user, it points to the OAuth 2.0 web-server flow with the PKCE extension. For server-to-server integrations, it points to the client credentials flow.

Three things make a "simple" move slip, all from Salesforce Help:

  • One Run As user. Client credentials maps the integration to a single identity. If your client signs in as several usernames in one org, Salesforce says to use the JWT bearer flow instead.
  • The login address. The client credentials flow does not support calls to login.salesforce.com or test.salesforce.com. The client must call your My Domain URL, and for a sandbox its own My Domain URL.
  • The client code. Someone has to change the client to request tokens the new way. If the client is a vendor's managed package, Salesforce says the vendor must provide the external client app version before you can migrate, so you wait for it.

The first two are settings. The third needs a person who can open the code. That is why the owner column matters more than the flow name.

Which do you move, rebuild or retire?

Give every row one of three calls. This is our rule of thumb, not a Salesforce rule.

What you findThe callWhy
A server-to-server job, a named owner, a vendor or code that can changeMoveSwitch to client credentials, with its own Run As integration user. Give it a date before February.
Several usernames in one org, or the sign-in sits in a script, macro or tool nobody can openRebuildUse the JWT bearer flow or write it again, with an owner and a test.
A vendor's managed packageWait, with a dateAsk the vendor in writing when the update ships. Set a day to ask again.
Nobody can say what stops if it stopsRetireSwitch it off in a sandbox first, ask the people who use the data, write down why.
Four calls: move to client credentials, rebuild with JWT bearer, wait for the vendor, retire in a sandbox first
One call per integration.

A row with an owner and a clear answer is a task. A row with no owner is the real problem, because the deadline will not wait for someone to be found. If that is most of your list, it is a project and not a ticket.

What about the connected app itself?

Salesforce is also changing how apps are created, and owners often meet this change through that term. Salesforce Help says new connected apps can no longer be created in the user interface or the API since Spring '26, and that a new integration must be an external client app. Existing connected apps keep working, and Salesforce says end of support is coming, with no date in that article.

So a move may mean building the new sign-in as an external client app, not editing the old connected app. Plan for that when you size the work.

A person at a night desk pinning paper tags on a row of cable plugs, one tag glowing gold
One tag per integration, one owner each.

What would we do first?

At Mindcat, we start a rescue week from this list. We get read-only access on day 1, begin with Login History and the Run As users, and write one line per integration: who it signs in as, who owns it, what stops if it fails. The week ends with a written call, finish, cut or rebuild, with the reasons and the first fix. You can see a sample read, on an invented org, before you send us anything. We do not fix-price a rescue we have not assessed. If the list shows an integration pattern you want rebuilt properly, our Salesforce integration work and the integration patterns guide cover it.

Not for you if all your integrations are managed packages and the vendors have confirmed their updates. Check each date, and you are done.

Filed under

Salesforce rescuesalesforce username password flow disabledsalesforce oauth username password flow retirementsalesforce client credentials flow migration
Useful to someone on your team?

FAQ

Questions teams ask next

Which integrations does the 20 February 2027 change break?
Connected app integrations that use the OAuth 2.0 username-password flow. Salesforce says they cannot obtain access tokens and stop working. The token request fails with invalid_grant and the description authentication failure. Integrations that sign in another way, such as the web-server flow or the client credentials flow, are not affected by this change.
Can we opt out or turn the flow back on?
No. Salesforce Help says there is no opt-out after 20 February 2027, and that turning the flow back on is not a supported fix. If the release update called Retirement of OAuth 2.0 Username-Password Flow for Connected Apps is missing from Setup, then Release Updates, the flow is already blocked in your org.
How do we find which integrations use the flow?
In Setup, open Login History, show the Login Subtype column, and look for OAuth Username-Password. Salesforce also gives a query: SELECT Application FROM LoginHistory WHERE LoginSubType = 'OAuth Username-Password'. Then add the owner, the vendor and what stops in the business if it fails.
What replaces the username-password flow?
Salesforce names two: the OAuth 2.0 web-server flow with PKCE for sign-in by a user, and the client credentials flow for server-to-server integrations. Client credentials maps to one Run As user, so an integration that uses several usernames in one org needs the JWT bearer flow.

Sources

  1. 01Salesforce Help: Security Change, Retirement of the OAuth 2.0 Username-Password FlowAccessed 02 Nov 2026
  2. 02Salesforce Help: OAuth username-password flow retirement for connected appsAccessed 02 Nov 2026
  3. 03Salesforce Help: Migrate from the username-password flow to client credentials or JWT bearerAccessed 02 Nov 2026
  4. 04Salesforce Help: New Connected Apps Can No Longer Be Created in Spring '26Accessed 02 Nov 2026
  5. 05Trailblazer Community: Unable to Enable OAuth Username-Password Flow in Developer Org (Winter '26)Accessed 02 Nov 2026
Shivanath Devinarayanan, founder of Mindcat

Written by

Shivanath Devinarayanan

Founder, Mindcat Consulting · Salesforce MVP Hall of Fame

Builds and runs AI agents in production. Reads every brief that comes in and signs the work that goes out.

About Shivanath

Rescue and Optimize · the written assessment

We work in real estate and right now, our Salesforce org is stuck.

Industry
Problem

Brief: Real estate. Leads from portals and WhatsApp. Follow-up has no owner. The org is stuck. Stabilise first, then decide what is worth finishing. From: /blog/salesforce-connected-app-login-retired.