Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Custom cascading fields coming as Json String when I am exporting to Excel all issue fields.

Yash Limbachiya
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
April 11, 2023

Due to only 2 levels of default cascading fields we can create in Jira, I have installed the third party plugin named "Awesome custom fields" and I have create 3 levels of cascading fields for my company's purpose. But when I tried to export all the issue's fields to Excel then instead of normal text its coming as Json string. I have attached the SS for reference. 

 

  Cascading.PNG

and when I exported into Excel file its showing as :

 

{"selection":[{"id":"Option 1","name":"Manual Error","children":["Option 1.1","181977ec-fd8e-4a44-bfa7-015cc7d5f77f","10588de6-443e-4a10-96ec-e7042c3dfd5e"]},{"id":"Option 1.1","name":"Assembly Error","children":["b300dddd-8110-4c1e-836e-f11546a554a0","71e6d5fd-09cb-494c-90d2-8fad04ae6e3a","ea78d008-7586-4b34-a2c2-b19eaf842039"]},{"id":"ea78d008-7586-4b34-a2c2-b19eaf842039","name":"Component Missing - Final Assembly","children":[]}]}

 

Instead of "Mannual Error->Assembly Error-> Component Missing -> Final Assembly"

3 answers

1 accepted

4 votes
Answer accepted
Thanos Batagiannis [Adaptavist]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
June 8, 2018

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.ComponentAccessor
import com.atlassian.jira.issue.fields.screen.FieldScreenManager
import com.atlassian.jira.issue.fields.screen.FieldScreenSchemeManager
import com.atlassian.jira.workflow.WorkflowActionsBean

def fieldScreenManager = ComponentAccessor.getComponent(FieldScreenManager)
def fieldScreenSchemeManager = ComponentAccessor.getComponent(FieldScreenSchemeManager)

def allScreensIds = fieldScreenManager.getFieldScreens().collect {it.id}
def screenSchemes = fieldScreenSchemeManager.fieldScreenSchemes

def 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

Paul Tiseo
Contributor
June 8, 2018

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?

Ahsan
September 1, 2019

@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. 

6 votes
Paul Tiseo
Contributor
June 8, 2018

I ended up with a simpler script, posted here for posterity and drive-by googlers:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.screen.FieldScreenFactory
import com.atlassian.jira.issue.fields.screen.FieldScreenManager
import com.atlassian.jira.issue.fields.screen.FieldScreenSchemeManager
import com.atlassian.jira.web.action.admin.issuefields.screens.ViewFieldScreens
import com.atlassian.jira.workflow.WorkflowManager

FieldScreenManager 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 Console
def 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()
0 votes
Rodrigo
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
December 13, 2018

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

Suggest an answer

Log in or Sign up to answer