Project Report using Nested Roles | Community
Skip to main content
Level 3
September 10, 2025
Solved

Project Report using Nested Roles

  • September 10, 2025
  • 2 replies
  • 247 views

I am trying to create a project report with a column that shows job roles associated with the project but the results include inactive job roles and other job roles not associated with the project. 

 

This is the code I used to display the roles. The valueexpression was added to exclude inactive roles, but it didn't change the results.

 

displayname=Nested Roles
listdelimiter=<p>
listmethod=nested(roles).lists
type=iterate
valueexpression=IF({role}.{ID}={project}.{role}.{ID},{name},"")

valuefield=name
valueformat=HTML

 

Does anyone have suggestions how to exclude job roles that are not associated with the project?

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by KatherineLa

Base code - This will get you every role associated to every /task/ on the project, inactive or otherwise. That is not the same as every role associated to the /people/ assigned to things on the project. 

 

displayname=Nested Roles listdelimiter=<p> listmethod=nested(roles).lists type=iterate valueexpression={name} valuefield=name valueformat=HTML

 

This code will get you every role associated to every person assigned to something on the project:

displayname=Nested Roles listdelimiter=<p> listmethod=nested(projectUserRoles).lists type=iterate valueexpression={role}.{name} valuefield=name valueformat=HTML

If you want to see that with the user's name as well, this will do that. 

displayname=Project Users listdelimiter=<br> listmethod=nested(projectUsers).lists type=iterate usewidths=true valueexpression=CONCAT({user}.{name}," - ",{user}.{role}.{name}) valueformat=HTML width=200

 

To drop inactive records, this is a sample based on the first list, but would work the same on the rest too.

displayname=Nested Roles listdelimiter=<p> listmethod=nested(roles).lists type=iterate valueexpression=IF({isActive},{name},"") valuefield=name valueformat=HTML

 

As a side note, if you have 3 people with a particular role associated to a project, that role will be listed 3 times in the output. There is no way I have ever found to de-duplicate that info. 

 

One common point of confusion is that the 'Project Users' will sometimes contain people who have long-since left the project and are no longer assigned to anything. That is accurate info based on standard Workfront functionality. The 'User' data is a complete historical record, even when business logic would consider it 'wrong'. The only way to fix that information is to use Fusion in a really complicated cleanup scenario. 

 

2 replies

kautuk_sahni
Community Manager
Community Manager
September 16, 2025

@madalyn_destafney @lawson02 @suryalakhani @amyreilly @kurt_jones @srinija_n @richard_le_ @chrisstephens 
@rowvillbh1 @katherinela @kierstenkollins @ivanbebek-ix @morganhatcher Tagging you here as I think your expertise could really help with this question. Thanks for taking a look!



 




 

 

Kautuk Sahni
KatherineLa
Community Advisor
KatherineLaCommunity AdvisorAccepted solution
Community Advisor
September 16, 2025

Base code - This will get you every role associated to every /task/ on the project, inactive or otherwise. That is not the same as every role associated to the /people/ assigned to things on the project. 

 

displayname=Nested Roles listdelimiter=<p> listmethod=nested(roles).lists type=iterate valueexpression={name} valuefield=name valueformat=HTML

 

This code will get you every role associated to every person assigned to something on the project:

displayname=Nested Roles listdelimiter=<p> listmethod=nested(projectUserRoles).lists type=iterate valueexpression={role}.{name} valuefield=name valueformat=HTML

If you want to see that with the user's name as well, this will do that. 

displayname=Project Users listdelimiter=<br> listmethod=nested(projectUsers).lists type=iterate usewidths=true valueexpression=CONCAT({user}.{name}," - ",{user}.{role}.{name}) valueformat=HTML width=200

 

To drop inactive records, this is a sample based on the first list, but would work the same on the rest too.

displayname=Nested Roles listdelimiter=<p> listmethod=nested(roles).lists type=iterate valueexpression=IF({isActive},{name},"") valuefield=name valueformat=HTML

 

As a side note, if you have 3 people with a particular role associated to a project, that role will be listed 3 times in the output. There is no way I have ever found to de-duplicate that info. 

 

One common point of confusion is that the 'Project Users' will sometimes contain people who have long-since left the project and are no longer assigned to anything. That is accurate info based on standard Workfront functionality. The 'User' data is a complete historical record, even when business logic would consider it 'wrong'. The only way to fix that information is to use Fusion in a really complicated cleanup scenario.