Portfold documentation
Portfold adds custom fields to Jira projects (called spaces in Jira's newer navigation), a register of every project with those fields, a JQL function that searches work items by them, and a history of every change. It runs entirely on Atlassian's Forge platform.
Getting started (Jira admins, 5 minutes)
- Open Jira settings > Apps > Portfold project fields.
- On Fields, click Start with a PMO set (Health, Owner, Phase, Budget, Go-live, Client, Charter) or Add a field of any type. Adjust names, options and colors, then Save fields.
- On Who can edit, choose who edits values (see Permissions).
- Optional: on Import CSV, fill many projects at once.
- Tell your project admins: each project now has Project fields in its sidebar.
Field types
| Type | Holds | Notes |
|---|---|---|
| Text | One line, up to 255 characters | Filter with "contains" |
| Paragraph | Up to 4,000 characters, line breaks kept | |
| Number | Any number | Optional prefix and suffix such as $ or %. Typed values like $1,250.50 are understood. The register shows a total and average |
| Date | A calendar date (YYYY-MM-DD) | Date-range filters, relative dates in JQL |
| Select list | One option, or several when "Allow more than one option" is ticked | Each option has a color. Option order is the sort order |
| Person | One Atlassian account | Pick by name |
| Link (URL) | An http or https link |
Field settings: Required (projects without a value are flagged on the project page and in the register), Only Jira admins can change it, and a description shown under the field name.
Changing fields safely:
- A field's type is fixed once saved. To change it, archive the field and add a new one.
- Archive hides a field everywhere (pages, register, JQL) and keeps its values and history. Restore brings it back.
- Renaming a field or an option keeps every value (values point at stable ids, not names).
- Retire an option to stop people picking it; projects that already have it keep it.
Permissions
- See a project's fields: anyone who can browse the project in Jira.
- Edit them: Jira admins always. Then, by setting: project admins (Administer Projects on that project, the default), project admins and the project lead, or Jira admins only.
- Fields marked Only Jira admins can change it stay admin-only whatever the setting.
- The register shows only projects the person can browse.
- Field designer, settings and CSV import: Jira admins.
Every check is made on the server for every request.
The project page
Project sidebar > Project fields shows the native category and lead, then every field. Edit fields opens the editor for people allowed to edit. History lists every change: field, old value, new value, who, when, and whether it came from a CSV import.
If someone saved while you were editing, Portfold refuses your save and asks you to reload, so nobody overwrites a newer change by accident.
The register
Apps > Project register.
- Columns: project, key, category, lead, type, the date fields were last updated, and any Portfold field.
- Filters: any of (select lists, category, type), at least / at most (numbers), on or after / on or before (dates), is (person), contains (text), is set, is empty. Filters combine with AND.
- Sort by clicking a column header; empty values always sort last.
- Group by category, lead, type or any select, person or text field. A project with several options of a multi-select appears under each.
- Missing required only lists projects with required fields still empty.
- Totals: sum and average of number columns for the visible projects.
- Saved views: save the current columns, filters, sort, grouping and search for yourself, or tick "Share with everyone on this site". You can update or delete your own views; Jira admins can manage every view.
- Download CSV: the visible projects and columns. Numbers are written without currency
symbols or grouping so spreadsheets read them as numbers. Text that starts with
=,+,-or@is prefixed with'so spreadsheets never run it. - Click a project to see and edit its fields without leaving the register.
The register loads up to 5,000 projects at once.
JQL: projectsWhere()
project in projectsWhere("Health = Off track")
project in projectsWhere("Budget >= 50000", "Phase in (Build, Launch)")
project not in projectsWhere("Owner is not empty")
project in projectsWhere("Go-live < +30d") AND statusCategory != Done
Use it anywhere Jira takes JQL: search, saved filters, boards, dashboards and automation.
- A condition is
<field name> <operator> <value>. Field names are matched exactly (case-insensitive), so names with spaces need no quotes. Values may be wrapped in single quotes:"Client = 'Acme, Inc.'". - Up to three conditions; all must hold (AND).
- Operators by field type:
| Type | Operators |
|---|---|
| Text | = != ~ (contains) in (A, B) not in (A, B) |
| Paragraph | ~ |
| Link | = != ~ |
| Number | = != > >= < <= |
| Date | = != > >= < <= with 2026-12-31, today, -7d, +4w |
| Select list | = != in (A, B) not in (A, B) (option names, case-insensitive) |
| Person | = != in not in with a display name or account id |
| Any | is empty, is not empty |
- Like Jira's own fields, every comparison including
!=skips projects with no value. Useis emptyto find those. - Jira stores each query's answer. Portfold updates the stored answers whenever a value or a field changes, when a project is created, deleted, archived or restored, and once a day (for relative dates). Admins can see every stored query and its current result on the JQL tab and press Refresh now.
- A typo is an error message, never a silently empty result (for example "Portfold has no field called Helth"). Jira shows function errors in the search page; some tools that call Jira's search API show them as no results, so try a condition on the JQL tab first.
- Limits: a query can match up to 1,000 projects (Jira's limit for app functions); beyond that
Portfold returns an error with the count.
currentUser()cannot be used inside a condition because Jira stores one answer for everybody. - The function runs as the app; Jira then applies each person's own permissions to the work items they see.
CSV import (Jira admins)
Jira settings > Apps > Portfold project fields > Import CSV.
Project key,Health,Owner,Budget,Go-live,Compliance
APOLLO,Off track,Lee Lead,"$180,000",2026-11-03,GDPR; SOC 2
ATLAS,On track,,64000,,(clear)
- First column
Project key(orKey). Other columns are matched to field names; columns that match no field are listed and ignored. AProjectorNamecolumn is ignored. - A blank cell leaves the value as it is.
(clear)empties it. - Select lists take option names (several separated by commas or semicolons), people take a
display name or account id, dates take
2026-12-31, numbers take1250,$1,250or12%. - Preview shows every change and every problem per row. Apply saves the changes and writes them to each project's history as "CSV import".
- Up to 2,000 rows and 2 MB per file. Semicolon-separated files (European Excel) work too.
Licensing
Portfold is a paid app billed by Atlassian, with Atlassian's free trial. If the subscription lapses, fields stay readable on each project page; editing, the register, CSV and JQL results need an active subscription (JQL queries return a renewal message instead of results).
Data and privacy
Field definitions, values, change history, saved views and settings are stored in your site's Forge storage, hosted by Atlassian. The register and CSV files are built in your browser. Nothing is sent to Great Work or to any other server. Uninstalling the app deletes its storage after Atlassian's retention period; download a CSV first if you want to keep the values.
Support
hello@greatwork.company. Include the project key, the field name and a screenshot. Never send passwords or API tokens.