Skip to main content
Example scripts
arrow icon
To homepage
Jira
Data centre icon
Data Center

Remove Unused Screen Schemes from Instance

Created 1 year ago, Updated 2 month(s) ago
App in script
ScriptRunner For Jira
ScriptRunner For Jira
by Adaptavist
Compatibility
compatibility bullet
Jira (8.0 - 8.19)
compatibility bullet
ScriptRunner For Jira (7.10.0)
Language |
groovy
import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.canned.util.OutputFormatter

def fieldScreenSchemeManager = ComponentAccessor.getFieldScreenSchemeManager()
def issueTypeScreenSchemeManager = ComponentAccessor.getIssueTypeScreenSchemeManager()

def deletedScreenSchemes = []
def errorScreenSchemes = [:]

fieldScreenSchemeManager.getFieldScreenSchemes().each { fieldScreenScheme ->
    try {
        def issueTypeScreenSchemeCollection = issueTypeScreenSchemeManager.getIssueTypeScreenSchemes(fieldScreenScheme)

        // Screen Scheme is classed as unused if it has no associated issue type screen schemes
        def isUnusedScreenScheme = issueTypeScreenSchemeCollection.isEmpty()

        if (isUnusedScreenScheme) {
            // Remove association to any screens
            fieldScreenSchemeManager.removeFieldSchemeItems(fieldScreenScheme)
            // Remove field screen scheme
            fieldScreenSchemeManager.removeFieldScreenScheme(fieldScreenScheme)
            deletedScreenSchemes.add(fieldScreenScheme.name)
        }
    } catch (Exception e) {
        errorScreenSchemes.put(fieldScreenScheme.name, e.getMessage())
    }
}

OutputFormatter.markupBuilder {
    h2('Screen Schemes Report')
    !deletedScreenSchemes && !errorScreenSchemes && p('No unused screen schemes found')
    if (deletedScreenSchemes) {
        h3('Deleted Screen Schemes:')
        ul {
            deletedScreenSchemes.each {
                li(it)
            }
        }
    }
    if (errorScreenSchemes) {
        h3('Errors:')
        table(class: 'aui') {
            thead {
                tr {
                    th('Screen Scheme Name')
                    th('Error')
                }
            }
            tbody {
                errorScreenSchemes.each { screenScheme, error ->
                    tr {
                        td(screenScheme)
                        td(error)

                    }
                }
            }
        }
    }
}
Having an issue with this script?
Report it here