Managing Project Tasks & Status

  • 0
  • 1
  • Question
  • Updated 2 years ago
  • In Progress
Let's say that I have a Projects table with a Status field where each status acts as a state that drives which Role is tasked with working on that project so that the Project can advance to the next state.

For example, a Project may have a status called "Under Review" in which user(s) in the Project Manager role needs to perform a set of tasks or checkpoints on the Project before the status is automatically changed to "In Progress".

What is the recommended way to implement this? Specifically, how should I:
  • Create a set of tasks or checkpoints that must be finished for each Project Status
  • Automatically advance the Project Status to the next status once all tasks for that status is complete
The tricky parts that I'm trying to work through are:
  • If I create a Tasks table, I don't want to have to duplicate the same tasks for all Projects - that would end up using a lot of space over time given that each Project may have some 50+ Tasks across the different Statuses.
  • How to safely advance the Project Status once the criteria for the current project status has been met. I don't want some of roles to be able to just manually toggle the Status of a Project. Advancing the status should be a function of completing all required tasks for that stage.
Ultimately, I'd like full visibility into the status of all my Projects and the outstanding items that need to be addressed in order to move the Projects forward.

Any advice would be appreciated.
Photo of Josh


  • 140 Points 100 badge 2x thumb

Posted 2 years ago

  • 0
  • 1
Photo of Chuck Grigsby

Chuck Grigsby

  • 2,100 Points 2k badge 2x thumb
Be happy to demo a custom app that does this and a little more but can be removed if you don't want it. 
Photo of Matthew Neil

Matthew Neil

  • 31,698 Points 20k badge 2x thumb
This is a big process to get this, but the cliff notes version is;

You will want to have a Task table, a Template Task table, and a Project Type table.

Basically you will want to have a template list of tasks for the project, based on the project type.  
The reason you break this up is multi faceted, but some of the reasons can include, different lists dependent region of task, client requirements, details with equipment, or general changes in process over time.

When you make a new project, and pick the project type, a script will then load the most recent and applicable task list.

Yes, over time it could be a lot of records, but the tasks are very minimal information, and all of that info is connected to the project and the task driven status.
Photo of Josh


  • 140 Points 100 badge 2x thumb

Can you elaborate more as to how this part is done:
When you make a new project, and pick the project type, a script will then load the most recent and applicable task list.
So copy the corresponding templated tasks as new tasks and associate them with the new project?

Why have the Template Task Table? Why not have all templated tasks in the Tasks table and then only copy / associate the ones I need based on Project Type?
Photo of Matthew Neil

Matthew Neil

  • 31,698 Points 20k badge 2x thumb
So your set up would be Projects --> Tasks, but above that Project Types --> Projects.

Also, Project Types --> Template Tasks.
Then, for example, the Project type of "Build A New Home" would have 5 template tasks.
1- Foundation
2- Framing
3- Roof
4- Electrical / plumbing
5- Drywall, paint, etc. 

Then each time you had a client that wanted a new house, you would click "Add Project", On that screen you'd pick the project type (New Home), and then click a button that would create the 5 tasks, based on your template.

As far as what that button does, is it runs a javascript page that queries the template table for tasks that match the project type, and then uses the csv imprt API to create those records and associate them with the parent project.  (This all happens, with the page refresh, in about 1 second)
Photo of Matthew Neil

Matthew Neil

  • 31,698 Points 20k badge 2x thumb

What if you have dependancies. i.e. You can't start task 4, until 1 & 2 are done, but you can start 3 when 1 is done.  or any other workflow needs.

This allows you to set those up and have actual real life start and end dates for your 'task management'
I'm not understanding why Josh can't use the native button set up by the native wizard to import the stabndatd set of temp,acted tasks. That button can be also natively configured to import unlimited levels of grandchildren.

I agree, that there is no concern about creating a whole lot if task records. They are lightweight records. You could have 100,000 of them with no performance o r space limit problems.
Photo of Matthew Neil

Matthew Neil

  • 31,698 Points 20k badge 2x thumb
Say you use the 'native' solution.  Your process would be...

I have a client, I need to make a new project.  
So I go find my 'template project' in my project table. And do the copy master detail record option.  Then when it is copied, I associate it with the client.
Sure its one extra step, but do it a lot...

Then you need to make sure that you account for all of those 'template' projects in your reporting because they are stored in your live tables, otherwise it can mess up your reports.  So you have to add an extra filter to every single report on the project table, and every single report on the standard task table.

Now assume you have 3+ type of task list, you have to make fake projects for all of those.  You also need a way to find all of those variations when it comes time to copy.

Basically, its a crutch and shouldn't be done when you want to make clean, efficient, manageable and scaleable apps.
There was no indication in the question that there were multiple sets of Tasks. Ie different Tyoes of Projects. But even if there were a small number like 6, the process would be to build 6 buttons to import he respective 6 sets if Tasks to the current project.

So you create a project and save.

Them click the button to create the Tasks. Ie you would not copy the Template record, you would import use the button to bring standard Tasks into your new Project.

That process is also smart enough to deal with Tasks which have predecessors, natively.
I suggest that you explore the wizard located in App Management and decide if a native solution is sufficient for your needs, or if you need a scripting solution.