On December 31, 2025, Salesforce officially ended support for Workflow Rules and Process Builder. Your existing rules still fire — for now. But Salesforce will not fix bugs in them, will not support them when they break after a platform update, and has made clear that the long-term future is Flow.

The admins who are going to get paged at 2 AM aren't the ones who haven't started migrating yet. They're the ones who have migration half-done: the rules with recursive update loops that were too confusing to touch, the time-dependent actions that nobody remembers what they do, the cross-object chains that seem to work until one edge case in the outbound message queue doesn't.

Half-migrated is more dangerous than not-started. At least a Workflow Rule you haven't touched is predictable. A Flow that was built to replace a rule but didn't account for the recursion guard is a governor limit bomb waiting for the next data load.

This post gives you a structured audit framework — five steps — to inventory every automation in your org, score it for migration risk, detect conflicts, estimate the effort, and sequence the migration so you're not guessing what to tackle first.

And when you're done reading, you can run the free Luxera Cloud Migration Auditor to have this framework applied automatically to your org's actual metadata.

Why the "Migrate to Flow" Tool Isn't Enough

Salesforce ships a Migrate to Flow tool in Setup → Process Automation. It's a real tool and it handles the straightforward cases correctly: simple field-update-only Workflow Rules with immediate actions and no cross-object dependencies. For those, it does the mechanical work of creating an equivalent before-save Record-Triggered Flow, and it does it well.

The problem is what it doesn't do.

It doesn't surface risk patterns. A Workflow Rule with time-dependent actions that re-evaluate after each field update — creating a recursive loop — migrates mechanically but breaks under data loads. The tool doesn't warn you. It converts the syntax; it doesn't audit the behavior.

It doesn't detect conflicts. If you have three Workflow Rules on the same object that each update the same field under overlapping conditions, the migration tool converts each one independently. It doesn't tell you that all three will now fire in unpredictable order in a single transaction, or that two of them will stomp on the other's field value.

It doesn't estimate effort. Walking into your migration backlog with a list of 47 active Workflow Rules and no sense of which ones are 15-minute jobs versus 3-week projects is how migrations stall. The native tool gives you no complexity scoring.

It doesn't handle outbound messages. Outbound message actions can't be migrated to Flow at all — they have no equivalent. If you have Workflow Rules with outbound messages, the tool will skip them and you won't know unless you read the fine print.

The Migrate to Flow tool is a conversion utility. What most orgs need first is an audit: a full picture of what they have, what's risky, what conflicts with what, and how to sequence the work. That's what this framework is.

The 5-Step Workflow Rule Migration Audit

Step 1: Inventory — Map Every Active Automation

Before anything else, build a complete inventory of every active Workflow Rule and Process Builder process in your org.

For Workflow Rules: Setup → Process Automation → Workflow Rules → filter by Active. Export to CSV via a SOQL query:

SELECT Name, TableEnumOrId, Description, CreatedDate, LastModifiedDate,
       CreatedBy.Name
FROM WorkflowRule
WHERE Active = true
ORDER BY TableEnumOrId, Name

For Process Builder: Setup → Process Automation → Process Builder → filter by Active.

Your inventory spreadsheet should capture for each rule: object, name, trigger type (record created / record edited / time-based), action types (field update, email alert, task creation, outbound message, Apex submission), number of time-based actions, cross-object references, and whether it uses ISCHANGED() or ISNEW() in its criteria — both of which require special handling in Flow.

Most orgs discover at this step that they have more active automations than they realized. The average enterprise org with 5+ years of Salesforce history has 60–120 active Workflow Rules, half of which nobody currently knows the business purpose of. Inventory before you migrate. You will find rules you can simply deactivate because the process they support was discontinued years ago.

Luxera Cloud Migration Auditor — Step 1: The auditor pulls your complete active automation inventory from your org's metadata and presents it grouped by object, with action type breakdown and creation/last-modified dates. The "last modified" date is the fastest signal for spotting rules that are likely candidates for deactivation rather than migration.

Step 2: Risk-Score — Flag the Rules That Can Break You

Not all migrations carry equal risk. Risk-scoring before you build anything tells you where to invest the extra time and where the mechanical migration tool is probably fine.

High-risk patterns to flag:

Low-risk patterns (Migrate to Flow tool is likely sufficient):

Luxera Cloud Migration Auditor — Step 2: The auditor scores every active rule S/M/L/XL by risk pattern. High-risk flags (recursion indicators, outbound messages, cross-object chains) are surfaced per rule with the specific pattern that triggered the flag. You don't have to read every rule manually.

Run the Free Migration Audit on Your Org

Get your complete automation inventory, risk scores, conflict map, effort estimate, and migration sequence — automatically applied to your org's actual metadata.

Open the Free Migration Auditor →

Step 3: Conflict Detection — Find the Overlapping Rules

Multiple Workflow Rules on the same object and trigger condition interact with each other. In Workflow Rules, Salesforce evaluates them in alphabetical order by name. In Flow, multiple record-triggered Flows on the same object run in an order you control via trigger ordering — but only if you've thought about it.

Conflicts to look for:

Same-field, overlapping conditions. Rule A sets Status to "In Progress" when Priority = High. Rule B sets Status to "Escalated" when Priority = High AND Account.Type = "Enterprise". If a record matches both conditions, which value wins depends on alphabetical order. Migrating both rules to Flow without checking this will produce a different execution order.

Double-action conflicts. Rule A sends an email alert on record creation. Rule B also sends an email alert on record creation with slightly different criteria. In production, some records trigger both alerts — sending the same customer two emails. This is often not caught until a customer complains. Conflict detection surfaces these before you migrate and accidentally make them worse.

Re-evaluation chains that produce infinite loops. Rule A updates Field X. This triggers re-evaluation, which causes Rule B to fire. Rule B updates Field Y. This triggers re-evaluation, which causes Rule A to fire again. Identifying these chains requires tracing the re-evaluation graph across all active rules on the object — not something you can do by reading rules one at a time.

Luxera Cloud Migration Auditor — Step 3: The auditor builds the overlap graph for all active rules per object. It identifies field conflicts (same field, overlapping criteria), double-action conflicts (same action type, overlapping conditions), and re-evaluation chains. Each conflict is presented with the specific rule names and the conflicting conditions.

Step 4: Effort Estimation — Size Every Migration Job

A Workflow Rule migration can take 15 minutes or 3 weeks depending on complexity. Sizing every rule before you start gives you a project plan you can actually work against.

T-shirt sizing model:

Size Description Estimated effort
S Single-object, immediate actions only, no cross-object, Migrate to Flow tool-compatible 15–30 min
M Email alerts or task creation, no time-based actions, no cross-object dependencies 1–3 hours
L Time-based actions, OR cross-object field updates, OR ISCHANGED/ISNEW criteria 4–8 hours
XL Outbound messages, recursive chains, Apex dependencies, OR multi-rule conflict resolution required 1–3 weeks (developer required)

For an org with 60 active Workflow Rules, a typical distribution is: 20 S, 25 M, 10 L, 5 XL. The 5 XL rules require the same total effort as the other 55 combined. The effort estimation step surfaces this before you're three months into a migration that you thought would take one.

Total migration weeks: Sum across all rules by size. S = 0.05 weeks. M = 0.25 weeks. L = 1 week. XL = 2 weeks average. A typical 60-rule org is 8–14 weeks of work when properly resourced.

Luxera Cloud Migration Auditor — Step 4: The auditor applies sizing rules automatically and produces a total effort estimate in weeks, broken down by size tier. Export to CSV to feed directly into your sprint planning tool.

Step 5: Sequencing — Which Migrations to Run First

With inventory, risk scores, conflicts, and effort estimates in hand, sequencing becomes straightforward. The goal is to de-risk the backlog systematically.

Sequence in this order:

  1. Deactivation candidates first. Any rule where the business process no longer exists should be deactivated without migration. This reduces the backlog immediately and removes noise from your conflict analysis.
  2. S-sized rules next. Build confidence with the mechanical migrations before tackling complex ones. These also give your team reps with the before-save Flow pattern before they need to handle time-based actions.
  3. Conflict resolution before individual migrations. If two rules conflict, resolve the conflict logic first (consolidate into a single Flow with proper decision tree) before migrating either rule. Migrating them independently and then dealing with the conflict doubles the work.
  4. L-sized rules in isolated sprints. Each L-sized migration gets its own sprint: build in sandbox, parallel-test with original rule active, verify field values match, deactivate original, monitor for 2 weeks.
  5. XL rules as dedicated projects. Developer time, sandbox, explicit rollback plan, stakeholder sign-off on the new Flow behavior before the original rule is deactivated.

What not to do: Don't migrate XL rules first because they seem most urgent. Don't migrate all rules from a single object in parallel. Don't deactivate the original Workflow Rule until the replacement Flow has run correctly in production for at least two weeks.

Luxera Cloud Migration Auditor — Step 5: The auditor outputs a recommended migration sequence ordered by the framework above. You get a week-by-week plan you can assign directly to your sprint board.

6 Migration Patterns With Examples

Pattern 1: Simple Field Update → Before-Save Flow

The old pattern: Workflow Rule fires on Lead creation, sets Lead_Source_Category__c to "Inbound" when LeadSource equals "Web" or "Chat".

The safe Flow equivalent: Record-Triggered Flow, trigger = When a record is created, Before the record is saved. Entry condition: LeadSource EQUALS "Web" OR "Chat". Action: Update Record — set Lead_Source_Category__c = "Inbound".

Why before-save: The update happens on the same record, so before-save is correct. No DML statement, no governor limit consumption, no recursive trigger risk.

Gotcha: If the original Workflow Rule was set to "Evaluate the rule when a record is created, and every time it's edited," you need to also handle the record-edited path. In before-save Flows, use entry conditions that mirror the original rule criteria exactly — don't use a blanket "always" trigger if the original rule was conditional.

Pattern 2: Email Alert → After-Save Flow

The old pattern: Workflow Rule fires when Opportunity Stage changes to "Closed Won," sends email alert to the Account Owner's manager.

The safe Flow equivalent: Record-Triggered Flow, trigger = When a record is created or updated, After the record is saved. Entry condition: {!$Record.StageName} EQUALS "Closed Won" AND {!$Record__Prior.StageName} NOT EQUAL "Closed Won" (change detection). Action: Send Email Alert.

Why after-save: Email alerts are external actions (sending email) and must run after the record is committed.

Gotcha: Without the change-detection condition ($Record__Prior.StageName), the Flow fires every time the record is saved while Stage = Closed Won, not just when Stage changes to Closed Won. This is the single most common migration bug and the source of most duplicate-email complaints.

Pattern 3: Time-Dependent Actions → Scheduled Path

The old pattern: Workflow Rule on Case — 24 hours after Case creation, if Status is still "New," send escalation email and update Priority to "High."

The safe Flow equivalent: Record-Triggered Flow, after-save. Add a Scheduled Path: Offset = 1 Day after Created Date. Entry condition: Status EQUALS "New". Actions: Send Email Alert + Update Records (Priority = "High").

Gotcha: Pending time-based actions from the original Workflow Rule are not migrated. Any Cases that are in the pending queue when you deactivate the original rule will have their pending actions dropped. If you have an active backlog of pending time-based actions, migrate during a low-volume window and manually trigger any escalations that would have fired from the pending queue.

Pattern 4: Cross-Object Field Update → After-Save + Recursion Guard

The old pattern: Workflow Rule on Opportunity — when Stage changes to "Closed Won," update the related Account's Last_Closed_Won_Date__c field.

The safe Flow equivalent: Record-Triggered Flow on Opportunity, after-save. Get Record: Account (related). Update Record: Account — set Last_Closed_Won_Date__c = {!$Flow.CurrentDateTime}.

Gotcha: This update on Account will trigger any record-triggered Flows running on the Account object. If one of those Flows also updates the Opportunity (e.g., sets a field on the related Opportunity), you can create a loop. Add an entry condition to the Opportunity Flow: {!$Record.StageName} IS CHANGED = true, so the Flow only fires on actual stage changes, not subsequent saves.

Pattern 5: Outbound Message → External Service or Apex

The old pattern: Workflow Rule on Order — when Status changes to "Activated," fire an outbound message to the ERP endpoint to trigger order fulfillment.

The safe Flow equivalent: Flow cannot fire outbound messages. You have two options:

  1. External Services: Connect the ERP endpoint via an API schema (OpenAPI), create an External Service in Salesforce, invoke it from a Flow action.
  2. Apex Callout: Write an Apex class that makes the HTTP callout, invoke it from a Flow via an Apex action.

Gotcha: This is the XL pattern. Don't attempt it without developer involvement. The SOAP-based outbound message format Workflow Rules use is almost never compatible with modern ERP APIs, so this is frequently a full integration rebuild, not just a migration.

Pattern 6: Recursive Chain → Single Flow with Decision Tree

The old pattern: Three Workflow Rules on Case, each re-evaluating after field changes. Rule A updates Priority based on Status. Rule B updates Status based on Priority. Rule C sends an email when both Status and Priority match a specific combination. Each rule re-evaluates the others, creating a chain of up to 6 executions per record save.

The safe Flow equivalent: One Record-Triggered Flow on Case, after-save. Decision elements handle the logic of all three original rules in sequence within a single transaction. A WF_Processed__c checkbox on the Case record acts as a guard: the Flow sets it to true at the start and includes an entry condition that skips the flow if WF_Processed__c is already true. A Process Automation → Flow Trigger Explorer shows you what already runs on the object so you can sequence correctly.

Gotcha: Consolidating recursive chains into a single Flow requires you to fully understand the intended business logic, not just the technical implementation. This is often the first time anyone has articulated what the chain of rules was supposed to do. Block time with the original business stakeholders before you start building.

How the Luxera Cloud Migration Auditor Handles Each Step

The Luxera Cloud Migration Auditor is built around this exact framework.

Connect or upload. Either connect read-only OAuth access to your org, or upload a metadata export (compatible with Salesforce CLI sf project retrieve output). The auditor reads your Workflow Rules, Process Builder processes, active Flows, and Apex triggers.

Automated inventory. Every active rule and process is catalogued — object, trigger type, action types, action count, cross-object references, ISCHANGED/ISNEW usage, outbound messages. Grouped by object so you can see the full automation stack per object in one view.

Risk scoring. Each rule is scored S/M/L/XL with the specific risk flags that determined the score. Recursion indicators, outbound message detection, cross-object chains, and Apex callout dependencies are all flagged automatically.

Conflict map. The auditor builds the conflict graph per object — same-field overlaps, double-action conflicts, re-evaluation chains. Each conflict is shown with the rule names, the overlapping conditions, and a recommended resolution strategy.

Effort estimate. Total migration effort in weeks, broken down by size tier. Exportable to CSV.

Migration sequence. A prioritized, week-by-week migration plan ordered by the sequencing framework: deactivation candidates first, S rules next, conflict resolution before individual migrations, L rules in isolated sprints, XL as dedicated projects.

Get Your Migration Plan in Minutes

Run the free audit on your org — inventory, risk scores, conflict map, effort estimate, and sequenced migration plan. No installation required.

Run the Free Migration Audit →

Frequently Asked Questions

What happens to Workflow Rules after the December 31, 2025 end-of-support date?
Your existing Workflow Rules will continue to fire — they won't suddenly stop on January 1, 2026. But Salesforce will no longer provide support or bug fixes for them. If a Workflow Rule breaks due to a platform update, you're on your own. Most orgs treat this as the hard deadline to complete migration rather than a reason to delay.

Can I migrate Workflow Rules gradually, or does it have to be all at once?
Gradual migration is the recommended approach. Start with simple field-update-only rules, migrate those to before-save Flows, verify they're working correctly, then deactivate the original rules. Move to more complex rules (time-based actions, cross-object updates, outbound messages) only after you have the basic pattern working. Trying to migrate everything at once dramatically increases risk.

Will my reports break when I migrate from Workflow Rules to Flow?
Reports themselves won't break — they read field values, not the automation that sets them. But if a migrated Flow has a bug that causes field updates to fire at the wrong time or not at all, your report data will drift. Always run parallel testing in a sandbox and compare field values after both the old Workflow Rule and the new Flow have fired on the same records.

Do I need a sandbox to safely migrate Workflow Rules to Flow?
Yes. Every migration should be built and tested in a full sandbox before deploying to production. A full sandbox includes your production data and metadata, which is essential for testing time-based actions, cross-object updates, and edge cases that only appear with real data. Developer sandboxes are fine for building, but not sufficient for final validation of complex rules.

What if I have Apex triggers that call or interact with Workflow Rules?
This is the highest-risk migration scenario. Apex triggers and Workflow Rules execute in a defined order, and changing that order by introducing a Flow can alter behavior in ways that aren't immediately obvious. Audit every Apex trigger on objects that also have Workflow Rules. Map the execution order. If the trigger explicitly calls or depends on a Workflow action, you'll need to rebuild that dependency in Apex before deactivating the rule. This is the category most likely to require developer involvement.

Can I undo a Workflow Rule migration if something goes wrong?
Yes — if you follow the right sequence. Deactivate the Flow (don't delete it). Re-activate the original Workflow Rule. Test that the rule is firing correctly. Then investigate what went wrong in the Flow before attempting the migration again. The key is to not delete the original Workflow Rule until you've confirmed the Flow replacement has been running correctly in production for at least two weeks.

What's the best order to migrate Workflow Rules to minimize risk?
Start with low-risk rules: single-object, immediate field updates only, no time-based actions, no outbound messages, no cross-object dependencies. Once you've confirmed those migrations work, move to medium-risk rules with email alerts or task creation. Save time-based actions and cross-object updates for last, after you've built confidence with the simpler patterns. High-risk rules — those with recursion, Apex dependencies, or outbound messages — should be scheduled as dedicated migration projects with developer involvement.

Start the Audit Before the Backlog Gets Worse

The admins who finish this migration cleanly aren't the ones who started with the most technical skill. They're the ones who did the audit first — who knew before they wrote a single Flow exactly how many rules they had, which ones were risky, which ones conflicted, and how long the whole thing would take.

The ones who will be in trouble are the ones who started with the easy rules to build momentum and never got around to the recursive chains and outbound messages because estimating them was too uncomfortable.

The Workflow Rule EOL deadline passed. The backlog isn't getting smaller. Run the audit, get the plan, and work the plan.