Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Project level reporting text mode questions

Avatar

Level 2

Hi! I am putting together a project report that our teams will be using and have ran into a couple blockers - could you please let me know if these requests are possible within text mode and if so, any guidance would be so appreciated. Thank you!

1.) How would I only pull in certain assignments for the project? We typically have 15-20 assigned to a project and we only need to report on 3-4 based on their roles. I would like the roles to only reflect the person that has a task assigned - if there are 5 users that were brought into the same role at any point they won't disappear even after I have unassigned them from tasks.

2.) I would like the report to only show the current task + due date of the task in progress. Any task labeled "New" is being brought in when I use this:

displayname=Current Task

listdelimiter=<div>

listmethod=nested(tasks).lists

textmode=true

type=iterate

valueexpression=IF({numberOfChildren}=1,IF({canStart},IF(CONTAINS("CPL",{status}),"",CONCAT({name}," - ",{plannedCompletionDate}))))

valueformat=HTML

How would I tweak that to only populate the tasks that are "In Progress"?

3.) And is there a way to only list the successor task and due date after the current "In Progress" task is complete so we can track upcoming deliverables?

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

0 Replies

Avatar

Level 10

Hi -

For #1 - I'm hoping @Monique Evans‚ will jump in. She had in the last user group (I believe) a column of just people who are actually assigned to active tasks in the project. I tried to find the deck but couldn't remember where that got posted. LOL!

For #2 - Your IF statement is a little weird to me so I just redid it 😉

displayname=Current Task

listdelimiter=<div>

listmethod=nested(tasks).lists

textmode=true

type=iterate

valueexpression=IF({numberOfChildren}=0,IF({status}="INP",CONCAT({name}," - ",{plannedCompletionDate}),""),"")

valueformat=HTML

[NOTE: I'm not sure why you had number of children equals 1. Did you mean you want the Current Parent Tasks or just the Current Task? I changed it to 0 since most of the time people want the current task, not parent task]

For #3 - I'm not sure that is possible because Successors are a collection of a task. So you would have a collection inside a collection and I'm not sure how to do that.

Avatar

Community Advisor

Thanks for the tag @Anthony Imgrund‚ , no pressure 😂

#1 - Here is the text mode to pull in the Project Users. It pulls directly from the People/Staffing tab so if there is someone assigned and then unassigned you will need to remove them from the list. It will also show the name even when that task is complete

displayname=People

listdelimiter=<p>

listmethod=nested(projectUsers).lists

textmode=true

type=iterate

valueexpression={user}.{name}

valueformat=HTML

#2 - Our solution kinda combines your number 1 with number 2. This column shows a collection of the task(s) that can start and aren't complete. It gives the task name, assign to name, and planned completion date.

*The list may not show in order (you can't change that)

**If your task is assigned to multiple people it will only give the primary assignee.

displayname=Current Task

listdelimiter=<div>

listmethod=nested(tasks).lists

textmode=true

type=iterate

usewidths=true

valueexpression=IF({numberOfChildren}=0,IF({canStart},IF(CONTAINS("CPL",{status}),"",CONCAT({name}," - ",{assignedTo}.{name}," - ",{plannedCompletionDate}))))

valueformat=HTML

width=400

Unfortunately I have nothing for #3. That's a tricky one since it's a collection of a If/Than Collection. Maybe @Doug Den Hoed‚ has an idea.

Avatar

Level 10

There's a few things I don't quite understand about this value expression.

valueexpression=IF({numberOfChildren}=0,

this says if nothing is nested under the task (no sub-tasks)

IF({canStart},

this says if the previous predecessor is complete and this task can be started

IF(CONTAINS("CPL",{status}),

this says if the task task status "contains" CPL (Complete). Aren't we looking for incomplete tasks? Shouldn't it say "if the task IS NOT complete", not CONTAINS?

"",

this says if the statements above are true, do nothing.

CONCAT({name}," - ",{assignedTo}.{name}," - ",{plannedCompletionDate}))))

this says if the above are true display task name - assignee - due date

Why this works isn't making sense to me. While children=0 and canstart should be true, status Complete should NOT be true.

And the first option (true) is blank while the second (else) option says to list the task name - assignee - due date.

I could just use this and it would work but I'd like to understand it better.

I'm using this in a project report and I'd like to also list the milestone(s) that are INP (In Progress).

The canstart option doesn't work for us on milestones because we don't have predecessors (or assignments) on our milestone tasks. Understanding this would help me create a valueexpression for the milestones.

Thanks!

Avatar

Level 10

Hi Randy - so your explanation in your post sounds like you understand to me. 🙂 The valueexpression is looking for tasks that are not parent tasks, that have all of their predecessors complete and the status does not contain CPL. As you mentioned, the IF statement says if the status DOES contain CPL, then do nothing. That means when the status does not contain CPL, then it will do something.

Now, personally, I don't like using CONTAINS so I do...

valueexpression=IF({numberOfChildren}=0,IF({canStart},IF({status}="CPL","",CONCAT({name}," - ",{assignedTo}.{name}," - ",{plannedCompletionDate}))))

But even with mine, you will see the IF statement Equals CPL, but then I have "" for the "true" section of the IF statement.

Like I said, I think you have a great understanding of what the different sections do. 🙂

Tip that helps me... break down the different IF statements and then slowly combine them. Makes you think about each filter independently and just makes it easier on the brain cells. 🙂

Avatar

Level 10

Thanks Anthony, You pointed out something I missed. The empty quotes that signal "true" (,"",).

In my haste (and confusion), I totally missed that!

Avatar

Level 2

@Monique Evans‚ @Anthony Imgrund‚

Thank you so much for your help with these answers! I have only been using Workfront around a year so still learning a lot and this is so appreciated. I had a few follow-ups, please.

#1:

Monique – When I use that text mode, I am seeing (as one example) about 60 users populate. How would I go about removing users from this list? Would there be a way to filter out (or only include) certain key players via text mode (or perhaps users assigned to one of the project's tasks?) or do they have to actually be taken off the project entirely under Staffing?

#2:

Anthony ‚Äì You are totally correct with your modifications to the text mode I had, thank you! When I use this updated text mode, I am seeing tasks that are “New” as well when I only want the “In Progress” tasks. We typically use a couple generic tasks that we keep in “New” throughout the project life-cycle that are not relevant to the timeline for general communication, etc. Is there a way to filter out those tasks? And if not, I am wondering if you have any ideas where we could modify how we create these tasks so they would not populate in reports. And this may be too far-fetched ‚Äì but is there anyway to have the Parent line populate in the column as well so we could break this upcoming schedule out by project deliverable?

Monique‚ÄîWe typically do not have a primary assignee and it’s the project manager or whoever built the schedule’s task. There are usually multiple teams involved to complete a task ‚Äì would it make sense to create individual subtasks with maybe the 5 users parts broken out individually? It would be nice if we had a more efficient way where we could use this text mode because it would be so perfect for our reporting.

#3:

I feel like if I can get #1 and #2 to populate based on your responses there may not be a need for this column.

Thank you!!

Avatar

Level 10

That is weird, the code states the only if the status=INP. To double check, go to setup, Project Preferences, Statuses, Tasks, and see what the three letter code is for your In Progress.

I just did a test on a project that has 200 new tasks and only the one In progress come up.

Avatar

Level 2

Interesting! If this is within the WF admin settings, I do not believe I have access to it because I cannot find the Setup link. I will find out the answer to this and see if that's the case and will keep you updated. Thanks!

Avatar

Community Advisor

Hey Wesley-Anne

I'm a little confused by what you mean when you say you don't have a primary assignee? Are you not assigning the tasks to people? Or are all of the tasks assigned to the project manager? By Workfront configuration the first person you assign a task to is typically the task owner / primary assignee. Those two terms are interchangeable. So if the task is only assigned to one person then it will show their name. If you have a task assigned to 5 different people then it would show whoever was assigned first, unless you go into the task and edit the assignments and change the task owner to someone else. If you do not want to show the name you can remove that portion of the code.

Also with #1. Unfortunately yes you would need to have a maintained Staffing tab in order for the Project Users list to be helpful. There is another way to pull your project team but it's a collection of task assignments so each name will be listed multiple times (once for every assigned task). My users didn't like it at all because of the redundancy