Create Your Own Workflow Agile App in Salesforce

Get ready, this article is slightly longer and can be hands on if you want to follow along.

As an Agile Coach I have tried to spill out some thinking behind the structures and decisions.

ninja appearance
alt text: ninja appearance

As Salesforce professionals we have all sorts of types of work coming our way, and having a one dimensional structured way to visualise the flow of work is helpful and very powerful. 

(And you know my take on the importance of visuals!)

One tool often used to visualise the work in progress is a Kanban board, you heard of this name in the context of Salesforce list views. Kanban is a Japanese word that literally means visual sign. The term Kanban board was popularised from the Toyota Production System with the principle of using visuals so no problems are hidden. When you can see things you can inspect things so that you can adapt them for better.

A visualization of the work in progress helps to convey agreement, to trigger conversations, to surface information and encourage alignment.

It also helps you to prioritize your efforts, we have a set amount of available time and energy (capacity) in a day, and every day we make a trillion unconscious decisions, so having a visual of the pipeline of work and applying some logic helps to distinguish what needs to:

  • be done now, 
  • or scheduled, 
  • or delegated,
  • or eliminate it completely.

It can help you focus on what matters.


Ingredients

So today I’d like to introduce you to how you can Create Your Own Workflow App in Salesforce so that you can organise themes of work and items of work and its workflow.  Having it in Salesforce is leading by example and also is within your daily context. 

Now, I’d like to apply the principle of KISS (Keep it Simple Stupid); it’s very easy to make things complicated. As with anything: start small, get to used it, then and only then you can even use this app to add new ideas of enhancements for the app to help you to become better at what you do. Start Small, Learn Fast.

How we can with 2 objects and few fields enable that visualisation of work:

  • Epics
  • Product Items

Product Items are a bite size piece of value for a product. For example a report type so that the marketing team can identify the redirects that have the most impact in their campaigns.


Epics are “themes/bundles” of Product Items. An example of an epic could be a Returns Process, to enable the handling of customers returns from multiple channels and processing the collection, refunds and warehouse logistics. As you can see in this example it is like a theme, with multiple pieces of value within it. Epics help you to have things grouped together.

breakfast
alt text: breakfast
(reference previous YeurDreamin article: https://salesforceweek.ly/2019/07/yeur-dream-actually-it-was-mine.html)

Recipe

Create a custom object called Product Item (API name: Product_Item__c), add a description such as “Is an item of work, multiple ones with the same bigger purpose encompasses an Epic”

Create the following fields for this object:

NameData TypeDetails
Name/SubjectText(80)Brief way to call this thing. Like in the previous example we could call this Redirects Custom Report.
Acceptance CriteriaText Area(255)I like to add here a default value so it acts as a little template on what to fill in when creating a record:
“GIVEN … [precondition] ” & BR() &”WHEN … [action] ” & BR() &”THEN … [expected result]” & BR()
AssignedLookup(User)In case the app is to be used with your team
StatusPicklistThese are the values I often use:
– Backlog
– Ready
– In Progress
– Peer Review
– Done
ClosedPicklistStatus__c as a Controlling field, so that you can define when the Status is Closed, which reason (similar to how Opportunities work):
– Deployed
– Cancelled
– Duplicate
I wouldn’t add any more there, it’s either in production or not. Do avoid the temptation of closing things that have not been fully dealt with as may fall in the abyss of the unknown.
DescriptionText Area(255)I also like to add here a default value so it acts as a little template on what to fill in when creating a record:
“As a…[who wants to accomplish something]”& BR() &”I want to…[what they want to accomplish]”& BR() &”So that I can…[why they want to accomplish that thing]”& BR()
EpicMaster-Detail(Epic)You will need to create this relationship after you create the object Epic.
Here the advice is to avoid having a “miscellaneous” Epic to relate records to. Every single Product Item is part of a bigger value. Think about it.
OrderNumber(4, 0)This over time may benefit with some restriction and automation, so that there isn’t multiple times the same number.
Essentially acts to help you having one dimension priority list, is either 1 or 2 or 3. And therefore removing the dangerous High-Medium-Low attributes.
SizeNumber(2, 0)As I do work with story points (an article for another day), in essence an abstract number of size, so that is relative instead of absolute (as time would be).
You could also use a simple t-shirt size way to define when something is S, M, L, XL.

Create a custom object called Epic (API name: Epic__c), add a description such as “Think of it like a project. Epics are a helpful way to organise your work and to create a hierarchy.”

Create the following fields for this object:

NameData TypeDetails
Epic NameText(80)Brief way to call this thing. Like in the previous example we could call this Service Returns.
AccountMaster-Detail(Account)I like to add here a relationship to which client the work is for. So it is an optional field depending on how your operating model is.
DescriptionText Area(255)I like to add some help text such as:
“What is this ‘bundle’ of work going to achieve?
What is a daily measure that this Epic is accountable for?
How would we know when we finished it?
How would we monitor in production its use and its performance?”
StatusPicklistThis field could benefit with some future automation. These are the values I often use:
– Backlog
– In Progress
– Done
DescriptionText Area(255)I also like to add here a default value so it acts as a little template on what to fill in when creating a record:
“As a…[who wants to accomplish something]”& BR() &”I want to…[what they want to accomplish]”& BR() &”So that I can…[why they want to accomplish that thing]”& BR()
ROIText Area(255)I like to add some help text such as:
“What is the calculation of return on investment from this effort?
Whats the budget?
How is reducing costs, protecting costs, increasing revenue or protecting revenue?
What are the indicators that will tell us we are to measure?”

Once you have the objects and fields set up, remember less is more, you can quickly get to used it. 

Create a listview called Backlog, that are all items not yet worked on that you may ever want to do, this list fluctuates constantly, and thats ok. Life does too. To save yourself some headaches, only invest time and effort to define the very top items of it (the Order field helps here).

Salesforce list view, columns: Product Backlog Item Name, Order, Status, Points, Epic, Last Modified. 
And filtered by all items with Status equal Backlog

Create another listview called Sprint, so you can look at the visual representation of work in progress, have this view as Kanban.

Always focus Finishing over Starting. Starting things is easy. YET, only finished things can bring value:

Salesforce list view, kanban style columns by status: Backlog, Ready, In Progress, Peer Review, Done.

We mentioned Kanban board before, the common practice around this board most often for the Product Items is to section it in columns such as: To Do, In Progress, Done; this being the bare bones. You can add more columns to show, for example, handoffs such as Peer Review and other things that may help you to see and highlight bottlenecks. 

The field of Status in the Product Item is there just for that, and you can take advantage of list views functionality. The field of Closed having the controlling field acts as a popup when you move an element in the Kanban view as Done so that you can choose from the options:

Taste it

Only when you get your hands on, you will know what works best for you. Use it to improve your own app!

Have an Epic for your Work App, so that you can add Product Items of enhancements as they come to mind, take advantage of the Order so that you can focus on what matters, on what brings most return.

And tell us, how’s it working for you?

Summary

Visualise the work

Maximise the work NOT done

Focus on what matters

Less is more

Start Small & Learn Fast

KISS 


PS: Wondering whats all this food talk? Check the last collaborative pro-bono adventure: https://twitter.com/Inescapinezka/status/1514293813489152001

PS2: Want to learn more of Salesforce and Agile? Grab this FREE Course now

Leave a Reply

%d bloggers like this: