Create a report
Allow users to create a personalized topic queries. Users set the columns to show, categories and filters that makes possible to have in a topic grid the relevant information. This grid, can be configured with the following options:
Creating a user-defined Topic Query Report¶
To create topic query report head over to the Topic > Reports interface and
hit the Create Report button.
General Options¶
-
Name - Set the report name.
-
Rows - Set the number of rows per page in the grid.
-
Recursive level - Ajust the depth of the relations between topics.
-
Permissions - We can set the privacity of our report.
- Private - Only the owner of the report can view it.
- Public - Shows a combo box Users and roles where we can set who can see the report.
Query Building¶
In this tab we can select the setting of our report. At the left side we can see all categories and their fieldlets.
At the right side, the tree with added data into the report:
-
Categories - Drag and drop the category which we want to see in the report from left side to here.
-
Fields - Drag here the fieldlets we want to see in the report. Clicking in each field we can see some options:
- Header - Set the title of the column.
- Width - Set the width of the column.
-
Filter - In addition, we can filter data dragging the fieldlets here. Clicking on each fieldlet we can set some options, for example:
- String - We can filter a fieldlet by text.
- CI/Resource - Can filter with some conditions like IN, NOT IN, etc.. in Resource items
- Date - Also we can filter data by date.
-
Order - Finally, we can set the default order to show the report. Drag a fieldlet here, and click on it. This will show a menu to set the order type: ASC or DESC.
To finish, just click on Save. Now Run your report to get the data grid.
Same-Level Categories¶
When two or more categories are added at the same level (without a parent-child relation), a field dragged from one category will also display data for topics belonging to the other same-level categories — as long as the field exists in both categories.
For example, if a report includes categories "Bug" and "Feature" at the same
level and the title field is dragged from "Bug", topics of the "Feature"
category will also show their title in that column.
Sibling Categories Under a Parent¶
When a parent category (e.g. "Release") has two or more child categories (e.g. "User Story" and "Bug Fix") linked via the same relation, these sibling children also share fields. A field dragged from one child category will display data for topics of the other sibling categories.
For example, if "Release" has children "User Story" and "Bug Fix" and the
title field is dragged from "User Story", topics of the "Bug Fix" category
will also show their title in that column.
Internal Fields¶
In addition to the category fieldlets, the field selection tree includes built-in internal fields that aggregate computed data from topic relationships and embedded documents:
-
Assignees - Shows all users assigned to a topic through user-type relationship fields (e.g. collaborator, reviewer). Displays the user avatar, real name, and the field name that links them to the topic.
-
Status Transitions - Displays the full history of status transitions for the topic, showing each from/to status pair with its timestamp.
-
Last Transition - Shows the most recent status transition as a single text value (e.g. "in_review → closed (2024-03-15 14:30:00)").
-
Time in Status - Shows a breakdown of how long the topic spent in each status, with the total time and the number of times it entered that status.
Custom JSON Filters¶
For advanced users who need to write arbitrary MongoDB query conditions beyond what the predefined filter types support, the report editor offers a Custom JSON Filter option.
To add a custom JSON filter:
- In the Query tab, right-click the Filters node in the selected fields tree.
- Select Add Custom Filter from the context menu.
- A new "Custom Filter" node will be created with an editable value child.
- Double-click the value node (or right-click and select Edit) to open the JSON editor.
- Enter a valid MongoDB JSON query object in the textarea.
- Click Apply to save the filter.
The JSON object is merged directly into the MongoDB query. You can use any valid MongoDB query operators. For example:
- Filter by title containing "bug" (case-insensitive):
{"title": {"$regex": "bug", "$options": "i"}} - Filter by creation date range:
{"created_on": {"$gte": "2025-01-01", "$lt": "2025-07-01"}} - Combine conditions with
$or:{"$or": [{"priority": "high"}, {"severity": "critical"}]}
Invalid JSON will be rejected with an error message when you try to apply the filter value.
Dynamic Date Filters¶
Date filters support dynamic keywords that resolve at query time, so reports always reflect the current date without manual editing. When a date field is dragged into the Filters section, the operator dropdown includes:
| Operator | Description |
|---|---|
| TODAY | Matches records from today |
| YESTERDAY | Matches records from yesterday |
| THIS WEEK | Matches records from Monday of the current week through today |
| LAST WEEK | Matches records from Monday to Sunday of the previous week |
| THIS MONTH | Matches records from the 1st of the current month through today |
| LAST MONTH | Matches records from the entire previous month |
| THIS YEAR | Matches records from January 1st of the current year through today |
| LAST YEAR | Matches records from the entire previous year |
Dynamic date operators require no value — selecting one and clicking Apply is enough.
Between Date Filter¶
The BETWEEN operator filters by a date range defined by two bounds (From and To). Each bound can be either a specific date picked from the calendar or a Relative date offset from today.
When Relative is selected, you enter a signed number and a unit:
| Amount | Unit | Meaning |
|---|---|---|
-3 |
Days | 3 days before today |
+1 |
Months | 1 month from today |
0 |
Days | Today |
-2 |
Weeks | 2 weeks (14 days) before today |
+1 |
Years | 1 year from today |
For example:
- From: Relative
-7 Days, To: Relative0 Days— shows all records from 7 days ago through today. - From:
2025-01-01(Specific Date), To: Relative0 Days— shows records from January 1st 2025 through today. - From: Relative
-1 Months, To: Relative+1 Months— shows records from 1 month ago through 1 month from today.
Note: Existing reports that use the old keyword-based bounds (Today, Last Month, etc.) continue to work without changes.
All dynamic date filter badges (standalone operators and BETWEEN) now display
the actual resolved dates instead of keyword labels. For example, a THIS WEEK
filter badge shows 2026-03-02 ~ 2026-03-03 instead of just the keyword name.
Current User Filter¶
User fields (such as Created By, Modified By, custom user fieldlets) and the Assignees internal field support a CURRENT USER dynamic operator. When selected, the filter resolves at query time to whoever is running the report, so the same saved report shows different results depending on who views it.
To use it:
- Drag a user field or Assignees into the Filters section.
- Double-click the filter value node to open the editor.
- Select CURRENT USER from the operator dropdown — the value selector disappears because no value is needed.
- Click Apply and save the report.
This is useful for creating "show my topics" type reports that each team member can run to see only topics they created, modified, or are assigned to.