Apps We Love – TaskRay

We have gone through several different project management systems both built outside and inside of Salesforce. We have settled on TaskRay as it provides the right amount of complexity along with enough ease so that we don’t have the need for a full-time person managing the software.

This is first of an occasional series in Salesforce apps that we either use internally and/or recommend to clients. Some of these amazing ISV’s allow us access to their apps for free. They do this so that we understand their functionality and help our clients determine if this product is their “best fit”.

I will let BracketLabs describe how the tool works “out of the box”:

We looked and/or used several tools in the past:

  • We tried milestones but it was far more complex and challenging to maintain
  • We then used key aspects of milestones with our own custom build and it was “ok”, but we needed a stronger UI.
  • Trello was next and it was certainly a staff favorite in terms of usability. We also liked the ability to invite our customers in to participate for free. But the time keeping was a challenge and paying for Harvest just didn’t seem necessary.
  • An here we are with TaskRay.

Unlike other systems, we have the ability to make dramatic customizations and adjustments to construct TaskRay to fit our needs. Since we’re a consulting shop our needs are specific. And also the tools sits on Salesforce so the ability to make adjustments is wide.  This post is dedicated to show how we have cut, pasted, folded, and primped this tool to fit our needs instead of showing you the basics. Ultimately that is the hallmark of great software: fantastic features out of the box, but the ability to create it to be your own.

Make it Pseudo-Agile
We’re not a devout supporter of the “Agile Process”. (The Agile devout please forgive us) But we do like the ability to track requirements for each part of the project and how that helps the customer. In our system we achieved that by simply utilizing three fields in each task:

  • What is the description of the task? What are we doing?
  • What are the assumptions before starting this task?
  • What acceptance criteria will be used to demonstrate completion of the task?

To do this we created a few fields on the TaskRay task object and added them to the field set. Now our taskray task screen looks like this

our pseudo-agile screen
our pseudo-agile screen

Note that we are still using the Description field to store details but now we also store our acceptance and assumptions on the task. This makes it easier down the road to check our work.

Making Mass Edits

With that we can use our Gridbuddy integration to make mass edits to our tasks. (hint great product) Now we built all kinds of craziness to combine the two. Fortunately those two companies got together and made the whole process easier.

Hours Tracking and Budgeting
Now for tracking of hours there are budgeted hours vs. actual hours. Both have a place in TaskRay. We just had to perform some creative engineering. But for most experienced salesforce admins, this is simple efforts.

For budgeting, we have a simple number field on each task. These values roll-up to the project automatically.

We store a simple budgetary number on each task
We store a simple budgetary number on each task


We also store values on the project record for billing rates and for different types of work. This allows us to do some calculations on the effort with time entry. Each task is categorized based on these selected work types.

On the project record we store total hours for different types of work and roll-ups of hours spent versus budget
On the project record we store total hours for different types of work and roll-ups of hours spent versus budget


Speaking of time entry, we again use a custom object to track that. Since all time entries are tied to task records, we know the work type and billing rate automatically. This has been good for our team to understand the value of time as those 15 minutes spent on an email cost the client $$. Each of these time entries update values on both the task and the project record, so that we as a management team know hours utilized. And since we use a simple Hyperlink formula field, from task:

Right from the task itself we can create our time entries
Right from the task itself we can create our time entries

When a user sees the time entry screen many of the values are filled in for them:

Fortunately most of the time entry values are entered for the user
Fortunately most of the time entry values are entered for the user

We also developed a visualforce page that is utilized on Salesforce1 for time entry. That can be a huge timesaver, as well.

When we first developed this work, much of the updating was accomplished through APEX coding. With the introduction of the Process Builder – now its done through configuration.


You Too Can Do This
We love companies that understand that customer service is paramount and BracketLabs is no exception. They have been a source of inspiration and a sounding board for ideas as we continue to work with the product.  I know that we are only using about a third of the product’s features and yet we are successful.

Even if you are a single person shop, this tool can help you realize and prioritize without consuming all of your day. In the end, you still have to deliver something. We suggest you take it out for a test drive and decide if it fits your needs.

Performing a Fuzzy Lookup in Excel or Google Sheets

Many of us have to do matches of data in excel to update Sometimes though that data is not exact. Inc. versus Incorporated. Or its John A Smith in one system versus John Smith in another.

Instead of manually searching and fixing it, Excel (for Windows only unfortunately) has an Add-In that does a nice job of fuzzy matching.

Here is the link.

After installing the add-in into excel the steps to use it are pretty basic and the readme file contained within the setup is incredibly comprehensive.

UPDATE: We found an Add-on to allow you to do something similar in Google Sheets:

Google Sheets Add-on

What is Fuzzy Matching?

Lets say I have a data set with the following names:

  • John Smith
  • Jane Doe
  • Ronald P. Moore

And I have another data set with the following names:

  • John R Smith
  • Janealicious Doe
  • Ron Moore

In a standard pattern match, these data sets would never line up if we were using the names to match. Well a fuzzy match tool will break down the names into their basic components and try to match it all together. Is it 100% perfect and reliable? No probably not, but it can save a dramatic quantity of time especially if you know there are other data points that can be used as validators.

Could be a great timesaver for you if you’re playing with data.