Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to create a Column in Jira Structure to show only LInked Issues to a Particular Jira Project

Laura Pellizzari
Contributor
October 17, 2025

How to create a Column in Jira Structure to show only LInked Issues to a Particular Jira Project

the current formula for linked issues in Structure is the following:

 

/* Displays all linked issues and the link types using markdown language.
  */
WITH markdown(issue) = CONCAT(
  "[", IF issue.status.category == "Done": "~", issue.key,
  IF issue.status.category == "Done": "~", "](", issue.url, ")"
):
issueLinks
  .GROUP(IF $.source.key = key: $.type.outward ELSE : $.type.inward)
  .MAP(CONCAT($.group, " ", $.elements.MAP(IF $.source.key = key :markdown($.destination) ELSE :markdown($.source))))

Anyone can help?

thanks

Laura

2 answers

Suggest an answer

Log in or Sign up to answer
1 vote
Stepan Kholodov _Tempo_
Community Champion
November 5, 2025

Hello @Laura Pellizzari  @Gor Greyan 

Please note - currently, the Formula column can't access the Project field via the issueLinks function. This is why the formulas you're trying return empty results. You can find the list of available properties that can be extracted via issuelinks in our documentation here.

We have a feature request to expand the list of available attributes in the future, and Project will be among them.

If you have any other questions about Structure, please contact us directly at our support portal.

Best regards,
Stepan
Tempo (the Structure app vendor)

0 votes
Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 17, 2025

Hi @Laura Pellizzari

I think you should filter the link collection before you group/map it, keeping only links where the “other side” of the link belongs to your target project. Try the following one.

WITH markdown(issue) =
CONCAT("[", IF issue.status.category = "Done": "~", issue.key,
IF issue.status.category = "Done": "~", "](", issue.url, ")"),

other(link) =
IF link.source.key = key : link.destination ELSE : link.source
:

issueLinks

.FILTER(other($).project.key = "ABC")

.GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)

.MAP(CONCAT($.group, " ", $.elements.MAP(markdown(other($)))))

Laura Pellizzari
Contributor
October 20, 2025

Hi @Gor Greyan 

thanks for your support, can you please suggest how to correctly accomodate the central part:

 

other(link) =
IF link.source.key = key : link.destination ELSE : link.source
:

mark down.jpgwhen added the system does not recognize the variable anymore and it does not give any result.

thanks a lot

Laura

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 20, 2025

Hi @Laura Pellizzari

Thanks for the follow up:

Please try this one

WITH markdown(issue) =
CONCAT(
"[",
IF issue.status.category = "Done" : "~", issue.key,
IF issue.status.category = "Done" : "~", "](", issue.url, ")"
),
/* Return the issue on the “other side” of a link */
other(link) =
IF link.source.key = key : link.destination ELSE : link.source
:
workItemLinks
.FILTER(other($).project.key = "ABC")
.GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)
.MAP(CONCAT($.group, " ", $.elements.MAP(markdown(other($)))))

If you prefer to filter by project name instead of key, change the filter line to:

 

.FILTER(other($).project.name = "My Project Name")

 

Laura Pellizzari
Contributor
October 20, 2025

Thanks, please have a look to the screenshot, I think the problem is in the middle part:

mark down 2.jpg

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 21, 2025

Hey @Laura Pellizzari

Yes, you closed the WITH block too early.
The colon : after CONCAT(... ) ends the WITH, so other(link) is parsed as the main expression → error.
Add a comma after the first definition and keep one single colon only at the very end of the WITH block.
Also use single equals =, not ==, in Structure formulas.


WITH markdown(item) =
CONCAT(
"[",
IF item.status.category = "Done" : "~", item.key,
IF item.status.category = "Done" : "~", "](", item.url, ")"
),

other(link) =
IF link.source.key = key : link.destination ELSE : link.source
:
workItemLinks
.FILTER(other($).project.key = "ABC")
.GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)
.MAP(CONCAT($.group, " ", $.elements.MAP(markdown(other($)))))

 

Laura Pellizzari
Contributor
October 21, 2025

Hi,

I did everything you report above with no result..

Below is the original Formula for generic Linked Issue column already present in Structure as default, that works and display all the linked issues. this is the one I am trying to modify to have it displayed only linking to my specific project

mark down 3.jpg

thanks

Laura

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 21, 2025

@Laura Pellizzari

Sorry, and thank you for follow-up.
Let's try this one.

/* Displays all linked work items and the link types using markdown language. */
WITH markdown(item) = CONCAT(
"[", IF item.status.category = "Done" : "~", item.key,
IF item.status.category = "Done" : "~", "](", item.url, ")"
):
workItemLinks
/* Keep only links whose “other side” belongs to project ABC */
.FILTER(
(IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key) = "ABC"
)
.GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)
.MAP(CONCAT($.group, " ", $.elements.MAP(
IF $.source.key = key : markdown($.destination) ELSE : markdown($.source)
)))

Laura Pellizzari
Contributor
October 23, 2025

Hi, the formula now does not give error, but it doesn't display anything on the column where it should be expected.

thanks

laura

 

2025-10-23_12-45-20.jpg

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 23, 2025

Hi @Laura Pellizzari

Thanks for the answer.

Please paste this temporary formula to verify that workItemLinks returns what we expect:

workItemLinks.MAP(
IF $.source.key = key : $.destination.key ELSE : $.source.key
)

You should see a list like [ABC-12, HPI-7...].
If this is empty → the current issue has no links in the structure rows you’re inspecting.

Then paste this to see which project keys actually appear:

 

workItemLinks .MAP(IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key) .UNIQUE()

If you don’t see "HPI" In that list, the filter = "HPI" will remove everything.

 

If the debug shows HPI , use this version, which trims and uppercases the project key before comparing:


WITH markdown(item) = CONCAT(
"[", IF item.status.category = "Done" : "~", item.key,
IF item.status.category = "Done" : "~", "](", item.url, ")"
):
workItemLinks
.FILTER(
TRIM(UPPER(
IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key
)) = "HPI"
)
.GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)
.MAP(CONCAT($.group, " ", $.elements.MAP(
IF $.source.key = key : markdown($.destination) ELSE : markdown($.source)
)))

 

Laura Pellizzari
Contributor
October 24, 2025

Hi @Gor Greyan 

I really appreciate your support.

I am working with issues that have a 3 to 5 linked issues (for different projects), among them I already see there are links to my desire project and I want to filter them in order to have a column just dedicated to this linked issues.

The formulas above give me an empty column. I think it may be caused by indentation, which I do not apply correctly, can you please share a screenshot how this code should look like ?

thanks

Laura

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 24, 2025

Hi @Laura Pellizzari

You are very welcome.

You don’t need indentation for Structure formulas—the parser ignores it. What does matter is:

  • single = (not ==)

  • commas between helpers inside With

  • Exactly one colon : to end the whole With block

  • using the right link collection name (workItemLinks in your default column)

    WITH markdown(item) = CONCAT(
    "[", IF item.status.category = "Done" : "~", item.key,
    IF item.status.category = "Done" : "~", "](", item.url, ")"
    ):
    workItemLinks
    .FILTER(
    TRIM(UPPER(
    IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key
    )) = "HPI"
    )
    .GROUP(IF $.source.key = key : $.type.outward ELSE : $.type.inward)
    .MAP(CONCAT($.group, " ", $.elements.MAP(
    IF $.source.key = key : markdown($.destination) ELSE : markdown($.source)
    )))

Laura Pellizzari
Contributor
October 29, 2025

Hi @Gor Greyan 

thanks so much for following this up.

I applied the above formula, I had to change Workitemlinks with Issuelinks to make it work. Variable are recognized but I still don't get any value where there is a link to HPI project and it should be displayed. What's missing?

thanks

Laura

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 1, 2025

Hi @Laura Pellizzari ,

Great find on switching to issueLinks. To avoid any surprises with link direction, here’s a formula. It figures out the “other end” of each link at runtime, so you don’t have to guess whether HPI is on the source or destination side:

 

WITH markdown(item) = CONCAT(
"[",
IF item.status.category = "Done" : "~", item.key,
IF item.status.category = "Done" : "~", "](", item.url, ")"
):
issueLinks

.FILTER(
UPPER(TRIM(
IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key
)) = "HPI"
)

.GROUP(
IF $.source.key = key : $.type.outward ELSE : $.type.inward
)
.MAP(
CONCAT(
$.group, " ",
$.elements.MAP(
IF $.source.key = key : markdown($.destination) ELSE : markdown($.source)
)
)
)

 

If that still returns nothing, run this to see exactly which project keys the formula sees at the other end of your links (use it temporarily, no filter):

 

issueLinks.MAP( IF $.source.key = key : $.destination.project.key ELSE : $.source.project.key ) 
Laura Pellizzari
Contributor
November 4, 2025

Hi @Gor Greyan 

both formula above, give me a empty result

Laura

Gor Greyan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 4, 2025

Hi @Laura Pellizzari

Empty output usually means either there are no standard issue links on the idea, or the relation lives somewhere else (e.g., Delivery tickets). 

Try this raw link probe (should print any links if they exist):

issueLinks.MAP(
CONCAT($.source.key, " [", $.type.inward, " / ", $.type.outward, "] ", $.destination.key)
)

 

If it prints nothing, the links are likely elsewhere. Try these and tell me which one returns results:

 

deliveryTickets.MAP($.key)
linkedIssues.MAP($.key)
children.MAP($.key)
parents.MAP($.key)

Laura Pellizzari
Contributor
November 4, 2025

Hi @Gor Greyan 

the : 

issueLinks.MAP(
CONCAT($.source.key, " [", $.type.inward, " / ", $.type.outward, "] ", $.destination.key)
)

works and give all the linked tickets

Laura

DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
ENTERPRISE
TAGS
AUG Leaders

Atlassian Community Events