outside-the-box-careers-in-law

Salesforce workflows come in 2 flavors – real time and time-based workflows.  Time-based workflows are evaluated at the time interval you set – some number of hours or days after another date or time field on the record. But you can’t set any time increment less than an hour… or can you?

Here’s the thing… I’m an impatient guy.  Sometimes, I don’t want a workflow to fire right now, but I can’t wait an hour.  There may be some business processes that need to be completed in 5 minutes, or half an hour.

For example – a Sales Reps may make several changes to an Opportunity over the course of 15 minutes, but don’t want to send workflow update emails after every change.  But it is important that the Sales Manager is notified as soon as possible.  So I’d like to send a workflow email 20 minutes after the last change.

To create a workflow rule that fires in less than one hour, you have to trick Salesforce.

findawayor3

First, on the object that you need the workflow on, create a new custom formula field that evaluates to a Date/Time value.  I called my field Trigger Time 05, meaning that it’s a time trigger that I use to fire a workflow in 5 minutes.

What Trigger Time 05 actually does is saves a Date / Time value to your record that is 55 minutes in the past.  If you save your record at 3:00 pm, the value in Trigger Time 05 will be 2:05 pm.

The formula for Trigger Time 05 = (Now() – 0.038)

Then, you write a Time Based Workflow rule that fires 1 hour after Trigger Time 05.  So, one hour after a time 55 minutes ago… is 5 minutes from now!

If you have multiple time intervals you need workflows to fire at, you’ll need to create multiple Trigger Time formula fields, like Trigger Time 05, Trigger Time 15, Trigger Time 30, etc.

I have found that the time intervals that the workflow rules aren’t exactly five minutes, but they are pretty close.

You’ll want to make this field accessible to all users, but don’t put it on any page layouts.

Here’s a chart that shows the value you’ll need to subtract from Now() for each 5 minute interval.

Value in Formula

Minutes Ago

Will Fire In

 0.04145

60

Minutes

0

Minutes

 0.03800

55

Minutes

5

Minutes

 0.03455

50

Minutes

10

Minutes

 0.03109

45

Minutes

15

Minutes

 0.02764

40

Minutes

20

Minutes

 0.02418

35

Minutes

25

Minutes

 0.02073

30

Minutes

30

Minutes

 0.01727

25

Minutes

35

Minutes

 0.01382

20

Minutes

40

Minutes

 0.01036

15

Minutes

45

Minutes

 0.00691

10

Minutes

50

Minutes

 0.00345

5

Minutes

55

Minutes

 0.00069

1

Minute

59

Minutes