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
  • 236 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?

 

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
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.