Expand my Community achievements bar.

Do you have questions about the migration to Adobe Business Platform? Come join our upcoming coffee break and ask away!

[Event Follow-Up] 10 Text Mode Tips in Adobe Workfront

Avatar

Employee Advisor

Screenshot 2024-04-18 at 12.16.52 PM.png

Thank you to everyone who joined, asked questions, and shared additional pointers in today's workshop, 10 Text Mode Tips in Adobe Workfront with the Customer Success team! Text mode raises a lot of questions, so I'm glad we were finally able to deliver a session on this most-requested topic. 

If you missed the session, no worries - here is a link to the recording and a copy of the slide deck with ready-to-use, copy/paste text mode is attached. Examples shared during the workshop include:

  • Changing ID to name
  • Filtering for objects in a pending approval status
  • Comparing fields in a filter
  • Removing hyperlinks
  • Merging columns
  • and more! 

If you are just getting started with text mode, I'd recommend bookmarking and familiarizing yourself with the API Explorer (this will be your single source of truth for text mode) and reviewing customer submitted examples in the Reporting Cookbook. In addition, the Customer Support team can help with your text mode questions, but be sure to come prepared with your report already built - give it your best effort! 

If you have additional text mode tips to share, please reply to this post and we can use this discussion as a living text mode tip library for everyone to access! 

Thanks again, hope to see you at upcoming Customer Success events - especially these hot topic sessions:

28 Replies

Avatar

Level 3

Hi! Has anyone been able to figure out a way to pull all updates on objects (Task, Issue, Project) into a report, including system activity? Our company would like to be able to export all project details as part of our regular closeout activities. See full post here:

 

https://experienceleaguecommunities.adobe.com/t5/workfront-questions/project-closure-report-s/m-p/66...

 

TIA!

Avatar

Community Advisor

If you want task details to show on a project report, you'll need to utilize collections. One thing to note is that collections will appear out of order so you won't be able to organize the information within the project report.

Would creating two reports be feasible in your use case? One of all notes and a second with task details. I'm not sure how you plan to use this information but sometimes it's easier to digest when parsed.

Avatar

Level 3

Hi @MoniqueEvans, thanks for your response! I'm not familiar with Collections so will need to do some reading up.

 

Creating two separate reports may just be the simplest way to handle what we need, and honestly I hadn't even thought about doing that yet because I have been focused on creating a comprehensive report.


Thanks for the ideas!

Avatar

Community Advisor

You're more than welcome!! I've been there myself when you get so wrapped up into how to make something happen you don't realize there may be an easier way. Glad I could help.

 

PS. A collection is when you are pulling in information that has a 1:many relationship. In this instance, one project could have many tasks. Workfront shows this as a nested list in the column, it is typically not in the order you'd expect but can be helpful if you want to quickly the info. I use it often to show all custom forms attached or people assigned to a given project.

Here's a link for more info: https://experienceleague.adobe.com/en/docs/workfront/using/reporting/reports/text-mode/reference-col...

Avatar

Community Advisor

One of my leaders asked if we could group by a calculated column I had created for her and I almost said no, until I remembered that almost any calculated column can become a calculated custom field. After a little elbow grease and trial and error I created a new field called "Completion Status" which compares the planned completion date with the actual completion date and gives one of three choices (On Schedule, Ahead of Schedule, Behind Schedule) depending on the variance. I plan to talk to other leaders to see if there should be a little buffer of a day or two before we want to deem something is behind schedule but for now here's the code:

IF(WEEKDAYDIFF({plannedCompletionDate},{actualCompletionDate})<0,"Ahead of Schedule",(IF(WEEKDAYDIFF({plannedCompletionDate},{actualCompletionDate})=0,"On Schedule",(IF(WEEKDAYDIFF({plannedCompletionDate},{actualCompletionDate})>0,"Behind Schedule","")))))

 

 

And for anyone wondering how to do this as a column in a report here's that code as well

displayname=Overall Project Completion Status
linkedname=direct
namekey=actualCompletionDate
querysort=actualCompletionDate
textmode=true
valuefield=actualCompletionDate
valueformat=atDate

case.0.comparison.icon=false
case.0.comparison.leftmethod=actualCompletionDate
case.0.comparison.lefttext=actualCompletionDate
case.0.comparison.operator=lt
case.0.comparison.operatortype=date
case.0.comparison.rightmethod=plannedCompletionDate
case.0.comparison.righttext=plannedCompletionDate
case.0.comparison.truetext=Ahead of Schedule
case.1.comparison.icon=false
case.1.comparison.leftmethod=actualCompletionDate
case.1.comparison.lefttext=actualCompletionDate
case.1.comparison.operator=eq
case.1.comparison.operatortype=date
case.1.comparison.rightmethod=plannedCompletionDate
case.1.comparison.righttext=plannedCompletionDate
case.1.comparison.truetext=On Schedule
case.2.comparison.icon=false
case.2.comparison.leftmethod=actualCompletionDate
case.2.comparison.lefttext=actualCompletionDate
case.2.comparison.operator=gt
case.2.comparison.operatortype=date
case.2.comparison.rightmethod=plannedCompletionDate
case.2.comparison.righttext=plannedCompletionDate
case.2.comparison.truetext=Behind Schedule

styledef.case.0.comparison.icon=false
styledef.case.0.comparison.leftmethod=actualCompletionDate
styledef.case.0.comparison.lefttext=actualCompletionDate
styledef.case.0.comparison.operator=lt
styledef.case.0.comparison.operatortype=date
styledef.case.0.comparison.rightmethod=plannedCompletionDate
styledef.case.0.comparison.righttext=plannedCompletionDate
styledef.case.0.comparison.trueproperty.0.name=bgcolor
styledef.case.0.comparison.trueproperty.0.value=def6e2
styledef.case.0.comparison.truetext=Ahead of Schedule
styledef.case.1.comparison.icon=false
styledef.case.1.comparison.leftmethod=actualCompletionDate
styledef.case.1.comparison.lefttext=actualCompletionDate
styledef.case.1.comparison.operator=eq
styledef.case.1.comparison.operatortype=date
styledef.case.1.comparison.rightmethod=plannedCompletionDate
styledef.case.1.comparison.righttext=plannedCompletionDate
styledef.case.1.comparison.trueproperty.0.name=bgcolor
styledef.case.1.comparison.trueproperty.0.value=ffffff
styledef.case.1.comparison.truetext=On Schedule
styledef.case.2.comparison.icon=false
styledef.case.2.comparison.leftmethod=actualCompletionDate
styledef.case.2.comparison.lefttext=actualCompletionDate
styledef.case.2.comparison.operator=gt
styledef.case.2.comparison.operatortype=date
styledef.case.2.comparison.rightmethod=plannedCompletionDate
styledef.case.2.comparison.righttext=plannedCompletionDate
styledef.case.2.comparison.trueproperty.0.name=bgcolor
styledef.case.2.comparison.trueproperty.0.value=eac6c9
styledef.case.2.comparison.truetext=Behind Schedule

 

I'm not using it, but someone should benefit from it!

Avatar

Level 1

Been a few weeks since the webinar and i'm still playing around with all this great text mode code.    Just figured out you can get a column to sum that doesn't offer it by default by adding the aggregator lines.  Very cool stuff.

aggregator.displayformat=val
aggregator.function=SUM
aggregator.namekey=estimate
aggregator.valuefield=estimate
aggregator.valueformat=val
displayname=
linkedname=direct
namekey=estimate
textmode=true
valuefield=estimate
valueformat=doubleAsDouble

Thanks again for a great webinar!!

 

 

Avatar

Community Advisor

I take absolutely no credit for this but had to share in a more public place. I was wandering Community hoping to find a way to easily export a complicated view I created for a report so that I could add it to the Layout Template list of views and let people use it with other lists. That's when I stumbled upon the genius that is @William-- and a recommendation to a similar idea post.

 

In a simple two-column Report Report you can get direct links to the FVG (Filter, View, or Grouping) editor for that report's element and then "save as new" allowing you to use, share, and apply wherever you wish! Click the link above for full details.

Column 1: Report Name; Column 2: is this magic...

 

displayname=FVG Links
textmode=true
valueexpression=CONCAT(IF(ISBLANK({viewID}),"",CONCAT("https://",{customer}.{domain},".my.workfront.com/lists/views/",IF(CONTAINS("ASSGN",{uiObjCode}),"assignment",IF(CONTAINS("BILL",{uiObjCode}),"billingrecord",IF(CONTAINS("BSTSK",{uiObjCode}),"baselinetask",IF(CONTAINS("CMPY",{uiObjCode}),"company",IF(CONTAINS("DOCAPL",{uiObjCode}),"documentapproval",IF(CONTAINS("DOCU",{uiObjCode}),"Document",IF(CONTAINS("DOCV",{uiObjCode}),"documentversion",IF(CONTAINS("EXPNS",{uiObjCode}),"expense",IF(CONTAINS("FINDAT",{uiObjCode}),"financialdata",IF(CONTAINS("FVRITE",{uiObjCode}),"favorite",IF(CONTAINS("JRNLE",{uiObjCode}),"journalentry",IF(CONTAINS("MILE",{uiObjCode}),"milestone",IF(CONTAINS("MPATH",{uiObjCode}),"milestonepath",IF(CONTAINS("OPTASK",{uiObjCode}),"issue",IF(CONTAINS("PARAM",{uiObjCode}),"parameter",IF(CONTAINS("PORT",{uiObjCode}),"portfolio",IF(CONTAINS("PRFAPL",{uiObjCode}),"proofapproval",IF(CONTAINS("PRGM",{uiObjCode}),"program",IF(CONTAINS("PROJ",{uiObjCode}),"project",IF(CONTAINS("PTLSEC",{uiObjCode}),"report",IF(CONTAINS("QUED",{uiObjCode}),"queue",IF(CONTAINS("QUET",{uiObjCode}),"queuetopic",IF(CONTAINS("RESVT",{uiObjCode}),"timeoff",IF(CONTAINS("ROLE",{uiObjCode}),"jobrole",LOWER({uiObjCode}))))))))))))))))))))))))),"/",{viewID})),"\\u000A",IF(ISBLANK({filterID}),"",CONCAT("https://",{customer}.{domain},".my.workfront.com/lists/filters/",IF(CONTAINS("ASSGN",{uiObjCode}),"assignment",IF(CONTAINS("BILL",{uiObjCode}),"billingrecord",IF(CONTAINS("BSTSK",{uiObjCode}),"baselinetask",IF(CONTAINS("CMPY",{uiObjCode}),"company",IF(CONTAINS("DOCAPL",{uiObjCode}),"documentapproval",IF(CONTAINS("DOCU",{uiObjCode}),"Document",IF(CONTAINS("DOCV",{uiObjCode}),"documentversion",IF(CONTAINS("EXPNS",{uiObjCode}),"expense",IF(CONTAINS("FINDAT",{uiObjCode}),"financialdata",IF(CONTAINS("FVRITE",{uiObjCode}),"favorite",IF(CONTAINS("JRNLE",{uiObjCode}),"journalentry",IF(CONTAINS("MILE",{uiObjCode}),"milestone",IF(CONTAINS("MPATH",{uiObjCode}),"milestonepath",IF(CONTAINS("OPTASK",{uiObjCode}),"issue",IF(CONTAINS("PARAM",{uiObjCode}),"parameter",IF(CONTAINS("PORT",{uiObjCode}),"portfolio",IF(CONTAINS("PRFAPL",{uiObjCode}),"proofapproval",IF(CONTAINS("PRGM",{uiObjCode}),"program",IF(CONTAINS("PROJ",{uiObjCode}),"project",IF(CONTAINS("PTLSEC",{uiObjCode}),"report",IF(CONTAINS("QUED",{uiObjCode}),"queue",IF(CONTAINS("QUET",{uiObjCode}),"queuetopic",IF(CONTAINS("RESVT",{uiObjCode}),"timeoff",IF(CONTAINS("ROLE",{uiObjCode}),"jobrole",LOWER({uiObjCode}))))))))))))))))))))))))),"/",{filterID})),"\\u000A",IF(ISBLANK({groupByID}),"",CONCAT("https://",{customer}.{domain},".my.workfront.com/lists/groupings/",IF(CONTAINS("ASSGN",{uiObjCode}),"assignment",IF(CONTAINS("BILL",{uiObjCode}),"billingrecord",IF(CONTAINS("BSTSK",{uiObjCode}),"baselinetask",IF(CONTAINS("CMPY",{uiObjCode}),"company",IF(CONTAINS("DOCAPL",{uiObjCode}),"documentapproval",IF(CONTAINS("DOCU",{uiObjCode}),"Document",IF(CONTAINS("DOCV",{uiObjCode}),"documentversion",IF(CONTAINS("EXPNS",{uiObjCode}),"expense",IF(CONTAINS("FINDAT",{uiObjCode}),"financialdata",IF(CONTAINS("FVRITE",{uiObjCode}),"favorite",IF(CONTAINS("JRNLE",{uiObjCode}),"journalentry",IF(CONTAINS("MILE",{uiObjCode}),"milestone",IF(CONTAINS("MPATH",{uiObjCode}),"milestonepath",IF(CONTAINS("OPTASK",{uiObjCode}),"issue",IF(CONTAINS("PARAM",{uiObjCode}),"parameter",IF(CONTAINS("PORT",{uiObjCode}),"portfolio",IF(CONTAINS("PRFAPL",{uiObjCode}),"proofapproval",IF(CONTAINS("PRGM",{uiObjCode}),"program",IF(CONTAINS("PROJ",{uiObjCode}),"project",IF(CONTAINS("PTLSEC",{uiObjCode}),"report",IF(CONTAINS("QUED",{uiObjCode}),"queue",IF(CONTAINS("QUET",{uiObjCode}),"queuetopic",IF(CONTAINS("RESVT",{uiObjCode}),"timeoff",IF(CONTAINS("ROLE",{uiObjCode}),"jobrole",LOWER({uiObjCode}))))))))))))))))))))))))),"/",{groupByID})))
valueformat=HTML

 

Thank you for saving me an hour (if not more)!!