One of the major pain points of unit testing and quality assurance testing is having to wait for time-based actions to fire. The minimum window allowed in Salesforce out of the box is one hour. You can imagine the joy felt by QA and builders alike when trying to review testing scenarios.
I had stumbled across this article a few years ago and had to dig it up again since this problem came up for my QA team today. I’m reposting the entire article here since the original post is eight years old and the blog seems to no longer be active. The original post is from the Salesforce Tip Shack.
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?
But 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 – our Sales Reps may make several changes to an Opportunity over the course of 15 minutes, but I 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.
Or, like in my Dynamic Reports object (described on this blog), I have implemented a function that allows a user to edit a value in an editable list view, refresh their screen and run a report. Five minutes after they run that report, I want to wipe out the value they used, so that other users can use this function.
I’ll admit that I found this tip someplace out here on the WWW, but I can’t recall exactly where. So if it’s your idea I’m borrowing, thank you!
To create a workflow rule that fires in less than one hour, you have to trick Salesforce.
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.
As with many of the other custom formula fields I’ve mentioned on this blog, 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 this many minutes…|