eazyBI: Generating team performance reports in eazyBI from JSM form data

David Friedrich
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 Leaders.
March 5, 2025

Alright, here’s a tough one—I hope someone can help me out.

A civil engineering company wants their site managers to log each team's work at the end of the day. They can do this using a form in the JSM Customer Service Portal. Every field in the form directly maps to a Jira custom field. To make things clearer, I’ve attached an overview of the fields.

Each site manager can report up to 5 teams per ticket, and for each team, they can log up to 5 work items, including quantity. The dropdown options are the same across all 5 team fields and the 25 work item fields. Each work item field has an additional number field for the quantity.

The goal is to generate either one big report or, if that’s not possible, multiple smaller reports (e.g., per team). These reports should show, for example, how many square meters of asphalt a team has logged over a certain period (e.g., calendar week, last 30 days, etc.).

Is there any way to do this with eazyBI?

Big thanks to anyone who’s made it this far and understands what I’m getting at. The AI in the eazyBI app seems to struggle with this—it’s not giving me useful solutions.

2025-03-05 17_34_37-kyntus_LE_Tiefbau_Fields.png2025-03-05 17_35_02-kyntus_LE_Tiefbau_Fields.png

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Oskars Laganovskis
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 Leaders.
March 7, 2025

Hi @David Friedrich,

If I understand you correctly, you currently have the data spread over up to 55 customfields for each issue, but you want it to be a 2 dimension matrix where you have dimensions Team and Position as categories and values on the intersection of each team and position.

It is actually possible to use JavaScript-calculated custom fields.

First, you need to declare the "Team" and "Position" dimensions that could be used for further data mapping.

Depending on your privileges and setup - that could be account-specific or instance-wide customfield.

I will describe the option of account-specific fields.

You should declare the new customfield dimensions as New calculate fields by selecting data type "string", and enabling it as a dimension.

Please add the following additional advanced settings for the field.

separate_table = true

and use the following "empty" JavaScript code.

return

Please choose display names that do not conflict with other customfields on the instance.

For example - "Arbeits Team" (Team) and "Workitem" (Position)

Then, you need to create the third field, which will combine the values from multiple fields to make a reasonable data mapping.

That field should be declared as "workamount" and should be set up as a decimal format field.

You also need to add the settings that declare the values list to be mapped against other dimensions.

Please read more about that here - https://docs.eazybi.com/eazybi/data-import/data-from-jira/jira-custom-fields/list-of-custom-field-advanced-settings#Listofcustomfieldadvancedsettings-multiple_dimensions.

The actual additonal advanced settings would be as follows.

multiple_dimensions = ["Arbeits Team","Workitem"]

Of course, use the same names that you declared for the dimensions.

The JavaScript code could have the following structure.

var entries = [];
// team 1 exists
if(issue.fields.customfield_10257) {
 var team = issue.fields.customfield_10257;
// team 1 position 1
 if(issue.fields.customfield_10212 && issue.fields.customfield_10217) {
      entries.push(team+","+issue.fields.customfield_10212+","+issue.fields.customfield_10217)
 }
// team 1 position 2 
 if(issue.fields.customfield_10213 && issue.fields.customfield_10218) {
      entries.push(team+","+issue.fields.customfield_10213+","+issue.fields.customfield_10218)
 }
 if(issue.fields.customfield_10214 && issue.fields.customfield_10219) {
      entries.push(team+","+issue.fields.customfield_10214+","+issue.fields.customfield_10219)
 }
 if(issue.fields.customfield_10215 && issue.fields.customfield_10220) {
      entries.push(team+","+issue.fields.customfield_10215+","+issue.fields.customfield_10220)
 }
 if(issue.fields.customfield_10216 && issue.fields.customfield_10221) {
      entries.push(team+","+issue.fields.customfield_10216+","+issue.fields.customfield_10221)
 }
}
// team 2 exists
if(issue.fields.customfield_10259) {
 var team = issue.fields.customfield_10259;
// team 2 position 1
 if(issue.fields.customfield_10260 && issue.fields.customfield_10222) {
      entries.push(team+","+issue.fields.customfield_10260+","+issue.fields.customfield_10222)
 }
// team 2 position 2 
 if(issue.fields.customfield_10261 && issue.fields.customfield_10223) {
      entries.push(team+","+issue.fields.customfield_10261+","+issue.fields.customfield_10223)
 }
 if(issue.fields.customfield_10262 && issue.fields.customfield_10224) {
      entries.push(team+","+issue.fields.customfield_10262+","+issue.fields.customfield_10224)
 }
 if(issue.fields.customfield_10263 && issue.fields.customfield_10225) {
      entries.push(team+","+issue.fields.customfield_10263+","+issue.fields.customfield_10225)
 }
 if(issue.fields.customfield_10264 && issue.fields.customfield_10226) {
      entries.push(team+","+issue.fields.customfield_10264+","+issue.fields.customfield_10226)
 }
}

//repeat the same blocks with proper customfield references for teams 3,4,5

if (entries){
 return entries.join("\n");
}

In order to have all these 55 customfields available for processing, you need to select them to be imported (at least) as properties into data cube.

However, once you have ensured the data is coming in properly, and if you do not want to have that raw data as separate entries and properties in the measure list, you can use the JSON_fields setting and list all the required fields to be available during JavaScript calculation only.

You might read more about that setting here - https://docs.eazybi.com/eazybi/data-import/data-from-jira/jira-custom-fields/list-of-custom-field-advanced-settings#Listofcustomfieldadvancedsettings-json_fields

If you have trouble setting this up or have further inquiries, feel free to reach out to us directly.

Regards,

Oskars / eazyBI support

DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events