Advanced Filters overview

Advanced Filters for Views and Visual Reports help to select, hide or highlight data when the exact filtering rule you need cannot be built using more simple and intuitive Basic Filters and Visual Filters. Filters created in Advanced Mode are much more powerful. You can create very complex queries with them.

Advanced Filters are applied to Filter and Visual Encoding input areas in Views and Visual Reports. Advanced Filters are incompatible with Search input box, Tabular Reports and REST API queries.

Using Advanced Filters in views

As an example let's open any Board view and apply permanent Advanced Filter to its setup. Press Actions > Set up view button for that, then navigate to Setup tab.

Type ? in the filter field to initiate Advanced Mode.

You can filter rows, columns and entities in cells.

3 filters are available for views: rows, columns and cards:

If you are curious to know what's shown on the screenshot above:

  • Columns: Filter out all entities in the "Closed" state
  • Cards: Filter out all entities in their final state (i.e. "Done" entities) that are assigned to me

The language of filters is quite powerful, but not easy to grasp initially. Here, you'll find the main concepts and learn how to use Advanced Filters effectively.

Entities, Properties and Collections

To know what you can filter, you need to understand the data model. There are many entities in Targetprocess, including Project, Iteration, Release, User Story, Bug, Task, and Feature. These entities have various properties.

Let's take the most common entity — a User Story. It has quite a few properties and collections... here are some of them:

All of these properties (and many more) can be used to filter through User Stories.

9104063-entities_schema

Fields and properties of most frequently used entities

AssignablesUser Stories

Tasks

Bugs

Features

Epics

Requests

Releases

Sprints (Iterations)

Team Iterations

Projects

Teams

Users

Requesters

Times

See the complete list of entities with all their properties here: https://md5.tpondemand.com/api/v1/index/meta.

Filters and Filter Combinations

OK, so let's try to apply some filters. You've just created a new view with User Stories. In this image, we are seeing all User Stories that have a rest tag:

Here are the two very basic filters you can apply:

EntityFilterResult
Assignable?"abc" in NameSee only the stories with "abc" in Name
Assignable?"abc" in Name and "abc" in DescriptionSee the stories with "abc" in Name and in Description

You immediately see that you can combine the filters together:

?filter1 and filter2 and filter3

You can use or as a keyword as well. For example, if we want to find all the User Stories that have "abc" in the Name and Description, in addition to all User Stories that have "navigation" in the Name:

?("abc" in Name and "abc" in Description) or ("navigation" in Name)

We use brackets to separate the filters, like this:

?(filter1 and filter2) or filter3

The sky is the limit here; it's possible to create some very advanced filters. But let's get back to basics first. Basically, you can filter by any property. Let's say we want to show User Stories from a specific Iteration. Here's the filter:

?"#1.1" in Iteration.Name

This means the User Story entity has a related Iteration entity, and the Iteration entity has the Name property. We use a dot (.) to separate the entity and its property:

Entity.Property

Alternatively, we can use Iteration.Id for the same purpose:

?Iteration.Id is 1395

Here we see a new operator: is.

Field names are not case sensitive, so you can write "iteration.id is 1395" if you're feeling lazy. However, keep in mind that some filter formulas are case sensitive, as explained further below.

Here's a list of all supported operators:

OperatorMeaning
isequal to
is notnot equal to
==equal to
<less than
>greater than
>=greater or equal to
<=less or equal to
inhas
not indoes not have
contains(' ')has

Some more basic examples:

EntityFilterResult
Assignable?CreateDate > '01-Mar-2012'extract all the stories created after March 1
Assignable?Priority is "Must Have"stories with the Must Have priority
User Story / Task / Bug?TimeSpent > 0stories with time spent > 0
Assignable?"plugin" not in Tagsstories with no  "plugin" tag

Filters for blank or empty values

Sometimes you want to extract entities that have no such property or where the field is blank. None custom value is used for this purpose.

EntityFilterResult
Assignable?Release is Noneentities that are not assigned to a Release
Assignable?Release is not Noneentities that are assigned to a Release

Some filters, such as the the 'not' negative case filter, are case sensitive.

?not Tags.where(Name is "ABC") - works

?Not Tags.where(Name is "ABC") - doesn't work

Filters by parent entities

Filter for parent Feature for User Stories:

?Feature is "Feature A"

Filter for parent Epic for User Stories

If on your view User Stories are selected as cards then there are two ways to filter them by parent Epic within their parent Feature:

?Feature.Epic is "Epic 1"
?Feature.Epic.Name is "Epic 1"

filter-userstory-epic

If User Stories are distributed by Features, it is enough to filter just Features by parent Epic:

?Epic is "Epic 1"
?Epic.Name is "Epic 1"

filter-userstory-features-epic

Filters for collections

The User Story entity has quite a few collections related to it, including Comments, Tasks, Bugs, Times, etc. How can we filter based on collections? Is it possible to filter out all User Stories that don't have any related Tasks? Or is it possible to only see the stories that contain Bugs with a specific name? Yes, it is possible!

There are two operators you can use for collections:

Count: how many elements are there in the collection?

Where: the inner filter in the collection. It is a very clever thing, so you can define filters that will be applied to the collection.

Examples:

EntityFilterResults
User Story / Feature?Bugs.Where("zoom" in Name)gets User Stories or Features that have bugs with the word "zoom" in the ?name
User Story?Tasks.Where(Effort > 0 and TimeSpent == 0)gets User Stories that have Tasks with estimated effort and zero time spent
User Story?Tasks.Count is 0gets User Stories that have no related Tasks
User Story / Feature?not Bugs.Where(Severity.Name is 'Laugh if notice')stories or features without low Severity bugs

So, you can create some pretty complex and intelligent filters! Targetprocess has almost no restrictions. We try to follow this rule: simple things should be simple, and complex things should be possible.

  • What is the difference between 'Contains' and 'Where' operators?
  • 'Contains' accepts an element and returns a boolean. 'Where' accepts a predicate and returns a boolean. For collections, most of the times you can think about 'Contains('X')' as 'Where(It is 'X')'.

Advanced examples

Hide rows and columns

More examples for your inspiration

Now it's time to construct some more complex filters. To combine filters, use the AND, or OR operators with brackets.

Extract all the items assigned to a specific user that were closed last month:

?AssignedUser.Where(LastName is 'Dubakov') and EntityState is "Done" and EndDate > TODAY - 30(days)

Extract all the Open items that have "process" in Name, Description or Tags:

?("process" in Name or "process" in Description or "process" in Tags) and EntityState is "Open"

Extract Bugs with the "ASAP" business value (priority) and User Stories with the "Must Have" business value (priority):

?(EntityType is 'Bug' and Priority.Name.Contains('ASAP')) or (EntityType is 'UserStory' and Priority.Name.Contains('Must Have'))
  • Bogdan Skaskiv

    Hello Kelly,
    There is a difference in logic between filters and
    visual encoding when we’re speaking about the dates. Please use this
    filter to color days where PlannedEndDate is Today: ?PlannedEndDate >
    Today and PlannedEndDate < = Today + 1(days).
    Best regards,
    Bogdan

  • Stefano Liboni

    Hi,
    is it possible to create a filter that gets all items created in the current month?

    es “?CreateDate >= firstOfCurrentMonth() and CreateDate <= lastOfCurrentMonth()"

  • http://www.targetprocess.com/guide/ Alex

    This is not supported so far. You can filter by exact dates (e.g. 01-01-2017) and shift ranges (e.g. last 30 days). More on these supported filters: https://www.targetprocess.com/guide/filters/advanced-filters-views-reports/filters-by-dates/
    Here is the idea in our public backlog – to add this capability: https://helpdesk.targetprocess.com/request/145517

  • Bethan Evans

    Hi, Is there a way of only showing user stories which don’t have an inbound relation from other user stories where that inbound relation is a blocker, and the story is not complete? eg User story 1 blocks user story 2, and is added as an inbound relation to story 2 as a blocker. User story isn’t marked as “done” yet so user story 2 has not been started. User story 3, however, is ready to start. Therefore, I only want to show user story 3 in my view, until user story 1 is marked as done, then user story 2 can also show.

  • http://targetprocess.com Bogdan Skaskiv

    Hello,
    You can use following filter for user stories to exclude ones mentioned in your comment: ?not InboundRelations.Where(RelationType.Name is ‘Blocker’ and Inbound.EntityState.IsFinal is False). Let us know in case any further questions arise.
    Best regards,
    Bogdan

  • Simon

    Hi,
    is there a way to show all userstories and tasks in one view, where only the user stories shown which does not have any tasks?

  • https://www.targetprocess.com/ Julia Pastushenko

    Hi!

    Unfortunately it’s not possible to hide User Stories which have Tasks when you have both User Stories and Tasks displayed together.
    Please feel free to add your vote for the corresponding idea: https://servicedesk.targetprocess.com/request/145293

    Best wishes,
    Julia.

  • BBSJdev

    Is there no ProgramName filter?
    We have a large number of projects constantly changing and I need to limit output to a slack channel to just the dev projects.
    Is there an easy way to do this if ProgramName doesn’t exist?

  • TPKlav

    Can you filter based on the date that a custom field was filled in? How would you go about doing that?

  • http://www.targetprocess.com/guide/ Alex

    Right now it is not possible. In future we most likely will add this capability, in scope of enhancement request “Improved historical filters’ https://servicedesk.targetprocess.com/request/145288

  • TPKlav

    Thanks for the follow up. Much appreciated

  • TPKlav

    Do you have any documentation that lists for each filter entity, the corresponding properties and what kind of data/info the properties pull when you filter on them?

  • http://targetprocess.com Bogdan Skaskiv

    @TPKlav:disqus You can check the complete list of entities with all their properties here: https://md5.tpondemand.com/api/v1/index/meta

  • kr1zz

    This way I see also those cards where I my role is QA Engineer. What filter should I use to see just those cards where my role is Developer?

  • Kate

    @kr1zz:disqus You are welcome to use the following filter: ?Assignments.Where(Role is ‘Developer’ and GeneralUser is Me)

Still have a question?

We're here to help! Just contact our friendly support team

Find out more about our APIs, Plugins, Mashups and custom extensions. Join our community of passionate users and even discuss directly with our developers.

Try for free

Account url: *.tpondemand.com
How many people would be using Targetprocess?
  • Myself
  • 2–20
  • 21–100
  • 101–1000
  • 1000+
By clicking Continue you agree to our Terms of service and Privacy policy