How I Solved This: Take Action Directly from a Report


Welcome to a new series on the Salesforce Admins blog called “How I Solved This.” In this series, we will do a deep dive into a specific business problem, and share how one #AwesomeAdmin chose to solve it. Once you learn how they solved their specific problem, you will be inspired to try their solution yourself! Let’s take a look at how the #AwesomeAdmin at Spark solved their business problem.

Key business problem 

I want my users to take action on a list of records returned in a report, and not a list view. It’s easy to edit records in a list view, but to make changes to what’s in the report takes more effort—to open each record into a new tab or window and edit it. That’s time-consuming and tedious for users. 


Meet Spark, a career exploration and self-discovery program for middle school students. In the spring semester, Spark pairs up 7th graders with mentors at leading companies (including Salesforce!) for a weekly visit to their workplace, during which they collaborate on a learning project.

Salesforce mentors work with Spark Program students on career exploration and self discovery

Each week, students fill out a short check-in about how their project is going and how they are getting along with their mentor. The check-in goes into Salesforce so that Spark staff can monitor program quality and student engagement. As you might imagine, 11- and 12-year-olds don’t always think that everything is sunshine and roses. (Middle school can be a rough time.) Spark program staff want to take the students’ concerns seriously. So any check-in that gets low ratings shows up on the Poor Checkins report on the Program Dashboard, and this is where we want our users to take immediate action. They need to contact the student who indicated things aren’t well and assess what’s going on. Managers also keep an eye on that report to ensure that front-line staff look into each issue. 

So, we have a report of records indicating an issue and we need to mark those that have been dealt with. And for efficiency’s sake, we want to do this right from the report—no opening other windows or navigating to another location in Salesforce.

How I Solved It

I created a one-click link in the report that updates a single field with a new value. 

animation of a clicking link in a report that updates a field

1. Define the action you want users to take

We defined a very simple way to indicate when that check-in has been acted upon: a date field on the check-in record for when it was “dealt with.” And with such a simple field to fill, staff deserve a one-click way to mark that they’ve dealt with each check-in. Staff could open up each check-in record to fill in that date field. But that’s way too many clicks and takes a lot of time. They could mark them in-line on a list view, except that they’re coming to this report directly from a dashboard. So they need to mark that record “dealt with” right in the report, with one click.

Report showing mentorships that need to be dealt with

That’s what the “Dealt With?” column does! 

How does that happen? The answer is an Auto-Launched Flow and a simple URL field.

2. Create a simple flow

Could a flow be much simpler than this?

simple 2 step flow

(The start element doesn’t even count.) All this flow does is receive the Id of a record and then update a field on that record to today’s date:

update records element detail

3. Create a formula field 

There’s just one more thing you need: a way to launch the flow right from the report. For that, we build a special formula field that launches the flow.

custom field details

Here is the formula:

HYPERLINK(‘/flow/Survey_Mark_Dealt_With?varExitTicketId=’& Id, ‘Mark Dealt With’)

This is a formula field that returns Text as the data type. And look at the formula, which I’ll break down:

  • It’s a HYPERLINK function, so it’s going to create a hyperlink or URL.
  • It includes the API name of my flow (Survey_Mark_Dealt_With).
  • It indicates the name of a flow variable that it’s going to define (varExitTicketId).
  • It indicates that it’s going to put the Id of this record into that flow variable (=&Id).
  • And it indicates the text it’s going to display in the field (‘Mark Dealt With’).

That’s it. It’s like you’ve added a button that can show up on the report, but it’s a link instead!

4. Add the new field to the report

report results showing the new custom field

Clicking the words “Mark Dealt With” launches the flow, which does its work in a moment. When you refresh the report, the dealt with check-ins are no longer there because we’re filtering for check-ins that don’t have a value in that field:

report filters

Business results

It sounds simple, but we’ve now turned a report into a checklist for program staff! As long as we make things this easy and efficient, there’s no excuse for not updating the records. And the program management can easily look in to see that problematic check-ins aren’t being ignored.

Do try this at home

This example was real and it’s very simple. But the principle behind it could be applied in all sorts of ways. Let your imagination run wild! Here are a couple of examples to get your creative juices flowing:

Assess applications

Perhaps your organization collects records of some kind and you need a human to judge their completeness before they move to the next stage of a process. Sometimes, you don’t need something as formal as an approval process but you also can’t fully automate. Give your users a report to check the records and move forward those that are ready.

A more complicated flow

Above, I showed an incredibly simple flow. But there’s no reason the flow has to be just one step. You could use the same formula field to kick off any auto-launched flow. Build in branching logic, update multiple records… whatever you want or your business needs. The only thing you can’t do is launch a screen flow. So this is for flows that will run without further user interaction. But that leaves plenty of room to innovate.

More than one flow

You’re not limited to just one flow or one formula field. You could make a couple of those fields, and then users could click on the different columns to take different actions. 

Send an email

Now let’s imagine a report of customer satisfaction surveys that you want agents to read and act upon. Instead of just looking at the numerical scores, you want them to read a comment field and send out an appropriate email from a couple of choices based on what the customer wrote. Give them a couple of flow links to choose from, and they can send an email directly from your Unhappy Customers report.

Delete records (Be very, very careful!)

You can even make flows that delete records, though you obviously want to be very careful here. I use a flow that deletes a Duplicate Record Item when it’s clicked. Why is that helpful? Every morning, I look at a report of Contacts with Duplicate Record Items (that’s the record created when there’s a possible contact duplicate) and if I know they’re not actually duplicates, I can delete the alert record with one click. Like here, where it’s clearly a father and son flagged as duplicates:

duplicate record items report

NOTE: It’s the duplicate record item that gets deleted by the flow—not the contact! I would not recommend building a flow that deletes a contact.

ADDITIONAL NOTE: I can’t think of too many other instances where an immediate deletion flow is a good idea. Use at your own risk!

Let us know what you thought of this solution, and tell us how you want to use it on Twitter using #AwesomeAdmins #HowISolvedThis. If you’re interested in contributing your own “How I Solved” this, please message @mbaizman on Twitter to get started.


Jen Cole pointing to herself and text to the left of her that says, "Manage Data with MuleSoft."

How I Solved It: Manage Data with MuleSoft

In this episode of “How I Solved It” on Salesforce+, #AwesomeAdmin Jen Cole solves an inefficient fulfillment and sales process using MuleSoft Composer. Learn how she approached building her solution and her tips for developing admin skills. The problem Once upon a time, not so long ago, I was asked to fix an inefficient sales […]

Paolo Sambrano next to text that says "Design User Friendly Apps."

How I Solved It: Design User-Friendly Apps

In this episode of “How I Solved It” on Salesforce+, #AwesomeAdmin Paolo Sambrano solves an inefficient service desk experience using App Builder and Flow. Learn how he approached building his solution and his tips for developing admin skills. The problem A long, long time ago, someone (ahem, maybe a less-experienced me) built a service desk […]