Workaround on Updating Closed Issues that Can't be Edited

    Problem

    • The workflow associated with one of the twin issues doesn't allow editing an issue whenever it is closed.
    • Whenever the other side is updated, the update cannot be applied, whenever the twin (or synced) issue is closed.

    Cause

    Jira has the concept of workflow properties as documented here for on-premise and for the cloud.

    It allows changing the behavior of the issue view and the transitions. For instance one of the properties is:

    jira.issue.editable

    If it's set to false in a certain workflow step, users will not be able to edit the issue whenever it reaches the associated status.

    Solution

    You can solve this problem by using one of the following workarounds:

    • Remove the property
    • Unexalate the issue
    • Enhanced workflow property restrictions
    • Check the status in the Incoming sync

    Remove the property

    This is the most obvious workaround - it has the consequence to allow anyone to edit the issue whenever it is closed - including exalate.

    Unexalate the issue

    Add the Unexalate post function to any transition leading to the close status. This will tear down the synchronization between the issues. Any update on the issue from the source side will not be applied on the destination side.

    Enhanced workflow property restrictions

    Another workaround is to allow Exalate to do changes while forbidding other users to do these changes.

    This can be done by:

    • Adding Exalate to a Jira group such as 'automation'
    • Replacing the jira.issue.editable property with

      jira.permission.edit.group=automation

      This will restrict editing to any user who is a member of the automation group

    Check the status in the Incoming sync

    Whenever a message comes in to be applied to an existing twin issue, avoid the change by inspecting the local issue status

    // add this at the beginning of the change processor to avoid that any incoming update is applied on a closed issue
    
    if (issue.status.name == closed) {
       return
    }