I have multiple screens unassociated to any workflow or screen schemes. How do I delete these via the JIRA API (not REST)? I have ScriptRunner. I am able to delete WorkflowSchemes and Workflows because I found the WorkflowManager and WorkflowSchemeManager classes in the docs. But, there seems to be no ScreenManager? Does it have another name?
Also, once I have a list of screens, how do I check if it isn't in a screen scheme or workflow? (As in the https://example.com/secure/admin/ViewFieldScreens.jspa)
Hey Paul
The following script will remove the screens that are not assigned to a scheme or in a workflow.
Is not fully tested so I would suggest to get a backup first.
import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.issue.fields.screen.FieldScreenManagerimport com.atlassian.jira.issue.fields.screen.FieldScreenSchemeManagerimport com.atlassian.jira.workflow.WorkflowActionsBeandef fieldScreenManager = ComponentAccessor.getComponent(FieldScreenManager)def fieldScreenSchemeManager = ComponentAccessor.getComponent(FieldScreenSchemeManager)def allScreensIds = fieldScreenManager.getFieldScreens().collect {it.id}def screenSchemes = fieldScreenSchemeManager.fieldScreenSchemesdef screenIdsWithScheme = []screenSchemes.each {def items = fieldScreenSchemeManager.getFieldScreenSchemeItems(it).collect {it.fieldScreen.id} screenIdsWithScheme << items}def workflowBean = new WorkflowActionsBean()def screenIdsWithWorkflowAction = []ComponentAccessor.workflowManager.workflows?.each { screenIdsWithWorkflowAction << it.allActions?.findResults { workflowBean.getFieldScreenForView(it)?.id ?: null }}def screenIdsInWorkflows = screenIdsWithWorkflowAction.flatten().unique()def screensNotAssociatedToScheme = (allScreensIds - screenIdsWithScheme.flatten() - screenIdsInWorkflows)screensNotAssociatedToScheme?.each {log.debug "${fieldScreenManager.getFieldScreen(it).name} is not associated with any Screen Scheme or workflow and will be removed" fieldScreenManager.removeFieldScreen(it)}
Let me know how this went.
Regards, Thanos
Can one call remove() on a FieldScreen() I have a different script going, but wasn't 100% sure on what the "delete" method was named?
I ended up with a simpler script, posted here for posterity and drive-by googlers:
import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.issue.fields.screen.FieldScreenFactoryimport com.atlassian.jira.issue.fields.screen.FieldScreenManagerimport com.atlassian.jira.issue.fields.screen.FieldScreenSchemeManagerimport com.atlassian.jira.web.action.admin.issuefields.screens.ViewFieldScreensimport com.atlassian.jira.workflow.WorkflowManagerFieldScreenManager fieldScreenManager = ComponentAccessor.getFieldScreenManager()FieldScreenFactory fieldScreenFactory = ComponentAccessor.getComponent(FieldScreenFactory.class)FieldScreenSchemeManager fieldScreenSchemeManager = ComponentAccessor.getComponent(FieldScreenSchemeManager.class)WorkflowManager workflowManager = ComponentAccessor.getWorkflowManager()ViewFieldScreens viewFieldScreens = new ViewFieldScreens(fieldScreenManager, fieldScreenFactory, fieldScreenSchemeManager, workflowManager)log.error 'viewFieldScreens: ' + viewFieldScreens// use StringBuffer to spit out log to screen for ScriptRunner Consoledef sb = new StringBuffer()for(def fieldScreen : fieldScreenManager.getFieldScreens()) { if(viewFieldScreens.isDeletable(fieldScreen)) { sb.append("Deleted ${fieldScreen.getName()}") fieldScreenManager.removeFieldScreen(fieldScreen.getId()) sb.append(" xxxxx ") } /* // get screen schemes that use the screen def fieldScreenSchemes = viewFieldScreens.getFieldScreenSchemes(fieldScreen) int screenSize = fieldScreenSchemes.size() sb.append("${fieldScreenSchemes.size()}") sb.append(" xxxxx ") // get the workflows that use the screen, if any def workflows = viewFieldScreens.getWorkflows(fieldScreen) def workflowSize = workflows.size() sb.append("${workflows.size()}") */}return sb.toString()
Hi @Paul Tiseo
I just shared an article on bulk deleting unused screens with JMeter.
https://community.atlassian.com/t5/Jira-articles/Bulk-deleting-unused-screens-in-Jira-with-JMeter/ba-p/961695
It doesn't require additional apps/plugins and is quite safe, since it's just automatically firing HTTP requests that could be made by an actual (admin) user.
Cheers
@Thanos Batagiannis _Adaptavist_
Is there any script to delete unused Field Configuration Schemes, Field Configurations and Fields?
Also, Unused Issue Types Schemes and Issue Types.
Thanks in advance.
It looks like you're new here. Sign in or register to get started.