[SalesForce] Workflow: subsequently meet criteria vs ISCHANGED. What is the difference

When creating a workflow that needs to trigger on specific edits on a record, there are two options:

  • Evaluate the rule when a record is created, and every time it's edited
  • Evaluate the rule when a record is created, and any time it's edited to subsequently meet criteria

You can only use the ISCHANGED() function with the first variant. Say, I want a workflow to fire when a condition C, involving some_field, becomes true. What is the difference between using the first variant with formula ISCHANGED(some_field) && C and the second variant with formula C (and nothing more)?

I am not interested in time dependent actions, so from that perspective I don't care. I am wondering if there is a difference regarding whether the workflows are fired/evaluated when some_field is changed, because that can have consequences on process flows (which might be triggered or not).

Best Answer

Compile size/complexity vs. granularity. Functionally they're equivalent.

If you must check ISCHANGED in your criteria, it increases compile size. So If you apply it uniformly to several fields, it may be better to just use the "subsequent" option. The flip side is you give up some granularity. For example, maybe changing RecordType shouldn't trigger your rule but changing OwnerId should.

You can also use criteria instead of formula with the "subsequent" option, whereas I don't think there's an Is Changed operator for the workflow builder criteria (though Process Builder has it).

Related Topic