SfSkills Domains Docs GitHub

Home / flow / workflow-rule-to-flow-migration

workflow-rule-to-flow-migration

Migrate Workflow Rules to record-triggered Flows: field update mapping, email alert migration, outbound message alternatives using Flow Core Actions, time-based workflow replacement with Scheduled Paths. NOT for Process Builder migration — use flow/process-builder-to-flow-migration. NOT for building the replacement flow from scratch — use flow/record-triggered-flow-patterns.

Open the skill folder on GitHub


Workflow Rule to Flow Migration

Use this skill when orgs still have active Workflow Rules that must migrate to record-triggered Flows before the December 31 2025 end-of-support deadline. New Workflow Rule creation was blocked in Spring '25; existing rules continue to execute but receive no bug fixes. This skill is distinct from process-builder-to-flow-migration — Workflow Rules and Process Builder share the same retirement timeline but require different migration approaches.


Before Starting

Gather this context before working on anything in this domain:


Core Concepts

What the Migrate to Flow Tool Handles

Setup > Migrate to Flow converts Workflow Rules to INACTIVE record-triggered flows for review. The tool converts:

The tool does NOT handle:

Outbound Message Migration

Workflow Rules can invoke Outbound Messages (SOAP callouts to external endpoints). In Flow, outbound messages are available as Core Actions — but the Outbound Message definition must already exist in Setup > Outbound Messages before the Flow can reference it. The tool generates the action reference; it does not create the definition.

If the receiving endpoint expects the original Workflow Rule SOAP schema, verify that the Flow-generated outbound message produces the same WSDL payload structure. Schema differences can break integrations silently.

Time-Based Action Replacement

Workflow time-based actions (e.g., "send email 5 days after close date") are replaced using Scheduled Paths on record-triggered flows. Set the Scheduled Path's time source field to the same date/time field used in the workflow time trigger. When the original Workflow Rule is deactivated, pending time-based actions in the queue are cancelled — they do not transfer to the Flow.


Common Patterns

Tool-Eligible Field Update Migration

When to use: Workflow Rule updates fields on the same record, uses no ISCHANGED/ISNEW criteria, no tasks, no global variables.

How it works:

  1. Setup > Migrate to Flow > select rule > Convert
  2. Review the generated inactive flow in Flow Builder: verify Decision conditions match original rule criteria
  3. Add Fault Paths to Update Records elements (tool never generates fault paths)
  4. Set Flow Trigger Explorer priority matching intended execution order
  5. Test with 200+ records in sandbox; activate and deactivate source Workflow Rule simultaneously

Time-Based Action to Scheduled Path

When to use: Workflow Rule has time-based actions (e.g., send follow-up email N days after OpportunityCloseDate).

How it works: In the record-triggered flow, add a Scheduled Path:

Manual Rebuild for ISCHANGED Criteria

When to use: Workflow Rule uses ISCHANGED(FieldName) or ISNEW() in entry criteria.

How it works: In a new record-triggered flow's Decision element:


Decision Guidance

ScenarioRecommended ApproachReason
Field updates, email alerts onlyMigrate to Flow toolFastest, lowest risk
Outbound messagesMigrate to Flow tool (definition must exist)Tool handles Core Action reference
Task creationManual rebuild with Create RecordsTool cannot convert
Time-based actionsManual rebuild with Scheduled PathsTool cannot convert async
ISCHANGED/ISNEW criteriaManual rebuild with $Record__PriorNo direct tool mapping
Multiple rules on same objectConsolidate into one flow with Decision elementsSimplifies execution order

  1. Inventory and triage. Query SELECT Id, Name, TableEnumOrId, Active FROM WorkflowRule via Tooling API or SOQL; note action types for each rule. Mark any rule with ISCHANGED/ISNEW criteria, task actions, or global variables as manual-rebuild. Confirm Outbound Message definitions exist in Setup before running the tool.
  2. Run Migrate to Flow on eligible rules. Setup > Migrate to Flow > select rule > Convert. Tool creates INACTIVE flow — review in Flow Builder.
  3. Rebuild unsupported elements. Add Create Records for tasks, Scheduled Paths for time-based actions, rebuild ISCHANGED criteria with $Record__Prior.
  4. Add Fault Paths. Add fault connectors to all Update Records and Create Records elements — the tool never generates them.
  5. Assign Flow Trigger Explorer priorities. Open Flow Trigger Explorer for the object; assign priority integers preserving intended order relative to other flows.
  6. Test, activate, and cut over. Load 200+ records in sandbox; verify field values, email alerts, and time-based path scheduling. Activate the Flow and deactivate the Workflow Rule simultaneously — never run both active on the same object.

Review Checklist


Salesforce-Specific Gotchas

  1. Pending time-based workflow actions are cancelled on deactivation — Like Process Builder scheduled actions, pending time-based workflow queue entries are silently cancelled when the Workflow Rule is deactivated. No transfer occurs. Audit ProcessInstanceStep and AsyncApexJob for in-flight actions before cutting over.
  2. Outbound message SOAP schema may differ from Flow-generated payload — If the receiving endpoint validates the incoming SOAP envelope against the original Workflow-generated WSDL, verify that the Flow Core Action sends the same structure. Schema differences can silently break integrations without error in Salesforce.
  3. ISCHANGED() and ISNEW() silently dropped or mis-mapped by the tool — The Migrate to Flow tool does not warn about ISCHANGED/ISNEW criteria and may omit them or fire unconditionally. Always audit these criteria before using the tool.

Output Artifacts

ArtifactDescription
Inactive record-triggered flowGenerated by tool or manually built; review before activation
Scheduled PathsReplace time-based workflow actions in the flow
Outbound Message Core ActionsReference pre-existing Outbound Message definitions
Workflow Rule deactivation logTimestamp record of each rule deactivated

Package files