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

Remove Unused Screen Schemes from Instance

Created 11 month(s) ago, Updated 30 day(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