Yes, there are plugins for this, but really it shouldn't be required and this solution *does* work, just dirty.
Due to questionable design choices Jira SD does not play nicely with a 2nd SD, as such I've written an automation that picks up external ticket number in their response and adds it my ticket. This works great except for somehow despite the automation only running once it adds the external variable 3-5 times.
Process:
My SD creates ticket "[ABC-123] Summary Text",
client receives and sends standard response "Thanks for your ticket, we raised it as [XYZ-456]
At this point the automation kicks in, checks there is no instance of XYZ in current summary, and then creates two variables:
{{XYZTicket}} = {{issue.comment.last.body.match("(XYZ\W\d\d\d)")}}
and
{{OldSummary}} = {{issue.summary}}
Then updates Summary with {{OldSummary}} {{XYZTicket}}
This is proven to successfully update my original ticket from "[ABC-123] Summary Text" to "[ABC-123] Summary Text XYZ-456", this is perfect, the two desks can there-ever after add comments to each others tickets.
Except for some reason it doesn't do that, instead it becomes "[ABC-123] Summary Text XYZ-456, XYZ-456, XYZ-456, XYZ-456" Automation audit log shows only a single processing with ticket successfully updated.
I've also tested by adding a 3rd variable that combines the Old+XYZ and then dropping that into the Summary however it has the same outcome, multiple XYZ. We've also test the same code on the client side and they have the same outcome (also on Jira cloud)