I planned on presenting a useful App that utilizes Flow functionality at Dreamin’ events in 2020. I have a good amount of experience building Flows, and I thought if I can build something that can be useful for most of the potential audience out there, they will be motivated to try out Flow on Salesforce.
My Hands-on Training (HoT) proposal titled “Build a Project Time Tracking Application with Flow and Track Project Resources” has been accepted by Southeast Dreamin’ organizers, but as most of you know, all events got postponed (hopefully) to a later date this year. I have not presented this solution to anyone in person yet.
Now that we are all in a phase of social distancing, I decided to publish the solution on a blog post, before I present anywhere. This way, all interested parties who have a lot of time indoors can learn and utilize the functionality. I am also hoping to receive valuable feedback so that I can implement improvements, and build better versions of the App in the near future.
What is the use case here? Whether you are a consultant trying to track your time on several client projects or an internal project resource trying to estimate the cost of your project, you are most probably interested in recording the time spent on project tasks by project resources. This can be very valuable, when you want to create meaningful reports on your projects.
Here is an App that will help you track the time and effort of the resources supporting multiple projects.
Before we get started, let me walk you through the terminology:
- Program: A program is a collection of projects that are managed as a group in order to help the organization to achieve its goals. At least one Program record is required to create Projects.
- Project: A project is a series of tasks that need to be completed in order to reach a specific outcome. There may be multiple projects under one program. Projects have to be under one Program.
- Project Task: A task is an activity – smallest essential piece of a job – that needs to be accomplished within a defined period of time or by a deadline to work towards work-related goals. For the purposes of this app, the creation of tasks is not required for a project resource to record their time on a Timesheet record. Tasks have to be under one Project.
- Timesheet Record: A record that shows the effort by one single Project Resource (Contact) dedicated supporting a Task under a Project. Timesheet Records have to be associated with one single Project and Project Resource (Contact).
- Project Resource: People (Contacts) that work on Tasks under a Project. Although project resources can be facilities, tools and etc, Project Resources can only be people (Contacts) on this Project Management App.
- Hourly Rate: The rate in $s that the resource charges to a client. For internal projects, this is the estimated cost of the hourly work for a specific Project Resource. Hourly Rate records have to be associated with one single Contact.
I created a very simple Lightning App titled “Project Management” with a very simple Lightning Page called “Project Management Summary”. This page shows the list of all Projects on the left side, and the list of all the Timesheet records on the right side.
The Timesheet Record is a custom object consisting of these fields (see the screenshot below):
There are five custom objects that represent each of the bullet points above in the terminology section with the exception of the Project Resource. I used to standard object Contact for that purpose. Please note that I neither created custom fields, nor modified any standard objects that come with a standard Salesforce instance.
Here is the Schema Builder view that shows the relevant objects, their fields and relationships.
Most of you are probably thinking, I don’t have time to build all that. That is ok. I created an unmanaged package for you that you can installed on a fresh developer instance that will give you all the custom objects and fields. Please note that the package does not include any of the flows.
I will include a screenshot of the flow we are going to build after going through a couple of posts, so that you have an understanding of the desired output of the blog series.
What does this flow do? It leads a Project Resource (Contact) through a couple of screens so that they can record their time spent supporting the Project. This flow can be used to extend the functionality to external Project Resources as well. They can record their time, if they are already a contact on the Salesforce instance.
If you are interested in installing the unmanaged package and playing with the App click on this link and follow the instructions. Please note that there will not be any records when you open the Project Management Application for the first time. You will have to create your own records.
Here is a link to the first follow-up blog post: Build a Timesheet Calculation Flow.
Please do not hesitate to comment on the blog post with your questions.